:root{--bg:#040409;--fg:#f7f3ea;--muted:#a9abc4;--cream:#e9dfca;--accent:#f0b455}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow-x:hidden}.webgl{z-index:0;touch-action:pan-y;outline:none;width:100%;height:100%;position:fixed;inset:0}.overlay{z-index:1;position:relative}.panel{pointer-events:none;flex-direction:column;justify-content:center;min-height:100vh;padding:clamp(1.5rem,6vw,8rem);display:flex}.panel *{pointer-events:auto}.panel.align-left{text-align:left;align-items:flex-start}.panel.align-right{text-align:right;align-items:flex-end}.panel-content{max-width:min(40ch,88vw)}.panel-content h2,.panel-content p,.panel-content .lead,.panel-content .tagline,.panel-content .eyebrow,.panel-content .chapter{text-shadow:0 0 3px #000000d9,0 1px 2px #000000f2,0 3px 22px #000000b3}.eyebrow,.chapter{color:var(--accent);letter-spacing:.28em;text-transform:uppercase;align-items:center;gap:.7rem;font-size:.78rem;font-weight:600;display:inline-flex}.eyebrow:before,.chapter:before{content:"";background:var(--accent);opacity:.8;width:34px;height:1px}h1{letter-spacing:-.01em;overflow-wrap:break-word;background:linear-gradient(110deg, #fff 10%, #ffe6bd 45%, var(--accent) 90%);color:#0000;text-shadow:0 8px 40px #00000073;background-size:220%;-webkit-background-clip:text;background-clip:text;margin:.1em 0 .2em;padding:.12em .06em .18em;font-family:Fraunces,Georgia,serif;font-size:clamp(2.4rem,8vw,5.5rem);font-weight:900;line-height:1.25;animation:9s ease-in-out infinite alternate shimmer;overflow:visible}@keyframes shimmer{0%{background-position:0%}to{background-position:100%}}h2{color:var(--fg);text-shadow:0 6px 30px #00000073;margin:.4em 0 .5em;font-family:Fraunces,Georgia,serif;font-size:clamp(2rem,6vw,3.6rem);font-style:italic;font-weight:700;line-height:1.05}.lead{color:var(--fg);font-size:clamp(1.05rem,2.6vw,1.5rem);font-weight:500}.tagline{color:var(--cream);margin-top:.4rem;font-family:Fraunces,Georgia,serif;font-size:clamp(1rem,2.2vw,1.3rem);font-style:italic}p{max-width:34ch;color:var(--cream);letter-spacing:.005em;text-shadow:0 2px 18px #0000008c;font-family:Fraunces,Georgia,serif;font-size:clamp(1.1rem,2.3vw,1.4rem);font-weight:400;line-height:1.7}.align-right .panel-content{margin-left:auto}.align-right .eyebrow,.align-right .chapter{flex-direction:row-reverse}.panel[data-section=intro]{text-align:center;justify-content:flex-start;align-items:center;padding-top:clamp(1rem,3vh,2.5rem)}.panel[data-section=intro] .panel-content{flex-direction:column;align-items:center;gap:.15rem;max-width:min(92vw,48rem);margin:0 auto;display:flex}.panel[data-section=intro] .eyebrow,.panel[data-section=intro] h1,.panel[data-section=intro] .lead,.panel[data-section=intro] .tagline{text-shadow:none}.panel[data-section=intro] .eyebrow{letter-spacing:.5em;color:var(--accent);margin-bottom:.6rem;padding-left:.5em;font-size:.9rem}.panel[data-section=intro] .eyebrow:after{content:"";background:var(--accent);opacity:.8;width:34px;height:1px}.panel[data-section=intro] h1{letter-spacing:-.02em;white-space:nowrap;color:#0000;-webkit-text-fill-color:transparent;-webkit-text-stroke:2.6px #fff;filter:drop-shadow(0 4px 16px #0006);background:0 0;margin:.06em 0 .14em;font-size:clamp(3.2rem,13vw,9rem);line-height:1.02;animation:none}.panel[data-section=intro] .lead{text-transform:uppercase;letter-spacing:.42em;color:var(--accent);padding-left:.42em;font-size:clamp(.95rem,2.4vw,1.35rem);font-weight:600}.panel[data-section=intro] .tagline:before{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);width:52px;height:2px;margin:1.15rem auto 1.2rem;display:block}.panel[data-section=intro] .tagline{max-width:42ch;color:var(--cream);opacity:.94;margin:0 auto;font-size:clamp(1.05rem,2.5vw,1.55rem)}.reveal{opacity:0;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transform:translateY(30px)}.panel.is-visible .reveal{opacity:1;transform:none}.panel-content .reveal:nth-child(2){transition-delay:.1s}.panel-content .reveal:nth-child(3){transition-delay:.2s}.panel-content .reveal:nth-child(4){transition-delay:.3s}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}h1{animation:none}}.project-list{max-width:40ch;margin-top:1rem;list-style:none}.project-list li{color:var(--muted);padding:.4rem 0}.project-list strong{color:var(--fg)}.links{flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;display:flex}.links a{color:var(--fg);border-bottom:2px solid var(--accent);padding-bottom:2px;text-decoration:none;transition:opacity .2s}.links a:hover{opacity:.7}#loading{z-index:10;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:1rem;transition:opacity .8s;display:flex;position:fixed;inset:0}#loading.is-hidden{opacity:0;pointer-events:none}.loading-label{color:var(--muted);letter-spacing:.2em;text-transform:uppercase;font-size:.8rem}.loading-track{background:#ffffff1f;width:220px;height:3px;overflow:hidden}#loading-bar{background:var(--accent);transform-origin:0;width:100%;height:100%;transition:transform .25s;transform:scaleX(0)}.room-hint{z-index:3;color:var(--cream);letter-spacing:.16em;text-transform:uppercase;-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;background:#120e0a80;border:1px solid #f0b45540;border-radius:999px;padding:.6rem 1.3rem;font-size:.82rem;transition:opacity .4s;position:fixed;bottom:2rem;left:50%;transform:translate(-50%)}.room-hint.is-visible{opacity:1}.keypad{z-index:5;-webkit-backdrop-filter:blur(8px);background:#0e0b08eb;border:1px solid #f0b45559;border-radius:16px;flex-direction:column;align-items:center;gap:.8rem;padding:1.4rem 1.6rem;transition:transform .25s;display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)scale(.94)}.keypad.is-open{display:flex;transform:translate(-50%,-50%)scale(1)}.keypad.is-wrong{border-color:#e05252;animation:.35s keypad-shake}@keyframes keypad-shake{0%,to{transform:translate(-50%,-50%)}25%{transform:translate(calc(-50% - 8px),-50%)}75%{transform:translate(calc(8px - 50%),-50%)}}.keypad-title{color:var(--accent);letter-spacing:.24em;text-transform:uppercase;font-size:.75rem}.keypad-display{color:var(--fg);letter-spacing:.35em;min-height:1.4rem;font-size:1.1rem}.keypad.is-wrong .keypad-display{color:#e05252}.keypad-grid{grid-template-columns:repeat(3,3.2rem);gap:.5rem;display:grid}.keypad-grid button{height:3.2rem;color:var(--fg);cursor:pointer;background:#ffffff0d;border:1px solid #f0b4554d;border-radius:10px;font-size:1.15rem;transition:background .15s}.keypad-grid button:hover{background:#f0b45533}.keypad-close{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;font-size:.8rem}.keypad-close:hover{color:var(--fg)}#transition-fade{z-index:9;opacity:0;pointer-events:none;background:#fff;position:fixed;inset:0}.scroll-hint{z-index:2;color:var(--muted);letter-spacing:.1em;pointer-events:none;font-size:.85rem;animation:2s ease-in-out infinite bob;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}@keyframes bob{0%,to{opacity:.8;transform:translate(-50%)translateY(0)}50%{opacity:.4;transform:translate(-50%)translateY(6px)}}@media (prefers-reduced-motion:reduce){.scroll-hint{animation:none}html{scroll-behavior:auto}}
