:root{--bg:#131719;--ink:#f1f0e9;--muted:#afb4b2;--line:rgba(255,255,255,.19);--accent:#ceff81;--pad:clamp(22px,5vw,88px)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--bg)}.skip{position:fixed;top:-70px;left:20px;z-index:100;background:var(--accent);color:#111;padding:16px}.skip:focus{top:12px}.topbar{position:fixed;z-index:20;top:0;left:0;width:100%;height:86px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#131719c9,#13171900);transition:background .3s}.topbar.scrolled{background:#131719ec;backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.wordmark{font-size:31px;font-weight:800;letter-spacing:-2px;display:inline-flex;align-items:center;gap:6px}.topbar nav{display:flex;gap:36px;font-size:13px}.topbar nav a{padding:12px 0}.topbar nav a:hover{color:var(--accent)}.edition,.micro,.eyebrow,.section-kicker,.scene-info,.scroll-cue,.thought-label,figcaption,footer,.contact-bottom,.project-meta,.step-no{font-family:'SFMono-Regular',Consolas,monospace;font-size:10px;letter-spacing:1.5px}.edition{color:var(--muted)}.story{height:260svh;position:relative}.stage{height:100svh;min-height:640px;position:sticky;top:0;overflow:hidden;background:#171b1e}.portrait{position:absolute;inset:0}.portrait img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:50% 50%}.shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#131719a8 0%,transparent 24%,transparent 61%,#131719ed 100%),linear-gradient(90deg,#13171988,transparent 38%,transparent 65%,#1317196b)}.hero-intro{position:absolute;top:115px;left:var(--pad)}.eyebrow{color:var(--accent)}h1{font-size:clamp(18px,1.65vw,26px);font-weight:500;line-height:1.6;letter-spacing:-.7px;margin:15px 0}h1 span{color:#d0d4d0}.discipline{position:absolute;top:42%;background:none;border:0;text-align:left;padding:10px 0;transition:transform .4s}.discipline:hover{transform:translateY(-5px)}.discipline .micro{display:block;margin-bottom:12px;color:#e0e5df}.design{left:var(--pad)}.code{right:var(--pad)}.big{display:block;font-size:clamp(72px,8.7vw,160px);line-height:1;letter-spacing:-5px}.design .big{font-family:Georgia,serif;font-style:italic;font-weight:400}.code .big{font-weight:600;letter-spacing:-7px}.period{color:var(--accent)}.thought{position:absolute;bottom:126px;left:50%;transform:translateX(-50%);text-align:center;width:min(90%,600px);text-shadow:0 2px 18px #000}.thought-label{font-size:9px;color:var(--accent)}.thought p{font-size:clamp(18px,2vw,28px);font-weight:500;letter-spacing:-.8px;margin:14px 0}.story-footer{position:absolute;bottom:69px;left:var(--pad);right:var(--pad);display:flex;align-items:center;justify-content:space-between}.scene-info{display:flex;align-items:center;gap:9px;letter-spacing:.4px}.status-dot{width:6px;height:6px;background:var(--accent);border-radius:50%}.scene-controls{display:flex;gap:7px;position:absolute;left:50%;transform:translateX(-50%)}.scene-controls button{background:#161b1eaa;border:1px solid #7c8487;border-radius:50%;width:44px;height:44px;font-family:monospace;font-size:11px}.scene-controls button[aria-pressed=true]{background:var(--accent);color:#1c2418;border-color:var(--accent)}.motion-toggle{border:0;background:none;font-size:11px;padding:10px;color:#d2d5d3}.scroll-cue{position:absolute;bottom:23px;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;font-size:9px;color:#b4bdb8}.progress{position:absolute;bottom:0;height:2px;background:#ffffff22;width:100%}.progress i{display:block;width:0;height:100%;background:var(--accent)}.section-pad{padding:90px var(--pad)}.section-kicker{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:20px;color:var(--muted);line-height:1.7}.statement{background:#e9e9df;color:#202823;padding-top:60px}.statement .section-kicker{border-color:#20282340;color:#59635b}.statement h2{font-size:clamp(32px,5vw,78px);line-height:1.3;letter-spacing:-3px;font-weight:500;margin:65px 0 45px}.statement h2 em{font-style:normal;color:#74826b}.about-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px}.about-bottom p,.section-heading p,.studio-layout p{font-size:15px;line-height:1.9;color:#59635b}.handnote{font-family:Georgia,serif;font-style:italic;font-size:23px;line-height:1.4;transform:rotate(-5deg)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:50px 0}.section-heading h2,.studio h2{font-size:clamp(42px,6vw,90px);font-weight:400;letter-spacing:-3px;line-height:1.05;margin:0}.section-heading em,.studio em,.contact-title em{font-family:Georgia,serif;font-weight:400}.section-heading p,.studio-layout p{color:var(--muted)}.projects{display:grid;grid-template-columns:1.15fr 1fr;gap:28px}.project{background:none;border:0;text-align:left;padding:0;width:100%}.project-visual{height:350px;overflow:hidden;position:relative;background:#293137}.project-visual img{width:100%;height:100%;object-fit:cover;transition:transform .7s}.project:hover img{transform:scale(1.04)}.project-visual .project-no{position:absolute;top:20px;left:20px;font:12px monospace;color:#fff9}.project-visual .open-arrow{position:absolute;bottom:20px;right:20px;width:42px;height:42px;background:var(--accent);color:#202820;border-radius:50%;display:grid;place-items:center;font-size:24px}.project-meta{display:flex;justify-content:space-between;margin:21px 0 14px;color:var(--muted);font-size:9px;letter-spacing:.7px}.project h3{font-size:30px;letter-spacing:-1px;margin:0 0 12px;font-weight:500}.project p{font-size:14px;line-height:1.8;color:var(--muted);max-width:450px;margin:0}.motion-card{background:#ced3c6;color:#26342d;display:flex;align-items:center;justify-content:center}.motion-type{font-family:Georgia,serif;font-style:italic;font-size:70px;letter-spacing:-5px;transform:rotate(-12deg);position:relative;z-index:1}.motion-type:after{content:'Motion';position:absolute;left:10px;top:18px;color:transparent;-webkit-text-stroke:1px #51684e80;z-index:-1}.motion-lines{position:absolute;inset:35px;border:1px solid #273a2c40;transform:rotate(-12deg)}.motion-lines:after{content:'';position:absolute;inset:20px;border:1px solid #273a2c40}.motion-card .project-no{color:#26342d80}.process{background:#1d2424}.process h2{font-size:clamp(34px,5vw,76px);letter-spacing:-3px;font-weight:400;line-height:1.25;margin:60px 0}.lime{color:var(--accent)}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.steps article{border-top:1px solid var(--line);padding-top:25px}.step-no{color:var(--accent)}.steps h3{font-size:24px;font-weight:400;margin:27px 0 18px}.steps p{font-size:14px;color:var(--muted);line-height:1.9;max-width:310px}.studio-layout{display:flex;justify-content:space-between;gap:35px;margin:55px 0 35px}.studio h2{font-size:clamp(28px,3vw,46px);line-height:1.4;letter-spacing:-1.8px}.studio h2 em{font-style:normal;color:#9aa799}.studio figure{margin:0}.studio figure img{display:block;width:100%;height:auto;min-height:180px;object-fit:cover;filter:saturate(.65)}figcaption{display:flex;justify-content:space-between;margin-top:15px;color:var(--muted);font-size:9px}.contact{background:var(--accent);color:#202b20}.contact .section-kicker{color:#34482e;border-color:#34482e55}.contact-lead{margin:55px 0 20px;font-size:15px}.contact-title{font-size:clamp(52px,9vw,140px);letter-spacing:-5px;line-height:1;display:block;position:relative}.contact-title>span{position:absolute;right:0;top:0;font-size:80px;transition:transform .3s}.contact-title:hover>span{transform:translate(8px,-8px)}.contact-bottom{margin-top:60px;display:flex;justify-content:space-between;gap:20px;font-size:11px}.contact-bottom a{font-family:Arial,sans-serif;font-size:17px;letter-spacing:0}footer{padding:30px var(--pad);display:flex;align-items:center;justify-content:space-between;gap:20px;color:var(--muted);font-size:9px}footer .wordmark{color:var(--ink)}dialog{background:#e9e9df;color:#202823;border:0;padding:60px;width:min(700px,92vw);max-height:85svh;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#080c10bc;backdrop-filter:blur(9px)}.dialog-close{display:block;margin-left:auto;margin-bottom:40px;background:none;border:0;padding:10px}.dialog-close:focus-visible{outline-color:#263d22}dialog .eyebrow{color:#4b6341}dialog h2{font-size:44px;letter-spacing:-2px;font-weight:400}dialog h3{font-size:14px;margin-top:30px}dialog p{font-size:15px;line-height:1.9;color:#53604f}body.modal-open{overflow:hidden}.reduced .story{height:100svh}.reduced .stage{position:relative}.reduced *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
@media(min-aspect-ratio:19/10){.stage{min-height:620px}.hero-intro{top:100px}.discipline{top:43%}}
@media(max-width:800px){.edition{display:none}.topbar{height:72px}.topbar nav{gap:24px}.hero-intro{top:99px}.portrait img{object-position:50% 48%}.discipline{top:46%}.big{font-size:70px;letter-spacing:-4px}.code .big{letter-spacing:-5px}.projects{grid-template-columns:1fr}.project-visual{height:360px}.section-heading{align-items:start}.section-pad{padding:65px var(--pad)}.studio-layout{display:block}.studio-layout p{margin-top:25px}.contact-title>span{font-size:50px}.contact-bottom>span{display:none}.steps{gap:25px}}
@media(max-width:540px){.stage{min-height:670px}.story{height:235svh}.topbar nav{gap:19px;font-size:12px}.wordmark{font-size:27px}.hero-intro{top:96px}.eyebrow{font-size:8px;letter-spacing:1.1px}h1{font-size:18px;line-height:1.6;margin-top:12px}.portrait{top:145px;bottom:120px}.portrait img{object-fit:cover}.shade{background:linear-gradient(#131719 0%,#13171900 30%,#13171900 55%,#131719 89%)}.discipline{top:60%;z-index:2;text-shadow:0 2px 18px #000}.design{left:16px}.code{right:16px}.big{font-size:44px;letter-spacing:-2px}.code .big{letter-spacing:-3px}.discipline .micro{font-size:7px;margin-bottom:7px;letter-spacing:1px}.thought{bottom:142px}.thought p{font-size:18px;margin-top:10px}.story-footer{bottom:74px;align-items:start}.scene-info{font-size:9px;position:absolute;top:-18px;left:0}.scene-controls{left:0;transform:none;top:8px}.scene-controls button{width:44px;height:44px}.motion-toggle{margin-left:auto;margin-top:7px}.scroll-cue{bottom:18px;font-size:7px}.section-kicker{font-size:8px;letter-spacing:.6px;gap:15px}.section-kicker span:last-child{text-align:right}.statement h2{margin-top:45px;letter-spacing:-1.5px;font-size:34px}.about-bottom{display:block}.about-bottom p{font-size:14px}.handnote{display:block;font-size:20px;margin:30px 0 0 40%}.section-heading h2{font-size:47px;letter-spacing:-2px}.section-heading{display:block;margin:40px 0 30px}.section-heading p{font-size:13px;margin-top:25px}.project-visual{height:245px}.projects{gap:40px}.project h3{font-size:27px}.project-meta{font-size:8px}.process h2{font-size:36px;letter-spacing:-1.7px;margin:45px 0}.steps{grid-template-columns:1fr;gap:24px}.steps article{position:relative;padding-left:45px}.step-no{position:absolute;left:0;top:26px}.steps h3{margin:0 0 15px;font-size:22px}.steps p{margin:0}.studio figure img{min-height:0}.studio h2{font-size:28px}.studio-layout p{font-size:14px}figcaption{font-size:7px;letter-spacing:.3px}.contact-title{font-size:58px;letter-spacing:-3px}.contact-title>span{font-size:40px;top:-55px}.contact-bottom{margin-top:40px}.contact-bottom a{font-size:15px}footer{flex-wrap:wrap}footer .wordmark{flex-basis:100%}dialog{padding:25px}dialog h2{font-size:32px}.reduced .story{height:auto}.reduced .stage{height:100svh}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* Fly interaction stays inside the portrait; normal navigation remains available. */
.stage.fly-active{cursor:none}.stage.fly-active button,.stage.fly-active a{cursor:pointer}
.fly{position:absolute;z-index:8;width:24px;height:24px;left:0;top:0;pointer-events:none;opacity:0;filter:drop-shadow(0 2px 3px #0008);transition:opacity .2s}
.fly.visible{opacity:1}.fly span{position:absolute;width:7px;height:12px;border-radius:50%;background:#141b13;border:1px solid #cfff7d;left:9px;top:8px;transform:rotate(-20deg)}
.fly i,.fly b{position:absolute;width:10px;height:7px;border:1px solid #edf7e1;background:#ffffffa8;border-radius:80% 15% 80% 15%;top:5px;left:2px;transform:rotate(12deg)}.fly b{left:12px;transform:rotate(65deg)}
.fly.visible i{animation:wing .07s alternate infinite}.fly.visible b{animation:wing .06s alternate-reverse infinite}@keyframes wing{to{transform:rotate(-40deg) scaleX(.45)}}
.play-controls{position:absolute;left:var(--pad);bottom:116px;display:flex;gap:6px;z-index:5}.play-controls button{background:#131719b0;border:1px solid #88938680;border-radius:30px;font-size:10px;padding:10px 12px;color:#dfe6d9;min-height:36px}.play-controls button:hover{border-color:var(--accent);color:var(--accent)}
@media(max-width:1100px){.play-controls{bottom:184px}.thought{bottom:117px}}
@media(max-width:540px){.play-controls{bottom:182px;left:22px;right:22px;justify-content:center}.play-controls button{font-size:9px;padding:8px 10px;min-height:38px}.thought{bottom:128px}.thought p{font-size:17px}.discipline{top:55%}.scroll-cue{font-family:Arial,sans-serif;font-size:9px;letter-spacing:.2px}}

/* A short, irritated comic beat, synchronized with the swatting gesture. */
.stage[data-reaction="swat"] .thought p{color:var(--accent);font-weight:800;font-size:clamp(22px,2.4vw,36px);animation:annoyed .2s ease-in-out 10 alternate}
@keyframes annoyed{from{transform:rotate(-2deg) translateX(-3px)}to{transform:rotate(2deg) translateX(3px)}}
.reduced .stage[data-reaction="swat"] .thought p{animation:none}

/* The renderer changes photographs only: no mesh, eye warp or face rotation. */
.portrait-frame{opacity:0;transition:none;pointer-events:none}
.portrait-frame.is-visible{opacity:1}.frame-fallback-hidden{opacity:0}
.portrait.gesture-wide img{object-fit:contain;object-position:50% 50%;background:#171b1e}
.stage[data-reaction="swat"] .portrait-frame{transition:none}
.language-switch{display:flex;align-items:center;gap:4px;font:11px monospace;white-space:nowrap}
.language-switch button{border:0;background:none;padding:9px 5px;color:#aeb7af;border-radius:3px;min-width:30px}
.language-switch button[aria-pressed="true"]{color:var(--accent);background:#ceff8114}
.language-switch>span{color:#657268}
.topbar{gap:24px}.topbar nav{margin-left:auto}.edition{margin-left:24px}
.code .micro{line-height:1.5;max-width:240px}
@media(max-width:1100px){.edition{display:none}.topbar nav{gap:23px}.topbar{gap:20px}}
@media(max-width:540px){
 .topbar{display:grid;grid-template-columns:1fr auto;align-content:center;gap:3px 12px;height:88px;padding:9px 22px}
 .topbar .wordmark{grid-column:1;grid-row:1}.language-switch{grid-column:2;grid-row:1;justify-self:end}
 .topbar nav{grid-column:1/-1;grid-row:2;justify-self:end;gap:20px;font-size:11px;margin:0}
 .topbar nav a{padding:4px 0}.hero-intro{top:110px}.portrait{top:157px}
 .code .micro{max-width:125px;text-align:right;font-size:6px;letter-spacing:.6px}
 .thought p{font-size:16px}.scene-info{font-size:8px}.play-controls button{font-size:9px}
 .scroll-cue{font-size:8px}.scroll-cue span:first-child{max-width:75%;line-height:1.5}
 .stage[data-reaction="swat"] .thought p{font-size:20px}
 .contact-title{font-size:clamp(44px,14vw,58px)}
}

/* Current site status and the retouched studio photograph. */
.building-note{display:flex;align-items:center;gap:8px;max-width:390px;font:11px/1.7 Arial,sans-serif;color:var(--accent);margin:12px 0 0;padding:7px 12px;border:1px solid #ceff8133;background:#131719aa;border-radius:4px}
.building-note .status-dot{flex-shrink:0}.studio figure img{filter:none;aspect-ratio:auto}
@media(max-width:540px){.building-note{font-size:10px;max-width:310px;padding:5px 9px;margin-top:7px}.hero-intro{top:105px}.portrait{top:210px}figcaption{flex-wrap:wrap;gap:8px}}

/* A smaller personal story within the studio section. */
.craft-corner{margin-top:85px}.craft-heading{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;margin:38px 0 30px}.craft-heading h3{font-size:clamp(30px,3.2vw,46px);font-weight:400;letter-spacing:-1.4px;line-height:1.25;margin:0}.craft-heading em{font-family:Georgia,serif;font-weight:400;color:#c7b291}.craft-heading p{font-size:14px;line-height:1.9;color:var(--muted);margin:0;max-width:460px}.craft-photos{display:grid;grid-template-columns:1.7fr 1fr;gap:24px}.craft-photos figure{min-width:0}.studio .craft-photos img{height:clamp(320px,32vw,460px);width:100%;object-fit:cover;object-position:50% 50%;min-height:0}.studio .craft-workbench img{object-position:50% 55%}.studio .craft-materials img{object-position:50% 53%}.craft-photos figcaption{line-height:1.6}.craft-note{margin:18px 0 0;color:var(--muted);font:10px/1.7 monospace;letter-spacing:.3px}
@media(max-width:800px){.craft-heading{grid-template-columns:1fr;gap:22px}.craft-photos{grid-template-columns:1.5fr 1fr;gap:16px}.studio .craft-photos img{height:310px}}
@media(max-width:540px){.craft-corner{margin-top:55px}.craft-heading{margin-top:28px}.craft-heading h3{font-size:31px}.craft-heading p{font-size:13px}.craft-photos{grid-template-columns:1fr;gap:26px}.studio .craft-workbench img{height:auto;aspect-ratio:1672/941}.studio .craft-materials img{height:auto;max-height:580px;aspect-ratio:941/1672;object-fit:cover}.craft-note{font-size:9px}.craft-corner .section-kicker{font-size:7px;gap:10px}}

.theme-archive{border-bottom:1px solid var(--line)}.archive-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:70px;margin-top:55px;align-items:center}.theme-archive h2{font-size:clamp(38px,4vw,64px);font-weight:400;letter-spacing:-2px;line-height:1.15;margin:0 0 25px}.theme-archive h2 em{font-family:Georgia,serif;font-weight:400}.archive-layout p{color:var(--muted);font-size:14px;line-height:1.9;max-width:390px}.original-edition{display:block;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:#ffffff04}.original-edition img{display:block;width:100%;height:auto;aspect-ratio:1618/798;object-fit:cover;border-bottom:1px solid var(--line)}.archive-card-title{display:block;font-size:18px;padding:22px 22px 8px}.archive-card-link{display:block;font-size:11px;color:var(--accent);padding:0 22px 22px}.original-edition:hover{border-color:var(--accent)}.archive-upcoming{margin-top:35px}.archive-upcoming>span{font:9px/1.8 monospace;letter-spacing:.5px;color:var(--muted)}.archive-upcoming ul{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-wrap:wrap;gap:7px}.archive-upcoming li{font-size:10px;line-height:1.4;border:1px solid var(--line);border-radius:20px;padding:6px 10px;color:var(--muted)}@media(max-width:800px){.archive-layout{grid-template-columns:1fr;gap:30px;margin-top:35px}.archive-layout p{max-width:100%}.theme-archive h2{letter-spacing:-1px}.archive-card-title{font-size:16px}}

.sound-controls{display:flex;align-items:center;gap:12px;margin-top:10px;width:max-content;position:relative;z-index:6;background:#15151bb0;border:1px solid var(--line);border-radius:30px;padding:3px 12px 3px 4px}.sound-controls button{border:0;border-radius:20px;background:none;font-size:10px;min-height:30px;padding:5px 10px;color:var(--ink)}.sound-controls button[aria-pressed="true"]{color:var(--accent)}.sound-controls input{width:85px;accent-color:var(--accent);height:26px;cursor:pointer}.sound-controls input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(max-width:540px){.portrait{top:245px}.sound-controls{margin-top:8px}.sound-controls button{font-size:9px;min-height:26px}.sound-controls input{height:24px}}

/* A sealed invitation for the next seasonal edition. */
.archive-teaser-note{font-family:Georgia,serif;font-style:italic;color:var(--ink)!important;margin-top:30px;font-size:18px!important}.season-heading{display:flex;justify-content:space-between;gap:20px;margin:65px 0 20px;padding-top:22px;border-top:1px solid var(--line);font:10px/1.8 monospace;letter-spacing:.7px;color:var(--muted)}.season-date-hint{font-size:9px;letter-spacing:0}.season-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}.season-card{display:block;text-align:left;color:var(--ink);background:#ffffff03;border:1px solid var(--line);padding:0;border-radius:4px;overflow:hidden;min-width:0;text-decoration:none;transition:border-color .2s,background .2s}.season-card:hover{border-color:var(--accent);background:#ffffff08}.season-card-art{display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;height:140px;background:radial-gradient(ellipse at 50% 100%,var(--season-tint),#17151e 90%)}.season-card-art:after{content:'';position:absolute;inset:12px;border:1px solid #ffffff12}.season-halloween{--season-tint:#5f365d}.season-thanksgiving{--season-tint:#654329}.season-christmas{--season-tint:#234c42}.season-new-year{--season-tint:#2d3f68}.season-birthday{--season-tint:#683f53}.season-card-art img{width:100%;height:100%;object-fit:cover}.sealed-mark{font-size:68px;line-height:1;color:#ddc7a580;transform:rotate(-12deg);transition:transform .4s,opacity .4s}.season-card:hover .sealed-mark{transform:rotate(0deg);opacity:.6}.season-christmas .sealed-mark{color:#dfc8a085}.season-new-year .sealed-mark{color:#c7d4ef85}.season-birthday .sealed-mark{color:#e3bdd485}.sealed-lock{position:absolute;right:25px;bottom:22px;width:16px;height:13px;border:1px solid #e4d8ca90;border-radius:2px;background:#17151e}.sealed-lock:before{content:'';position:absolute;width:9px;height:8px;border:1px solid #e4d8ca90;border-bottom:0;border-radius:7px 7px 0 0;left:2.5px;top:-8px}.season-card-body{display:flex;flex-direction:column;min-height:170px;padding:20px 17px}.season-card-status{color:var(--accent);font:11px/1.6 monospace;letter-spacing:1px;margin-bottom:12px}.season-card-title{font-size:18px;letter-spacing:-.4px}.season-card-teaser{font-size:11px;line-height:1.7;color:var(--muted);margin-top:10px;min-height:38px}.season-card-date{display:block;font:9px/1.7 monospace;color:var(--muted);margin-top:auto;padding-top:15px}.season-card[data-state="secret"] .season-card-status{font-size:9px;letter-spacing:.5px}.edition-dialog{background:#211b29;color:#f7eee5;border:1px solid #b296c34d;border-radius:4px;width:min(520px,90vw);padding:45px}.edition-dialog h2{font:italic 43px/1.2 Georgia,serif;margin:25px 0}.edition-dialog .eyebrow{color:#e7b784;letter-spacing:1px;line-height:1.8}.edition-dialog p{color:#c8bdcf;font-size:15px;line-height:1.9}.edition-dialog button{margin-top:20px;min-height:44px;border:1px solid #b296c370;background:none;border-radius:30px;padding:10px 22px;color:#f7eee5}.edition-dialog button:hover{border-color:#ffb269}.edition-dialog button:focus-visible{outline-color:#ffb269}
@media(max-width:1000px){.season-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.season-heading{display:block}.season-date-hint{display:block;margin-top:6px}}
@media(max-width:540px){.season-cards{grid-template-columns:1fr;gap:12px}.season-card{display:grid;grid-template-columns:90px 1fr}.season-card-art{height:100%;min-height:155px}.season-card-art:after{inset:8px}.sealed-mark{font-size:44px}.sealed-lock{right:20px;bottom:25px}.season-card-body{padding:18px;min-height:155px}.season-card-status{margin-bottom:5px;font-size:10px}.season-card-title{font-size:19px}.season-card-teaser{min-height:0;margin-top:6px}.season-card-date{padding-top:8px}.season-card-art img{object-position:50% 50%}.season-heading{margin-top:40px}.edition-dialog{padding:28px}.edition-dialog h2{font-size:34px}.edition-dialog p{font-size:14px}}

/* Click celebrations originate at the actual pointer, never at a fixed corner. */
.celebration-layer{position:fixed;inset:0;pointer-events:none;z-index:10000;overflow:hidden}.confetti-burst{position:absolute;width:0;height:0;pointer-events:none}.confetti-burst i{position:absolute;left:-3px;top:-4px;width:6px;height:9px;opacity:0;animation:confetti-pop var(--life) cubic-bezier(.12,.65,.3,1) both}.confetti-burst i.quiet-confetti{animation:confetti-quiet var(--life) ease-out both}@keyframes confetti-pop{0%{opacity:1;transform:translate(0,0) rotate(0) scale(.5)}15%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.7)}}@keyframes confetti-quiet{0%{opacity:.85;transform:translate(var(--dx),var(--dy)) scale(.5)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(1)}}
.reduced .confetti-burst i{animation:confetti-quiet var(--life) ease-out both!important}

.fired-rocket{position:absolute;left:-14px;top:-20px;width:28px;height:32px;background:transparent url('assets/birthday/firework-cursor.svg') center/contain no-repeat;animation:firework-launch 850ms ease-in both}@keyframes firework-launch{0%{opacity:1;transform:translate(0,0) rotate(25deg)}65%{opacity:1}100%{opacity:0;transform:translate(0,-180px) rotate(25deg) scale(.6)}}.reduced .fired-rocket{display:none}

@media(min-width:1001px){.season-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}.season-april-fools .season-card-art{background:radial-gradient(ellipse at 50% 100%,#28513b,#101b17)}.season-independence-day .season-card-art{background:linear-gradient(135deg,#612f3b,#1b2944)}

/* The release countdown is the main visual on every closed edition gate. */
.season-card[data-state="locked"] .season-card-art{height:174px;container-type:inline-size}
.gate-countdown{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:22px 12px;color:#fff}
.gate-countdown-label{font:700 11px/1 monospace;letter-spacing:3px;color:var(--accent)}
.gate-countdown-number{font:900 clamp(52px,32cqi,104px)/.95 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.065em;font-variant-numeric:tabular-nums;white-space:nowrap}
.season-card[data-state="locked"] .season-card-date{font:700 14px/1.5 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink)}
@media(max-width:540px){.season-card[data-state="locked"]{grid-template-columns:1fr}.season-card[data-state="locked"] .season-card-art{height:174px;min-height:174px}.season-card[data-state="locked"] .season-card-body{min-height:145px}.season-card[data-state="locked"] .season-card-art:after{inset:12px}}
.season-card-occasion{display:block;margin-top:7px;font:11px/1.5 'SFMono-Regular',Consolas,monospace;color:var(--muted);font-variant-numeric:tabular-nums}

/* Existing Hoodimong character artwork, staged in the portfolio palette. */
#hoodimong,#hoodibot-project,#hoodies-project{scroll-margin-top:110px}
.hoodimate-card,.hoodibot-card,.hoodies-card{background:var(--character-paper,#d9d2c3);color:#303a31;isolation:isolate}
.hoodibot-card{background:var(--character-mist,#b9c7c5);color:#233631}.hoodies-card{background:var(--character-group,#252e2d);color:#e7e8dc;border:1px solid var(--line)}
.project[data-project="hoodies"]{grid-column:1/-1}
.character-label{position:absolute;top:22px;right:24px;font:9px/1.4 monospace;letter-spacing:2px;opacity:.65}
.character-note{position:absolute;bottom:24px;left:25px;font:9px/1.5 monospace;letter-spacing:1.1px;opacity:.8;max-width:calc(100% - 100px)}
.character-scene{position:absolute;inset:45px 35px 55px;display:flex;align-items:center;justify-content:center}
.project-visual .character-scene img{display:block;width:auto;max-width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 12px 9px #29302724)}
.character-scene.companion:before{content:'';position:absolute;bottom:0;width:50%;height:16px;border-radius:50%;background:#6d69591a;filter:blur(9px);z-index:-1}
.character-scene.tidy{gap:0;inset:55px 35px 55px}
.project-visual .tidy .tidy-mongsil{height:95%;max-width:65%;align-self:end;z-index:1;object-position:bottom}
.project-visual .tidy .tidy-folder{height:57%;max-width:39%;margin-left:-13px;align-self:end;object-position:bottom;transform:rotate(-5deg)}
.project:hover .tidy .tidy-folder{transform:translateX(5px) rotate(-2deg)}
.hoodimate-card .project-no,.hoodibot-card .project-no{color:#26342d80}
.hoodies-lineup{position:absolute;inset:55px 60px 28px;display:flex;align-items:end;justify-content:center;gap:clamp(12px,3vw,45px)}
.hoodie-friend{margin:0;flex:0 1 165px;min-width:0;text-align:center}
.project-visual .hoodie-friend img{display:block;object-fit:contain;object-position:bottom;height:220px;max-width:100%;width:auto;margin:auto;filter:drop-shadow(0 12px 8px #0003)}
.project-visual .friend-saebom img{height:235px}.project-visual .friend-morang img{height:182px}.project-visual .friend-sobok img{height:210px}
.hoodie-friend figcaption{display:block;margin-top:16px;color:#d4dad4;font-size:9px;letter-spacing:1px}
.project-meta{flex-wrap:wrap;gap:8px 20px;line-height:1.6}.project-meta span:last-child{text-align:right}
.hoodimong-note{margin:45px 0 0;padding-top:20px;border-top:1px solid var(--line);font:12px/1.9 Arial,sans-serif;color:var(--muted);max-width:720px}
.footer-links{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
/* Keep the materials crop on the leather, below the monitor branding. */
.studio .craft-materials img{object-position:50% 100%}
@media(max-width:540px){.project-meta span:last-child{text-align:left}.studio .craft-materials img{height:auto;max-height:none;aspect-ratio:1;object-position:50% 100%}.footer-links{gap:20px}}

@media(max-width:800px){.hoodies-lineup{gap:15px;inset-inline:30px}.project-visual .hoodie-friend img{height:165px}.project-visual .friend-saebom img{height:177px}.project-visual .friend-morang img{height:138px}.project-visual .friend-sobok img{height:160px}}
@media(max-width:540px){.character-label{top:20px;right:20px;font-size:8px}.character-note{bottom:20px;left:20px;font-size:8px;letter-spacing:.6px}.character-scene{inset:38px 25px 45px}.character-scene.tidy{inset:42px 30px 42px}.hoodies-card{height:365px}.hoodies-lineup{inset:50px 22px 24px;display:grid;grid-template-columns:repeat(6,1fr);align-items:end;gap:18px 12px}.hoodie-friend{grid-column:span 2}.friend-morang{grid-column:2/span 2}.friend-sobok{grid-column:4/span 2}.project-visual .hoodie-friend img{height:112px}.project-visual .friend-saebom img{height:120px}.project-visual .friend-morang img{height:96px}.project-visual .friend-sobok img{height:112px}.hoodie-friend figcaption{margin-top:8px;font-size:8px}}

/* One shared character layout; each edition receives a compatible palette. */
html[data-season="halloween"]{--character-paper:#e6cfbc;--character-mist:#c9b8d6;--character-group:#30223e}
html[data-study="thanksgiving"]{--character-paper:#e4d2b5;--character-mist:#c3c9ae;--character-group:#35291e}
html[data-study="christmas"]{--character-paper:#e7dfcb;--character-mist:#bed0c4;--character-group:#173b30}
html[data-study="new-year"]{--character-paper:#e0e2f0;--character-mist:#becbe1;--character-group:#202d4a}
html[data-study="independence-day"]{--character-paper:#e9dfd3;--character-mist:#bccbdd;--character-group:#243956}
html[data-study="birthday"]{--character-paper:#ecdae3;--character-mist:#d5c9e4;--character-group:#422c40}
html[data-study="april-fools"]{--character-paper:#e7e7dc;--character-mist:#c6cec5;--character-group:#27362d}

/* The on-page motion preference also disables smooth anchor scrolling. */
html.reduced{scroll-behavior:auto!important}

.project-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.project-links a{display:inline-block;background:var(--accent,#dfff58);color:#151615;padding:12px 18px;border-radius:6px;font-weight:700;text-decoration:none}.project-links a:hover{text-decoration:underline}
