@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/inter-latin-ext-300-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/inter-latin-300-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-latin-ext-500-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-latin-500-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-latin-ext-600-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/outfit-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/outfit-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/outfit-latin-ext-600-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/outfit-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/outfit-latin-ext-700-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/outfit-latin-700-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Outfit;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/outfit-latin-ext-800-normal.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Outfit;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/outfit-latin-800-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-dark:#fff;--bg-card:#f8fafcbf;--bg-card-hover:#f8fafcf2;--border-color:#114c5f14;--border-hover:#114c5f40;--primary:#114c5f;--secondary:#004367;--text-main:#083141;--text-muted:#59747c;--font-head:"Outfit", sans-serif;--font-body:"Inter", sans-serif;--font-mono:ui-monospace, "Cascadia Code", Consolas, "SF Mono", Menlo, monospace;--glow:0 0 20px #114c5f1f;--glow-strong:0 0 30px #114c5f38;--transition:all .3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;background-color:var(--bg-dark);color:var(--text-main);font-family:var(--font-body);scroll-padding-top:100px;overflow-x:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{min-height:100vh;line-height:1.6;position:relative}.skip-link{z-index:400;background:var(--primary);color:#fff;font-family:var(--font-head);border-radius:12px;padding:12px 20px;font-size:16px;font-weight:600;text-decoration:none;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus{outline-offset:-5px;outline:2px dashed #fff;transform:none}#indhold:focus,.section-title:focus,.project-page-title:focus{outline:none}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{border:2px solid var(--bg-dark);background:#cbd5e1;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.bg-grid{z-index:-2;pointer-events:none;background-image:linear-gradient(#114c5f09 1px,#0000 1px),linear-gradient(90deg,#114c5f09 1px,#0000 1px);background-size:50px 50px;width:100%;height:100%;position:fixed;top:0;left:0}.bg-gradient-glow{z-index:-1;pointer-events:none;filter:blur(80px);background:radial-gradient(circle,#114c5f14 0%,#0000 70%);width:60vw;height:60vh;position:fixed;top:-10%;right:-10%}.bg-gradient-glow-2{z-index:-1;pointer-events:none;filter:blur(80px);background:radial-gradient(circle,#0043670f 0%,#0000 70%);width:50vw;height:50vh;position:fixed;bottom:-10%;left:-10%}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}#header{z-index:100;-webkit-backdrop-filter:blur(20px)saturate(160%);width:100%;transition:var(--transition);background:linear-gradient(#ddeef6bd 0%,#cfe6f099 100%);border-bottom:1px solid #114c5f1f;position:fixed;top:0;left:0}#header.header-scrolled{background:linear-gradient(#d6eaf3e0 0%,#c7e1edcc 100%);border-bottom-color:#114c5f29;padding:5px 0;box-shadow:0 8px 32px #114c5f1f}.nav-container{justify-content:space-between;align-items:center;height:80px;display:flex}.logo{font-family:var(--font-head);text-transform:uppercase;letter-spacing:1px;color:var(--text-main);align-items:center;gap:10px;font-size:24px;font-weight:800;line-height:1;text-decoration:none;display:flex}.logo-mark{color:var(--primary);flex-shrink:0;transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.logo:hover .logo-mark{transform:rotate(-12deg)scale(1.06)}.logo-3d{letter-spacing:.08em;color:var(--primary);border:1.6px solid;border-radius:5px;align-items:center;margin-left:-3px;padding:3px 5px 2px 6px;font-size:.68em;display:inline-flex}#nav-links{align-items:center;gap:32px;display:flex}#nav-links a:not(.btn-cta-nav){color:#3f5d66;font-family:var(--font-body);transition:var(--transition);padding:8px 0;font-size:15px;font-weight:500;text-decoration:none;position:relative}#nav-links a:not(.btn-cta-nav):hover,#nav-links a:not(.btn-cta-nav).active{color:var(--primary);text-shadow:var(--glow)}#nav-links a:not(.btn-cta-nav):after{content:"";background:linear-gradient(90deg, var(--primary), var(--secondary));width:0;height:2px;transition:var(--transition);position:absolute;bottom:0;left:0}#nav-links a:not(.btn-cta-nav):hover:after,#nav-links a:not(.btn-cta-nav).active:after{width:100%}.btn-cta-nav{border:1px solid var(--primary);color:var(--primary);font-family:var(--font-head);transition:var(--transition);background:#114c5f0f;border-radius:50px;padding:10px 22px;font-size:14px;font-weight:600;text-decoration:none}.btn-cta-nav:hover{background:var(--primary);color:var(--bg-dark);box-shadow:var(--glow)}.menu-btn{width:44px;height:44px;color:var(--text-main);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:12px;justify-content:center;align-items:center;margin-right:-10px;display:none}.menu-btn .icon-close,.menu-btn[aria-expanded=true] .icon-open{display:none}.menu-btn[aria-expanded=true] .icon-close{display:block}.hero{align-items:center;min-height:100vh;padding-top:100px;display:flex;position:relative}.hero-grid{grid-template-columns:1fr 1fr;align-items:center;gap:40px;width:100%;display:grid}.hero-content{z-index:5;flex-direction:column;gap:20px;display:flex}.hero-tag{font-family:var(--font-head);text-transform:uppercase;letter-spacing:3px;color:var(--primary);align-items:center;gap:8px;font-size:14px;font-weight:700;display:inline-flex}.hero-tag:before{content:"";background-color:var(--primary);width:8px;height:8px;box-shadow:var(--glow-strong);border-radius:50%;display:inline-block}.hero-title{font-family:var(--font-head);letter-spacing:-1px;font-size:clamp(40px,5vw,64px);font-weight:800;line-height:1.1}.hero-title span{background:linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text}.hero-description{color:var(--text-muted);max-width:500px;font-size:17px;font-weight:300}.hero-buttons{flex-wrap:wrap;gap:16px;margin-top:12px;display:flex}.hero-buttons a{white-space:nowrap}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);color:var(--bg-dark);font-family:var(--font-head);transition:var(--transition);box-shadow:var(--glow);cursor:pointer;border:none;border-radius:50px;align-items:center;gap:8px;padding:14px 28px;font-size:16px;font-weight:700;text-decoration:none;display:inline-flex}.btn-primary:hover{box-shadow:var(--glow-strong);transform:translateY(-2px)}.btn-secondary{border:1px solid var(--border-color);color:var(--text-main);font-family:var(--font-head);transition:var(--transition);cursor:pointer;background:#114c5f08;border-radius:50px;align-items:center;gap:8px;padding:14px 28px;font-size:16px;font-weight:600;text-decoration:none;display:inline-flex}.btn-secondary:hover{border-color:var(--border-hover);background:#114c5f12;transform:translateY(-2px)}.hero-3d-container{justify-content:center;align-items:center;width:100%;height:500px;display:flex;position:relative}#canvas3d{z-index:1;touch-action:pan-y;outline:none;width:100%;height:100%;position:absolute;top:0;left:0}.hero-3d-fallback{width:min(260px,60%);height:auto;color:var(--primary);display:none}.hero-3d-container.is-3d-unavailable #canvas3d{display:none}.hero-3d-container.is-3d-unavailable .hero-3d-fallback{display:block}section{border-top:1px solid var(--border-color);padding:100px 0;position:relative}section[id]{scroll-margin-top:-100px}.section-header{max-width:600px;margin-bottom:60px}.section-tag{font-family:var(--font-head);color:var(--primary);text-transform:uppercase;letter-spacing:2px;margin-bottom:8px;font-size:13px;font-weight:700;display:block}.section-title{font-family:var(--font-head);font-size:clamp(32px,4vw,42px);font-weight:800;line-height:1.2}.about-grid{grid-template-columns:minmax(220px,360px) 1fr;align-items:start;gap:56px;display:grid}.about-photo img{aspect-ratio:1;object-fit:cover;border:1px solid var(--border-color);border-radius:20px;width:100%;height:auto;display:block;box-shadow:0 18px 40px #08314124}.about-text .section-title{margin-bottom:20px}.about-text p{max-width:62ch;color:var(--text-muted);margin-bottom:14px;font-size:17px;line-height:1.7}.about-text .about-lede{color:var(--text-main);font-size:19px}.about-more{max-width:62ch;margin-bottom:8px}.about-more summary{cursor:pointer;min-height:44px;font-family:var(--font-head);color:var(--primary);align-items:center;gap:8px;font-weight:600;list-style:none;display:inline-flex}.about-more summary::-webkit-details-marker{display:none}.about-more summary:after{content:"";border-bottom:2px solid;border-right:2px solid;width:8px;height:8px;transition:transform .2s;transform:translateY(-2px)rotate(45deg)}.about-more[open] summary:after{transform:translateY(2px)rotate(-135deg)}.about-more summary:focus-visible{outline:2px solid var(--primary);outline-offset:4px;border-radius:6px}.about-more[open]>:not(summary){animation:.3s both about-more-in}@keyframes about-more-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.about-more h3,.about-sub{font-family:var(--font-head);color:var(--text-main);margin:22px 0 8px;font-size:17px;font-weight:700}.about-more a{color:var(--primary);white-space:nowrap;font-weight:600}.career{grid-template-columns:minmax(200px,250px) 1fr;gap:8px 28px;margin-top:4px;display:grid}.career-tabs{border-left:2px solid var(--border-color);flex-direction:column;display:flex}.career-tab{text-align:left;cursor:pointer;width:100%;min-height:56px;font:inherit;color:var(--text-muted);background:0 0;border:0;border-left:2px solid #0000;align-items:center;gap:12px;margin-left:-2px;padding:6px 12px;transition:background-color .2s,border-color .2s,color .2s;display:flex}.career-tab:hover{background:#114c5f0a}.career-tab[aria-selected=true]{border-left-color:var(--primary);color:var(--text-main);background:#114c5f0f}.career-tab:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;border-radius:4px}.job-logo{border:1px solid var(--border-color);object-fit:contain;background:#fff;border-radius:10px;flex:none;width:40px;height:40px;padding:5px}.job-logo--wide{padding:4px}.job-logo--ludo,.job-logo--tile{border-color:#0000;padding:0}.job-head{flex-direction:column;min-width:0;display:flex}.job-name{font-family:var(--font-head);color:var(--text-main);font-size:15px;font-weight:600;line-height:1.3}.job-time{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);font-size:11px}.career-panels{display:grid}.career-panel{padding:6px 0}.career.is-tabbed .career-panel{visibility:hidden;opacity:0;grid-area:1/1;transition:opacity .25s,transform .25s,visibility 0s linear .25s;transform:translateY(6px)}.career.is-tabbed .career-panel.is-active{visibility:visible;opacity:1;transition:opacity .25s,transform .25s,visibility;transform:none}.career-panel-name{font-family:var(--font-head);color:var(--text-main);margin:0 0 10px;font-size:17px;font-weight:700}.about-text .career .career-panel-time{font-family:var(--font-mono);color:var(--text-muted);margin:-6px 0 10px;font-size:12px;display:none}.career-role+.career-role{margin-top:14px}.about-text .career p{max-width:none;margin:0;line-height:1.45}.about-text .career .career-role-title{color:var(--text-main);font-size:15px}.about-text .career .career-when{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);margin:2px 0 0;font-size:12px}.career-client{border-left:2px solid var(--border-color);margin-top:10px;padding-left:12px}.career-client a{color:var(--primary);white-space:nowrap;font-weight:600}.about-text .career .career-nda{color:var(--text-muted);margin-top:16px;font-size:13px}.career-example{border:1px solid var(--border-color);color:inherit;background:#ffffffb3;border-radius:14px;grid-template-columns:168px 1fr;align-items:center;gap:14px;margin-top:8px;padding:10px;text-decoration:none;transition:border-color .2s,box-shadow .2s,transform .2s;display:grid}.career-example:hover{border-color:#114c5f40;transform:translateY(-1px);box-shadow:0 10px 24px #0831411a}.career-example:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.career-example img{aspect-ratio:16/9;object-fit:cover;border-radius:9px;width:100%;height:auto;display:block}.career-example-text{flex-direction:column;gap:3px;display:flex}.career-example-title{font-family:var(--font-head);color:var(--text-main);font-size:15px;font-weight:700}.career-example-desc{color:var(--text-muted);font-size:13px;line-height:1.45}.career-example-cta{color:var(--primary);margin-top:2px;font-size:13px;font-weight:600}@media (width<=420px){.career-example{grid-template-columns:1fr}}.role-tasks{color:var(--text-muted);margin:6px 0 0;padding-left:1.1em;font-size:14px;line-height:1.55}.role-tasks li{padding:1px 0}@media (prefers-reduced-motion:reduce){.about-more[open]>:not(summary){animation:none}.about-more summary:after,.career-tab,.career.is-tabbed .career-panel,.career.is-tabbed .career-panel.is-active,.career-example{transition:none}.career.is-tabbed .career-panel{transform:none}}@media (width<=720px){.career{grid-template-columns:1fr}.career.is-tabbed .career-panel{display:none;transform:none}.career.is-tabbed .career-panel.is-active{display:block}.career-tab{gap:8px;padding:6px 10px}.career-tab .job-logo{width:32px;height:32px}.career-tab .job-time{display:none}.about-text .career .career-panel-time{display:block}.career-tabs{border-left:0;border-bottom:2px solid var(--border-color);scrollbar-width:none;flex-direction:row;overflow-x:auto}.career-tabs::-webkit-scrollbar{display:none}.career-tab{border-bottom:2px solid #0000;border-left:0;flex:none;width:auto;margin:0 0 -2px}.career-tab[aria-selected=true]{border-bottom-color:var(--primary)}}.about-offer-tag{margin:80px 0 24px}@media (width<=768px){.about-grid{grid-template-columns:1fr;gap:32px}.about-offer-tag{margin-top:56px}.about-photo{max-width:320px}}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:30px;display:grid}.skill-card{background:var(--bg-card);border:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);transition:var(--transition);border-radius:20px;flex-direction:column;gap:24px;padding:40px;display:flex;position:relative;overflow:hidden}.skill-card:before{content:"";background:linear-gradient(90deg, var(--primary), var(--secondary));opacity:0;width:100%;height:3px;transition:var(--transition);position:absolute;top:0;left:0}.skill-card:hover{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-5px);box-shadow:0 10px 30px #114c5f14}.skill-card:hover:before{opacity:1}.skill-icon{border:1px solid var(--border-color);width:64px;height:64px;color:var(--primary);transition:var(--transition);background:#114c5f0a;border-radius:16px;justify-content:center;align-items:center;display:flex}.skill-card:hover .skill-icon{border-color:var(--primary);color:var(--primary);box-shadow:var(--glow);background:#114c5f14}.skill-icon svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:36px;height:36px}.skill-icon svg .solid{fill:currentColor;stroke:none}.skill-icon svg .tint{fill:currentColor;fill-opacity:.16;stroke:none;transition:fill-opacity .3s}.skill-card:hover .skill-icon svg .tint{fill-opacity:.3}.skill-icon svg .cursor,.skill-icon svg .ripple,.skill-icon svg .play,.skill-icon svg .sun,.skill-icon svg .window{transform-box:fill-box;transform-origin:50%}.skill-icon svg .window{fill-opacity:.25}.skill-icon svg .ripple{opacity:0;stroke-width:1.5px}.skill-card:hover .icon-web .cursor{animation:.9s ease-in-out icon-cursor-click}.skill-card:hover .icon-web .ripple{animation:.9s ease-out icon-ripple}.skill-icon svg .clapper{transform-box:view-box;transform-origin:3.25px 10.25px;transform:rotate(-16deg)}.skill-card:hover .icon-film .clapper{animation:.9s ease-in-out icon-clap}.skill-card:hover .icon-film .play{animation:.5s ease-in-out .35s icon-pop}@keyframes icon-clap{0%,to{transform:rotate(-16deg)}30%{transform:rotate(0)}42%{transform:rotate(-5deg)}54%{transform:rotate(0)}}.skill-card:hover .icon-arch .sun{animation:1.2s ease-in-out icon-sunset}.skill-card:hover .icon-arch .window{animation:1.2s ease-in-out icon-window-light}@keyframes icon-sunset{0%,to{opacity:1;transform:translateY(0)}45%,60%{opacity:0;transform:translateY(4px)}}@keyframes icon-window-light{0%,to{fill-opacity:.25}45%,60%{fill-opacity:1}}@keyframes icon-pop{0%,to{transform:scale(1)}45%{transform:scale(1.35)}}@keyframes icon-cursor-click{0%,to{transform:translate(0)scale(1)}35%{transform:translate(-1.5px,-1.5px)scale(1)}50%{transform:translate(-1.5px,-1.5px)scale(.8)}65%{transform:translate(-1.5px,-1.5px)scale(1)}}@keyframes icon-ripple{0%,45%{opacity:0;transform:scale(.3)}60%{opacity:.7}to{opacity:0;transform:scale(1.6)}}@media (prefers-reduced-motion:reduce){.skill-icon svg *{transition:none!important;animation:none!important}}.skill-title{font-family:var(--font-head);font-size:22px;font-weight:700}.skill-description{color:var(--text-muted);font-size:15px;font-weight:300}.skill-tags{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.skill-tag{border:1px solid var(--border-color);color:var(--text-muted);background:#114c5f0a;border-radius:30px;padding:6px 12px;font-size:12px;font-weight:500}.skill-item{flex-direction:column;display:flex;position:relative}.skill-item>.skill-card{z-index:2;flex:1}.skill-examples{z-index:1;flex-direction:column;gap:10px;display:flex;position:relative}.skill-examples-label{font-family:var(--font-head);letter-spacing:1.5px;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:700}.skill-examples ul{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.skill-examples li a{color:var(--text-main);flex-direction:column;gap:6px;font-size:12.5px;line-height:1.35;text-decoration:none;display:flex}.skill-examples img{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--border-color);border-radius:10px;width:100%;height:auto;transition:transform .3s,border-color .3s;display:block}.skill-examples li a:hover,.skill-examples li a:focus-visible{color:var(--primary)}.skill-examples li a:hover img,.skill-examples li a:focus-visible img{border-color:var(--border-hover);transform:translateY(-2px)}.skill-examples li a:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:10px}.skill-more{min-height:32px;font-family:var(--font-head);color:var(--primary);align-self:flex-start;align-items:center;gap:6px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.skill-more svg{transition:transform .2s}.skill-more:hover svg,.skill-more:focus-visible svg{transform:translate(3px)}@media (hover:hover) and (pointer:fine){.skill-examples{border:1px solid var(--border-hover);opacity:0;pointer-events:none;background:#fff;border-top:none;border-radius:0 0 20px 20px;padding:36px 22px 16px;transition:opacity .25s,transform .25s;position:absolute;top:calc(100% - 22px);left:0;right:0;transform:translateY(-10px);box-shadow:0 18px 40px #114c5f1f}.skill-item:hover,.skill-item:focus-within{z-index:5}.skill-item:hover .skill-examples,.skill-item:focus-within .skill-examples{opacity:1;pointer-events:auto;transform:translateY(0)}.skill-item:hover>.skill-card,.skill-item:focus-within>.skill-card{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-5px)}}@media (hover:none),(pointer:coarse){.skill-examples{border:1px solid var(--border-color);background:#f8fafcbf;border-top:none;border-radius:0 0 20px 20px;margin-top:-20px;padding:32px 18px 12px}.skill-more{min-height:44px}}@media (prefers-reduced-motion:reduce){.skill-examples,.skill-examples img{transition:none}}.portfolio-grid{grid-template-columns:repeat(auto-fit,minmax(min(350px,100%),1fr));gap:30px;display:grid}.project-card{color:inherit;background:var(--bg-card);border:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);cursor:pointer;will-change:transform;backface-visibility:hidden;border-radius:20px;flex-direction:column;text-decoration:none;transition:transform .5s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .3s,background .3s;display:flex;overflow:hidden;transform:translate(0,0);-webkit-mask-image:-webkit-radial-gradient(#fff,#fff)}.project-card:hover{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-8px);box-shadow:0 15px 40px #114c5f14}.project-img-wrapper{backface-visibility:hidden;background:0 0;width:100%;height:240px;margin-bottom:-1px;position:relative;overflow:hidden;transform:translate(0,0);-webkit-mask-image:-webkit-radial-gradient(#fff,#fff)}.project-img{object-fit:cover;will-change:transform;backface-visibility:hidden;width:100%;height:calc(100% + 2px);transition:transform .5s cubic-bezier(.16,1,.3,1);position:relative;top:-1px;transform:translate(0,0)scale(1.01)}.project-card:hover .project-img{transform:translate(0,0)scale(1.06)}.project-img-overlay{pointer-events:none;background:linear-gradient(#0000 78%,#f8fafce6 100%);position:absolute;inset:-1px}.project-badge{border:1px solid var(--border-color);letter-spacing:1px;text-transform:uppercase;color:var(--primary);-webkit-backdrop-filter:blur(4px);background:#f8fafcd9;border-radius:30px;align-items:center;gap:6px;padding:6px 14px;font-size:11px;font-weight:600;display:flex;position:absolute;top:20px;right:20px}.project-badge span{background:var(--primary);width:6px;height:6px;box-shadow:var(--glow);border-radius:50%}.project-content{flex-direction:column;flex-grow:1;gap:16px;padding:30px;display:flex}.project-title{font-family:var(--font-head);font-size:22px;font-weight:700}.project-description{color:var(--text-muted);font-size:14px;font-weight:300;line-height:1.5}.project-footer{border-top:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:16px;margin-top:auto;padding-top:15px;display:flex}.project-tech{overflow-wrap:anywhere;min-width:0;color:var(--text-muted);flex:auto;font-size:12px;font-weight:500;line-height:1.6}@media (width>=769px){.project-tech{align-items:center;min-height:calc(1.6em + 26px);display:flex}}.project-tech-text{margin-right:9px}.tool-list--compact{vertical-align:-7px;gap:6px;display:inline-flex}.tool-list--compact li{display:flex}.tool-list{padding:0;list-style:none}.tool-icon{border:1px solid var(--border-color);background:#fff;border-radius:6px;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.tool-icon img{object-fit:contain;filter:grayscale();opacity:.55;width:16px;height:16px;transition:filter .2s,opacity .2s;display:block}.project-card:hover .tool-icon img,.project-card:focus-visible .tool-icon img,.project-meta .tool-list li:hover .tool-icon img{filter:none;opacity:1}@media (hover:none){.project-meta .tool-icon img{filter:none;opacity:1}}@media (prefers-reduced-motion:reduce){.tool-icon img{transition:none}}.project-meta dd.project-tools{max-width:none}.project-meta .tool-list{flex-wrap:wrap;gap:8px 18px;display:flex}.project-meta .tool-list li{align-items:center;gap:7px;display:flex}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.project-link{white-space:nowrap;color:var(--primary);font-family:var(--font-head);transition:var(--transition);flex-shrink:0;align-items:center;gap:6px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.project-card:hover .project-link{text-shadow:var(--glow);gap:10px}.project-section{border-top:none;padding-top:120px}.project-page{max-width:1200px;margin:0 auto;padding:0 24px 40px}.project-head{gap:14px;margin:22px 0 36px;display:grid}.project-kicker{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--primary);flex-wrap:wrap;align-items:center;gap:10px 30px;font-size:11px;display:flex;overflow:hidden}.project-kicker-sep{opacity:.4;position:absolute;right:calc(100% + 11px)}.project-kicker-date{white-space:nowrap;align-items:center;display:inline-flex;position:relative}.project-page-title{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;font-family:var(--font-head);letter-spacing:-1px;font-size:clamp(36px,6vw,64px);font-weight:800;line-height:1.05}.project-page-lede{max-width:62ch;color:var(--text-muted);font-size:18px;font-weight:300}.project-meta{border-top:1px solid var(--border-color);grid-template-columns:minmax(0,1.4fr) minmax(0,1.4fr) minmax(0,1fr);gap:16px 36px;margin-top:8px;padding-top:20px;display:grid}.project-head:after{content:"";border-top:1px solid #114c5f59;border-bottom:1px solid #114c5f59;height:5px;margin-top:22px;display:block}@media (width>=993px){.project-meta.has-tech{grid-template-columns:minmax(0,1.25fr) minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr)}}@media (width>=769px) and (width<=992px){.project-meta.has-tech{grid-template-columns:repeat(2,minmax(0,1fr))}}.project-meta dt{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:11px}.project-meta dd{max-width:44ch;color:var(--text-main);font-size:14px;font-weight:500}.project-hero{margin-bottom:60px}.project-hero-video{aspect-ratio:16/9;object-fit:contain;background:#0b1c24;border-radius:20px;width:100%;display:block;box-shadow:0 20px 50px #114c5f1f}.project-hero-video.show-poster{object-fit:cover}.project-hero-pair{grid-template-columns:1fr 1fr;gap:16px;max-width:900px;margin:0 auto;display:grid}.project-hero-image img{border-radius:20px}.gallery-item--small{max-width:260px}.project-gallery:has(>.section-clip){grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.project-gallery>.section-clip{width:100%;margin:0;max-width:none!important}.project-gallery:has(>.section-clip) .project-gallery-grid{columns:1}.compare-set{grid-template-columns:1fr 1fr;gap:24px 48px;max-width:680px;margin:0 auto;display:grid}.compare{margin:0}.compare-stage{background:#e9eef0;border-radius:20px;position:relative;overflow:hidden}.compare-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.compare-img:first-child{position:relative}.compare-bar{grid-template-columns:auto 1fr;align-items:center;gap:6px 14px;margin-top:12px;display:grid}.compare-view{font-family:var(--font-head);color:var(--text-main);font-weight:700}.compare-range{width:100%;accent-color:var(--primary);cursor:pointer}.compare-stops{grid-column:1/-1;justify-content:space-between;display:flex}.compare-stop{min-height:36px;font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 10px;font-size:13px}.compare-stop[aria-pressed=true]{color:var(--primary);background:#114c5f14;font-weight:600}.compare-stop:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (width<=640px){.compare-set{grid-template-columns:1fr}}.demo-shell{border:1px solid var(--border-color);background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 20px 50px #114c5f1f}.demo-frame{height:min(var(--demo-h,700px), 78vh);background:#f3f7f8;min-height:420px;position:relative}.demo-frame iframe{border:0;width:100%;height:100%;display:block;position:absolute;inset:0}.demo-loading{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);pointer-events:none;background:#f3f7f8;flex-direction:column;justify-content:center;align-items:center;gap:14px;font-size:11px;transition:opacity .5s;display:flex;position:absolute;inset:0}.demo-shell.is-loaded .demo-loading{opacity:0}.demo-spinner{border:2px solid #114c5f26;border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.demo-bar{border-top:1px solid var(--border-color);background:#114c5f08;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;display:flex}.demo-bar-label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--primary);align-items:center;gap:10px;margin-right:auto;font-size:11px;display:inline-flex}.demo-bar-label:before{content:"";background:#2bb673;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #2bb67329}.demo-btn{border:1px solid var(--border-hover);min-height:40px;color:var(--primary);font-family:var(--font-head);cursor:pointer;transition:var(--transition);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.demo-btn:hover{border-color:var(--primary);background:#114c5f0f}.demo-btn[hidden]{display:none}.locked-panel{background:#0b1c24;border-radius:20px;justify-content:center;align-items:center;min-height:460px;padding:48px 24px;display:flex;position:relative;overflow:hidden}.locked-bg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.locked-form{z-index:1;text-align:center;background:#fffffff0;border-radius:18px;width:min(100%,440px);padding:32px 28px 26px;position:relative;box-shadow:0 18px 50px #08314159}.locked-icon{width:56px;height:56px;color:var(--primary);background:#114c5f1a;border-radius:50%;justify-content:center;align-items:center;margin-bottom:12px;display:inline-flex}.locked-form h2{font-family:var(--font-head);color:var(--text-main);font-size:24px}.locked-form p{color:var(--text-muted);margin-top:8px;font-size:15px}.locked-row{gap:10px;margin-top:20px;display:flex}.locked-row input{min-width:0;color:var(--text-main);font-family:var(--font-body);background:#f8fafc;border:1px solid #748f98;border-radius:12px;flex:1;padding:12px 16px;font-size:16px}.locked-row input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #114c5f33}.locked-row input[aria-invalid=true]{border-color:#c82828}.locked-row .btn-primary{flex-shrink:0;padding:12px 22px}.locked-row .btn-primary:disabled{opacity:.6;cursor:progress}.locked-form .locked-error{color:#b42318;font-weight:600}.locked-form .locked-help{margin-top:16px;font-size:13px}.locked-form .locked-help a{color:var(--primary)}@media (width<=480px){.locked-row{flex-direction:column}}.project-lock{z-index:2;color:#fff;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;background:#083141d1;border-radius:999px;align-items:center;gap:6px;padding:5px 11px 5px 9px;font-size:10px;display:inline-flex;position:absolute;bottom:14px;left:16px}.project-lock svg{width:13px;height:13px}.project-lock-mark{z-index:2;width:64px;height:64px;color:var(--primary);background:#ffffffe6;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 30px #0831414d}.project-lock-mark svg{width:28px;height:28px}.demo-poster{cursor:pointer;width:100%;font:inherit;background:#0b1c24;border:0;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:0;display:flex;position:absolute;inset:0}.demo-poster img{object-fit:cover;opacity:.85;width:100%;height:100%;transition:opacity .4s,transform .8s cubic-bezier(.16,1,.3,1);position:absolute;inset:0}.demo-poster:after{content:"";background:radial-gradient(circle,#0831411a 0%,#0831418c 100%);position:absolute;inset:0}.demo-poster-cta,.demo-poster-note{z-index:1;position:relative}.demo-poster-cta{color:var(--primary);font-family:var(--font-head);background:#fffffff2;border-radius:999px;align-items:center;gap:10px;padding:16px 28px;font-size:16px;font-weight:700;transition:transform .3s cubic-bezier(.34,1.56,.64,1);display:inline-flex;box-shadow:0 12px 34px #08314159}.demo-poster-note{color:#fff;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;background:#083141b3;border-radius:999px;padding:4px 12px;font-size:11px}.demo-poster:hover img{opacity:1;transform:scale(1.02)}.demo-poster:hover .demo-poster-cta,.demo-poster:focus-visible .demo-poster-cta{transform:scale(1.06)}.demo-poster:focus-visible{outline-offset:-10px;outline:2px dashed #fff}.demo-controls{border-top:1px solid var(--border-color);flex-wrap:wrap;align-items:center;gap:10px 16px;padding:14px 16px 16px;display:flex}.demo-controls-label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);font-size:11px}.demo-controls ul{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.demo-controls li{border:1px solid var(--border-color);color:var(--text-main);background:#114c5f0a;border-radius:999px;padding:6px 12px;font-size:13px}.project-inline-media{margin-top:28px}.project-inline-media .gallery-item{margin:0}.project-body{grid-template-columns:minmax(0,1fr);gap:56px;display:grid}.project-body.has-gallery{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start}.project-text{max-width:68ch}.project-text h2{font-family:var(--font-head);color:var(--text-main);margin:40px 0 10px;font-size:22px;font-weight:700}.project-text h2:first-child{margin-top:0}.section-index{font-family:var(--font-mono);letter-spacing:.18em;color:var(--primary);margin-bottom:6px;font-size:11px;font-weight:400;display:block}.project-text p{color:var(--text-muted);font-size:16px;font-weight:300;line-height:1.75}.project-text p.project-text-lead{color:var(--text-main);font-size:18px}.project-cta{border:1px solid var(--border-color);background:linear-gradient(135deg,#ddeef6b3 0%,#f8fafce6 100%);border-radius:20px;justify-content:space-between;align-items:center;gap:24px;margin-top:90px;padding:36px 40px;display:flex}.project-cta h2{font-family:var(--font-head);margin-top:6px;font-size:clamp(22px,3vw,28px);font-weight:800;line-height:1.2}.project-cta p{max-width:52ch;color:var(--text-muted);margin-top:8px;font-weight:300}.project-cta .btn-primary{flex-shrink:0}.section-clip{aspect-ratio:16/9;object-fit:contain;background:#0b1c24;border-radius:14px;width:100%;margin:20px auto 0;display:block}.section-clip--loop{cursor:pointer;position:relative;overflow:hidden}.section-clip--loop video{object-fit:contain;width:100%;height:100%;display:block}.section-clip--trim video{object-fit:cover;height:calc(100% + 4px);margin-top:-2px}video.section-clip--trim{clip-path:inset(2px 0 round 14px)}.clip-toggle{color:#fff;cursor:pointer;opacity:.85;background:#083141b8;border:1px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;padding:0;transition:opacity .2s,background .2s;display:flex;position:absolute;bottom:10px;right:10px}.clip-toggle:hover,.clip-toggle:focus-visible{opacity:1;background:#083141eb}.clip-toggle:focus-visible{outline-offset:2px;outline:2px dashed #fff}.clip-toggle .clip-icon-play,.section-clip--loop.is-paused .clip-toggle .clip-icon-pause{display:none}.section-clip--loop.is-paused .clip-toggle .clip-icon-play{display:block}@media (pointer:coarse){.clip-toggle{width:44px;height:44px}}.project-gallery-grid{columns:2;column-gap:16px}.project-gallery-grid>.gallery-item:first-child:nth-last-child(3){column-span:all}.project-gallery.is-sticky{position:sticky;top:110px}.gallery-item{cursor:zoom-in;break-inside:avoid;width:100%;font:inherit;background:#e8eef0;border:0;border-radius:14px;margin:0 0 16px;padding:0;display:block;position:relative;overflow:hidden}.gallery-item img{width:100%;height:auto;transition:transform .6s cubic-bezier(.16,1,.3,1);display:block}.gallery-item:hover img{transform:scale(1.04)}.gallery-item:after{content:"";opacity:0;background:#083141c7 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='m20 20-4.5-4.5M11 8.5v5M8.5 11h5'/%3E%3C/svg%3E") 50%/18px no-repeat;border-radius:50%;width:34px;height:34px;transition:opacity .25s,transform .25s;position:absolute;top:10px;right:10px;transform:scale(.85)}.gallery-item:hover:after,.gallery-item:focus-visible:after{opacity:1;transform:scale(1)}.gallery-item:focus-visible{outline:2px dashed var(--primary);outline-offset:3px}.gallery-caption{color:#fff;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;background:#083141d1;border-radius:999px;padding:4px 10px;font-size:10px;position:absolute;bottom:10px;left:10px}@media (width<=599px){.gallery-caption{letter-spacing:.08em;text-align:left;-webkit-line-clamp:2;line-clamp:2;border-top:3px solid #0000;border-bottom:3px solid #0000;border-radius:8px;-webkit-box-orient:vertical;max-width:calc(100% - 12px);padding:0 8px;line-height:1.35;display:-webkit-box;bottom:6px;left:6px;overflow:hidden}}.project-pager{grid-template-columns:1fr 1fr;gap:20px;margin-top:32px;display:grid}.pager-link{border:1px solid var(--border-color);background:var(--bg-card);color:var(--text-main);transition:var(--transition);border-radius:16px;align-items:center;gap:16px;padding:14px;text-decoration:none;display:flex}.pager-link:hover{border-color:var(--border-hover);transform:translateY(-2px)}.pager-link--next{text-align:right;flex-direction:row-reverse}.pager-link img{object-fit:cover;border-radius:10px;flex-shrink:0;width:96px;height:64px}.pager-dir{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px;font-size:11px;display:block}.pager-title{font-family:var(--font-head);font-size:16px;font-weight:700}.lightbox{z-index:300;touch-action:pan-y pinch-zoom;overscroll-behavior:contain;background:#040c10f0;justify-content:center;align-items:center;padding:56px 80px;display:flex;position:fixed;inset:0}.lightbox[hidden]{display:none}html.lightbox-open,html.lightbox-open body{overscroll-behavior:none}html.lightbox-open{scrollbar-gutter:stable;overflow:hidden}.lightbox-figure{flex-direction:column;align-items:center;gap:12px;max-width:100%;margin:0;display:flex}.lightbox-figure img{object-fit:contain;border-radius:8px;max-width:100%;max-height:calc(100vh - 150px)}.lightbox-caption,.lightbox-count{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:#cfe6ee;font-size:11px}.lightbox-count{opacity:.7;position:absolute;top:30px;left:26px}.lightbox-close,.lightbox-nav{color:#fff;cursor:pointer;width:48px;height:48px;transition:var(--transition);background:#ffffff14;border:1px solid #ffffff40;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.lightbox-close:hover,.lightbox-nav:hover{background:#ffffff2e}.lightbox-close{top:16px;right:16px}.lightbox-prev{top:50%;left:16px;transform:translateY(-50%)}.lightbox-next{top:50%;right:16px;transform:translateY(-50%)}.lightbox-nav[hidden]{display:none}.project-media-chip{z-index:2;color:#fff;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;-webkit-backdrop-filter:blur(4px);background:#083141d1;border-radius:999px;padding:5px 11px;font-size:10px;position:absolute;bottom:14px;left:16px}@media (width<=992px){.project-body.has-gallery{grid-template-columns:minmax(0,1fr);gap:40px}}@media (width<=768px){.project-section{padding-top:100px}.demo-frame{height:72vh;min-height:360px}.project-hero{margin-bottom:40px}.project-hero-video,.demo-shell{border-radius:14px}.project-pager{grid-template-columns:1fr}.project-meta{grid-template-columns:minmax(0,1fr)}.project-cta{flex-direction:column;align-items:flex-start;margin-top:60px;padding:28px 24px}.pager-link--next{text-align:left;flex-direction:row}.lightbox{padding:64px 12px 84px}.lightbox-nav{top:auto;bottom:18px;transform:none}.lightbox-prev{left:calc(50% - 60px)}.lightbox-next{right:calc(50% - 60px)}}.contact-container{grid-template-columns:1.2fr 1.8fr;align-items:start;gap:50px;display:grid}.contact-info{flex-direction:column;gap:30px;display:flex}.contact-method{align-items:flex-start;gap:16px;display:flex}.contact-icon{border:1px solid var(--border-color);width:46px;height:46px;color:var(--primary);background:#114c5f0a;border-radius:12px;justify-content:center;align-items:center;display:flex}.contact-method-content h3{font-family:var(--font-head);margin-bottom:4px;font-size:16px;font-weight:600}.contact-method-content p{color:var(--text-muted);font-size:14px}.contact-method-content a{color:var(--primary);transition:var(--transition);font-size:14px;text-decoration:none}.contact-method-content a:hover{text-decoration:underline}.social-row{gap:12px;margin-top:15px;display:flex}.social-link{border:1px solid var(--border-color);width:40px;height:40px;color:var(--text-muted);transition:var(--transition);background:#114c5f08;border-radius:50%;justify-content:center;align-items:center;text-decoration:none;display:flex}.social-link:hover{color:var(--primary);border-color:var(--primary);box-shadow:var(--glow);background:#114c5f14;transform:translateY(-2px)}.contact-form{background:var(--bg-card);border:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);border-radius:20px;flex-direction:column;gap:20px;padding:40px;display:flex;position:relative}.form-row{grid-template-columns:1fr 1fr;gap:20px;display:grid}.input-group{flex-direction:column;gap:8px;display:flex}.input-group label{font-family:var(--font-head);color:var(--text-muted);letter-spacing:.5px;font-size:13px;font-weight:500}.input-group input,.input-group textarea{color:var(--text-main);font-family:var(--font-body);transition:var(--transition);background:#f8fafc;border:1px solid #748f98;border-radius:12px;width:100%;padding:14px 18px;scroll-margin-top:32px;font-size:16px}.input-group input::placeholder,.input-group textarea::placeholder{color:var(--text-muted);opacity:1}.input-group input:focus,.input-group textarea:focus{border-color:var(--primary);box-shadow:var(--glow);background:#fff;outline:none}.btn-submit{background:linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);color:var(--bg-dark);font-family:var(--font-head);cursor:pointer;transition:var(--transition);box-shadow:var(--glow);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-top:10px;padding:16px;font-size:16px;font-weight:700;display:flex}.btn-submit:hover{box-shadow:var(--glow-strong);transform:translateY(-2px)}.form-privacy{color:var(--text-muted);margin-top:-6px;font-size:12px;line-height:1.5}.form-privacy a{color:var(--primary)}.form-hp{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.form-success-overlay{background:var(--bg-card-hover);z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;visibility:hidden;pointer-events:none;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:100%;height:100%;transition:opacity .3s cubic-bezier(.4,0,.2,1),visibility 0s linear .3s;display:flex;position:absolute;top:0;left:0}.form-success-overlay.active{opacity:1;visibility:visible;pointer-events:all;transition:opacity .3s cubic-bezier(.4,0,.2,1),visibility linear}.form-success-overlay h3:focus{outline:none}.form-success-overlay h3{font-family:var(--font-head);font-size:22px}.form-success-overlay p{color:var(--text-muted);text-align:center;max-width:320px;font-size:14px}.form-success-overlay .btn-secondary{margin-top:10px}.success-circle{border:2px solid var(--primary);width:64px;height:64px;color:var(--primary);box-shadow:var(--glow);background:#114c5f14;border-radius:50%;justify-content:center;align-items:center;display:flex}footer{border-top:1px solid var(--border-color);text-align:center;background:#083141;padding:50px 0}.footer-logo{font-family:var(--font-head);color:#fff;text-transform:uppercase;letter-spacing:1px;align-items:center;gap:8px;margin-bottom:20px;font-size:20px;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.footer-logo .logo-mark{color:#fff}.footer-logo .logo-3d{color:#9fd8e6}.footer-links{justify-content:center;gap:30px;margin-bottom:30px;display:flex}.footer-links a{color:#ffffffb3;transition:var(--transition);font-size:14px;text-decoration:none}.footer-links a:hover{color:#38bdf8}.copyright a{color:inherit;margin-left:6px}.copyright a:hover{color:#38bdf8}.copyright{color:#ffffffb3;font-size:13px;font-weight:300}@media (width<=992px){.hero-grid{text-align:center;grid-template-columns:1fr;gap:50px}.hero-description{margin:0 auto}.hero-buttons,.hero-content .social-row{justify-content:center}.hero-tag{align-self:center}.hero-3d-container{height:400px}.contact-container{grid-template-columns:1fr;gap:50px}}@media (width<=768px){#nav-links{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#e2f0f7fa;border-bottom:1px solid #114c5f1f;flex-direction:column;gap:24px;width:100%;padding:40px 24px;display:none;position:absolute;top:80px;left:0}#nav-links.mobile-active,.menu-btn{display:flex}.form-row{grid-template-columns:1fr}.hero{padding-bottom:40px}#portfolio,#about,#contact{padding-top:64px;padding-bottom:64px;scroll-margin-top:-64px}}@media (height<=500px){html{scroll-padding-top:72px}.nav-container{height:60px}#header.header-scrolled{padding:0}.hero{padding-top:80px}.demo-frame{height:calc(100svh - 130px);min-height:220px}.project-hero-video{max-width:calc(177.778svh - 160px);margin:0 auto}.hero-3d-container{height:min(400px,100svh - 80px);min-height:240px}}@media (height<=500px) and (width<=768px){#nav-links{max-height:calc(100vh - 60px);top:60px;overflow-y:auto}}.back-link{color:var(--primary);font-family:var(--font-head);transition:var(--transition);align-items:center;gap:8px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.back-link svg{transition:var(--transition);transform:rotate(180deg)}.back-link:hover{color:var(--text-main);text-shadow:var(--glow)}.back-link:hover svg{transform:rotate(180deg)translate(4px)}.filter-bar{flex-wrap:wrap;gap:12px;margin-bottom:40px;display:flex}.filter-btn{border:1px solid var(--border-color);color:var(--text-muted);font-family:var(--font-head);cursor:pointer;transition:var(--transition);background:#114c5f08;border-radius:50px;padding:10px 24px;font-size:14px;font-weight:600}.filter-btn:hover{border-color:var(--border-hover);color:var(--text-main);background:#114c5f12;transform:translateY(-2px)}.filter-btn.active{background:linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);color:var(--bg-dark);box-shadow:var(--glow);border:none}.filter-btn.active:hover{box-shadow:var(--glow-strong);transform:translateY(-2px)}.filter-count{min-width:1.7em;color:var(--text-main);text-align:center;background:#114c5f14;border-radius:50px;margin-left:6px;padding:1px 7px;font-size:12px;line-height:1.6;display:inline-block}.filter-btn.active .filter-count{color:inherit;background:#fff3}.project-card:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.portfolio-action[hidden]{display:none}.portfolio-grid .project-card.is-fresh{animation:.5s cubic-bezier(.16,1,.3,1) backwards card-in;animation-delay:var(--fresh-delay,0s)}@keyframes card-in{0%{opacity:0;transform:translateY(16px)}}@media (prefers-reduced-motion:reduce){.portfolio-grid .project-card.is-fresh{animation:none}}@media (width<=600px){.filter-bar{gap:8px;margin-bottom:28px}.filter-bar .filter-btn{padding-left:14px;padding-right:14px;font-size:13px}}.portfolio-action{justify-content:center;width:100%;margin-top:50px;display:flex}.reveal,.reveal-left,.reveal-right,.reveal-stagger{opacity:0;will-change:transform, opacity;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}.reveal{transform:translateY(30px)}.reveal-left{transform:translate(-50px)}.reveal-right{transform:translate(50px)}.reveal-stagger{transform:translateY(30px)}@media (width<=992px),(pointer:coarse){.reveal-left,.reveal-right{transform:translateY(30px)}}.reveal.reveal-visible,.reveal-left.reveal-visible,.reveal-right.reveal-visible,.reveal-stagger.reveal-visible{opacity:1;transform:translate(0)}.reveal-stagger>*{opacity:0;will-change:transform, opacity;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(30px)}.reveal-stagger.reveal-visible>*{opacity:1;transform:translate(0)}.reveal-stagger>:first-child{transition-delay:.1s}.reveal-stagger>:nth-child(2){transition-delay:.2s}.reveal-stagger>:nth-child(3){transition-delay:.3s}.reveal-stagger>:nth-child(4){transition-delay:.4s}.reveal-stagger>:nth-child(5){transition-delay:.5s}.reveal-stagger>:nth-child(6){transition-delay:.6s}.reveal-stagger>:nth-child(7){transition-delay:.7s}.reveal-stagger>:nth-child(8){transition-delay:.8s}.reveal-stagger>:nth-child(9){transition-delay:.9s}.reveal-stagger>:nth-child(10){transition-delay:1s}.reveal-stagger>:nth-child(11){transition-delay:1.1s}.reveal-stagger>:nth-child(12){transition-delay:1.2s}.reveal-slide{animation:.8s cubic-bezier(.16,1,.3,1) both reveal-slide-in}@keyframes reveal-slide-in{0%{transform:translateY(24px)}to{transform:none}}@media (prefers-reduced-motion:reduce){.reveal-slide{animation:none}.reveal,.reveal-left,.reveal-right,.reveal-stagger,.reveal-stagger>*{opacity:1!important;transition:none!important;transform:none!important}}.project-card,.skill-card{position:relative;overflow:hidden}.project-card>*,.skill-card>*{z-index:2;position:relative}.project-card:after,.skill-card:after{content:"";z-index:1;background:radial-gradient(350px circle at var(--mouse-x,0px) var(--mouse-y,0px), #114c5f26, transparent 80%);opacity:0;pointer-events:none;transition:opacity .3s;position:absolute;inset:0}.project-card:hover:after,.skill-card:hover:after{opacity:1}.toast-notification{font-family:var(--font-body);z-index:10000;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(12px);text-align:center;border-radius:12px;max-width:90vw;padding:14px 28px;font-size:14px;font-weight:500;transition:opacity .35s,transform .35s;position:fixed;bottom:30px;left:50%;transform:translate(-50%)translateY(20px);box-shadow:0 8px 32px #0000002e}.toast-notification.toast-visible{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}.toast-error{color:#fff;background:#c82828e6;border:1px solid #ff64644d}.toast-success{color:#fff;background:#147850e6;border:1px solid #50c88c4d}.input-error{border-color:#c82828!important;box-shadow:0 0 0 3px #c8282826!important}.input-error:focus{border-color:#c82828!important;box-shadow:0 0 0 3px #c8282847!important}.field-error{color:#b42323;margin:-2px 0 0;font-size:13px;line-height:1.4}.field-error[hidden]{display:none}.btn-submit:disabled{opacity:.7;cursor:not-allowed}.btn-spinner{vertical-align:middle;border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (pointer:coarse){.back-link,.btn-cta-nav,#nav-links a:not(.btn-cta-nav){align-items:center;min-height:44px;display:inline-flex}.footer-links{flex-wrap:wrap;row-gap:0}.footer-links a{align-items:center;min-height:44px;display:inline-flex}.filter-btn{min-height:44px;padding:12px 24px}.social-link{width:44px;height:44px}.demo-btn{min-height:44px}.contact-method-content a{align-items:center;min-height:44px;display:inline-flex}}@media (hover:none){.btn-primary:hover,.btn-secondary:hover,.btn-submit:hover,.filter-btn:hover,.filter-btn.active:hover,.social-link:hover,.pager-link:hover,.skill-card:hover,.logo:hover .logo-mark,.gallery-item:hover img,.demo-poster:hover img,.demo-poster:hover .demo-poster-cta{transform:none}.back-link:hover svg{transform:rotate(180deg)}.project-card:hover{transform:translate(0,0)}.project-card:hover .project-img{transform:translate(0,0)scale(1.01)}.project-card:hover:after,.skill-card:hover:after{opacity:0}}@media (width<=768px){.project-kicker,.project-meta dt,.section-index,.pager-dir,.demo-bar-label,.demo-controls-label,.demo-poster-note,.demo-loading,.project-badge,.project-media-chip,.gallery-caption,.lightbox-caption,.lightbox-count{font-size:12px}}
