:root{--navy:#0a2947;--cream:#f3e4c9;--sage:#d3d4c0;--brown:#8b5e3c;--bg-body:var(--navy);--bg-surface:#f3e4c90f;--bg-surface-2:#f3e4c91a;--bg-surface-hover:#f3e4c924;--border-color:#d3d4c02e;--border-color-strong:#d3d4c052;--text-primary:var(--cream);--text-secondary:var(--sage);--text-muted:#d3d4c0a6;--accent:var(--brown);--accent-light:#ad7c54;--ff-base:"Poppins", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-1:2.4rem;--fs-2:1.9rem;--fs-3:1.5rem;--fs-4:1.1rem;--fs-5:1rem;--fs-6:.9rem;--fs-7:.8rem;--fs-8:.7rem;--fw-300:300;--fw-400:400;--fw-500:500;--fw-600:600;--fw-700:700;--radius-28:28px;--radius-16:16px;--radius-12:12px;--radius-10:10px;--radius-8:8px;--radius-6:6px;--radius-4:4px;--transition-1:.25s ease;--transition-2:.4s ease;--cubic-out:cubic-bezier(.33, 1, .68, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}li{list-style:none}a{color:inherit;text-decoration:none}img,ion-icon,svg{display:block}button{font:inherit;cursor:pointer;background:0 0;border:none}input,textarea{font:inherit;background:0 0;border:none;width:100%}html{font-family:var(--ff-base);scroll-behavior:smooth}body{background:var(--bg-body);color:var(--text-primary);font-size:var(--fs-5);line-height:1.6;overflow-x:hidden}::selection{background:var(--accent);color:var(--cream)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--navy)}::-webkit-scrollbar-thumb{background:var(--accent);border-radius:10px}.container{max-width:1200px;margin-inline:auto;padding-inline:15px}.h1{font-size:var(--fs-1);font-weight:var(--fw-500)}.h2,.h3{font-weight:var(--fw-500)}.h2{font-size:var(--fs-2)}.h3{font-size:var(--fs-4)}.section-title-wrapper{margin-bottom:30px}.section-subtitle{color:var(--accent-light);font-size:var(--fs-6);font-weight:var(--fw-500);text-transform:uppercase;letter-spacing:1px;margin-bottom:5px}.section-text{color:var(--text-secondary);font-size:var(--fs-6);margin-top:10px}.btn{background:var(--accent);color:var(--cream);border-radius:var(--radius-8);font-size:var(--fs-6);font-weight:var(--fw-500);transition:var(--transition-1);align-items:center;gap:8px;padding:12px 24px;display:inline-flex}.btn:hover,.btn:focus-visible{background:var(--accent-light);transform:translateY(-2px)}.btn-outline{border:1px solid var(--border-color-strong);color:var(--text-primary);background:0 0}.btn-outline:hover,.btn-outline:focus-visible{background:var(--bg-surface-2);border-color:var(--accent)}::placeholder{color:var(--text-muted)}.icon-box{background:var(--bg-surface-2);width:45px;min-width:45px;height:45px;color:var(--accent-light);border-radius:var(--radius-8);place-items:center;font-size:22px;display:grid}.has-scrollbar::-webkit-scrollbar{width:6px;height:6px}.has-scrollbar::-webkit-scrollbar-thumb{background:var(--accent);border-radius:10px}@media (width>=580px){.container{max-width:540px}}@media (width>=768px){.container{max-width:720px}}@media (width>=1024px){.container{max-width:1200px;padding-inline:40px}}.main-content article{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-16);padding:25px;animation:.4s forwards fade-in}@keyframes fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.article-title{color:var(--text-primary);border-bottom:1px solid var(--border-color);margin-bottom:25px;padding-bottom:15px}.h4{font-size:var(--fs-5);font-weight:var(--fw-600)}.sidebar{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-28);transition:var(--transition-2);padding:20px}.sidebar-info{align-items:center;gap:20px;display:flex;position:relative}.avatar-box{background:var(--bg-surface-2);border:2px solid var(--accent);border-radius:50%;width:80px;min-width:80px;overflow:hidden}.avatar-box img{object-fit:cover;width:100%;height:100%}.info-content .name{color:var(--text-primary);font-size:var(--fs-3);font-weight:var(--fw-600);text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px;overflow:hidden}.info-content .title{background:var(--bg-surface-2);color:var(--accent-light);font-size:var(--fs-8);font-weight:var(--fw-500);border-radius:var(--radius-4);padding:3px 12px 2px;display:inline-block}.sidebar-info_more{transition:var(--transition-2);grid-template-rows:0fr;display:grid}.sidebar.active .sidebar-info_more{grid-template-rows:1fr}.sidebar-info_more>*{overflow:hidden}.separator{background:var(--border-color);width:100%;height:1px;margin-block:16px}.sidebar.active .separator:first-child{margin-top:16px}.contacts-list{flex-direction:column;gap:15px;display:flex}.contact-item{align-items:center;gap:16px;display:flex}.contact-item .icon-box{width:38px;min-width:38px;height:38px;font-size:18px}.contact-info{flex:1;min-width:0}.contact-title{color:var(--text-muted);font-size:var(--fs-8);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.contact-info address,.contact-link{color:var(--text-secondary);font-size:var(--fs-7);text-overflow:ellipsis;white-space:nowrap;transition:var(--transition-1);font-style:normal;display:block;overflow:hidden}.contact-link:hover{color:var(--accent-light)}.social-list{justify-content:center;align-items:center;gap:10px;display:flex}.social-link{background:var(--bg-surface-2);width:40px;height:40px;color:var(--text-primary);border-radius:var(--radius-8);transition:var(--transition-1);place-items:center;font-size:18px;display:grid}.social-link:hover{background:var(--accent);color:var(--cream);transform:translateY(-3px)}.info_more-btn{color:var(--text-secondary);font-size:var(--fs-8);align-self:flex-start;align-items:center;gap:6px;margin-left:auto;display:none}.info_more-btn .icon{transition:var(--transition-1);font-size:16px}.info_more-btn .icon.flip{transform:rotate(180deg)}@media (width<=1024px){.info_more-btn{display:flex}}@media (width>=1250px){.sidebar{position:sticky;top:30px}.sidebar-info_more{grid-template-rows:1fr}}.navbar{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-16);z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);margin-bottom:25px;position:sticky;top:15px}.navbar-list{scrollbar-width:none;display:flex;overflow-x:auto}.navbar-list::-webkit-scrollbar{display:none}.navbar-item{flex:1;min-width:max-content}.navbar-link{color:var(--text-secondary);font-size:var(--fs-6);font-weight:var(--fw-500);text-align:center;width:100%;transition:var(--transition-1);border-radius:var(--radius-16);padding:14px 20px;position:relative}.navbar-link:hover{color:var(--text-primary)}.navbar-link.active{color:var(--cream);background:var(--accent)}@media (width<=580px){.navbar-link{font-size:var(--fs-7);padding:12px 14px}}.about-text p{color:var(--text-secondary);font-size:var(--fs-6);margin-bottom:15px;line-height:1.8}.about-text p:last-child{margin-bottom:0}.service{margin-top:40px}.service-title{color:var(--text-primary);margin-bottom:20px}.service-list{grid-template-columns:1fr;gap:20px;display:grid}.service-item{background:var(--bg-surface-2);border:1px solid var(--border-color);border-radius:var(--radius-12);transition:var(--transition-1);gap:18px;padding:20px;display:flex}.service-item:hover{border-color:var(--accent);transform:translateY(-3px)}.service-icon-box{background:var(--bg-surface);width:50px;min-width:50px;height:50px;color:var(--accent-light);border-radius:var(--radius-10);place-items:center;font-size:24px;display:grid}.service-item-title{color:var(--text-primary);margin-bottom:8px}.service-item-text{color:var(--text-secondary);font-size:var(--fs-7);line-height:1.7}@media (width>=580px){.service-list{grid-template-columns:1fr 1fr}}.timeline{margin-bottom:40px}.timeline .title-wrapper{align-items:center;gap:16px;margin-bottom:25px;display:flex}.timeline .icon-box{background:var(--bg-surface-2);width:45px;height:45px;color:var(--accent-light);border-radius:var(--radius-10);place-items:center;font-size:22px;display:grid}.timeline .title-wrapper h3{color:var(--text-primary)}.timeline-list{border-left:2px solid var(--border-color);flex-direction:column;gap:22px;padding-left:25px;display:flex}.timeline-item{position:relative}.timeline-item:before{content:"";background:var(--accent);width:10px;height:10px;box-shadow:0 0 0 3px var(--bg-surface-2);border-radius:50%;position:absolute;top:6px;left:-31px}.timeline-item-title{color:var(--text-primary);margin-bottom:4px}.timeline-item .timeline-place{color:var(--accent-light);font-size:var(--fs-7);display:block}.timeline-item>span{color:var(--text-muted);font-size:var(--fs-8);margin-top:2px;display:inline-block}.timeline-text{color:var(--text-secondary);font-size:var(--fs-7);margin-top:8px;line-height:1.7}.skills-title{color:var(--text-primary);margin-bottom:20px}.skills-list{flex-direction:column;gap:18px;display:flex}.skills-item .title-wrapper{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.skills-item h5{color:var(--text-primary);font-size:var(--fs-6);font-weight:var(--fw-500)}.skills-item data{color:var(--accent-light);font-size:var(--fs-7);font-weight:var(--fw-600)}.skill-progress-bg{background:var(--bg-surface-2);border-radius:10px;height:8px;overflow:hidden}.skill-progress-fill{background:var(--accent);height:100%;transition:width 1s var(--cubic-out);border-radius:10px}.other-skills{margin-top:40px}.tag-list{flex-wrap:wrap;gap:10px;display:flex}.tag-item{background:var(--bg-surface-2);border:1px solid var(--border-color);color:var(--text-secondary);font-size:var(--fs-7);border-radius:var(--radius-6);padding:8px 16px}.filter-list{flex-wrap:wrap;gap:10px;margin-bottom:25px;display:flex}.filter-btn{background:var(--bg-surface-2);border:1px solid var(--border-color);color:var(--text-secondary);font-size:var(--fs-7);font-weight:var(--fw-500);border-radius:var(--radius-6);transition:var(--transition-1);padding:9px 18px}.filter-btn:hover{color:var(--text-primary);border-color:var(--accent)}.filter-btn.active{background:var(--accent);color:var(--cream);border-color:var(--accent)}.project-list{grid-template-columns:1fr;gap:20px;display:grid}.project-card{text-align:left;background:var(--bg-surface-2);border:1px solid var(--border-color);border-radius:var(--radius-12);width:100%;transition:var(--transition-1);display:block;overflow:hidden}.project-card:hover{border-color:var(--accent);transform:translateY(-4px)}.project-thumb.placeholder{aspect-ratio:16/10;background:repeating-linear-gradient(135deg, var(--bg-surface-2), var(--bg-surface-2) 10px, var(--bg-surface) 10px, var(--bg-surface) 20px);border-bottom:1px dashed var(--border-color-strong);color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.project-thumb.placeholder ion-icon,.project-thumb.placeholder svg{font-size:34px}.project-thumb.placeholder span{font-size:var(--fs-8);text-transform:uppercase;letter-spacing:.5px}.project-card-body{padding:16px 18px 20px}.project-category{color:var(--accent-light);font-size:var(--fs-8);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.project-title{color:var(--text-primary);font-size:var(--fs-4);font-weight:var(--fw-600);margin-bottom:4px}.project-subtitle{color:var(--text-secondary);font-size:var(--fs-7)}@media (width>=580px){.project-list{grid-template-columns:1fr 1fr}}@media (width>=1024px){.project-list{grid-template-columns:1fr 1fr 1fr}}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0a2947bf;justify-content:center;align-items:center;padding:20px;animation:.25s forwards fade-in;display:flex;position:fixed;inset:0}.modal-box{background:var(--navy);border:1px solid var(--border-color-strong);border-radius:var(--radius-16);width:100%;max-width:640px;max-height:88vh;position:relative;overflow-y:auto}.modal-close{width:36px;height:36px;color:var(--cream);z-index:2;transition:var(--transition-1);background:#0a2947b3;border-radius:50%;place-items:center;font-size:20px;display:grid;position:absolute;top:14px;right:14px}.modal-close:hover{background:var(--accent)}.modal-thumb{aspect-ratio:16/9;border-radius:var(--radius-16) var(--radius-16) 0 0}.modal-content{padding:24px}.modal-title{color:var(--text-primary);font-size:var(--fs-2);font-weight:var(--fw-600);margin-bottom:4px}.modal-subtitle{color:var(--accent-light);font-size:var(--fs-6);margin-bottom:4px}.modal-type{color:var(--text-muted);font-size:var(--fs-8);margin-bottom:16px}.modal-description{color:var(--text-secondary);font-size:var(--fs-6);margin-bottom:18px;line-height:1.8}.modal-stack{flex-wrap:wrap;gap:8px;margin-bottom:22px;display:flex}.achievements{margin-bottom:45px}.title-wrapper{align-items:center;gap:16px;margin-bottom:25px;display:flex}.title-wrapper .icon-box{background:var(--bg-surface-2);width:45px;height:45px;color:var(--accent-light);border-radius:var(--radius-10);place-items:center;font-size:22px;display:grid}.title-wrapper h3{color:var(--text-primary)}.achievement-list{flex-direction:column;gap:14px;display:flex}.achievement-item{background:var(--bg-surface-2);border:1px solid var(--border-color);border-radius:var(--radius-10);transition:var(--transition-1);align-items:center;gap:16px;padding:16px 18px;display:flex}.achievement-item:hover{border-color:var(--accent)}.achievement-icon{background:var(--bg-surface);width:36px;min-width:36px;height:36px;color:var(--accent-light);border-radius:50%;place-items:center;font-size:18px;display:grid}.achievement-item>div:nth-child(2){flex:1;min-width:0}.achievement-title{color:var(--text-primary);margin-bottom:2px}.achievement-place{color:var(--text-secondary);font-size:var(--fs-7)}.achievement-year{color:var(--accent-light);font-size:var(--fs-7);font-weight:var(--fw-600);white-space:nowrap}.certificates-note{margin-top:0;margin-bottom:18px}.certificate-grid{grid-template-columns:1fr;gap:18px;display:grid}.certificate-card{border-radius:var(--radius-12);background:var(--bg-surface-2);border:1px solid var(--border-color);overflow:hidden}.certificate-card.placeholder{aspect-ratio:4/3;color:var(--text-muted);border-style:dashed;border-color:var(--border-color-strong);background:repeating-linear-gradient(135deg, var(--bg-surface-2), var(--bg-surface-2) 10px, var(--bg-surface) 10px, var(--bg-surface) 20px);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.certificate-card.placeholder ion-icon,.certificate-card.placeholder svg{font-size:36px}.certificate-card.placeholder span{font-size:var(--fs-8);text-transform:uppercase;letter-spacing:.5px}.certificate-thumb{aspect-ratio:4/3;overflow:hidden}.certificate-thumb img{object-fit:cover;width:100%;height:100%}.certificate-info{padding:14px 16px}.certificate-info h4{color:var(--text-primary);margin-bottom:4px}.certificate-info p{color:var(--text-secondary);font-size:var(--fs-7)}.certificate-info span{color:var(--text-muted);font-size:var(--fs-8)}@media (width>=580px){.certificate-grid{grid-template-columns:1fr 1fr}}@media (width>=1024px){.certificate-grid{grid-template-columns:1fr 1fr 1fr}}.mapbox{border-radius:var(--radius-12);border:1px solid var(--border-color);margin-bottom:30px;overflow:hidden}.mapbox iframe{filter:grayscale(.3)invert(.92)contrast(.9);border:none;display:block}.contact-summary{flex-direction:column;gap:16px;margin-bottom:35px;display:flex}.contact-summary li{align-items:center;gap:16px;display:flex}.contact-summary .contact-title{color:var(--text-muted);font-size:var(--fs-8);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.contact-summary a,.contact-summary address{color:var(--text-secondary);font-size:var(--fs-6);transition:var(--transition-1);font-style:normal}.contact-summary a:hover{color:var(--accent-light)}.form-title{color:var(--text-primary);margin-bottom:18px}.form{flex-direction:column;gap:15px;display:flex}.input-wrapper{grid-template-columns:1fr;gap:15px;display:grid}.form-input{background:var(--bg-surface-2);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-8);font-size:var(--fs-6);transition:var(--transition-1);resize:vertical;padding:13px 16px}.form-input:focus{border-color:var(--accent);outline:none}.form-btn{border:none;align-self:flex-start}.form-btn:disabled{background:var(--bg-surface-2);color:var(--text-muted);cursor:not-allowed;transform:none}@media (width>=580px){.input-wrapper{grid-template-columns:1fr 1fr}}main{padding-block:20px}.app-layout{gap:20px;display:grid}@media (width>=1250px){.app-layout{grid-template-columns:340px 1fr;align-items:start}}
