html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{--bg:#04080f;--bg-rgb:4, 8, 15;--surface:#0a1118;--text-primary:#fffffff2;--text-secondary:#ffffffb8;--text-tertiary:#ffffff7a;--text-dim:#ffffff47;--border:#ffffff14;--border-hover:#ffffff2e;--link:#ffffff85;--link-hover:#ffffffe6;--overlay-bg:#04080fb8;--glow-soft:#ffffff38;--glow-med:#ffffff1f;--glow-sharp:#ffffff2e;--glow-edge:#ffffff59;--hero-text:#fffc;--glass-h1:linear-gradient(158deg, #ffffffeb 0%, #ffffff14 12%, #b4d7ffa6 24%, #ffffff0a 38%, #a0cdff8c 50%, #ffffff0f 62%, #c8e1ffb3 76%, #ffffff1a 88%, #ffffffe0 100%);--nav-bg:#04080fd9;--nav-blur:12px;--theme-toggle-bg:#ffffff0f;--theme-toggle-hover:#ffffff1f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--bg:#f5f0eb;--bg-rgb:245, 240, 235;--surface:#ede7e0;--text-primary:#1e1914f5;--text-secondary:#1e1914b8;--text-tertiary:#1e191480;--text-dim:#1e19144d;--border:#1e19141a;--border-hover:#1e191438;--link:#1e19148c;--link-hover:#1e1914e0;--overlay-bg:#f5f0ebad;--glow-soft:#1e19140f;--glow-med:#1e19140a;--glow-sharp:#1e191414;--glow-edge:#1e19141f;--hero-text:#1e1914c7;--glass-h1:linear-gradient(158deg, #0a0805e6 0%, #0a08050f 12%, #2d37559e 24%, #0a08050a 38%, #37416485 50%, #0a08050d 62%, #283450ad 76%, #0a080514 88%, #0a0805d9 100%);--nav-bg:#f5f0ebd9;--nav-blur:12px;--theme-toggle-bg:#1e19140f;--theme-toggle-hover:#1e19141f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:18px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;font-family:JetBrains Mono,monospace;transition:background .4s,color .4s;overflow-x:hidden}#fluid-canvas{pointer-events:none;z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}#overlay{background:var(--overlay-bg);pointer-events:none;z-index:1;transition:background .4s;position:fixed;inset:0}.nav{z-index:400;background:var(--nav-bg);-webkit-backdrop-filter:blur(var(--nav-blur));justify-content:space-between;align-items:center;padding:1.2rem 2.4rem;transition:background .4s;display:flex;position:fixed;top:0;left:0;right:0}.nav-brand{letter-spacing:.28em;color:var(--text-secondary);font-size:.65rem;font-weight:500;text-decoration:none;transition:color .2s}.nav-brand:hover{color:var(--text-primary)}.nav-links{align-items:center;gap:2rem;display:flex}.nav-links a{letter-spacing:.22em;color:var(--text-tertiary);text-transform:uppercase;font-size:.58rem;font-weight:300;text-decoration:none;transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--text-primary)}.theme-toggle{background:var(--theme-toggle-bg);width:2rem;height:2rem;color:var(--text-secondary);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,color .2s;display:flex}.theme-toggle:hover{background:var(--theme-toggle-hover);color:var(--text-primary)}.theme-toggle:active{transform:scale(.88)}.theme-toggle svg{width:14px;height:14px}.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:block}[data-theme=light] .theme-toggle .icon-moon{display:none}.page{z-index:2;max-width:900px;margin:0 auto;padding:6rem 3rem 14rem;animation:.5s both pageIn;position:relative}@keyframes pageIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.footer{z-index:2;text-align:center;letter-spacing:.16em;color:var(--text-dim);padding:4rem 2rem 3rem;font-size:.5rem;font-weight:300;position:relative}#hero h1,.page-header h1,.about-content h1,.project-detail h1{background:var(--glass-h1);-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;transition:none}#fps{z-index:401;letter-spacing:.08em;color:var(--text-dim);pointer-events:none;-webkit-user-select:none;user-select:none;font-family:JetBrains Mono,monospace;font-size:.46rem;font-weight:300;position:fixed;top:4rem;right:2.4rem}.hide-toggle{letter-spacing:.18em;color:var(--text-tertiary);border:1px solid var(--text-tertiary);cursor:pointer;background:0 0;border-radius:2px;padding:.25rem .5rem;font-family:JetBrains Mono,monospace;font-size:.52rem;font-weight:300;transition:color .2s,border-color .2s}.hide-toggle:hover{color:var(--text-primary);border-color:var(--text-primary)}.hide-toggle:active{opacity:.6;transform:scale(.94)}.nav-center{pointer-events:auto;align-items:center;gap:.6rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-player{align-items:center;gap:.15rem;display:flex}.player-btn{letter-spacing:.1em;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.1rem .3rem;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:300;line-height:1;transition:color .2s;display:flex}#player-pause{padding:.15rem .4rem}.player-btn:hover{color:var(--text-primary)}.player-btn:active{opacity:.6;transform:scale(.9)}#player-track,.player-track{letter-spacing:.22em;color:var(--text-tertiary);-webkit-user-select:none;user-select:none;text-align:center;min-width:5rem;font-family:JetBrains Mono,monospace;font-size:.48rem;font-weight:300}.nav-player #player-prev,.nav-player #player-pause,.nav-player #player-next,.nav-player #player-track,.nav-player .player-btn,.nav-player .player-track{max-width:6rem;transition:opacity .4s cubic-bezier(.22,1,.36,1),max-width .4s cubic-bezier(.22,1,.36,1),margin .4s cubic-bezier(.22,1,.36,1);overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 15% 85%,#0000);mask-image:linear-gradient(90deg,#0000,#000 15% 85%,#0000)}.nav-player.muted #player-prev,.nav-player.muted #player-pause,.nav-player.muted #player-next,.nav-player.muted #player-track,.nav-player.muted .player-btn,.nav-player.muted .player-track{opacity:0;pointer-events:none;max-width:0;margin:0}@keyframes audio-beacon{0%{opacity:0;transform:scale(1)}8%{opacity:.65;transform:scale(1.08)}to{opacity:0;transform:scale(2.6)}}#audio-mute{font-size:.62rem;position:relative;overflow:visible}#audio-mute:before{content:"";opacity:0;pointer-events:none;border:1px solid;border-radius:2px;position:absolute;inset:-2px}#audio-mute.pulse:before{animation:1.05s ease-out 3 audio-beacon}#audio-mute.muted{opacity:.45;text-decoration:line-through}#audio-mute.muted:before{animation:none}.nav-hamburger{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;padding:4px;transition:color .2s;display:none}.nav-hamburger:hover{color:var(--text-primary)}.nav-hamburger span{background:currentColor;width:18px;height:1px;transition:transform .22s,opacity .22s;display:block}.nav-hamburger.open span:first-child{transform:translateY(6px)rotate(45deg)}.nav-hamburger.open span:nth-child(2){opacity:0}.nav-hamburger.open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}#trail-canvas{pointer-events:none;z-index:3;width:100%;height:100%;position:fixed;inset:0}@media (width<=640px){.nav{padding:1rem 1.4rem}#fps{top:3.6rem;right:1.4rem}.nav-hamburger{display:flex}.nav-links{background:var(--nav-bg);-webkit-backdrop-filter:blur(var(--nav-blur));border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:1.2rem;padding:1.2rem 1.4rem;display:none;position:absolute;top:100%;left:0;right:0}.nav-links.open{display:flex}.page{padding:5rem 1.5rem 10rem}}.param-menu-pill-host{z-index:998;pointer-events:none;flex-direction:column-reverse;align-items:flex-end;gap:8px;display:flex;position:fixed;bottom:12px;right:12px}.param-menu-pill-host>*{pointer-events:auto}.param-menu-pill{--pm-accent:#c4f;--pm-text:color-mix(in srgb, var(--pm-accent) 40%, #fff);background:color-mix(in srgb, var(--pm-accent) 10%, transparent);-webkit-backdrop-filter:blur(var(--nav-blur,12px));border:1px solid color-mix(in srgb, var(--pm-accent) 30%, transparent);letter-spacing:.14em;text-transform:uppercase;color:var(--pm-text);cursor:pointer;border-radius:3px;align-items:center;gap:.4rem;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:.48rem;transition:color .18s,border-color .18s,background .18s;display:inline-flex}.param-menu-pill:hover{color:var(--pm-accent);border-color:color-mix(in srgb, var(--pm-accent) 50%, transparent);background:color-mix(in srgb, var(--pm-accent) 15%, transparent)}.param-menu-pill-dot{background:var(--pm-accent);width:5px;height:5px;box-shadow:0 0 5px var(--pm-accent);border-radius:50%;animation:2.4s ease-in-out infinite param-menu-pulse}@keyframes param-menu-pulse{0%,to{opacity:.5}50%{opacity:1}}.param-menu-panel{--pm-accent:#c4f;--pm-text:color-mix(in srgb, var(--pm-accent) 40%, #fff);--pm-tip:color-mix(in srgb, var(--pm-accent) 45%, gray);z-index:999;width:min(96vw,600px);max-width:min(96vw,600px);max-height:70vh;-webkit-backdrop-filter:blur(var(--nav-blur,12px));border:1px solid color-mix(in srgb, var(--pm-accent) 15%, transparent);letter-spacing:.1em;color:var(--pm-text);-webkit-user-select:none;user-select:none;background:#0a061273;border-radius:6px;flex-direction:column;gap:8px;padding:10px 14px;font-family:JetBrains Mono,monospace;font-size:.48rem;display:flex;position:fixed;bottom:12px;left:50%;overflow-y:auto;transform:translate(-50%)}.param-menu-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.param-menu-title{text-transform:uppercase;letter-spacing:.14em;color:var(--pm-accent);font-size:.5rem;font-weight:500}.param-menu-close{appearance:none;background:color-mix(in srgb, var(--pm-accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--pm-accent) 30%, transparent);cursor:pointer;color:var(--pm-text);border-radius:3px;padding:2px 8px;font-family:JetBrains Mono,monospace;font-size:.7rem;line-height:1;transition:color .18s,border-color .18s}.param-menu-close:hover{color:var(--pm-accent);border-color:color-mix(in srgb, var(--pm-accent) 60%, transparent)}.param-menu-header-slot{flex-direction:column;gap:4px;display:flex}.param-menu-tabs{flex-wrap:wrap;gap:4px;margin-bottom:2px;display:flex}.param-menu-tab{letter-spacing:.12em;text-transform:uppercase;border:1px solid color-mix(in srgb, var(--pm-accent) 20%, transparent);color:var(--pm-text);cursor:pointer;background:0 0;border-radius:3px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:.46rem;transition:color .18s,border-color .18s,background .18s}.param-menu-tab:hover{border-color:color-mix(in srgb, var(--pm-accent) 40%, transparent)}.param-menu-tab.is-active{color:var(--pm-accent);border-color:color-mix(in srgb, var(--pm-accent) 50%, transparent);background:color-mix(in srgb, var(--pm-accent) 12%, transparent)}.param-menu-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 14px;display:grid}.param-knob{flex-direction:column;gap:2px;min-width:0;display:flex}.param-knob-row{text-transform:uppercase;justify-content:space-between;align-items:center;gap:4px;display:flex}.param-knob-label.has-tip{cursor:pointer}.param-knob-value{opacity:.65;font-variant-numeric:tabular-nums}.param-knob-tip{letter-spacing:.02em;text-transform:none;max-height:0;color:var(--pm-tip);opacity:.75;font-size:.82em;line-height:1.25;transition:max-height .18s;overflow:hidden}.param-knob-tip.is-open{max-height:80px}.param-knob-slider{width:100%;accent-color:var(--pm-accent);cursor:pointer;height:14px}.param-menu-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:2px;display:flex}.param-menu-profiles,.param-menu-actions{align-items:center;gap:6px;display:flex}.param-menu-profile{--pm-slot-color:var(--pm-accent);letter-spacing:.14em;text-transform:uppercase;text-align:center;cursor:pointer;min-width:32px;color:var(--pm-text);border:1px solid color-mix(in srgb, var(--pm-slot-color) 20%, transparent);opacity:.5;background:0 0;border-radius:3px;padding:4px 8px;font-family:JetBrains Mono,monospace;font-size:.48rem;transition:color .18s,border-color .18s,background .18s,opacity .18s}.param-menu-profile.has-data{opacity:1;border-color:color-mix(in srgb, var(--pm-slot-color) 40%, transparent)}.param-menu-profile.is-active{opacity:1;color:var(--pm-slot-color);border-color:color-mix(in srgb, var(--pm-slot-color) 80%, transparent);background:color-mix(in srgb, var(--pm-slot-color) 12%, transparent)}.param-menu-btn{letter-spacing:.14em;text-transform:uppercase;border:1px solid color-mix(in srgb, var(--pm-accent) 30%, transparent);background:color-mix(in srgb, var(--pm-accent) 10%, transparent);color:var(--pm-text);cursor:pointer;border-radius:3px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:.48rem;transition:color .18s,border-color .18s,background .18s,opacity .18s}.param-menu-btn:hover:not(:disabled){color:var(--pm-accent);border-color:color-mix(in srgb, var(--pm-accent) 50%, transparent);background:color-mix(in srgb, var(--pm-accent) 15%, transparent)}.param-menu-btn:disabled{opacity:.4;cursor:not-allowed}@media (width<=640px){.param-menu-panel{gap:6px;padding:9px 12px}.param-menu-grid{gap:14px 10px}}#hero{flex-direction:column;justify-content:flex-end;min-height:100vh;padding-bottom:5rem;display:flex;position:relative}#hero h1,#hero .role{z-index:3;position:relative}#hero h1{letter-spacing:-.02em;text-shadow:0 0 160px var(--glow-soft), 0 0 60px var(--glow-med), 0 0 12px var(--glow-sharp), 0 1px 0 var(--glow-edge);font-size:clamp(5rem,16vw,13rem);font-weight:500;line-height:.92}#hero .role{letter-spacing:.32em;color:var(--text-secondary);margin-top:1.4rem;font-size:clamp(.55rem,1.4vw,.75rem);font-weight:300;transition:color .4s}.block{border-top:1px solid var(--border);padding:4rem 0;transition:border-color .4s}.label{letter-spacing:.38em;color:var(--text-tertiary);margin-bottom:1.8rem;font-size:.58rem;font-weight:300;transition:color .4s;display:block}.spec{letter-spacing:.18em;color:var(--text-secondary);font-size:clamp(.8rem,2.2vw,1.2rem);font-weight:100;transition:color .4s}.row-title,.row-meta,.contact a,.spec{transform-origin:0;transition:color 80ms linear,transform 80ms linear}.rows{flex-direction:column;gap:0;display:flex}.row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:1rem 0;transition:border-color .4s;display:flex}.row:first-child{border-top:1px solid var(--border)}.row-title{letter-spacing:.1em;color:var(--text-secondary);font-size:clamp(.8rem,2vw,1.15rem);font-weight:100}.row-meta{letter-spacing:.12em;color:var(--text-dim);white-space:nowrap;margin-left:2rem;font-size:.58rem;font-weight:300}.contact{gap:0}.contact a{border-bottom:1px solid var(--border);letter-spacing:.06em;color:var(--link);padding:.9rem 0;font-size:clamp(.75rem,1.8vw,1rem);font-weight:100;text-decoration:none;transition:color .2s,border-color .4s;display:block}.contact a:first-child{border-top:1px solid var(--border)}.contact a:hover{color:var(--link-hover)}@media (width<=640px){#hero{padding-bottom:2rem}#hero .role{letter-spacing:.08em;word-break:normal;overflow-wrap:normal;margin-top:1rem;font-size:.7rem}.block{padding:2.5rem 0}.label{letter-spacing:.22em;margin-bottom:1.2rem}.spec{letter-spacing:.06em;flex-direction:column;gap:.5rem;font-size:.78rem;display:flex}.spec .sep{display:none}.row{flex-direction:column;gap:.25rem;padding:.8rem 0}.row-title{letter-spacing:.06em;font-size:.9rem}.row-meta{margin-left:0;font-size:.6rem}.contact a{letter-spacing:.04em;padding:.7rem 0;font-size:.85rem}}.about-content{max-width:640px}.about-hero{border-bottom:1px solid var(--border);flex-direction:column;justify-content:flex-end;min-height:100vh;padding-top:calc(80px + 2rem);padding-bottom:5rem;display:flex;position:relative}.about-photo{opacity:.28;filter:contrast(1.1);pointer-events:none;z-index:0;width:100vw;height:auto;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.about-hero h1{z-index:3;letter-spacing:-.02em;text-shadow:0 0 160px var(--glow-soft), 0 0 60px var(--glow-med), 0 0 12px var(--glow-sharp), 0 1px 0 var(--glow-edge);font-size:clamp(5rem,16vw,13rem);font-weight:500;line-height:.92;position:relative}.about-section{border-top:1px solid var(--border);padding:2.5rem 0}.about-section:first-of-type{border-top:none}.about-section h2{letter-spacing:.38em;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:1.4rem;font-size:.58rem;font-weight:300}.about-section p{letter-spacing:.03em;color:var(--text-secondary);font-size:clamp(.72rem,1.4vw,.85rem);font-weight:100;line-height:1.9}.about-section p+p{margin-top:1rem}@media (width<=640px){.about-hero{padding-bottom:3rem}.about-hero h1{margin-bottom:0}.about-section{padding:1.8rem 0}.about-section h2{letter-spacing:.22em;margin-bottom:1rem}.about-section p{letter-spacing:.02em;font-size:.8rem;line-height:1.75}}.page-header{padding-top:calc(80px + 6rem);padding-bottom:4rem}.page-header h1{letter-spacing:-.02em;text-shadow:0 0 160px var(--glow-soft), 0 0 60px var(--glow-med), 0 0 12px var(--glow-sharp), 0 1px 0 var(--glow-edge);font-size:clamp(5rem,16vw,13rem);font-weight:500;line-height:.92}.page-header p{letter-spacing:.24em;color:var(--text-tertiary);margin-top:1.2rem;font-size:clamp(.6rem,1.2vw,.72rem);font-weight:300}.project-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;padding-bottom:4rem;display:grid}.project-card{border:1px solid var(--border);border-radius:4px;padding:2rem;transition:border-color .2s,transform .2s}.project-card:hover{border-color:var(--border-hover);transform:translateY(-2px)}.project-video{border-radius:2px;width:100%;margin:1rem 0 1.2rem;padding-top:56.25%;text-decoration:none;display:block;position:relative;overflow:hidden}.project-video img{object-fit:cover;width:100%;height:100%;transition:opacity .2s;position:absolute;inset:0}.project-video-play{color:#fff;background:#00000047;justify-content:center;align-items:center;transition:background .2s;display:flex;position:absolute;inset:0}.project-video:hover img{opacity:.85}.project-video:hover .project-video-play{background:#00000073}.project-card h3{letter-spacing:.12em;color:var(--text-primary);text-transform:uppercase;margin-bottom:.8rem;font-size:.85rem;font-weight:300}.project-card p{letter-spacing:.04em;color:var(--text-secondary);margin-bottom:1.2rem;font-size:.68rem;font-weight:100;line-height:1.7}.project-tags{flex-wrap:wrap;gap:.5rem;display:flex}.project-tags span{letter-spacing:.18em;color:var(--text-tertiary);border:1px solid var(--border);text-transform:uppercase;border-radius:2px;padding:.3rem .7rem;font-size:.5rem;font-weight:300;transition:border-color .2s,color .2s}.project-card a{letter-spacing:.18em;color:var(--link);text-transform:uppercase;margin-top:1rem;font-size:.55rem;font-weight:300;text-decoration:none;transition:color .2s;display:inline-block}.project-card a:hover{color:var(--link-hover)}@media (width<=640px){.page-header{padding-top:calc(80px + 3rem);padding-bottom:2rem}.page-header p{letter-spacing:.14em;font-size:.65rem}.project-grid{grid-template-columns:1fr;gap:1rem}.project-card{padding:1.4rem}.project-card h3{letter-spacing:.08em;font-size:.8rem}.project-card p{letter-spacing:.02em;font-size:.7rem}.project-tags span{letter-spacing:.12em;font-size:.52rem}.project-card a{letter-spacing:.12em;font-size:.58rem}}.project-detail{max-width:720px;padding-top:calc(80px + 5rem)}.project-detail-back{letter-spacing:.22em;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:3rem;font-size:.52rem;font-weight:300;text-decoration:none;transition:color .2s;display:inline-block}.project-detail-back:hover{color:var(--text-primary)}.project-detail h1{letter-spacing:-.02em;text-shadow:0 0 160px var(--glow-soft), 0 0 60px var(--glow-med), 0 0 12px var(--glow-sharp), 0 1px 0 var(--glow-edge);margin-bottom:2.5rem;font-size:clamp(2.4rem,8vw,5.5rem);font-weight:500;line-height:1}.project-detail-meta{letter-spacing:.22em;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:3rem;font-size:.56rem;font-weight:300}.project-detail-video{border:1px solid var(--border);border-radius:2px;width:100%;margin-bottom:3rem;padding-top:56.25%;text-decoration:none;display:block;position:relative;overflow:hidden}.project-detail-video img{object-fit:cover;width:100%;height:100%;transition:opacity .2s;position:absolute;inset:0}.project-detail-video-play{color:#fff;background:#0000004d;justify-content:center;align-items:center;transition:background .2s;display:flex;position:absolute;inset:0}.project-detail-video:hover img{opacity:.85}.project-detail-video:hover .project-detail-video-play{background:#0000007a}.project-detail-section{border-top:1px solid var(--border);padding:2rem 0}.project-detail-section h2{letter-spacing:.36em;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:1.2rem;font-size:.56rem;font-weight:300}.project-detail-section p{letter-spacing:.03em;color:var(--text-secondary);font-size:clamp(.68rem,1.3vw,.8rem);font-weight:100;line-height:1.95}.project-detail-section p+p{margin-top:.9rem}.project-detail-tags{flex-wrap:wrap;gap:.5rem;display:flex}.project-detail-tags span{letter-spacing:.18em;color:var(--text-tertiary);border:1px solid var(--border);text-transform:uppercase;border-radius:2px;padding:.3rem .7rem;font-size:.5rem;font-weight:300}body:has(#game-wrap){overflow:hidden}body:has(#game-wrap) .page{align-items:stretch;max-width:100%;height:100vh;margin:0;padding:0;display:flex}#game-wrap{box-sizing:border-box;flex-direction:column;flex:1;align-items:center;gap:.6rem;width:100%;height:100%;padding-top:4.5rem;padding-bottom:3rem;display:flex}#game-header{flex-shrink:0;align-items:center;gap:1.6rem;display:flex}#game-title{letter-spacing:.28em;color:var(--text-tertiary);text-transform:uppercase;font-size:.6rem;font-weight:300}#game-score{letter-spacing:.2em;color:var(--text-secondary);font-size:.6rem;font-weight:300}#game-high{letter-spacing:.18em;color:var(--text-tertiary);font-size:.55rem;font-weight:300}#game-canvas-area{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative;overflow:hidden}#game-over-panel{z-index:10;pointer-events:auto;justify-content:center;gap:.8rem;display:flex;position:absolute}.game-over-btn{letter-spacing:.22em;text-transform:uppercase;color:var(--text-secondary);background:var(--nav-bg);border:1px solid var(--border);cursor:pointer;-webkit-backdrop-filter:blur(8px);border-radius:2px;padding:.45rem 1rem;font-family:JetBrains Mono,monospace;font-size:.58rem;font-weight:300;text-decoration:none;transition:color .2s,border-color .2s}.game-over-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}#game-canvas{image-rendering:pixelated;touch-action:none;background:0 0;display:block}#game-msg{display:none}.game-btn{border:1px solid var(--text-tertiary);color:var(--text-tertiary);cursor:pointer;background:0 0;border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;padding:0;transition:color .2s,border-color .2s;display:flex}.game-btn:hover{color:var(--text-primary);border-color:var(--text-primary)}.game-btn:active{opacity:.5;transform:scale(.92)}:root{--piano-wk-w:48px;--piano-bk-w:28px;--piano-wk-h:220px;--piano-bk-h:140px;--piano-neon:#3dffd0;--piano-neon-glow:#3dffd073;--piano-neon-dim:#3dffd024}@media (width<=640px){:root{--piano-wk-h:160px;--piano-bk-h:104px}}.piano-page{min-height:100vh}.piano-wrap{z-index:10;pointer-events:none;background:linear-gradient(#0000 0%,#04080ffa 40%);flex-direction:column;align-items:center;padding-top:2rem;display:flex;position:fixed;bottom:0;left:0;right:0}.piano{touch-action:none;-webkit-tap-highlight-color:transparent;pointer-events:auto;position:relative}.piano:before{content:"";background:var(--piano-neon);height:1px;box-shadow:0 0 10px var(--piano-neon-glow), 0 0 28px #3dffd02e;pointer-events:none;position:absolute;top:-1px;left:0;right:0}.piano-keys{display:flex;position:relative}.key-white{width:var(--piano-wk-w);height:var(--piano-wk-h);cursor:pointer;z-index:1;background:#081226f5;border:1px solid #3dffd052;border-top:none;border-radius:0 0 3px 3px;transition:background 60ms,box-shadow 60ms,border-color 60ms;position:relative;box-shadow:inset 0 0 10px #3dffd008}.key-white+.key-white{border-left:none}.key-white.active{border-color:var(--piano-neon);box-shadow:0 0 20px var(--piano-neon-glow), 0 0 40px #3dffd02e, inset 0 0 16px #3dffd014;background:#3dffd01a}.key-black{width:var(--piano-bk-w);height:var(--piano-bk-h);cursor:pointer;z-index:2;background:#02040afa;border:1px solid #3dffd033;border-top:none;border-radius:0 0 2px 2px;transition:background 60ms,box-shadow 60ms,border-color 60ms;position:absolute;top:0;box-shadow:0 6px 14px #000000e6}.key-black.active{border-color:var(--piano-neon);box-shadow:0 0 16px var(--piano-neon-glow), 0 0 30px #3dffd026;background:#3dffd024}.key-label{letter-spacing:.06em;color:#3dffd066;pointer-events:none;-webkit-user-select:none;user-select:none;font-family:JetBrains Mono,monospace;font-size:.42rem;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.key-black .key-label{color:#3dffd052;bottom:6px}.piano-hint{letter-spacing:.22em;color:#3dffd038;text-transform:uppercase;pointer-events:none;margin-bottom:.9rem;font-size:.42rem}[data-theme=light] .piano-wrap{background:linear-gradient(#0000 0%,#f5f0ebfa 40%)}[data-theme=light] .key-white{background:#d2dcf0d1;border-color:#2864c82e}[data-theme=light] .key-white.active{background:#2878dc24;border-color:#2878dcd9;box-shadow:0 0 14px #2878dc59,inset 0 0 12px #2878dc0f}[data-theme=light] .key-black{background:#0e1628f5;border-color:#2864c81a}[data-theme=light] .key-black.active{background:#1446b466;border-color:#2878dca6;box-shadow:0 0 12px #2878dc4d}[data-theme=light] .key-label{color:#2864b438}[data-theme=light] .key-black .key-label{color:#8cbeff47}[data-theme=light] .piano-hint{color:#2864b447}@media (width<=640px){.piano-hint{display:none}}.playlist-manager{flex-direction:column;gap:2.5rem;max-width:640px;margin:0 auto;padding:2rem 1rem 4rem;display:flex}.pl-section{flex-direction:column;gap:.75rem;display:flex}.pl-section-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.pl-heading{letter-spacing:.15em;opacity:.5;margin:0;font-size:.65rem;font-weight:300}.pl-track-list{border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:0;padding:0;list-style:none}.pl-track-item{border-bottom:1px solid var(--border);letter-spacing:.08em;align-items:center;gap:.75rem;padding:.6rem .5rem;font-size:.75rem;transition:background .1s;display:flex}.pl-track-item:last-child{border-bottom:none}.pl-track-item.dragging{opacity:.4}.pl-track-item.drag-over{background:var(--nav-bg)}.pl-drag-handle{cursor:grab;opacity:.35;touch-action:none;flex-shrink:0;font-size:1rem;line-height:1}.pl-track-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.pl-remove-btn,.pl-add-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:2px;flex-shrink:0;padding:.2rem .5rem;font-family:inherit;font-size:.65rem;transition:opacity .15s}.pl-remove-btn:hover,.pl-add-btn:hover:not(.pl-in-list){opacity:.6}.pl-add-btn.pl-in-list{opacity:.3;cursor:default}.pl-hint{letter-spacing:.1em;opacity:.3;text-align:right;margin:0;font-size:.6rem}.pl-library .pl-track-item{cursor:default}.pl-autoplay-toggle{letter-spacing:.15em;opacity:.7;align-items:center;gap:.6rem;font-size:.65rem;display:flex}.pl-toggle-btn{border:1px solid var(--border);color:var(--text);letter-spacing:.1em;cursor:pointer;background:0 0;border-radius:2px;min-width:2.8rem;padding:.2rem .6rem;font-family:inherit;font-size:.6rem;transition:border-color .15s,color .15s}.pl-toggle-btn.pl-toggle-on{border-color:var(--link-hover);color:var(--link-hover)}.pl-inbox-section{border-top:1px solid var(--border);padding-top:1.5rem}.pl-inbox-desc{opacity:.6;margin:0;font-size:.7rem;line-height:1.6}.pl-code{background:var(--nav-bg);border:1px solid var(--border);letter-spacing:.05em;border-radius:2px;margin:0;padding:.5rem .75rem;font-family:inherit;font-size:.7rem}.pl-inbox-files{flex-direction:column;gap:.25rem;display:flex}.mesh-vu-row{align-items:flex-end;gap:4px;min-height:50px;margin-bottom:4px;display:flex}.mesh-vu-col{flex-direction:column;flex:1;align-items:center;gap:2px;min-width:0;display:flex}.mesh-vu-col-detect{border-radius:2px;padding:2px 3px;transition:background-color 80ms ease-out;position:relative}.mesh-vu-col-detect.is-flash{animation:.18s ease-out mesh-vu-flash}@keyframes mesh-vu-flash{0%{background-color:color-mix(in srgb, var(--band-color) 55%, transparent)}to{background-color:#0000}}.mesh-vu-meter{width:100%;height:32px;position:relative}.mesh-vu-meter-dual{justify-content:center;align-items:flex-end;gap:3px;display:flex}.mesh-vu-bar-slow,.mesh-vu-bar-fast{border-radius:1px;width:6px;height:0;transition:height 60ms linear}.mesh-vu-bar-slow{background:color-mix(in srgb, var(--band-color) 30%, transparent)}.mesh-vu-bar-fast{background:var(--band-color)}.mesh-vu-tick{background:color-mix(in srgb, var(--band-color) 70%, white 20%);height:1px;box-shadow:0 0 3px color-mix(in srgb, var(--band-color) 60%, transparent);pointer-events:none;position:absolute;left:0;right:0}.mesh-vu-bar{background:var(--pm-accent,#c4f);border-radius:1px;width:100%;height:0;transition:height 60ms linear;position:absolute;bottom:0}.mesh-vu-peak{background:color-mix(in srgb, var(--pm-accent,#c4f) 25%, transparent);border-radius:1px;width:100%;height:0;position:absolute;bottom:0}.mesh-vu-label{opacity:.6;text-transform:uppercase;text-align:center;font-size:.4rem;line-height:1.1}.mesh-vu-label-detect{opacity:.85;white-space:pre;letter-spacing:.02em;font-family:JetBrains Mono,monospace;font-size:.42rem;font-weight:400}.page:has(.live-page){max-width:none;margin:0;padding:0;animation:none;overflow:hidden;transform:none}.live-page{pointer-events:none;-webkit-overflow-scrolling:touch;z-index:5;flex-direction:column;justify-content:flex-start;gap:.75rem;padding:6.5rem 1.5rem 1.5rem;display:flex;overflow-y:auto}.live-page>*{pointer-events:auto}.live-controls{z-index:10;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:.5rem;display:flex}.live-play{letter-spacing:.12em;border:1px solid var(--text-secondary);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:2px;padding:.45rem 1rem;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:500;transition:all .2s}.live-play:hover{color:var(--text-primary);border-color:var(--text-primary)}.live-play.active{color:#c4f;border-color:#c4f;box-shadow:0 0 12px #cc44ff40}.live-layers{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;flex:1;gap:.3rem;min-width:0;padding:.3rem 0;display:flex;overflow-x:auto}.live-layers::-webkit-scrollbar{display:none}.live-layer{letter-spacing:.08em;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:2px;padding:.3rem .6rem;font-family:JetBrains Mono,monospace;font-size:.6rem;font-weight:300;transition:all .2s}.live-layer:hover{color:var(--text-primary);border-color:var(--text-primary)}.live-layer.active[data-band=bass]{color:#f46;background:#ff446614;border-color:#f46}.live-layer.active[data-band=mids]{color:#c4f;background:#cc44ff14;border-color:#c4f}.live-layer.active[data-band=highs]{color:#4cf;background:#44ccff14;border-color:#4cf}.live-toggle-editor{letter-spacing:.08em;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:2px;padding:.3rem .6rem;font-family:JetBrains Mono,monospace;font-size:.6rem;font-weight:300;transition:all .2s}.live-toggle-editor:hover{color:var(--text-primary)}.live-toggle-editor.active{color:#c4f;border-color:#c4f}.live-editor-wrap{z-index:10;flex-shrink:0;width:min(480px,100%)}.live-editor{resize:none;width:100%;height:150px;color:var(--text-primary);-webkit-backdrop-filter:blur(12px);tab-size:2;white-space:pre;background:#0a061273;border:1px solid #c4f3;border-radius:4px;outline:none;padding:1rem;font-family:JetBrains Mono,monospace;font-size:.78rem;font-weight:300;line-height:1.6;overflow:auto}[data-theme=light] .live-editor{background:#ffffffb3;border-color:#0000001f}.live-editor:focus{border-color:#cc44ff80;box-shadow:0 0 20px #cc44ff1a}.live-editor::placeholder{color:var(--text-secondary);opacity:.5}.live-editor-hint{color:var(--text-secondary);opacity:.5;text-align:right;letter-spacing:.06em;padding-top:.3rem;font-family:JetBrains Mono,monospace;font-size:.58rem;font-weight:300}@media (width<=640px){.live-page{gap:.5rem;padding:6rem 1rem 1rem}.live-editor-wrap{width:100%}.live-editor{font-size:.7rem}.live-controls{gap:.4rem}.live-layer{padding:.25rem .45rem;font-size:.55rem}.live-play{padding:.4rem .8rem;font-size:.65rem}.live-toggle-editor{font-size:.55rem}}.live-trigger-dots{flex-shrink:0;align-items:center;gap:.35rem;padding:0 .25rem;display:flex}.live-trigger-dot{background:color-mix(in srgb, var(--dot-color) 30%, transparent);width:6px;height:6px;box-shadow:none;border-radius:50%;transition:background .18s ease-out,box-shadow .18s ease-out}.live-trigger-dot.is-pulse{animation:.3s ease-out live-trigger-pulse}@keyframes live-trigger-pulse{0%{background:var(--dot-color);box-shadow:0 0 8px var(--dot-color), 0 0 14px color-mix(in srgb, var(--dot-color) 60%, transparent);transform:scale(1.6)}to{background:color-mix(in srgb, var(--dot-color) 30%, transparent);box-shadow:none;transform:scale(1)}}@media (width<=640px){.live-trigger-dots{gap:.25rem;padding:0 .15rem}.live-trigger-dot{width:5px;height:5px}}
