@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2)format("woff2-variations");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{--color-ink:oklch(12% .018 55);--color-ink-2:oklch(16% .022 55);--color-ink-3:oklch(21% .028 55);--color-panel:oklch(17% .022 55/.88);--color-paper:oklch(93% .018 82);--color-paper-2:oklch(83% .022 80);--color-muted:oklch(72% .025 70);--color-muted-2:oklch(58% .03 65);--color-line:oklch(90% .02 80/.15);--color-line-strong:oklch(90% .02 80/.28);--color-accent:oklch(72% .12 68);--color-accent-soft:oklch(72% .12 68/.16);--color-cyan:oklch(76% .06 190);--color-violet:oklch(70% .06 305);--color-gold:oklch(82% .11 82);--color-focus:oklch(82% .11 82);--font-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", sans-serif;--font-body:"Manrope Variable", Manrope, sans-serif;--font-mono:ui-monospace, "SF Mono", "SFMono-Regular", Menlo, monospace;--font-kr:"Noto Sans KR", "Apple SD Gothic Neo", sans-serif;--text-xs:clamp(.65rem, .62rem + .12vw, .72rem);--text-sm:clamp(.76rem, .72rem + .16vw, .85rem);--text-md:clamp(.92rem, .86rem + .22vw, 1.05rem);--text-lg:clamp(1.12rem, 1rem + .5vw, 1.4rem);--text-xl:clamp(1.65rem, 1.4rem + 1vw, 2.4rem);--text-2xl:clamp(2.2rem, 1.6rem + 2.6vw, 4rem);--text-display:clamp(3.3rem, 2rem + 5.6vw, 7.2rem);--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4.5rem;--radius-sm:4px;--radius-md:8px;--radius-lg:14px;--radius-pill:999px;--dur-fast:.14s;--dur-mid:.26s;--dur-slow:.62s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.55, 0, 1, .45);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--rule:1px solid var(--color-line);--shadow-panel:0 24px 80px oklch(4% .03 302/.6);--z-scene:0;--z-screen:10;--z-vignette:14;--z-overlay:20;--color-scrim:oklch(9% .015 55/.74);--color-scrim-soft:oklch(9% .015 55/.34);--color-screen-body:oklch(9% .012 60);--color-screen-line:oklch(6% .01 60);--color-paper-06:oklch(96% .01 83/.06);--color-paper-10:oklch(96% .01 83/.1);--color-paper-20:oklch(96% .01 83/.2);--color-paper-45:oklch(96% .01 83/.45);--color-cyan-soft:oklch(76% .06 190/.14);--color-magenta-soft:oklch(72% .12 68/.14);--shadow-screen:0 3rem 8rem oklch(4% .015 55/.7)}*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--color-ink);overflow-x:clip}html,body{min-height:100%;margin:0;padding:0;overflow-x:clip}body{background:var(--color-ink);color:var(--color-paper);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}::selection{background:var(--color-accent);color:var(--color-ink)}#root{min-height:100svh}.app{background:var(--color-ink);height:100svh;position:relative;overflow:hidden}.scene-host{z-index:var(--z-scene);background:radial-gradient(ellipse at 50% 34%, oklch(22% .045 65/.5), transparent 62%), radial-gradient(ellipse at 18% 20%, oklch(26% .035 195/.1), transparent 55%), var(--color-ink);position:fixed;inset:0}.scene-host.is-hidden{visibility:hidden;pointer-events:none}.scene-host canvas{touch-action:none;display:block}.scene-portal{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:hidden}.rotate-modifier .scene-portal,.rotate-modifier .scene-portal *,.camera-dragging .scene-portal,.camera-dragging .scene-portal *{pointer-events:none!important}.avatar-layer{z-index:3;pointer-events:none;opacity:0;transition:opacity .7s var(--ease-out);position:absolute;inset:0}.scene-host.is-ready .avatar-layer{opacity:1}.avatar-layer,.avatar-layer canvas,.avatar-layer>div{pointer-events:none!important}.avatar-layer canvas{background:0 0;display:block}.scene-poster{z-index:1;object-fit:cover;opacity:1;pointer-events:none;width:100%;height:100%;transition:opacity .7s var(--ease-out);position:absolute;inset:0}.scene-poster img{object-fit:cover;width:100%;height:100%;display:block}.scene-poster.is-hidden{opacity:0}.boot-note{z-index:var(--z-overlay);border:var(--rule);background:color-mix(in oklab, var(--color-panel) 92%, transparent);width:min(20rem,100vw - 2rem);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;pointer-events:none;border-radius:.35rem;flex-direction:column;gap:.6rem;padding:.72rem .85rem .78rem;display:flex;position:fixed;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.boot-note__head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.boot-note__label{color:var(--color-paper);font-weight:500}.boot-note__meta{color:var(--color-muted-2);letter-spacing:.1em;font-size:.58rem}.boot-note__track{background:var(--color-line-strong);height:2px;display:block;position:relative;overflow:hidden}.boot-note__fill{background:var(--color-accent);width:34%;box-shadow:0 0 12px var(--color-accent);animation:boot-sweep 1.55s var(--ease-in-out) infinite;position:absolute;inset:0 auto 0 0}@keyframes boot-sweep{0%{transform:translate(-115%)}65%,to{transform:translate(305%)}}@media (width>=761px){.boot-note{width:min(26rem,100vw - 4rem);font-size:var(--text-sm);border-radius:.45rem;gap:.8rem;padding:1.15rem 1.3rem 1.25rem}.boot-note__label{letter-spacing:.14em;font-size:1rem}.boot-note__meta{font-size:.68rem}.boot-note__track{height:3px}}.scene-poster{overflow:hidden}.scene-poster img{filter:brightness(.54)saturate(.82)contrast(1.04);transition:filter .7s var(--ease-out)}.scene-poster:after{content:"";pointer-events:none;background:linear-gradient(#06050833,#060508a3 76%,#060508cc),radial-gradient(at 50% 42%,#0000 28%,#06050885 100%);position:absolute;inset:0}.site-overlay{z-index:var(--z-overlay);pointer-events:none;flex-direction:column;justify-content:space-between;padding:clamp(1rem,2.4vw,2.25rem);display:flex;position:fixed;inset:0}.topbar{justify-content:space-between;align-items:flex-start;gap:var(--space-lg);width:100%;display:flex}.brand{pointer-events:auto;border-radius:var(--radius-sm);align-items:center;gap:.85rem;text-decoration:none;display:inline-flex}.brand__mark{border:1px solid var(--color-line-strong);background:var(--color-panel);width:2.7rem;height:2.7rem;color:var(--color-paper);font-family:var(--font-display);letter-spacing:-.08em;box-shadow:inset 0 0 0 3px var(--color-ink), inset 0 0 24px var(--color-magenta-soft);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);flex:none;place-items:center;font-size:1rem;font-weight:700;display:grid}.brand:hover .brand__mark{color:var(--color-accent);border-color:var(--color-accent)}.brand__text{flex-direction:column;gap:.18rem;min-width:0;display:flex}.brand__name{color:var(--color-paper);font-family:var(--font-display);letter-spacing:-.035em;margin:0;font-size:clamp(1.35rem,1.1rem + .8vw,1.9rem);font-weight:650;line-height:1}.brand__sub{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;margin:0}.topbar__actions{pointer-events:none;align-items:center;gap:.8rem;display:flex}.scene-status{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:.5rem;display:inline-flex}.scene-status__dot{background:var(--color-cyan);width:5px;height:5px;box-shadow:0 0 10px var(--color-cyan);animation:pulse-dot 2.8s var(--ease-in-out) infinite;border-radius:50%}@keyframes pulse-dot{0%,to{opacity:.55}50%{opacity:1;box-shadow:0 0 18px var(--color-cyan)}}.text-button{pointer-events:auto;border:1px solid var(--color-line-strong);border-radius:var(--radius-pill);background:var(--color-panel);min-height:2.35rem;color:var(--color-paper);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;cursor:pointer;transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;padding:.48rem .8rem;text-decoration:none;display:inline-flex}.text-button:hover{color:var(--color-ink);background:var(--color-paper);border-color:var(--color-paper)}.reset-button{width:2.35rem;font-family:var(--font-body);padding-inline:0;font-size:1.05rem}.reset-button__icon{flex:none;width:1rem;height:1rem;display:block}.text-button:active{transform:translateY(1px)}.overlay-bottom{justify-content:space-between;align-items:flex-end;gap:var(--space-xl);width:100%;display:flex}.project-index{pointer-events:none;border:1px solid var(--color-line);border-radius:var(--radius-sm);background:var(--color-ink);isolation:isolate;width:min(31rem,100%);padding:.82rem .95rem .78rem;transform:translateZ(0);box-shadow:0 18px 54px #00000061}.project-index__head{align-items:center;gap:.65rem;margin-bottom:.3rem;display:flex}.project-index__head span{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}.project-index__head:after{content:"";background:linear-gradient(to right, var(--color-line-strong), transparent);width:100%;height:1px}.project-list{border-top:var(--rule);margin:0;padding:0;list-style:none}.project-row{border-bottom:var(--rule)}.project-row__toggle{pointer-events:auto;color:var(--color-paper);transition:background var(--dur-fast) var(--ease-out);width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:2px;grid-template-columns:1.55rem minmax(0,1fr) auto;align-items:baseline;gap:.8rem;padding:.76rem 1.1rem .76rem .5rem;text-decoration:none;display:grid}.project-row__toggle:hover{background:var(--color-magenta-soft)}.project-row__num{color:var(--color-muted-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em}.project-row__copy{flex-direction:column;gap:.12rem;min-width:0;display:flex}.project-row__name{color:var(--color-paper);font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.03em;transition:color var(--dur-fast) var(--ease-out);font-weight:550;line-height:1.08}.project-row__toggle:hover .project-row__name{color:var(--color-accent)}.project-row__note{color:var(--color-muted);font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;line-height:1.35;overflow:hidden}.project-row__meta{color:var(--color-muted-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:.55rem;display:inline-flex}.project-row__toggle-mark{width:.76rem;height:.76rem;color:var(--color-paper-45);transform-origin:50%;transition:color var(--dur-fast) var(--ease-out), transform .34s cubic-bezier(.22, 1, .36, 1);margin-right:.14rem;display:inline-block;position:relative;transform:rotate(0)}.project-row__toggle-mark:before,.project-row__toggle-mark:after{content:"";background:currentColor;position:absolute}.project-row__toggle-mark:before{width:100%;height:1px;top:50%;left:0;transform:translateY(-50%)}.project-row__toggle-mark:after{width:1px;height:100%;top:0;left:50%;transform:translate(-50%)}.project-row__toggle:hover .project-row__toggle-mark,.project-row.is-open .project-row__toggle-mark{color:var(--color-accent)}.project-row.is-open .project-row__toggle-mark{transform:rotate(135deg)}.project-row.is-open .project-row__toggle{background:color-mix(in oklab, var(--color-magenta-soft) 82%, transparent)}.project-row.is-open .project-row__name{color:var(--color-accent)}.project-row__panel{opacity:0;transition:grid-template-rows .36s var(--ease-out), opacity .22s var(--ease-out);grid-template-rows:0fr;display:grid}.project-row.is-open .project-row__panel{opacity:1;grid-template-rows:1fr}.project-row__panel-inner{min-height:0;position:relative;overflow:hidden}.project-row__panel-inner:before{content:"";background:linear-gradient(var(--color-line-strong), transparent);width:1px;position:absolute;top:.12rem;bottom:.82rem;left:1.92rem}.project-row__detail{max-width:28rem;color:var(--color-muted);font-size:var(--text-sm);margin:0;padding:.05rem 0 .6rem 2.4rem;line-height:1.5}.project-row__actions{flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem;padding:0 0 .85rem 2.4rem;display:flex}.project-row__open{pointer-events:auto;border-bottom:1px solid var(--color-accent);color:var(--color-paper);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;transition:color var(--dur-fast) var(--ease-out);align-items:center;gap:.4rem;line-height:1.5;text-decoration:none;display:inline-flex}.project-row__open:hover,.project-row__open span:last-child{color:var(--color-accent)}.project-row__url{color:var(--color-muted-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-row__state{align-items:center;gap:.35rem;display:inline-flex}.project-row__state:before{content:"";background:var(--color-cyan);border-radius:50%;width:4px;height:4px}.project-row__state--preview:before{background:var(--color-violet)}.mobile-hint{display:none}.look-hint{text-align:right;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.4rem;line-height:1.5;display:flex}.look-hint strong{color:var(--color-paper);font-weight:500}.look-hint__line{align-items:center;gap:.5rem;display:inline-flex}.look-hint__glyph{border:1px solid var(--color-line-strong);width:1.35rem;height:1.35rem;color:var(--color-cyan);border-radius:50%;place-items:center;font-size:.62rem;display:inline-grid}.skip-link{z-index:60;border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-ink);font:600 .8rem/1 var(--font-body);transition:transform var(--dur-fast) var(--ease-out);padding:.6rem .85rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-180%)}.skip-link:focus-visible{transform:translateY(0)}.desk-display{transform-origin:50%;pointer-events:none;border-radius:6px;width:1200px;height:698px;display:block;transform:scale(1.22)}.plaque-label{box-sizing:border-box;color:#efe4d2;pointer-events:auto;cursor:pointer;width:500px;height:125px;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background:#181310f0;border:2px solid #e9d6bc33;border-radius:20px;align-items:center;gap:18px;padding:0 30px 0 22px;text-decoration:none;display:flex;box-shadow:0 10px 34px #00000052}.plaque-label:hover,.plaque-label:focus-visible{background:#2d231af5;border-color:#e9d6bc66}.plaque-label__dot{background:var(--plaque-accent,#b08a58);width:20px;height:20px;box-shadow:0 0 16px color-mix(in oklab, var(--plaque-accent,#b08a58) 55%, transparent);border-radius:50%;flex:0 0 20px}.plaque-label__title{color:#0000;font-family:var(--font-mono);letter-spacing:.08em;white-space:nowrap;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 6px #f2dfc24d);background-image:radial-gradient(circle at 1px 1px,#f7e6c9 0 1px,#0000 1.3px);background-size:3.2px 3.2px;-webkit-background-clip:text;background-clip:text;font-size:37px;font-weight:700;line-height:1.05;overflow:hidden}.plaque-label__sub{color:#e9d6bc8c;font-family:var(--font-mono);white-space:nowrap;margin-left:auto;font-size:22px}.screen-surface{background:var(--color-screen-body);pointer-events:none;isolation:isolate;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;border:0;border-radius:6px;position:relative;overflow:hidden}.screen-surface--laptop{border-width:1px;border-radius:8px}.screen-surface--laptop .screen-frame,.screen-surface--laptop .screen-fallback{transform-origin:50% 46%;transform:scale(1.22)}.screen-fallback,.screen-frame{border:0;width:100%;height:100%;display:block;position:absolute;inset:0}.screen-fallback{object-fit:cover;filter:saturate(1.02)brightness(1.06)contrast(1.02);transition:opacity var(--dur-slow) var(--ease-out)}.screen-loader{z-index:1;background:radial-gradient(circle at 50% 50%, var(--color-cyan-soft), transparent 58%), var(--color-screen-body);transition:opacity var(--dur-slow) var(--ease-out);place-items:center;display:grid;position:absolute;inset:0}.screen-loader.is-hidden{opacity:0;pointer-events:none}.screen-loader__spinner{border:3px solid var(--color-line-strong);border-top-color:var(--color-cyan);width:54px;height:54px;box-shadow:0 0 22px var(--color-cyan-soft);border-radius:50%;animation:.9s linear infinite screen-spin}@keyframes screen-spin{to{transform:rotate(1turn)}}@supports ((-moz-appearance:none)){.camera-moving .desk-display,.camera-moving .screen-surface{visibility:hidden}}.screen-frame{background:var(--color-screen-body);opacity:0;transition:opacity var(--dur-slow) var(--ease-out);pointer-events:auto}.screen-frame.is-live{opacity:1}.screen-glass{z-index:2;pointer-events:none;background:linear-gradient(124deg, var(--color-paper-10) 0%, transparent 22%, transparent 72%, var(--color-magenta-soft) 100%), radial-gradient(ellipse at 50% 0%, var(--color-paper-06), transparent 45%);mix-blend-mode:screen;position:absolute;inset:0}.screen-scanlines{z-index:3;pointer-events:none;opacity:.2;background:repeating-linear-gradient(to bottom, transparent 0, transparent 3px, var(--color-ink) 3px, var(--color-ink) 4px);mix-blend-mode:soft-light;position:absolute;inset:0}.screen-caption{z-index:4;background:linear-gradient(to top, var(--color-ink) 0%, oklch(7% .02 302/.82) 70%, transparent 100%);min-height:44px;color:var(--color-paper-45);font-family:var(--font-mono);letter-spacing:.03em;pointer-events:none;white-space:nowrap;align-items:center;gap:10px;padding:0 18px;font-size:20px;display:flex;position:absolute;bottom:0;left:0;right:0}.screen-surface--laptop .screen-caption{display:none}.screen-caption__dot{background:var(--color-cyan);width:7px;height:7px;box-shadow:0 0 8px var(--color-cyan);border-radius:50%;flex:none}.screen-caption__url{opacity:.75;text-overflow:ellipsis;margin-left:auto;overflow:hidden}.screen-caption__open{pointer-events:auto;color:var(--color-paper);transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border-bottom:1px solid #0000;align-items:center;gap:4px;text-decoration:none;display:inline-flex}.screen-caption__open:hover{color:var(--color-accent);border-color:var(--color-accent)}.screen-open-plate{z-index:5;color:var(--color-paper);transition:background var(--dur-mid) var(--ease-out);background:oklch(4% .01 302/0);place-items:center;text-decoration:none;display:grid;position:absolute;inset:0}.screen-open-plate>span{border:1px solid var(--color-paper-20);border-radius:var(--radius-pill);background:var(--color-ink);color:var(--color-paper);font-family:var(--font-mono);letter-spacing:.04em;opacity:0;transition:opacity var(--dur-mid) var(--ease-out), transform var(--dur-mid) var(--ease-out);align-items:center;gap:.5rem;padding:14px 22px;font-size:22px;display:inline-flex;transform:translateY(6px)}.screen-open-plate:hover,.screen-open-plate:focus-visible{background:oklch(4% .01 302/.42)}.screen-open-plate:hover>span,.screen-open-plate:focus-visible>span{opacity:1;transform:translateY(0)}.screen-open-plate:focus-visible{outline-offset:-6px}.plain{background:radial-gradient(ellipse at 82% -8%, oklch(30% .06 65/.2), transparent 48%), radial-gradient(ellipse at 8% 40%, oklch(26% .035 195/.09), transparent 48%), var(--color-ink);min-height:100svh;color:var(--color-paper);padding:clamp(1rem,3vw,2.5rem);overflow:auto}.plain__top{justify-content:space-between;align-items:center;gap:var(--space-lg);max-width:72rem;padding-bottom:var(--space-3xl);margin:0 auto;display:flex}.plain__title{font-family:var(--font-display);letter-spacing:-.055em;overflow-wrap:anywhere;margin:0;font-size:clamp(3.4rem,2rem + 8vw,9rem);font-weight:600;line-height:.9}.plain__lede{max-width:36rem;margin:var(--space-lg) 0 0;color:var(--color-muted);font-size:var(--text-md);line-height:1.6}.plain__main{max-width:72rem;padding:var(--space-2xl) 0 var(--space-3xl);margin:0 auto}.plain__projects{margin-top:var(--space-3xl)}.plain__eyebrow{margin:0 0 var(--space-md);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase}.plain-projects{border-top:1px solid var(--color-line-strong);margin:0;padding:0;list-style:none}.plain-project{border-bottom:1px solid var(--color-line-strong)}.plain-project__link{gap:var(--space-lg);padding:clamp(1.2rem,3vw,2rem) 0;color:var(--color-paper);transition:padding-left var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);grid-template-columns:minmax(0,1fr) auto;padding-right:clamp(.65rem,1.6vw,1.4rem);text-decoration:none;display:grid}.plain-project__link:hover{background:var(--color-magenta-soft);padding-left:var(--space-md)}.plain-project__name{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:clamp(1.7rem,1.2rem + 2.6vw,3.2rem);font-weight:550;line-height:1;display:block}.plain-project__note{margin:var(--space-xs) 0 0;color:var(--color-muted);font-size:var(--text-md);max-width:40rem;line-height:1.45;display:block}.plain-project__url{margin-top:var(--space-sm);color:var(--color-muted-2);font-family:var(--font-mono);font-size:var(--text-sm);white-space:nowrap;display:block}.plain .text-button{font-size:var(--text-xs);min-height:2.6rem;color:var(--color-paper);border-color:var(--color-line-strong)}.plain .text-button:hover{color:var(--color-ink)}.plain-project__arrow{color:var(--color-accent);font-size:1.3rem}.dev-panel{top:max(4.9rem, calc(4.4rem + env(safe-area-inset-top)));right:max(.75rem, env(safe-area-inset-right));z-index:40;pointer-events:auto;border:1px solid var(--color-line-strong);background:var(--color-ink-2);width:min(15.5rem,100vw - 1.5rem);color:var(--color-paper);font-family:var(--font-mono);letter-spacing:.04em;isolation:isolate;will-change:transform;border-radius:6px;font-size:.62rem;position:fixed;transform:translateZ(0);box-shadow:0 18px 48px #0000007a}.dev-panel.is-dragging{-webkit-user-select:none;user-select:none}.dev-panel__bar{align-items:center;gap:.25rem;width:100%;padding:.46rem .58rem;display:flex}.dev-panel__drag{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;align-items:center;gap:.45rem;min-width:0;display:flex}.dev-panel.is-dragging .dev-panel__drag{cursor:grabbing}.dev-panel__grip{color:var(--color-muted-2);letter-spacing:0;font-size:.82rem;line-height:1}.dev-panel__label{color:var(--color-accent);letter-spacing:.14em}.dev-panel__fps{color:var(--color-muted);white-space:nowrap;margin-left:auto}.dev-panel__fps strong{color:var(--color-paper);font-size:.74rem}.dev-panel__chevron{width:1rem;color:var(--color-muted-2);font:inherit;text-align:center;cursor:pointer;background:0 0;border:0;padding:0;font-size:.9rem;line-height:1}.dev-panel__chevron:hover{color:var(--color-paper)}.dev-panel__body{border-top:1px solid var(--color-line);flex-direction:column;gap:.45rem;padding:0 .58rem .58rem;display:flex}.dev-panel__meter{color:var(--color-muted-2);white-space:nowrap;align-items:baseline;gap:.6rem;padding-top:.48rem;font-size:.56rem;display:flex}.dev-panel__meter strong{color:var(--color-paper);font-size:.68rem}.dev-panel__reset{color:var(--color-muted);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;text-decoration:underline}.dev-panel__control{color:var(--color-muted);justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.56rem;display:flex}.dev-panel__control strong{color:var(--color-paper);font-size:.68rem}.dev-panel__dim{color:var(--color-muted-2);text-align:right;font-size:.54rem}.dev-panel__range{width:100%;height:1rem;accent-color:var(--color-accent);cursor:pointer;margin:0}.dev-panel__presets{gap:.24rem;display:flex}.dev-panel__presets button,.dev-panel__notes button{border:1px solid var(--color-line);color:var(--color-muted);font:inherit;cursor:pointer;background:0 0}.dev-panel__presets button{border-radius:2px;flex:1;padding:.28rem 0}.dev-panel__presets button:hover,.dev-panel__notes button:hover{border-color:var(--color-line-strong);color:var(--color-paper)}.dev-panel__presets button.is-active{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-ink)}.dev-panel__notes{color:var(--color-muted-2);justify-content:space-between;align-items:baseline;gap:.4rem;font-size:.52rem;line-height:1.4;display:flex}.dev-panel__notes button{color:var(--color-accent);text-underline-offset:2px;border:0;flex:none;padding:0;text-decoration:underline}.dev-panel__meta{color:var(--color-muted-2);font-size:.52rem}@media (width<=760px){.dev-panel{top:max(4.7rem, calc(4.2rem + env(safe-area-inset-top)));width:min(14.5rem,100vw - 1.5rem);font-size:.58rem}.site-overlay{padding-top:max(1rem, env(safe-area-inset-top));padding-right:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));padding-left:1rem}.topbar{gap:var(--space-sm)}.brand{align-items:flex-start;gap:.6rem}.brand__mark{width:2.2rem;height:2.2rem;font-size:.82rem}.brand__name{font-size:1.35rem}.brand__sub{max-width:11rem;font-size:.58rem;line-height:1.35}.topbar__actions{gap:.5rem}.scene-status{display:none}.text-button{min-height:2.15rem;padding:.42rem .65rem;font-size:.6rem}.reset-button{width:2.15rem;padding-inline:0;font-size:.95rem}.overlay-bottom{display:block}.project-index{width:100%;padding:.7rem .8rem .66rem}.project-row__toggle{grid-template-columns:1.35rem minmax(0,1fr) auto;gap:.55rem;padding:.64rem .9rem .64rem .45rem}.project-row__name{font-size:1.08rem}.project-row__note,.project-row__state{display:none}.project-row__meta{display:inline-flex}.project-row__panel-inner:before{left:1.42rem}.project-row__detail,.project-row__actions{padding-left:1.9rem}.project-row__detail{font-size:var(--text-xs)}.look-hint{display:none}.plain__top{padding-bottom:var(--space-2xl);align-items:flex-start}.plain__main{padding-bottom:var(--space-xl)}.plain__title{font-size:clamp(3rem,15vw,5rem)}.plain-project__link{gap:var(--space-md);grid-template-columns:minmax(0,1fr) auto}.plain-project__url{font-size:.68rem}.plain .text-button{min-height:2.3rem;font-size:.68rem}.mobile-hint{color:var(--color-muted-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .55rem;display:block}.screen-caption{gap:6px;min-height:38px;padding:0 12px;font-size:16px}.screen-caption__url{display:none}}@media (width<=370px){.brand__sub{display:none}.brand__name{font-size:1.18rem}.text-button{padding-inline:.52rem}.project-row__name{font-size:1rem}}@media (height<=640px) and (width>=761px){.look-hint{display:none}.site-overlay{padding-top:max(1rem, env(safe-area-inset-top));padding-right:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));padding-left:1rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.scene-host,.screen-frame,.screen-fallback{transition:none}}.scene-grade{z-index:1;pointer-events:none;position:absolute;inset:0}.scene-grade:before,.scene-grade:after{content:"";position:absolute;inset:0}.scene-grade:before{background:radial-gradient(at 50% 48%,#0000 44%,#00000094 100%)}.scene-grade:after{opacity:.028;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='128' height='128'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='128' height='128' filter='url(%23n)'/%3E%3C/svg%3E");background-size:128px 128px}
