*{margin:0;padding:0;box-sizing:border-box}html,body,#app{width:100%;height:100vh;height:100dvh;overflow:hidden;overscroll-behavior:none;background:#000;touch-action:none}#app canvas{display:block;outline:none;touch-action:none;-webkit-tap-highlight-color:transparent}@media (max-width: 600px){.lil-gui.root{--width: min(260px, calc(100vw - 24px) );font-size:11px;top:env(safe-area-inset-top,0px);right:env(safe-area-inset-right,0px)}}#loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#05070a;z-index:10;transition:opacity .6s ease}#loading-overlay.hidden{opacity:0;pointer-events:none}#loading-bar-track{width:280px;height:4px;background:#ffffff26;border-radius:2px;overflow:hidden}#loading-bar-fill{width:0%;height:100%;background:#fff;transition:width .2s ease}#site-nav{position:fixed;top:16px;left:16px;z-index:20}#site-logo{display:block;width:64px;height:64px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.35));transition:transform .2s ease}#site-logo img{width:100%;height:100%;object-fit:contain;display:block}#site-nav:hover #site-logo,#site-nav:focus-within #site-logo,#site-nav.open #site-logo{transform:scale(1.06)}#site-menu{position:absolute;top:calc(100% + 8px);left:0;display:flex;flex-direction:column;gap:4px;min-width:180px;padding:8px;border-radius:10px;background:#0a0a0ebf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0006;opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}#site-nav:hover #site-menu,#site-nav:focus-within #site-menu,#site-nav.open #site-menu{opacity:1;transform:translateY(0);pointer-events:auto}.site-menu-item{color:#fff;font:13px/1.4 system-ui,-apple-system,sans-serif;text-decoration:none;padding:8px 10px;border-radius:6px;white-space:nowrap;transition:background .15s ease}.site-menu-item:hover,.site-menu-item:focus-visible{background:#ffffff1f}@media (max-width: 600px){#site-logo{width:44px;height:44px}}:root{--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--surface: rgba(12, 14, 20, .62);--surface-raised: rgb(24, 28, 38);--outline: rgba(255, 255, 255, .16);--on-surface: #f4f6fa;--on-surface-muted: rgba(244, 246, 250, .8);--action: #9be08f;--on-action: #0b1a0c;--ease: cubic-bezier(.4, 0, .2, 1);--dur-micro: .12s;--dur-standard: .26s;--dur-panel: .26s}#hero{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;display:flex;align-items:center;padding:0 clamp(1.5rem,6vw,6rem);pointer-events:none;color:var(--on-surface);font-family:system-ui,-apple-system,Segoe UI,sans-serif}.hero-card{max-width:min(30rem,46vw);padding:var(--space-lg) var(--space-lg) calc(var(--space-lg) + var(--space-xs));border-radius:1.25rem;border:1px solid var(--outline);background:var(--surface);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 2px #05081433,0 12px 32px #05081447;pointer-events:auto;opacity:0;transition:opacity .42s var(--ease) .15s}body.is-ready .hero-card{opacity:1}.hero-eyebrow{margin:0 0 var(--space-sm);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--action)}.hero-title{margin:0 0 var(--space-md);font-size:clamp(1.75rem,2.8vw,2.5rem);line-height:1.12;text-wrap:balance;font-weight:700;letter-spacing:-.02em}.hero-rotator{display:block;color:var(--action);transition:opacity .2s var(--ease),transform .2s var(--ease)}.hero-rotator.is-out{opacity:0;transform:translateY(-.3em)}.hero-copy{margin:0 0 var(--space-lg);font-size:1rem;line-height:1.55;color:var(--on-surface-muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md)}.reveal{opacity:0;transform:translateY(.75rem);transition:opacity .42s var(--ease),transform .42s var(--ease);transition-delay:calc(.25s + var(--i, 0) * 90ms)}body.is-ready .reveal{opacity:1;transform:none}.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:var(--space-sm);min-height:2.75rem;padding:0 var(--space-lg);border:1px solid transparent;border-radius:999px;font:600 .9375rem/1 system-ui,-apple-system,Segoe UI,sans-serif;cursor:pointer;transition:transform var(--dur-micro) var(--ease),background var(--dur-standard) var(--ease),border-color var(--dur-standard) var(--ease),box-shadow var(--dur-standard) var(--ease)}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(7rem circle at var(--mx, 50%) var(--my, 50%),rgba(255,255,255,.28),transparent 70%);opacity:0;transition:opacity var(--dur-standard) var(--ease);pointer-events:none}.btn:hover:after{opacity:1}.btn:hover{transform:translateY(-2px)}.btn:active{transform:translateY(0) scale(.97)}.btn-primary{background:var(--action);color:var(--on-action);box-shadow:0 4px 14px #9be08f40}.btn-primary:hover{box-shadow:0 8px 22px #9be08f61}.btn-ghost{background:transparent;color:var(--on-surface);border-color:var(--outline)}.btn-ghost:hover{background:#ffffff14;border-color:#ffffff57}.btn-ghost.is-done{border-color:var(--action);color:var(--action)}.btn-icon,.icon{width:1.125rem;height:1.125rem;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.btn-icon{transition:transform var(--dur-standard) var(--ease)}.btn:hover .btn-icon{transform:translate(4px)}.btn:focus-visible,.panel-close:focus-visible,.project-card:focus-visible,.contact-mail:focus-visible,.contact-link:focus-visible{outline:2px solid #fff;outline-offset:3px}.panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;font-family:system-ui,-apple-system,Segoe UI,sans-serif}.panel[hidden]{display:none}.panel-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0508108c;opacity:0;transition:opacity var(--dur-panel) var(--ease)}.panel-sheet{position:absolute;top:0;right:0;bottom:0;width:min(26rem,100vw);display:flex;flex-direction:column;gap:var(--space-lg);padding:var(--space-lg);padding-bottom:max(var(--space-lg),env(safe-area-inset-bottom));overflow-y:auto;background:var(--surface-raised);color:var(--on-surface);border-left:1px solid var(--outline);box-shadow:-12px 0 40px #05081466;transform:translate(100%);transition:transform var(--dur-panel) var(--ease)}.panel.is-open .panel-backdrop{opacity:1}.panel.is-open .panel-sheet{transform:none}.panel-header{position:sticky;top:calc(-1 * var(--space-lg));z-index:1;margin-top:calc(-1 * var(--space-lg));padding-top:var(--space-lg);padding-bottom:var(--space-sm);background:var(--surface-raised);display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.panel-title{margin:0 0 var(--space-xs);font-size:1.5rem;line-height:1.2;letter-spacing:-.01em}.panel-intro{margin:0;font-size:.9375rem;line-height:1.5;color:var(--on-surface-muted)}.panel-close{flex:none;display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid var(--outline);border-radius:50%;background:transparent;color:var(--on-surface);cursor:pointer;transition:transform var(--dur-standard) var(--ease),background var(--dur-standard) var(--ease)}.panel-close:hover{background:#ffffff1a;transform:rotate(90deg)}.panel-close:active{transform:rotate(90deg) scale(.92)}.project-list,.contact-links{list-style:none;display:flex;flex-direction:column;gap:var(--space-md);margin:0;padding:0}.project-item{opacity:0;transform:translateY(.5rem);transition:opacity .32s var(--ease),transform .32s var(--ease);transition-delay:calc(.12s + var(--i, 0) * 70ms)}.panel.is-open .project-item{opacity:1;transform:none}.project-card,.contact-link{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--outline);border-radius:1rem;color:var(--on-surface);text-decoration:none;transition:transform var(--dur-standard) var(--ease),border-color var(--dur-standard) var(--ease),background var(--dur-standard) var(--ease)}.project-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(10rem circle at var(--mx, 50%) var(--my, 50%),rgba(155,224,143,.16),transparent 70%);opacity:0;transition:opacity var(--dur-standard) var(--ease);pointer-events:none}.project-card:hover,.contact-link:hover{transform:translateY(-2px);border-color:#9be08f99;background:#ffffff0a}.project-card:hover:after{opacity:1}.project-card:active,.contact-link:active{transform:scale(.985)}.project-card .icon,.contact-link .icon{color:var(--action);transition:transform var(--dur-standard) var(--ease)}.project-card:hover .icon,.contact-link:hover .icon{transform:translate(3px,-3px)}.project-main{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.project-name{font-size:1.0625rem;font-weight:600}.project-desc{font-size:.875rem;line-height:1.45;color:var(--on-surface-muted)}.project-meta{display:flex;align-items:center;gap:var(--space-sm);font-size:.75rem;color:var(--on-surface-muted)}.project-tag{padding:.125rem .5rem;border-radius:999px;background:#9be08f29;color:var(--action)}.project-card.is-static{border-style:dashed}.contact{display:flex;flex-direction:column;gap:var(--space-lg)}.contact-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.contact-mail{font-size:1.125rem;font-weight:600;color:var(--action);overflow-wrap:anywhere}@media (max-aspect-ratio: 13/10){#hero{align-items:flex-start;padding:5.25rem var(--space-md) 0}.hero-card{max-width:30rem;padding:var(--space-md) var(--space-md) calc(var(--space-md) + var(--space-xs))}.hero-title{font-size:clamp(1.5rem,6.4vw,2.25rem);margin-bottom:var(--space-sm)}.hero-copy{margin-bottom:var(--space-md);font-size:.9375rem}.hero-actions{gap:var(--space-sm)}.hero-actions .btn{padding:0 var(--space-md);font-size:.875rem}.panel-sheet{top:auto;left:0;width:100%;max-height:82dvh;border-left:0;border-top:1px solid var(--outline);border-radius:1.25rem 1.25rem 0 0;box-shadow:0 -12px 40px #05081466;transform:translateY(100%)}}@media (max-width: 600px){#hero{padding-top:4.5rem}}@media (prefers-reduced-motion: reduce){.reveal,.hero-card,.project-item{opacity:1;transform:none;transition:none}.btn,.btn:after,.btn-icon,.panel-backdrop,.panel-sheet,.panel-close,.project-card,.project-card:after,.project-card .icon,.contact-link,.contact-link .icon{transition:none}.btn:hover,.btn:active,.btn:hover .btn-icon,.panel-close:hover,.project-card:hover,.contact-link:hover{transform:none}}:root{--dur-flight: .8s;--loader-logo: 7rem}#loader-logo{position:fixed;left:50%;top:50%;width:var(--loader-logo);height:var(--loader-logo);margin:calc(var(--loader-logo) / -2) 0 0 calc(var(--loader-logo) / -2);z-index:11;pointer-events:none;transform-origin:center;transition:transform var(--dur-flight) var(--ease)}.loader-logo-img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.4));animation:loader-hop 1.2s cubic-bezier(.45,0,.55,1) infinite}.loader-shadow{position:absolute;left:20%;right:20%;bottom:-.9rem;height:.75rem;border-radius:50%;background:#00000073;filter:blur(4px);animation:loader-shadow 1.2s cubic-bezier(.45,0,.55,1) infinite}#loader-logo.is-leaving .loader-shadow{opacity:0;animation:none;transition:opacity .2s var(--ease)}@keyframes loader-hop{0%{transform:translateY(0) rotate(0) scale(1.04,.94)}50%{transform:translateY(-2.25rem) rotate(180deg) scale(1)}to{transform:translateY(0) rotate(360deg) scale(1.04,.94)}}@keyframes loader-shadow{0%,to{transform:scaleX(1);opacity:.9}50%{transform:scaleX(.55);opacity:.35}}#loading-bar-track{position:absolute;top:calc(50% + var(--loader-logo) / 2 + 2.25rem)}body.is-loading #site-logo{opacity:0}@media (max-width: 600px){:root{--loader-logo: 5.5rem}#loading-bar-track{width:10rem}}@media (prefers-reduced-motion: reduce){.loader-logo-img,.loader-shadow{animation:none}}
