@font-face{font-family:"GJX Miaomiao";src:url("assets/fonts/miaomiao.woff2") format("woff2");font-display:swap}
@font-face{font-family:"GJX Yuanqu";src:url("assets/fonts/yuanqu.woff2") format("woff2");font-display:swap}
@font-face{font-family:"GJX Fengyi";src:url("assets/fonts/fengyi.woff2") format("woff2");font-display:swap}
@font-face{font-family:"GJX Liuzhu";src:url("assets/fonts/liuzhu.woff2") format("woff2");font-display:swap}
@font-face{font-family:"GJX Maoken";src:url("assets/fonts/maoken-heavy-song.woff2") format("woff2");font-display:swap}
@font-face{font-family:"GJX Keke";src:url("assets/fonts/keke.woff2") format("woff2");font-display:swap}
:root{--paper:#f7f6f2;--ink:#242422;--muted:#6c6b66;--line:#d3d2cb;--accent:#b54632}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif;font-size:16px;line-height:1.55}
button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}
.skip-link{position:absolute;left:1rem;top:-4rem;background:white;padding:.75rem;z-index:30}.skip-link:focus{top:1rem}
.site-header{height:78px;padding:0 clamp(1.25rem,4.5vw,5rem);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:20}
.identity{display:flex;align-items:baseline;gap:.75rem;white-space:nowrap}.identity strong{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:1.45rem;font-weight:700;letter-spacing:.04em}.identity span{font:600 .68rem Arial,sans-serif;letter-spacing:.15em;color:var(--muted)}
.site-nav{display:flex;align-items:center;gap:clamp(1.4rem,3vw,3.5rem)}.site-nav a{font-size:.9rem;transition:color .15s}.site-nav a:hover,.site-nav a:focus-visible{color:var(--accent)}.site-nav span{font-size:.63rem;vertical-align:super;color:var(--muted)}.menu-button{display:none;background:none;border:0;padding:.4rem}
.menu-button{color:inherit}
main{min-height:70vh}.introduction,.selected-work,.method,.about,.contact,.project-view{max-width:1600px;margin:auto;padding-left:clamp(1.25rem,4.5vw,5rem);padding-right:clamp(1.25rem,4.5vw,5rem)}
.introduction{min-height:500px;display:flex;flex-direction:column;justify-content:space-between;padding-top:2rem;padding-bottom:2rem}.intro-index,.intro-bottom{display:flex;justify-content:space-between;gap:1rem;color:var(--muted);font-size:.76rem;letter-spacing:.04em}.intro-content{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(270px,.8fr);align-items:end;gap:3rem;padding:4rem 0 2rem}.intro-content h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(4.5rem,9vw,9rem);font-weight:500;line-height:.95;letter-spacing:-.07em;margin:0}.intro-content h1 span{display:block;font-family:"Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif;font-size:clamp(1.3rem,2.4vw,2.4rem);font-weight:400;letter-spacing:.03em;margin-top:2rem}.intro-content>p{max-width:28rem;font-size:clamp(1.04rem,1.3vw,1.26rem);line-height:1.85;margin:0 0 .2rem auto}.intro-bottom{border-top:1px solid var(--line);padding-top:1rem}.intro-bottom span:last-child{font-size:1.4rem;line-height:1}
.selected-work{padding-bottom:8rem}.section-rule{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-top:1px solid var(--ink);padding-top:1rem;margin-bottom:2rem}.section-rule h2{font-size:1rem;font-weight:600;margin:0}.section-rule>span{font:600 .66rem Arial,sans-serif;letter-spacing:.14em;color:var(--muted)}
.project-entry{display:block;width:100%;padding:0;border:0;background:none;text-align:left;color:var(--ink)}.project-entry .entry-media{overflow:hidden;background:#e7e5df}.entry-media img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.22,1,.36,1)}.project-entry:hover .entry-media img,.project-entry:focus-visible .entry-media img{transform:scale(1.025)}.project-entry:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.entry-description{display:grid;grid-template-columns:26% 1fr;gap:1rem;padding:1.2rem 0 4rem}.entry-no{color:var(--muted);font-size:.79rem}.entry-description h3{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(1.8rem,2.5vw,3rem);font-weight:500;line-height:1.2;margin:0 0 .55rem}.entry-description p{font-size:.9rem;color:var(--muted);margin:0 0 1.15rem;max-width:31rem}.entry-open{display:inline-flex;gap:2rem;border-bottom:1px solid var(--ink);padding-bottom:.3rem;font-size:.85rem}.entry-open span{transition:transform .2s}.project-entry:hover .entry-open span{transform:translate(3px,-3px)}.entry-feature{display:grid;grid-template-columns:64% 1fr;gap:clamp(1.5rem,4vw,5rem);align-items:end;border-bottom:1px solid var(--line);margin-bottom:4rem}.entry-feature .entry-media{height:min(62vw,700px)}.entry-feature .entry-description{display:block;padding-bottom:2.6rem}.entry-feature .entry-no{display:block;margin-bottom:2rem}.entry-feature .entry-description h3{font-size:clamp(2.5rem,4vw,4.8rem)}.entry-feature .entry-description p{line-height:1.7}.entry-pair{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,3vw,3.5rem)}.entry-half .entry-media{height:clamp(350px,45vw,620px)}.entry-half .entry-media img{object-position:top}.entry-half .entry-description{grid-template-columns:24% 1fr}.entry-last{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,3vw,3.5rem);align-items:end;margin-top:2rem}.entry-last .entry-media{height:420px}.entry-last .entry-description{display:block;max-width:420px;padding-bottom:1rem}.entry-last .entry-no{margin-bottom:2rem}.entry-last .entry-media img{object-position:center 38%}
.method,.about,.contact{padding-bottom:8rem}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(2rem,5vw,6rem);padding-top:2rem}.method-grid>div{border-top:1px solid var(--line);padding-top:1rem}.method-grid span{font:600 .75rem Arial,sans-serif;color:var(--accent)}.method-grid h3{font-size:1.25rem;font-weight:500;margin:2rem 0 1rem}.method-grid p{font-size:.9rem;line-height:1.8;color:var(--muted);max-width:20rem;margin:0}.about-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem);padding-top:1.5rem}.about-lead{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(2.4rem,4.8vw,5.5rem);line-height:1.3;letter-spacing:-.045em;margin:0;max-width:13ch}.about-detail>p{font-size:.95rem;line-height:2;margin:0 0 1.5rem;max-width:38rem}.about-meta{margin:2.5rem 0}.about-meta>div{display:grid;grid-template-columns:5rem 1fr;border-top:1px solid var(--line);padding:.9rem 0;gap:1rem;font-size:.83rem}.about-meta>div:last-child{border-bottom:1px solid var(--line)}.about-meta strong{font-weight:600}.about-meta span{color:var(--muted)}.underlined-link{font-size:.9rem;border-bottom:1px solid var(--ink);padding-bottom:.3rem}.underlined-link:hover{color:var(--accent);border-color:var(--accent)}
.contact{padding-bottom:9rem}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:3rem;padding-top:2rem;align-items:end}.contact-layout p{font-size:clamp(1.2rem,2vw,2rem);line-height:1.7;max-width:29rem;margin:0}.contact-mail{font-family:Arial,sans-serif;font-size:clamp(1.25rem,2.7vw,2.8rem);letter-spacing:-.04em;border-bottom:1px solid var(--ink);padding-bottom:.5rem;display:flex;justify-content:space-between;gap:1rem;word-break:break-word}.contact-mail:hover{color:var(--accent);border-color:var(--accent)}
.site-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:1.5rem clamp(1.25rem,4.5vw,5rem) 2.5rem;font-size:.75rem;color:var(--muted)}.site-footer a:hover{color:var(--ink)}
.project-view{padding-top:2rem;padding-bottom:7rem}.project-topline,.project-end{display:flex;justify-content:space-between;gap:1rem;font-size:.8rem}.project-topline{color:var(--muted)}.back-link{border-bottom:1px solid currentColor;padding-bottom:.2rem}.back-link:hover{color:var(--accent)}.project-heading{display:grid;grid-template-columns:1.2fr .8fr;gap:4rem;align-items:end;padding:5rem 0 3rem}.project-category{font-size:.75rem;color:var(--muted)}.project-heading h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:500;font-size:clamp(3.5rem,7vw,7.5rem);line-height:1.12;letter-spacing:-.06em;margin:.8rem 0 0}.project-heading>p{font-size:clamp(1.05rem,1.55vw,1.5rem);line-height:1.8;margin:0 0 .5rem}.project-cover{background:#e7e5df}.project-cover img{width:100%;max-height:800px;object-fit:cover;object-position:top}.project-info{display:grid;grid-template-columns:1fr 1fr;gap:2rem;border-bottom:1px solid var(--line);padding:2.2rem 0 3rem}.project-info span,.project-story>span{font-size:.75rem;color:var(--muted)}.project-info p{font-size:1.1rem;margin:1rem 0 0}.project-story{display:grid;grid-template-columns:32% 1fr;gap:2rem;padding:6rem 0;max-width:1100px}.project-story h2{font-size:1.55rem;font-weight:500;margin:0 0 1.5rem}.project-story p{line-height:2;color:#494944;margin:0 0 1.4rem}.project-gallery{max-width:1100px;margin:0 auto;background:#fff}.project-gallery img{width:100%;height:auto}.project-end{border-top:1px solid var(--ink);padding-top:1.4rem;margin-top:6rem;align-items:center}.project-end button{border:0;background:none;border-bottom:1px solid var(--ink);padding:.2rem 0;color:var(--ink);font-size:.84rem}.project-end button:hover{color:var(--accent);border-color:var(--accent)}
[hidden]{display:none!important}#work,#about,#contact{scroll-margin-top:100px}
@media(max-width:900px){.entry-feature{grid-template-columns:1fr}.entry-feature .entry-media{height:65vw}.entry-feature .entry-description{padding:0 0 2rem}.entry-feature .entry-no{margin-bottom:1rem}.entry-pair{gap:1.5rem}.entry-half .entry-description{display:block}.entry-half .entry-no{margin-bottom:1rem}.project-heading{grid-template-columns:1fr;gap:1.5rem}.project-heading>p{max-width:35rem}}
@media(max-width:680px){.site-header{height:64px}.identity strong{font-size:1.15rem}.identity span{font-size:.59rem}.menu-button{display:block}.site-nav{display:none;position:absolute;top:64px;left:0;right:0;background:var(--paper);padding:1.4rem 1.25rem 2rem;border-bottom:1px solid var(--line);box-shadow:0 16px 25px #24242210;flex-direction:column;align-items:stretch;gap:0}.site-nav.open{display:flex}.site-nav a{font-size:1.05rem;padding:.7rem 0}.introduction{min-height:470px;padding-top:1.3rem;padding-bottom:1.2rem}.intro-index{font-size:.65rem}.intro-content{display:block;padding:3rem 0}.intro-content h1{font-size:clamp(4rem,18vw,6rem)}.intro-content h1 span{font-size:1.35rem;margin-top:1.5rem}.intro-content>p{margin:2.5rem 0 0;font-size:1rem}.section-rule>span{font-size:.55rem}.selected-work{padding-bottom:4rem}.entry-feature .entry-media{height:80vw}.entry-description{padding:1rem 0 3rem}.entry-feature .entry-description h3{font-size:2.5rem}.entry-pair{grid-template-columns:1fr;gap:0}.entry-half .entry-media{height:84vw}.entry-half .entry-description{padding-bottom:3rem}.entry-last{display:block;margin-top:0}.entry-last .entry-media{height:75vw}.entry-last .entry-description{padding:1rem 0 2rem}.entry-last .entry-no{margin-bottom:1rem}.method,.about,.contact{padding-bottom:5rem}.method-grid{grid-template-columns:1fr;gap:2rem;padding-top:0}.method-grid h3{margin:1rem 0 .5rem}.about-layout,.contact-layout{grid-template-columns:1fr;gap:2.5rem;padding-top:0}.about-lead{font-size:2.6rem}.contact-mail{font-size:1.35rem}.project-view{padding-top:1.3rem;padding-bottom:4rem}.project-heading{padding:3.5rem 0 2rem}.project-heading h1{font-size:3.4rem}.project-cover img{max-height:500px}.project-info{grid-template-columns:1fr;gap:1rem;padding:1.5rem 0}.project-info p{font-size:.95rem;margin:.5rem 0}.project-story{display:block;padding:4rem 0}.project-story>span{display:block;margin-bottom:1.2rem}.project-gallery{margin-left:-1.25rem;margin-right:-1.25rem}.project-end{margin-top:4rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.entry-media img{transition:none}}
.introduction{min-height:400px;padding-top:1.5rem;padding-bottom:1.5rem}.intro-content{padding:2.5rem 0 1.5rem}@media(max-width:680px){.introduction{min-height:370px}.intro-content{padding:1.7rem 0}.intro-content>p{margin-top:1.6rem}}
.introduction{min-height:350px}@media(max-width:680px){.introduction{min-height:340px}}
.extra-work{margin-top:2.5rem}
.project-gallery{background:transparent}
.gallery-item{margin:0 0 3rem;content-visibility:auto;contain-intrinsic-size:auto 900px}
.gallery-item img{display:block;width:100%;height:auto;max-height:900px;object-fit:contain;background:#eeede8}
.gallery-item figcaption{display:flex;gap:2rem;border-top:1px solid var(--line);padding:.7rem 0 0;color:var(--muted);font-size:.78rem}
.gallery-item figcaption span{font:600 .7rem Arial,sans-serif;color:var(--ink)}
@media(max-width:680px){.extra-work{margin-top:0}.gallery-item{margin-bottom:2rem}.gallery-item figcaption{padding:.7rem 1.25rem 0}}

/* Illustrated entrance */
body:has(#home-view:not([hidden])) .site-header{position:absolute;left:0;right:0;top:0;background:transparent;border:0;color:#fff;text-shadow:0 1px 8px #163d5c55}
body:has(#home-view:not([hidden])) .identity span,body:has(#home-view:not([hidden])) .site-nav span{color:#fff}
body:has(#home-view:not([hidden])) .site-nav a:hover{color:#ffe6ac}
body:has(.scene-indoor.is-visible) .site-header{color:#263c42;text-shadow:none}
body:has(.scene-indoor.is-visible) .identity span,body:has(.scene-indoor.is-visible) .site-nav span{color:#38515a}
.scene-intro{height:100svh;min-height:640px;position:relative;overflow:hidden;background:#4e9fdb}
.scene-outdoor,.scene-indoor{position:absolute;inset:0;overflow:hidden}
.scene-outdoor{z-index:1;isolation:isolate}
.scene-indoor{z-index:4;opacity:0;pointer-events:none;transition:opacity .6s ease}
.scene-indoor.is-visible{opacity:1;pointer-events:auto}
.scene-image{display:block;width:100%;height:100%;object-fit:cover;object-position:center center}
.scene-outdoor .scene-image{position:absolute;inset:0}
.hillside-canvas{position:absolute;overflow:hidden;pointer-events:none}
.hillside-base{position:absolute;inset:0;width:100%;height:100%}
.hillside-girl-pose{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;mask-image:radial-gradient(ellipse 14% 13% at 56% 76%,#000 58%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 14% 13% at 56% 76%,#000 58%,transparent 100%);transition:opacity .35s ease}
.hillside-canvas.girl-posing .hillside-girl-pose{opacity:1}
.hillside-girl{position:absolute;z-index:4;left:48%;top:67%;width:16%;height:18%;padding:0;border:0;background:transparent;pointer-events:auto;cursor:pointer}
.hillside-girl:focus-visible,.hillside-tree:focus-visible{outline:2px dashed #fff;outline-offset:2px}
.hillside-tree-layers{position:absolute;inset:0;z-index:2;pointer-events:none}
.hillside-tree-layers img{position:absolute;inset:0;width:100%;height:100%;opacity:0;transform-origin:12% 9%}
.hillside-tree-layers img:nth-child(1){mask-image:radial-gradient(ellipse 22% 18% at 12% 7%,#000 38%,transparent 90%);-webkit-mask-image:radial-gradient(ellipse 22% 18% at 12% 7%,#000 38%,transparent 90%)}
.hillside-tree-layers img:nth-child(2){mask-image:radial-gradient(ellipse 18% 15% at 29% 6%,#000 35%,transparent 88%);-webkit-mask-image:radial-gradient(ellipse 18% 15% at 29% 6%,#000 35%,transparent 88%)}
.hillside-tree-layers img:nth-child(3){mask-image:radial-gradient(ellipse 15% 17% at 19% 23%,#000 30%,transparent 88%);-webkit-mask-image:radial-gradient(ellipse 15% 17% at 19% 23%,#000 30%,transparent 88%)}
.hillside-tree{position:absolute;z-index:5;left:0;top:0;width:46%;height:39%;border:0;padding:0;background:transparent;pointer-events:auto;cursor:pointer;clip-path:polygon(0 0,100% 0,100% 43%,80% 65%,55% 100%,0 90%)}
.hillside-canvas.tree-shaking .hillside-tree-layers img{opacity:1;animation:hillsideTreeSway 1.2s ease-in-out both}
.hillside-canvas.tree-shaking .hillside-tree-layers img:nth-child(2){animation-delay:.09s;animation-direction:reverse}
.hillside-canvas.tree-shaking .hillside-tree-layers img:nth-child(3){animation-delay:.16s}
@keyframes hillsideTreeSway{0%,100%{transform:rotate(0)}25%{transform:rotate(1.1deg)}53%{transform:rotate(-1.2deg)}76%{transform:rotate(.6deg)}}
.hillside-canvas .house-lit-overlay{inset:0;width:100%;height:100%;clip-path:polygon(82% 2.5%,95.5% 2.5%,95.5% 18%,82% 18%);filter:none!important}
.hillside-car{position:absolute;z-index:4;left:54%;top:22.6%;width:6.6%;aspect-ratio:1672/970;border:0;padding:0;background:none;pointer-events:auto;cursor:pointer;animation:hillsideDrive 38s linear 1.5s both;will-change:transform}
.hillside-car img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.hillside-car.is-returning img{transform:scaleX(-1)}
.hillside-car.is-paused{animation-play-state:paused}
.hillside-car:focus-visible{outline:2px dashed #fff;outline-offset:3px;border-radius:10px}
.hillside-car.has-arrived{pointer-events:none;visibility:hidden}
.hillside-car.route-editing{cursor:grab;touch-action:none;outline:1px dashed #fff9;border-radius:8px}
.hillside-car.route-editing:active{cursor:grabbing}
.hillside-dog-shadow{position:absolute;z-index:4;left:59.4%;top:80.2%;width:5.8%;height:1.6%;border-radius:50%;background:#183d16a3;filter:blur(5px);transform:rotate(-12deg) skewX(-30deg);pointer-events:none}
.hillside-dog{position:absolute;z-index:5;left:59.1%;top:70.9%;width:6.4%;aspect-ratio:1376/1152;border:0;padding:0;background:transparent;pointer-events:auto;cursor:pointer;transform-origin:55% 85%;-webkit-tap-highlight-color:transparent}
.hillside-dog img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.hillside-dog-body{clip-path:polygon(0 0,76% 0,76% 43%,100% 43%,100% 100%,0 100%)}
.hillside-dog-tail{clip-path:polygon(75% 0,100% 0,100% 53%,75% 53%);transform-origin:77% 44%;animation:hillsideDogTail 1.5s ease-in-out infinite alternate}
.hillside-dog-hop{opacity:0}
.hillside-dog.is-hopping{animation:hillsideDogHop .8s cubic-bezier(.2,.7,.25,1) both}
.hillside-dog.is-hopping .hillside-dog-body,.hillside-dog.is-hopping .hillside-dog-tail{animation:hillsideDogGroundPose .8s steps(1,end) both}
.hillside-dog.is-hopping .hillside-dog-hop{animation:hillsideDogAirPose .8s steps(1,end) both}
.hillside-dog:focus-visible{outline:2px dashed #fff;outline-offset:2px;border-radius:30%}
@keyframes hillsideDogTail{from{transform:rotate(-8deg)}to{transform:rotate(13deg)}}
@keyframes hillsideDogGroundPose{0%,29%,78%,100%{opacity:1}30%,77%{opacity:0}}
@keyframes hillsideDogAirPose{0%,29%,78%,100%{opacity:0}30%,77%{opacity:1}}
@keyframes hillsideDogHop{0%,100%{transform:translateY(0) rotate(0)}18%{transform:translateY(2%) rotate(-4deg)}43%{transform:translateY(-22%) rotate(-15deg)}62%{transform:translateY(-17%) rotate(-12deg)}82%{transform:translateY(2%) rotate(3deg)}}
.car-route-panel{position:absolute;z-index:40;left:18px;bottom:62px;width:300px;max-height:calc(100% - 150px);overflow:auto;padding:16px;background:#17372deF;color:#fff9e9;border:1px solid #eee7be88;border-radius:16px;box-shadow:0 8px 30px #15382940;font-size:12px;backdrop-filter:blur(12px)}
.car-route-heading{display:flex;align-items:center;justify-content:space-between;font-size:14px;cursor:move;touch-action:none;user-select:none;min-height:27px}
.car-route-heading strong{pointer-events:none}
.car-route-panel p{font-size:12px;line-height:1.6;color:#e3e8d9;margin:8px 0 12px}
.car-route-panel button,.car-route-panel select{border:1px solid #fff6;border-radius:9px;background:#ffffff12;color:#fff9e9;padding:7px 9px;font:inherit;cursor:pointer}
.car-route-panel select option{color:#17372d;background:#fff}
.car-route-heading button{padding:0 7px;font-size:20px}
.car-route-panel label{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;margin:10px 0;gap:5px}
.car-route-panel input[type=range]{width:100%;accent-color:#f4d47a;cursor:pointer}
.car-route-time,.car-route-actions{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:12px}
.car-route-panel output{color:#ffe0a1;font-variant-numeric:tabular-nums}
.car-route-panel [role=status]{display:block;font-size:11px;line-height:1.5;color:#d8dfcb;margin-top:12px}
.car-route-toggle{position:absolute;z-index:40;bottom:16px;left:18px;background:#17372def;border:1px solid #fff9;border-radius:99px;padding:10px 15px;color:#fff;font-size:12px}
@media(max-width:680px){.car-route-panel{width:260px;left:10px;bottom:58px;max-height:50vh;padding:12px}.car-route-toggle{left:10px}}
@keyframes hillsideDrive{0%{transform:translate(0,0);opacity:1}20%{transform:translate(-180%,112%)}40%{transform:translate(-360%,223%)}60%{transform:translate(-540%,345%)}80%{transform:translate(-720%,475%);opacity:1}89%{opacity:1}96%,100%{transform:translate(-905%,615%);opacity:0}}
.hillside-leaves{position:absolute;inset:0;z-index:3;overflow:hidden}
.hillside-leaf{position:absolute;left:var(--leaf-x);top:var(--leaf-y);width:13px;height:7px;background:#c3c838;border-radius:2% 80% 5% 80%;box-shadow:inset 0 -2px #698b3e70;animation:hillsideFall var(--leaf-time) linear var(--leaf-delay) infinite;opacity:0}
.hillside-leaf-burst{position:absolute;left:var(--leaf-x);top:var(--leaf-y);z-index:3;width:13px;height:7px;background:var(--leaf-color,#b5c239);border-radius:2% 80% 5% 80%;box-shadow:inset 0 -2px #698b3e70;opacity:0;pointer-events:none;animation:hillsideBurst var(--leaf-time,1.5s) ease-out var(--leaf-delay,0s) both}
@keyframes hillsideBurst{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.65)}14%{opacity:.95}65%{opacity:.8}100%{opacity:0;transform:translate(var(--fall-x,80px),var(--fall-y,180px)) rotate(var(--spin,290deg)) scale(.5)}}
@keyframes hillsideFall{0%{opacity:0;transform:translate(0,0) rotate(0)}10%{opacity:.8}40%{transform:translate(80px,160px) rotate(140deg)}70%{opacity:.7;transform:translate(20px,300px) rotate(290deg)}100%{opacity:0;transform:translate(130px,450px) rotate(450deg)}}
#scene-outdoor .scene-copy{left:63%;top:31%;width:min(34%,520px);text-shadow:0 2px 7px #123813,0 0 16px #123813bd}
#scene-outdoor .scene-copy h1{font-size:clamp(2.7rem,4.2vw,4.8rem)}
#scene-outdoor .scene-copy p{font-size:clamp(.9rem,1.1vw,1.08rem);max-width:32rem}
#scene-outdoor>.scene-work-link{position:absolute;z-index:3;right:3.2%;bottom:4%;color:#fff;text-shadow:0 2px 9px #183a22bd;font-size:.78rem;opacity:.83}
#scene-outdoor>.scene-work-link:hover,#scene-outdoor>.scene-work-link:focus-visible{opacity:1}
#scene-outdoor .house-hotspot span{left:auto;right:8px;top:100%;margin-top:.5rem;transform:none;font-size:clamp(.9rem,1.15vw,1.05rem);font-weight:700;line-height:1.35;letter-spacing:.02em;padding:.65rem 1rem;background:linear-gradient(135deg,#59b95e 0%,#2c9450 52%,#176343 100%);border:1px solid #caf5a8;border-radius:15px 15px 15px 5px;box-shadow:0 7px 18px #124d32a3,inset 0 1px #ffffff6b;opacity:1;text-shadow:0 1px 2px #185134}
#scene-outdoor .house-hotspot:hover span,#scene-outdoor .house-hotspot:focus-visible span{transform:translateY(-3px);background:linear-gradient(135deg,#71ca65 0%,#3eaa58 52%,#1a7646 100%)}
@media(max-width:680px){#scene-outdoor .scene-copy{left:41%;top:31%;width:55%}#scene-outdoor .house-hotspot span{font-size:.8rem;padding:.5rem .7rem}#scene-outdoor .scene-copy h1{font-size:clamp(1.85rem,7vw,3.1rem)}#scene-outdoor .scene-copy p{font-size:.75rem;line-height:1.55}#scene-outdoor .scene-eyebrow{font-size:.53rem;letter-spacing:.08em;margin-bottom:.6rem}#scene-outdoor .scene-copy h1 span{font-size:.87rem;margin-top:.35rem}#scene-outdoor>.scene-work-link{right:4%;bottom:3%}}
@media(prefers-reduced-motion:reduce){.hillside-leaf,.hillside-dog-tail,.hillside-leaf-burst,.hillside-canvas.tree-shaking .hillside-tree-layers img{animation:none}.hillside-car{animation-duration:1ms}.hillside-dog.is-hopping{animation-duration:.01ms}}
.loop-video{position:absolute;inset:0;background:#4e9fdb center/cover no-repeat;overflow:hidden}
.loop-video video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;pointer-events:none;transition:opacity .7s linear}
.loop-video video.is-active{opacity:1}
.house-lit-overlay{position:absolute;z-index:2;display:block;pointer-events:none;opacity:0;filter:drop-shadow(0 8px 15px #61401538);transition:opacity .35s ease,filter .35s ease}
.scene-outdoor.is-lit .house-lit-overlay{opacity:1;filter:drop-shadow(0 9px 18px #ffce5570)}
.scene-lit{opacity:0;pointer-events:none;transition:opacity .3s ease}
.scene-outdoor.is-lit .scene-lit{opacity:1}
.scene-copy{position:absolute;z-index:2;left:43%;top:19%;width:min(46%,670px);color:#fff;text-shadow:0 2px 12px #23629666}
.scene-eyebrow{display:block;font:600 .72rem Arial,sans-serif;letter-spacing:.19em;margin-bottom:1.5rem}
.scene-copy h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(3.2rem,4.8vw,5.5rem);font-weight:500;letter-spacing:-.055em;line-height:1.15;margin:0 0 1.3rem}
[data-title-font="miaomiao"] .scene-copy h1{font-family:"GJX Miaomiao",sans-serif;font-weight:400;letter-spacing:.01em}
[data-title-font="yuanqu"] .scene-copy h1{font-family:"GJX Yuanqu",sans-serif;font-weight:400;letter-spacing:.01em}
[data-title-font="fengyi"] .scene-copy h1{font-family:"GJX Fengyi",cursive;font-weight:400;letter-spacing:.02em}
[data-title-font="liuzhu"] .scene-copy h1{font-family:"GJX Liuzhu",cursive;font-weight:400;letter-spacing:.02em}
[data-title-font="maoken"] .scene-copy h1{font-family:"GJX Maoken",serif;font-weight:400;letter-spacing:.01em}
[data-title-font="keke"] .scene-copy h1{font-family:"GJX Keke",sans-serif;font-weight:400;letter-spacing:.02em}
.scene-copy h1 span{display:block;font-family:"Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif;font-size:clamp(1.15rem,1.7vw,1.7rem);font-weight:400;letter-spacing:.08em;margin-top:.8rem}
.scene-copy p{font-size:clamp(.95rem,1.15vw,1.13rem);line-height:1.9;margin:0 0 1.7rem}
.scene-work-link{display:inline-flex;gap:1.5rem;align-items:center;border-bottom:1px solid currentColor;padding-bottom:.28rem;font-size:.86rem}
.scene-work-link:hover,.scene-work-link:focus-visible{color:#fff1bd}
.house-hotspot{position:absolute;z-index:3;display:block;padding:0;border:0;background:transparent;cursor:pointer;color:#fff}
.house-hotspot:focus-visible{outline:2px solid #fff;outline-offset:4px}
.house-hotspot span{position:absolute;left:50%;top:-2.5rem;transform:translateX(-50%);white-space:nowrap;background:#183c42ad;backdrop-filter:blur(4px);border:1px solid #ffffff80;border-radius:99px;padding:.35rem .8rem;font-size:.75rem;opacity:.8;transition:opacity .2s,transform .2s}
.house-hotspot:hover span,.house-hotspot:focus-visible span{opacity:1;transform:translateX(-50%) translateY(-3px)}
.house-calibrate-toggle{position:absolute;z-index:8;right:1.25rem;bottom:1.25rem;border:1px solid #fff;border-radius:99px;background:#102f42e8;backdrop-filter:blur(8px);box-shadow:0 7px 24px #102b3c66;color:#fff;padding:.68rem 1rem;font-size:.8rem;font-weight:700;letter-spacing:.03em}
.house-calibrate-toggle,.house-calibrator{display:none!important}
.house-calibrate-toggle:hover,.house-calibrate-toggle:focus-visible{background:#0f344bd9}
.house-calibrator{position:absolute;z-index:9;left:1.25rem;bottom:1.25rem;width:min(310px,calc(100% - 2.5rem));padding:1rem;border:1px solid #ffffff70;border-radius:16px;background:#153746e8;backdrop-filter:blur(12px);box-shadow:0 18px 45px #102b3c55;color:#fff}
.calibrator-title,.calibrator-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem}.calibrator-title{margin-bottom:.8rem}.calibrator-title strong{font-size:.9rem}.calibrator-title button{border:0;background:none;color:#fff;font-size:1.4rem;line-height:1;padding:0 .15rem}.house-calibrator label{display:grid;grid-template-columns:3rem 1fr auto;align-items:center;gap:.6rem;margin:.7rem 0;font-size:.76rem}.house-calibrator input{grid-column:2/4;width:100%;accent-color:#ffd36a}.house-calibrator output{font:600 .7rem Arial,sans-serif;min-width:2.8rem;text-align:right;color:#ffe4a2}.calibrator-actions{margin-top:.9rem;padding-top:.8rem;border-top:1px solid #ffffff2e}.calibrator-actions button{border:1px solid #ffffff55;border-radius:99px;background:#ffffff12;color:#fff;padding:.38rem .65rem;font-size:.7rem}.calibrator-actions span{font-size:.66rem;color:#ffffffb8}
.font-picker{position:absolute;z-index:9;left:1.25rem;bottom:1.25rem;width:220px;padding:.8rem;border:1px solid #ffffff70;border-radius:15px;background:#153746df;backdrop-filter:blur(12px);box-shadow:0 15px 40px #102b3c55;color:#fff}.font-picker>strong{display:block;margin:0 0 .5rem;font-size:.72rem;letter-spacing:.08em}.font-picker button{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;border-top:1px solid #ffffff24;background:none;color:#fff;padding:.43rem .1rem}.font-picker button span{font-size:1.35rem}.font-picker button small{font-size:.62rem;color:#ffffffaa}.font-picker button:hover,.font-picker button.is-selected{color:#ffe69d}.font-picker [data-title-font="miaomiao"] span{font-family:"GJX Miaomiao"}.font-picker [data-title-font="yuanqu"] span{font-family:"GJX Yuanqu"}.font-picker [data-title-font="fengyi"] span{font-family:"GJX Fengyi"}.font-picker [data-title-font="liuzhu"] span{font-family:"GJX Liuzhu"}.font-picker .font-picker-reset{justify-content:center;font-size:.65rem;padding-top:.55rem}
.font-picker [data-title-font="maoken"] span{font-family:"GJX Maoken"}.font-picker [data-title-font="keke"] span{font-family:"GJX Keke"}
.scene-back,.scene-continue{position:absolute;z-index:2;border:1px solid #3e473b66;background:#fff9e2db;backdrop-filter:blur(5px);color:#24302b;border-radius:99px;padding:.7rem 1rem;font-size:.82rem}
.scene-back{top:90px;left:clamp(1.25rem,4.5vw,5rem)}
.scene-continue{right:clamp(1.25rem,4.5vw,5rem);bottom:2rem}
.scene-back:hover,.scene-continue:hover{background:#fff}
@media(max-width:680px){
  body:has(#home-view:not([hidden])) .site-nav{color:var(--ink);text-shadow:none}
  body:has(#home-view:not([hidden])) .site-nav span{color:var(--muted)}
  .scene-intro{min-height:620px}
  .scene-image{object-position:84% center}
  .loop-video video{object-position:84% center}
  .coffee-video video{object-position:center center}
  .scene-indoor .scene-image{object-position:center center}
  .scene-copy{left:7%;top:15%;width:86%}
  .scene-eyebrow{font-size:.61rem;margin-bottom:1rem}
  .scene-copy h1{font-size:clamp(2.65rem,10vw,4rem);margin-bottom:.8rem}
  .scene-copy p{font-size:.9rem;line-height:1.7;margin-bottom:1rem}
  .scene-work-link{font-size:.77rem}
  .house-hotspot span{font-size:.7rem;top:-2.2rem}
  .house-calibrate-toggle{right:.8rem;bottom:.8rem}.house-calibrator{left:.8rem;bottom:3.9rem;width:calc(100% - 1.6rem)}
  .scene-back{top:78px}
}
@media(prefers-reduced-motion:reduce){.scene-lit,.scene-indoor,.house-hotspot span{transition:none}}

/* Coffee spotlight and the third room */
.scene-indoor{transition:opacity .8s ease,transform 1.5s cubic-bezier(.2,.7,.2,1),filter 1.5s ease;transform:scale(1)}
.scene-indoor.is-entering{transform:scale(1.075);filter:blur(2px)}
.coffee-reveal{position:absolute;inset:0;pointer-events:none;--spot-x:50%;--spot-y:55%;--spot-radius:clamp(165px,24vw,310px);-webkit-mask-image:radial-gradient(circle var(--spot-radius) at var(--spot-x) var(--spot-y),#000 0%,#000 34%,#000c 57%,#0004 78%,transparent 100%);mask-image:radial-gradient(circle var(--spot-radius) at var(--spot-x) var(--spot-y),#000 0%,#000 34%,#000c 57%,#0004 78%,transparent 100%)}
.coffee-hotspot{position:absolute;z-index:2;border:0;background:transparent;padding:0;cursor:pointer}
.coffee-hotspot:focus-visible{outline:2px solid #fff4d0;outline-offset:4px}
.coffee-hotspot span{position:absolute;left:50%;top:-2.6rem;transform:translateX(-50%);white-space:nowrap;border:1px solid #ffeac7a8;border-radius:99px;background:#3c2116aa;backdrop-filter:blur(5px);color:#fff5df;padding:.38rem .85rem;font-size:.75rem;box-shadow:0 6px 20px #2a130b44;opacity:0;pointer-events:none;transition:opacity .25s,background .25s,transform .25s}
.coffee-hotspot:hover span,.coffee-hotspot:focus-visible span{opacity:1;background:#6a3820dd;transform:translateX(-50%) translateY(-3px)}
.scene-studio{position:absolute;inset:0;z-index:6;overflow:hidden;background:#25150f;opacity:0;transform:scale(1.065);filter:blur(8px);pointer-events:none;transition:opacity 1.5s cubic-bezier(.2,.7,.2,1),transform 1.9s cubic-bezier(.2,.7,.2,1),filter 1.5s ease}
.scene-studio::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse 25% 35% at 42% 46%,#ffd48370 0,#efa94a35 38%,transparent 76%);mix-blend-mode:screen;opacity:0;transition:opacity .65s ease}
.scene-studio.lamp-boost::after{opacity:1}
.scene-studio>.scene-image{transition:filter .65s ease}
.scene-studio.lamp-boost>.scene-image{filter:brightness(1.11) saturate(1.04)}
.scene-studio.is-visible{opacity:1;transform:scale(1);filter:blur(0);pointer-events:auto}
.studio-cup{position:absolute;z-index:3;width:150px;aspect-ratio:200/127;border:0;padding:0;background:transparent;cursor:pointer;filter:drop-shadow(9px 13px 8px #29160d83);transition:transform .25s ease,filter .25s ease}
.studio-cup img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.studio-cup span{position:absolute;left:50%;bottom:-2rem;transform:translateX(-50%);white-space:nowrap;border:1px solid #ffe3b286;border-radius:999px;background:#4a281ad9;color:#fff6e7;padding:.4rem .7rem;font-size:.7rem;opacity:0;transition:opacity .2s}
.studio-cup:hover,.studio-cup:focus-visible{transform:translateY(-5px) rotate(-2deg);filter:drop-shadow(11px 17px 10px #29160da8)}
.studio-cup:hover span,.studio-cup:focus-visible span{opacity:1}
.studio-cup:focus-visible{outline:2px solid #ffe3a4;outline-offset:4px}

/* 下班后，去生活：两幕滚动项目封面 */
.project-view.is-life{max-width:none;padding-left:0;padding-right:0;padding-top:0;background:#f7f5ee}.project-view.is-life>.project-topline,.project-view.is-life>.project-heading,.project-view.is-life>.project-cover{display:none}.project-view.is-life>.project-info,.project-view.is-life>.project-story,.project-view.is-life>.project-gallery,.project-view.is-life>.project-end{max-width:1100px;margin-left:auto;margin-right:auto}.project-view.is-life>.project-info,.project-view.is-life>.project-story,.project-view.is-life>.project-end{padding-left:1.25rem;padding-right:1.25rem}
.life-experience{--life-zoom:1;--life-hero-opacity:1;--life-hero-y:0px;--life-show-opacity:0;--life-show-scale:.88;position:relative;isolation:isolate;color:#27211b}.life-experience[hidden]{display:none}.life-backdrop{position:sticky;top:0;height:100vh;margin-bottom:-100vh;overflow:hidden;z-index:-1;background:#efba24}.life-backdrop:before{content:"";position:absolute;inset:-2%;background:url('assets/original/life-new-01.webp') center/cover no-repeat;transform:scale(var(--life-zoom));will-change:transform}.life-backdrop:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fff5d4a8,#fff1c55c 52%,#fff1c508)}
.life-nav{position:sticky;top:82px;z-index:15;display:flex;align-items:center;gap:1.2rem;width:max-content;max-width:calc(100% - 2rem);margin:0 auto -66px;padding:.7rem 1rem;border:1px solid #ffffffaa;border-radius:999px;background:#ffffffc9;box-shadow:0 8px 35px #54380b24;backdrop-filter:blur(16px);font-size:.77rem}.life-nav-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#f3be29}.life-nav strong{margin-right:1rem;white-space:nowrap}.life-nav a{white-space:nowrap;color:#544b40}.life-nav a:last-child{padding:.45rem .8rem;border:1px solid #d4a42c;border-radius:999px}.life-nav a:hover{color:#a05212}
.life-hero,.life-showcase{position:relative;min-height:100vh}.life-hero{display:flex;justify-content:center;align-items:flex-start;text-align:center;padding:clamp(9rem,17vh,12rem) 1.25rem 4rem;opacity:var(--life-hero-opacity);transform:translateY(var(--life-hero-y));pointer-events:auto}.life-hero-inner{width:min(100%,640px)}.life-eyebrow{font-size:.75rem;letter-spacing:.26em;font-weight:700}.life-hero h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(3.7rem,7vw,7rem);line-height:1.08;letter-spacing:-.07em;margin:1rem 0}.life-hero h2 span{color:#756956}.life-intro{font-size:clamp(.95rem,1.25vw,1.2rem);line-height:1.7;margin:1.25rem auto 0;max-width:28rem}.life-cards{width:min(100%,400px);margin:2.5rem auto 0;display:grid;gap:.7rem}.life-card{display:flex;align-items:center;gap:1rem;text-align:left;padding:.85rem 1rem;border:1px solid #ffffffcf;border-radius:18px;background:#fffffff0;box-shadow:0 9px 25px #775b1630;font-size:.84rem;font-weight:600;opacity:0;animation:life-card-in .6s cubic-bezier(.16,1,.3,1) forwards}.life-card:nth-child(2){animation-delay:.15s}.life-card:nth-child(3){animation-delay:.3s}.life-card:nth-child(4){animation-delay:.45s}.life-card-icon{display:grid;place-items:center;width:26px;height:26px;font-size:1.3rem;color:#cb751c}.life-card i{margin-left:auto;width:24px;height:24px;border-radius:50%;border:3px solid #e8e4d9;border-top-color:#e6a627;border-right-color:#6abcb1;animation:life-spin 1.4s linear infinite;flex:none}.life-scroll-hint{position:absolute;bottom:2rem;font-size:.75rem;letter-spacing:.05em}
.life-showcase{display:grid;place-items:center;padding:8rem clamp(1rem,5vw,5rem) 5rem;opacity:var(--life-show-opacity);transform:scale(var(--life-show-scale));transform-origin:center top}.life-showcase-card{position:relative;overflow:hidden;width:min(100%,1280px);min-height:min(680px,78vh);border-radius:28px;background:#111 url('assets/original/life-new-06.webp') center/cover no-repeat;box-shadow:0 35px 80px #30220a55}.life-showcase-overlay{position:absolute;inset:0;background:linear-gradient(90deg,#111e 0%,#111a 47%,#1115 100%)}.life-showcase-content{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:2rem;min-height:min(680px,78vh);padding:clamp(1.5rem,4vw,4rem);color:white}.life-showcase-copy>span{font-size:.75rem;letter-spacing:.18em;color:#f3dba8}.life-showcase-copy h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(2.6rem,4vw,4.6rem);line-height:1.18;margin:1.2rem 0}.life-showcase-copy p{max-width:22rem;line-height:1.8;color:#f8f1e0}.life-showcase-copy a{display:inline-block;margin-top:2rem;border-bottom:1px solid #fff;padding-bottom:.35rem}.life-board{justify-self:end;width:min(100%,440px);padding:1.6rem 1.7rem;border-radius:20px;background:#fffbf2;color:#312a23;box-shadow:0 24px 45px #0005}.life-board-top,.life-board-line{display:flex;justify-content:space-between;align-items:center;gap:.7rem}.life-board-top{font-size:.65rem;letter-spacing:.12em;color:#857d70}.life-board h3{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:1.8rem;margin:2.5rem 0 .35rem}.life-board>p{margin:0 0 2rem;font-size:.83rem;color:#786f61}.life-board-line{border-top:1px solid #e7decb;padding:1.15rem 0;font-size:.85rem}.life-board-line span{color:#bc761d}.life-board-line strong{margin-right:auto}.life-board-line b{font-size:.65rem;letter-spacing:.08em;color:#93836c}.life-board-footer{border-top:1px solid #e7decb;padding-top:1rem;text-align:center;font-size:.68rem;letter-spacing:.2em;color:#aa833e}
@keyframes life-card-in{from{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes life-spin{to{transform:rotate(360deg)}}
@media(max-width:680px){.life-nav{top:68px;gap:.65rem;font-size:.67rem;padding:.5rem .65rem}.life-nav strong{margin-right:0}.life-nav a:not(:last-child){display:none}.life-hero{padding-top:10rem}.life-hero h2{font-size:clamp(3.1rem,11vw,4.5rem)}.life-showcase{padding:7rem 1rem 3rem}.life-showcase-card,.life-showcase-content{min-height:680px}.life-showcase-content{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;padding:2rem 1.25rem}.life-board{align-self:flex-end;padding:1.2rem}.project-view.is-life>.project-gallery{margin-left:auto;margin-right:auto}}
@media(prefers-reduced-motion:reduce){.life-backdrop:before,.life-hero,.life-showcase{transform:none!important}.life-hero,.life-showcase{opacity:1!important}.life-card{animation:none;opacity:1}.life-card i{animation:none}}
.life-backdrop:before{filter:blur(10px) saturate(.8)}.life-backdrop:after{background:#fff7dfb8}.life-hero{padding-top:clamp(8rem,15vh,10rem)}.life-hero h2{font-size:clamp(3.4rem,6vw,6rem)}.life-cards{margin-top:1.65rem}.life-card{padding:.65rem 1rem}
@media(max-width:680px){.life-hero{padding-top:9rem}.life-hero h2{font-size:clamp(3rem,10vw,4.25rem)}.life-cards{margin-top:1.3rem}.life-card{padding:.55rem .8rem}.life-scroll-hint{bottom:1rem}}
@media(max-height:750px){.life-hero{padding-top:8rem}.life-hero h2{font-size:clamp(3.2rem,5vw,4.5rem);margin:.6rem 0}.life-intro{margin-top:.5rem}.life-cards{margin-top:1rem;gap:.45rem}.life-card{padding:.45rem .85rem}.life-scroll-hint{bottom:.7rem}}
.life-reflection{display:none}.project-view.is-life>.life-reflection{display:block;max-width:1100px;margin:clamp(4rem,8vw,8rem) auto 0;padding:clamp(1.5rem,4vw,4rem);background:#fff9e9;border:1px solid #e9d9ad;border-radius:28px;box-shadow:0 18px 50px #aa8e4820}.life-reflection-label{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid #d8c69c;padding-bottom:1rem;color:#99712c;font-size:.72rem;letter-spacing:.13em;font-weight:700}.life-reflection-body{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,6vw,6rem);padding:clamp(2rem,5vw,5rem) 0}.life-reflection-heading{position:relative}.life-reflection-doodle{display:block;color:#e3a42f;font-size:3rem;line-height:1}.life-reflection h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:500;font-size:clamp(2.5rem,4vw,4.2rem);line-height:1.26;letter-spacing:-.055em;margin:1.2rem 0}.life-reflection-copy p{line-height:1.95;color:#554b3a;font-size:clamp(.95rem,1.2vw,1.08rem);margin:0 0 1.35rem}.life-reflection-copy p:last-child{margin-bottom:0}.life-reflection-signoff{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #d8c69c;padding-top:1.3rem;font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:1.3rem;color:#9a5c20}.life-reflection-signoff i{font-family:serif;font-style:normal;font-size:2rem}
@media(max-width:680px){.project-view.is-life>.life-reflection{margin:4rem 1rem 0;padding:1.5rem;border-radius:18px}.life-reflection-body{display:block;padding:2rem 0}.life-reflection h2{margin:.5rem 0 1.5rem}.life-reflection-copy p{font-size:.95rem}}
body:has(.project-view:not([hidden])) .site-header{color:var(--ink);text-shadow:none}body:has(.project-view:not([hidden])) .identity span,body:has(.project-view:not([hidden])) .site-nav span{color:var(--muted)}
.ip-reflection{display:none}.project-view.is-ip>.ip-reflection{display:grid;grid-template-columns:minmax(220px,.7fr) 1.3fr;gap:clamp(2rem,5vw,5rem);max-width:1100px;margin:clamp(4rem,8vw,8rem) auto 0;padding:clamp(2rem,4vw,4rem) 0;border-top:2px solid #75b9d9;border-bottom:1px solid #b8d6e2}.ip-reflection-heading>span,.ip-reflection-parts>div>span{font-size:.7rem;letter-spacing:.12em;font-weight:700;color:#2f86ae}.ip-reflection h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(2.3rem,3.5vw,3.8rem);font-weight:500;line-height:1.26;letter-spacing:-.05em;margin:1.3rem 0}.ip-reflection-heading>p{font-size:.85rem;color:#667e88}.ip-reflection-parts>div{padding:0 0 1.7rem;margin-bottom:1.7rem;border-bottom:1px solid #c9dde5}.ip-reflection-parts>div:last-child{border:0;margin:0;padding:0}.ip-reflection h3{font-size:1.25rem;font-weight:600;margin:.5rem 0}.ip-reflection-parts p{line-height:1.9;color:#4e5c60;margin:0}
@media(max-width:680px){.project-view.is-ip>.ip-reflection{display:block}.ip-reflection-heading{margin-bottom:2.5rem}.ip-reflection h2{font-size:2.5rem}}
.project-view.is-moon{background:#fffaf0}.project-view.is-moon .project-topline{padding-bottom:1.5rem}.project-view.is-moon .project-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem;background:#ffd51e;padding:clamp(2rem,4vw,4rem) clamp(1.5rem,4vw,4rem) 1rem}.project-view.is-moon .project-category{color:#493b00}.project-view.is-moon .project-heading h1{font-size:clamp(3.4rem,6vw,6.5rem);margin:.35rem 0 0}.project-view.is-moon .project-heading>p{max-width:25rem;line-height:1.65;font-size:clamp(.95rem,1.3vw,1.25rem);padding-bottom:.8rem}.project-view.is-moon .project-cover{background:#ffd51e}.project-view.is-moon .project-cover img{max-height:none;height:auto;object-fit:contain}.project-view.is-moon .project-info,.project-view.is-moon .project-story{position:relative;z-index:1;background:#fff}.project-view.is-moon .project-info{margin:-2rem clamp(1rem,3vw,3rem) 0;padding:2rem clamp(1.5rem,3vw,3rem);border:0;border-radius:18px 18px 0 0;box-shadow:0 -16px 35px #73580017}.project-view.is-moon .project-info span,.project-view.is-moon .project-story>span{color:#976c00}.project-view.is-moon .project-story{margin:0 clamp(1rem,3vw,3rem);max-width:none;padding:1.5rem clamp(1.5rem,3vw,3rem) 3rem;border-top:1px solid #e8dbaf;border-radius:0 0 18px 18px}.project-view.is-moon .project-story h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(1.7rem,2.5vw,2.5rem)}.project-view.is-moon .project-gallery{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:clamp(2rem,5vw,5rem);max-width:none}.project-view.is-moon .gallery-item{margin:0;content-visibility:visible;contain-intrinsic-size:auto;background:#fff;border:1px solid #eadbb0;padding:clamp(.5rem,1vw,1rem)}.project-view.is-moon .gallery-item:nth-child(-n+2){grid-column:1/-1}.project-view.is-moon .gallery-item img{max-height:none;background:#fff}.project-view.is-moon .gallery-item figcaption{border-color:#eadbb0;color:#5d5141;padding:.8rem .35rem .2rem}.project-view.is-moon .project-end{margin-top:clamp(3rem,6vw,6rem)}
@media(max-width:680px){.project-view.is-moon .project-heading{display:block;padding:2rem 1.25rem 1rem}.project-view.is-moon .project-heading h1{font-size:3.25rem}.project-view.is-moon .project-heading>p{margin-top:1.25rem;padding:0}.project-view.is-moon .project-info{margin:-.5rem .5rem 0;padding:1.5rem 1.25rem}.project-view.is-moon .project-story{margin:0 .5rem;padding:1.5rem 1.25rem 2rem}.project-view.is-moon .project-gallery{grid-template-columns:1fr;gap:1rem;margin-left:0;margin-right:0}.project-view.is-moon .gallery-item:nth-child(-n+2){grid-column:auto}.project-view.is-moon .gallery-item figcaption{padding:.75rem .35rem}}

/* Group the 爱学习 product families without presenting design renders as finished objects. */
.gallery-chapter{grid-column:1/-1;display:flex;align-items:baseline;gap:1.5rem;border-top:2px solid currentColor;padding:1.25rem 0 .5rem;margin-top:2.5rem;color:var(--ink)}
.gallery-chapter span{font:600 .72rem Arial,sans-serif;letter-spacing:.12em;white-space:nowrap}.gallery-chapter h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(1.55rem,2.5vw,2.5rem);font-weight:500;margin:0}
.gallery-item figcaption strong{display:block;font-size:.88rem;font-weight:600;color:var(--ink)}
.gallery-item figcaption p{max-width:36rem;font-size:.8rem;line-height:1.65;color:var(--muted);margin:.35rem 0 0}
.project-view.is-merch{background:#f6f1e9}.project-view.is-merch .project-heading{padding-bottom:2rem}.project-view.is-merch .project-heading h1{font-size:clamp(3.5rem,7vw,7rem)}
.project-view.is-merch .project-cover{background:#e8dfd3}.project-view.is-merch .project-cover img{max-height:640px;object-fit:contain}
.project-view.is-merch .project-story{padding:4rem 0;max-width:none}
.project-view.is-merch .project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;max-width:none}
.project-view.is-merch .gallery-chapter{margin-top:3rem}.project-view.is-merch .gallery-chapter:first-child{margin-top:0}
.project-view.is-merch .gallery-item{margin:0;background:#fff;padding:clamp(.6rem,1vw,1.1rem);content-visibility:visible;contain-intrinsic-size:auto}
.project-view.is-merch .gallery-item img{width:100%;height:clamp(280px,36vw,560px);object-fit:contain;background:#fbfaf6}
.project-view.is-merch .gallery-item figcaption{padding:1rem .3rem .25rem;border-color:#e0d9cd}
.project-view.is-merch .gallery-chapter:first-child + .gallery-item{grid-column:1/-1}
.project-view.is-merch .gallery-chapter:first-child + .gallery-item img{height:min(65vw,720px)}
.project-view.is-campaign{background:#f7fafc}.project-view.is-campaign .project-heading{border-bottom:4px solid #8cd0e8}.project-view.is-campaign .project-gallery{max-width:none}.project-view.is-campaign .gallery-item{max-width:1100px;margin:0 auto 2.5rem;background:#fff;padding:clamp(.5rem,2vw,2rem);content-visibility:visible;contain-intrinsic-size:auto}.project-view.is-campaign .gallery-item img{max-height:none}.project-view.is-campaign .gallery-item figcaption{margin-top:1rem}
@media(max-width:680px){.gallery-chapter{margin:1.5rem 1.25rem 0;gap:.75rem}.project-view.is-merch .project-gallery{grid-template-columns:1fr;gap:1rem;margin-left:-1.25rem;margin-right:-1.25rem}.project-view.is-merch .gallery-item img{height:auto;max-height:520px}.project-view.is-merch .gallery-chapter:first-child + .gallery-item{grid-column:auto}.project-view.is-merch .gallery-chapter:first-child + .gallery-item img{height:auto;max-height:520px}.project-view.is-merch .gallery-item figcaption{padding:.8rem .5rem}.project-view.is-campaign .gallery-item{padding:.5rem}.project-view.is-campaign .gallery-item figcaption{padding:.7rem .5rem}}

.weibo-reflection{display:none}
.project-view.is-weibo>.weibo-reflection{display:block;max-width:1100px;margin:clamp(4rem,8vw,8rem) auto 0;padding:clamp(1.4rem,4vw,3.5rem);background:#1d1831;color:#fff9ed;border-radius:26px;box-shadow:12px 14px 0 #ff6948}
.project-view.is-weibo .project-gallery .gallery-item:nth-child(4){position:relative;left:50%;width:100vw;max-width:none;transform:translateX(-50%)}
.project-view.is-weibo .project-gallery .gallery-item:nth-child(4) img{max-height:none}
.project-view.is-ip .ip-zoom-media{display:block;width:100%;padding:0;border:0;background:transparent;text-align:left;cursor:zoom-in}
.project-view.is-ip .ip-zoom-media:focus-visible{outline:3px solid #228bdf;outline-offset:4px}
.project-view.is-ip .project-gallery .gallery-item:nth-child(5),.project-view.is-ip .project-gallery .gallery-item:nth-child(7),.project-view.is-ip .project-gallery .gallery-item:nth-child(11),.project-view.is-ip .project-gallery .gallery-item:nth-child(12){position:relative;left:50%;width:100vw;max-width:none;transform:translateX(-50%)}
.project-view.is-ip .project-gallery .gallery-item:nth-child(5) img,.project-view.is-ip .project-gallery .gallery-item:nth-child(7) img,.project-view.is-ip .project-gallery .gallery-item:nth-child(11) img,.project-view.is-ip .project-gallery .gallery-item:nth-child(12) img{max-height:none;background:transparent}
.weibo-reflection-top{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding-bottom:1rem;border-bottom:1px dashed #ffac8c;font:700 .72rem Arial,sans-serif;letter-spacing:.14em;color:#ffad8e}
.weibo-reflection-spark{font-size:1.5rem;line-height:1;letter-spacing:.25em;color:#ffeb70}
.weibo-reflection-heading{position:relative;padding:clamp(2rem,5vw,4rem) 0 2.5rem}
.weibo-reflection-sticker{display:inline-block;padding:.45rem .8rem;background:#ffec6a;color:#252035;border-radius:7px;font-size:.8rem;font-weight:800;transform:rotate(-5deg);box-shadow:3px 3px 0 #f15b4b}
.weibo-reflection h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(2.8rem,5.5vw,5.7rem);font-weight:800;line-height:1.12;letter-spacing:-.065em;margin:1rem 0 .7rem;text-shadow:3px 4px 0 #ee564e}
.weibo-reflection h2 em{font-style:normal;color:#ffec6a}.weibo-reflection-heading>p{font-size:clamp(1rem,1.5vw,1.4rem);margin:0;letter-spacing:.08em}
.weibo-reflection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.weibo-reflection-grid>div{padding:1.5rem;background:#fff9ed;color:#28243b;border-radius:18px 18px 7px 18px;min-height:270px}
.weibo-reflection-grid>div:nth-child(2){transform:rotate(1.5deg);background:#ffec98}.weibo-reflection-grid>div:nth-child(3){transform:rotate(-1.3deg);background:#ffd4c0}
.weibo-reflection-grid span{font:800 .7rem Arial,sans-serif;color:#e84d42;letter-spacing:.12em}.weibo-reflection-grid h3{font-size:clamp(1.2rem,1.7vw,1.6rem);margin:.8rem 0 1rem}.weibo-reflection-grid p{font-size:.93rem;line-height:1.8;margin:0}
.weibo-reflection-end{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin:2rem 0 0;color:#ffec6a;font-size:clamp(1rem,1.5vw,1.3rem);font-weight:700}.weibo-reflection-end span{font-size:2rem}
@media(max-width:680px){.project-view.is-weibo>.weibo-reflection{margin:4rem .25rem 0;padding:1.25rem;border-radius:16px;box-shadow:6px 7px 0 #ff6948}.weibo-reflection h2{text-shadow:2px 2px 0 #ee564e}.weibo-reflection-grid{grid-template-columns:1fr;gap:.8rem}.weibo-reflection-grid>div{min-height:auto;transform:none!important;padding:1.25rem}.weibo-reflection-heading{padding:2rem 0}}

/* Full-width project boards keep the source artwork intact on desktop and phones. */
.project-view.is-life>.project-gallery{max-width:none;width:100%;margin-left:0;margin-right:0}
.project-view.is-life>.project-gallery .gallery-item img{max-height:none;object-fit:contain}
.project-view.is-life>.project-gallery .gallery-item figcaption{padding-left:clamp(1.25rem,4.5vw,5rem);padding-right:clamp(1.25rem,4.5vw,5rem)}
.project-view.is-campaign{max-width:none;padding-left:0;padding-right:0;background:#fff}
.project-view.is-campaign>.project-topline,.project-view.is-campaign>.project-heading,.project-view.is-campaign>.project-info,.project-view.is-campaign>.project-story,.project-view.is-campaign>.project-end{max-width:1200px;margin-left:auto;margin-right:auto;padding-left:clamp(1.25rem,4.5vw,5rem);padding-right:clamp(1.25rem,4.5vw,5rem)}
.project-view.is-campaign>.project-cover img{max-height:none;object-fit:contain}
.project-view.is-campaign>.project-gallery{width:100%;max-width:none;margin:0}
.project-view.is-campaign .gallery-chapter{margin-left:clamp(1.25rem,4.5vw,5rem);margin-right:clamp(1.25rem,4.5vw,5rem)}
.project-view.is-campaign .gallery-item{max-width:none;width:100%;margin:0 0 clamp(2rem,5vw,5rem);padding:0;background:transparent}
.project-view.is-campaign .gallery-item img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;background:transparent}
.project-view.is-campaign .gallery-item figcaption{margin:0;padding:1rem clamp(1.25rem,4.5vw,5rem)}
@media(max-width:680px){.project-view.is-life>.project-gallery .gallery-item figcaption{padding-left:1.25rem;padding-right:1.25rem}.project-view.is-campaign .gallery-item{padding:0}.project-view.is-campaign .gallery-item figcaption{padding:1rem 1.25rem}}

/* Give the opening illustration a clear yellow ground. */
.project-view.is-life .life-backdrop{background:#ffd437}
.project-view.is-life .life-backdrop:before{filter:blur(4px) saturate(.95)}
.project-view.is-life .life-backdrop:after{background:rgba(255,211,45,.72)}
.project-view.is-life .life-hero h2{font-family:"GJX Yuanqu","STXingkai",cursive;font-weight:400;letter-spacing:-.025em;color:#3c2a20;line-height:1.18}
.project-view.is-life .life-hero h2 span{color:#634025}

/* The cup receives the moving desk spotlight and keeps its own table shadow. */
.studio-cup{isolation:isolate;filter:drop-shadow(10px 18px 9px #110905bb);transform:none;--cup-spot-x:-300px;--cup-spot-y:-300px}
.studio-cup::before{content:"";position:absolute;z-index:-1;left:5%;bottom:-17%;width:105%;height:32%;border-radius:50%;background:radial-gradient(ellipse at 48% 50%,#120b09b8 0%,#21120c91 38%,transparent 75%);filter:blur(5px);transform:rotate(-8deg);pointer-events:none}
.studio-cup img{position:absolute;inset:0}
.studio-cup .cup-base{filter:brightness(.34) saturate(.58) sepia(.12);opacity:.94}
.studio-cup .cup-lit{filter:brightness(1.02) saturate(.9);opacity:1;-webkit-mask-image:radial-gradient(circle 105px at var(--cup-spot-x) var(--cup-spot-y),#000 0%,#000 36%,#000a 58%,transparent 82%);mask-image:radial-gradient(circle 105px at var(--cup-spot-x) var(--cup-spot-y),#000 0%,#000 36%,#000a 58%,transparent 82%);transition:opacity .25s ease}
.scene-studio:not(.pointer-active) .studio-cup .cup-lit{opacity:0}
.studio-cup:hover,.studio-cup:focus-visible{transform:none;filter:drop-shadow(10px 18px 9px #110905bb)}
.scene-studio .studio-cup:hover .cup-lit{opacity:1;-webkit-mask-image:none;mask-image:none}
.project-studio-return{display:none}
.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}
.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end #next-project{justify-self:end}
.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end .project-studio-return{display:inline-flex;align-items:center;justify-content:center;gap:.9rem;padding:.8rem 1.35rem;border:1px solid #263c42;border-radius:4px;background:#e8f4f8;color:#193943;font-size:1rem;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:background .2s ease,transform .2s ease}
.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end .project-studio-return:hover,.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end .project-studio-return:focus-visible{background:#cbeaf3;color:#193943;transform:translateY(-2px)}
.project-view.is-ip .project-end .project-studio-return{padding:.55rem 1rem;font-size:.94rem;font-weight:600}
@media(max-width:680px){.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end{grid-template-columns:1fr 1fr;gap:1.25rem .75rem}.project-view:is(.is-campaign,.is-lamb,.is-ip) .project-end .project-studio-return{grid-column:1/-1;grid-row:1;width:100%}}
.project-view.is-life .project-end{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}
.project-view.is-life .project-end #next-project{justify-self:end}
.project-view.is-life .project-end .project-studio-return{display:inline-flex;align-items:center;justify-content:center;gap:1.6rem;min-width:13.5rem;padding:.95rem 1.35rem;border:1px solid #6e421d;border-radius:999px;background:#f6b837;color:#34210f;box-shadow:0 5px 0 #9a6224,0 12px 25px #5b351d29;font-size:1rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.project-view.is-life .project-end .project-studio-return:hover,.project-view.is-life .project-end .project-studio-return:focus-visible{background:#ffd261;color:#281608;border-color:#6e421d;transform:translateY(-3px);box-shadow:0 8px 0 #9a6224,0 16px 28px #5b351d35}
@media(max-width:680px){.project-view.is-life .project-end{grid-template-columns:1fr 1fr;gap:1.7rem .8rem}.project-view.is-life .project-end .project-studio-return{grid-column:1/-1;grid-row:1;width:100%}.project-view.is-life .project-end .back-link{justify-self:start}.project-view.is-life .project-end #next-project{justify-self:end}}
.studio-cup:focus-visible .cup-lit{opacity:1;-webkit-mask-image:none;mask-image:none}
.studio-back,.studio-continue{position:absolute;z-index:2;border:1px solid #f4d8ae88;border-radius:99px;background:#2d1d19b8;backdrop-filter:blur(5px);color:#fff4df;padding:.7rem 1rem;font-size:.82rem}
.studio-back{top:90px;left:clamp(1.25rem,4.5vw,5rem)}
.studio-continue{right:clamp(1.25rem,4.5vw,5rem);bottom:2rem}
.studio-back:hover,.studio-continue:hover{background:#5a3627}
.record-hotspot{position:absolute;z-index:4;left:5.1%;top:17.2%;width:12.5%;height:16%;padding:0;border:0;background:transparent;color:#fff4df;cursor:pointer}.record-hotspot::before{content:"";position:absolute;left:31%;top:40%;width:28%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#bd6048 0 13%,#111 14% 25%,#29231f 26% 31%,#080808 32% 46%,#25201d 47% 50%,#090909 51% 68%,#312822 69% 72%,#090909 73%);box-shadow:0 3px 10px #0008;opacity:.92}.record-hotspot::after{content:"";position:absolute;left:58%;top:30%;width:3px;height:42%;border-radius:3px;background:#b8aa96;transform:rotate(18deg);transform-origin:50% 8%;transition:transform .45s cubic-bezier(.2,.8,.2,1);box-shadow:0 1px 3px #000}.record-hotspot span{position:absolute;left:50%;bottom:-2rem;transform:translateX(-50%) translateY(4px);white-space:nowrap;border:1px solid #ffe5aa88;border-radius:999px;background:#402615db;backdrop-filter:blur(7px);padding:.38rem .75rem;font-size:.68rem;opacity:0;transition:opacity .2s,transform .2s}.record-hotspot:hover span,.record-hotspot:focus-visible span,.record-hotspot.is-playing span{opacity:1;transform:translateX(-50%) translateY(0)}.record-hotspot.is-playing::before{animation:record-spin 2.3s linear infinite}.record-hotspot.is-playing::after{transform:rotate(32deg)}.record-hotspot:focus-visible{outline:2px solid #ffe09b;outline-offset:3px}
.spotify-player{position:absolute;z-index:8;left:4.2%;top:36%;width:min(360px,30vw);padding:.75rem;border:1px solid #f0d3aa55;border-radius:16px;background:#1a100cdb;backdrop-filter:blur(14px);box-shadow:0 18px 50px #0009;opacity:0;visibility:hidden;transform:translateY(-8px) scale(.98);pointer-events:none;transition:opacity .28s,transform .28s,visibility 0s linear .28s}.spotify-player.is-visible{opacity:1;visibility:visible;transform:none;pointer-events:auto;transition-delay:0s}.spotify-player-copy{display:flex;justify-content:space-between;align-items:baseline;padding:.1rem .25rem .65rem;color:#fff1d8}.spotify-player-copy strong{font-family:Georgia,serif;font-size:1rem}.spotify-player-copy span{font-size:.67rem;letter-spacing:.08em;color:#d7bfa4}.spotify-player iframe{display:block;width:100%;border:0;border-radius:12px}
@keyframes record-spin{to{transform:rotate(360deg)}}
body:has(.scene-studio.is-visible) .site-header{color:#fff;text-shadow:0 1px 8px #1b0d0a88}
body:has(.scene-studio.is-visible) .identity span,body:has(.scene-studio.is-visible) .site-nav span{color:#fff}
@media(max-width:680px){.scene-studio .scene-image{object-position:center center}.coffee-hotspot span{font-size:.69rem;top:-2.4rem}.studio-back{top:78px}.record-hotspot{left:1%;top:19%;width:24%;height:16%}.spotify-player{left:1rem;right:1rem;top:auto;bottom:5rem;width:auto}}
@media(max-width:680px){.font-picker{left:.8rem;bottom:.8rem;width:190px;max-height:44vh;overflow:auto}}
@media(prefers-reduced-motion:reduce){.scene-indoor,.scene-studio,.coffee-hotspot span{transition:none}}

/* Soft reveal moves with the pointer in the studio */
.studio-reveal{position:absolute;inset:0;pointer-events:none;--spot-x:55%;--spot-y:55%;--spot-radius:clamp(180px,28vw,340px);-webkit-mask-image:radial-gradient(circle var(--spot-radius) at var(--spot-x) var(--spot-y),#000 0%,#000 35%,#000c 57%,#0004 79%,transparent 100%);mask-image:radial-gradient(circle var(--spot-radius) at var(--spot-x) var(--spot-y),#000 0%,#000 35%,#000c 57%,#0004 79%,transparent 100%)}
.lamp-hotspot{position:absolute;z-index:3;left:32%;top:20%;width:23%;height:38%;border:0;background:transparent;color:#fff4d8;padding:0}
.lamp-hotspot:focus-visible{outline:2px solid #ffe09b;outline-offset:5px}
.lamp-hotspot span{position:absolute;left:27%;bottom:-1.2rem;transform:translateX(-50%);white-space:nowrap;border:1px solid #ffe5aa88;border-radius:99px;background:#402615dc;backdrop-filter:blur(7px);box-shadow:0 8px 24px #1e0d0766;padding:.48rem .85rem;font-size:.72rem;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.lamp-hotspot:hover span,.lamp-hotspot:focus-visible span{opacity:1;transform:translateX(-50%) translateY(-4px)}
.frame-hotspot{position:absolute;z-index:4;left:20%;top:27%;width:8%;height:15%;border:0;background:transparent;cursor:pointer}
.frame-hotspot:focus-visible{outline:2px solid #fff;outline-offset:4px;border-radius:4px}
.camera-experience{position:absolute;inset:0;z-index:30;background:#0c0907b8;backdrop-filter:blur(7px);opacity:0;transition:opacity .35s ease}
.camera-experience::after{content:"";position:absolute;inset:0;z-index:40;background:#fff;opacity:0;pointer-events:none}
.camera-experience.is-flashing::after{animation:cameraScreenFlash .72s cubic-bezier(.15,.8,.25,1)}
.camera-experience.is-visible{opacity:1}
.camera-dismiss{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent;color:inherit;cursor:pointer}
.camera-stage{position:absolute;left:50%;top:49%;width:min(44vw,410px);height:min(87vh,720px);transform:translate(-50%,-50%);display:block}
.camera-body,.camera-print{position:absolute;left:50%;display:block;object-fit:contain;filter:drop-shadow(0 18px 28px #0008);pointer-events:none}
.camera-body{z-index:3;top:0;width:100%;transform:translateX(-50%);opacity:0;transition:opacity .35s ease,transform .45s cubic-bezier(.2,.75,.2,1)}
.camera-experience.is-visible .camera-body{opacity:1;transform:translateX(-50%) scale(1)}
.camera-print{z-index:2;top:43%;width:71%;transform:translate(-50%,-48%);clip-path:inset(0 0 82% 0);opacity:0;transition:transform 5.4s cubic-bezier(.16,.72,.26,1),clip-path 5.4s cubic-bezier(.16,.72,.26,1),opacity .18s ease}
.camera-experience.is-printing .camera-print{transform:translate(-50%,0);clip-path:inset(0);opacity:1}
.camera-flash{position:absolute;z-index:5;left:84%;top:13%;width:12%;aspect-ratio:1;border-radius:50%;background:#fff;opacity:0;pointer-events:none}
.camera-experience.is-flashing .camera-flash{animation:cameraFlash .72s ease-out}
.camera-progress{position:absolute;z-index:6;left:14%;right:14%;bottom:1.2%;height:18px;border:5px solid #fff;border-radius:999px;background:#ececec;box-shadow:0 6px 20px #0007;overflow:hidden;opacity:0;transition:opacity .25s ease .45s}
.camera-experience.is-printing .camera-progress{opacity:1}
.camera-progress i{display:block;width:0;height:100%;border-radius:inherit;background:#111}
.camera-experience.is-printing .camera-progress i{animation:cameraDevelop 5.8s linear forwards}
.camera-float-photo{position:absolute;z-index:12;left:50%;top:50%;width:min(70vw,58vh,340px);height:auto;max-height:82vh;object-fit:contain;opacity:0;transform:translate(-50%,-29%) scale(.86);filter:drop-shadow(0 24px 35px #0009);pointer-events:none;transition:opacity 1.15s ease,transform 1.4s cubic-bezier(.2,.8,.2,1)}
.camera-experience.is-floating .camera-float-photo{opacity:1;transform:translate(-50%,-50%) scale(1)}
.camera-experience.is-floating .camera-body,.camera-experience.is-floating .camera-print,.camera-experience.is-floating .camera-progress{opacity:0;transition:opacity .75s ease}
@keyframes cameraFlash{0%{opacity:0;box-shadow:0 0 0 0 #fff0}20%{opacity:1;box-shadow:0 0 60px 55px #fff,0 0 240px 160px #ffff}100%{opacity:0;box-shadow:0 0 130px 100px #fff0}}
@keyframes cameraScreenFlash{0%,100%{opacity:0}18%{opacity:.94}42%{opacity:.72}}
@keyframes cameraDevelop{to{width:100%}}
@media(max-width:680px){.frame-hotspot{left:17%;top:28%;width:13%;height:14%}.camera-stage{width:min(76vw,380px);height:min(82vh,650px)}.camera-progress{bottom:3%;height:15px}}
.lamp-easter-toggle{position:absolute;z-index:5;left:37.1%;top:48.1%;width:3.2%;height:5.2%;min-width:24px;min-height:24px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}
.lamp-easter-toggle:focus-visible{outline:1px solid #ffe4a788;outline-offset:2px}

/* The lamp opens a project room built around the supplied cylindrical carousel motion. */
.kindergarten-scene{position:absolute;inset:0;z-index:9;overflow:hidden;background:radial-gradient(circle at 50% 70%,#123f5c 0,#081a2b 35%,#02060d 72%);color:#fff;opacity:0;transform:scale(1.035);pointer-events:none;transition:opacity 1s ease,transform 1.4s cubic-bezier(.16,1,.3,1)}
.kindergarten-scene.is-visible{opacity:1;transform:scale(1);pointer-events:auto}
.kindergarten-stars{position:absolute;inset:0;opacity:.55;background-image:radial-gradient(circle,#fff 0 1px,transparent 1.2px);background-size:71px 71px;mask-image:linear-gradient(#000,transparent 75%)}
.kindergarten-back{position:absolute;z-index:20;top:90px;left:clamp(1.25rem,4.5vw,5rem);border:1px solid #bde9ff55;border-radius:99px;background:#06131fc7;backdrop-filter:blur(8px);color:#eaf8ff;padding:.7rem 1rem;font-size:.8rem}
.kindergarten-copy{position:absolute;z-index:12;top:15%;left:50%;width:min(760px,86%);transform:translateX(-50%);text-align:center}.kindergarten-copy>span{font:600 .67rem Arial,sans-serif;letter-spacing:.2em;color:#8fdcff}.kindergarten-copy h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:500;font-size:clamp(3rem,5.5vw,6rem);line-height:1;margin:.9rem 0 1rem}.kindergarten-copy p{max-width:600px;margin:auto;color:#b9cbd7;font-size:clamp(.85rem,1.1vw,1.05rem)}.kindergarten-copy a{display:inline-flex;gap:2rem;margin-top:1.4rem;padding:.72rem 1.15rem;border:1px solid #86dfff66;border-radius:12px;background:linear-gradient(to top,#88e3f4 0,#1699bb 5px,#07344a 19px,#071522 32px,#071522 100%);box-shadow:inset 1px 0 #ffffff20,inset -1px 0 #ffffff20;color:#fff;font-size:.78rem;overflow:hidden}
.cover-ring-stage{position:absolute;z-index:3;left:0;right:0;bottom:-4%;height:47%;perspective:890px;perspective-origin:50% 96%}.cover-ring{position:absolute;inset:0;transform-style:preserve-3d}.cover-ring-card{position:absolute;left:50%;top:74%;width:130px;height:190px;margin:-95px 0 0 -65px;border-radius:12px;overflow:hidden;background:#101923;box-shadow:0 24px 46px #000b,0 0 0 1px #ffffff20;backface-visibility:hidden;will-change:transform}.cover-ring-card img{width:100%;height:100%;object-fit:cover}
.kindergarten-feature{position:absolute;z-index:10;left:50%;bottom:-8%;width:clamp(230px,23vw,330px);aspect-ratio:3/4;transform:translateX(-50%);border-radius:22px 22px 0 0;overflow:hidden;background:#fff;box-shadow:0 24px 70px #000}.kindergarten-feature img{width:100%;height:100%;object-fit:cover}.kindergarten-feature span{position:absolute;left:1rem;right:1rem;top:1rem;padding:.58rem .7rem;border-radius:9px;background:#081722d9;backdrop-filter:blur(8px);font-size:.7rem;letter-spacing:.08em;text-align:center}
body:has(.kindergarten-scene.is-visible) .site-header{color:#fff;text-shadow:0 1px 8px #000}body:has(.kindergarten-scene.is-visible) .identity span,body:has(.kindergarten-scene.is-visible) .site-nav span{color:#fff}
@media(max-width:680px){.lamp-hotspot{left:27%;top:24%;width:36%;height:33%}.lamp-easter-toggle{left:36.5%;top:49%;width:7%;height:6%}.kindergarten-back{top:76px}.kindergarten-copy{top:17%}.kindergarten-copy h2{font-size:2.7rem}.kindergarten-copy p{font-size:.82rem}.cover-ring-stage{height:42%;bottom:0}.kindergarten-feature{width:210px;bottom:-3%}.cover-ring-card{width:100px;height:148px;margin:-74px 0 0 -50px}}
@media(prefers-reduced-motion:reduce){.kindergarten-scene,.lamp-hotspot span{transition:none}}

/* The 8000px-wide project sheet floats in front of the rotating cover ring. */
.kindergarten-scene.is-visible{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.kindergarten-long-view{position:absolute;z-index:11;left:50%;top:36%;width:min(1150px,80vw);height:auto;transform:translateX(-50%);overflow:visible;border:7px solid #eefaff;border-bottom:0;border-radius:24px 24px 0 0;background:#d9f4ff;box-shadow:0 30px 90px #000c,0 0 0 1px #77cfff80}.kindergarten-long-view img{display:block;width:100%;height:auto;max-width:none;background:#d9f4ff}.long-view-label{position:sticky;z-index:2;top:84px;display:block;width:max-content;margin:10px auto -42px;padding:.7rem 1rem;border-radius:9px;background:#06243ff0;backdrop-filter:blur(8px);color:#fff;font-size:.85rem;font-weight:700;letter-spacing:.08em}
.kindergarten-return-footer{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.15rem;background:linear-gradient(180deg,#061421,#020912);color:#b8d6e8;text-align:center}.kindergarten-return-footer>span{font-size:.72rem;letter-spacing:.12em}.kindergarten-return-footer button{border:1px solid #a9e5ff99;border-radius:999px;background:#0c3349;color:#fff;padding:.9rem 1.55rem;box-shadow:0 10px 30px #0007;font-size:.9rem;transition:transform .2s,background .2s}.kindergarten-return-footer button:hover,.kindergarten-return-footer button:focus-visible{background:#166080;transform:translateY(-3px);outline:2px solid #fff;outline-offset:3px}
.kindergarten-back{position:absolute;top:90px;left:clamp(1.25rem,4.5vw,5rem);z-index:20}
@media(max-width:680px){.kindergarten-long-view{top:39%;width:92vw;height:auto;border-width:5px;border-radius:18px 18px 0 0}.kindergarten-back{top:76px}.long-view-label{top:72px;font-size:.75rem}.kindergarten-return-footer{min-height:180px}.kindergarten-return-footer button{padding:.82rem 1.3rem}}

/* Seven-cover book shelf */
body.work-open{overflow:hidden}
.work-view{position:fixed;inset:0;z-index:50;overflow:hidden;background:#151413;color:#f6f2e9}
.work-view::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.28;background-image:radial-gradient(#f5f1ea24 .6px,transparent .6px);background-size:4px 4px}
.work-top{position:absolute;z-index:4;left:clamp(1.25rem,4.5vw,5rem);right:clamp(1.25rem,4.5vw,5rem);top:2rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;font:600 .68rem Arial,sans-serif;letter-spacing:.14em;color:#ddd7cd}
.work-top button{border:0;border-bottom:1px solid #ddd7cd;background:none;color:inherit;padding:0 0 .35rem;cursor:pointer;font-size:.8rem;letter-spacing:0}
.work-view h2{position:absolute;top:10%;left:50%;transform:translateX(-50%);font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(7rem,24vw,22rem);font-weight:400;line-height:1;letter-spacing:-.12em;white-space:nowrap;color:#f5f1ea18;margin:0;pointer-events:none}
.work-hint{position:absolute;z-index:4;bottom:2.8rem;left:clamp(1.25rem,4.5vw,5rem);margin:0;color:#b7b0a7;font-size:.76rem}
.book-viewport{position:absolute;z-index:2;top:21%;bottom:10%;left:0;right:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;cursor:grab;perspective:1400px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}
.book-viewport:active{cursor:grabbing}.book-viewport::-webkit-scrollbar{display:none}
.book-track{display:flex;align-items:center;width:max-content;min-width:100%;height:100%;padding:1.5rem max(9vw,90px) 0;transform-style:preserve-3d}
.book{position:relative;flex:0 0 clamp(210px,18vw,275px);height:min(58vh,430px);max-height:100%;padding:0;border:0;background:transparent;color:#fff;text-align:left;transform-style:preserve-3d;transform-origin:center bottom;transform:perspective(1200px) translateY(var(--rise,0px)) rotateY(var(--lean,-18deg)) rotateZ(var(--tilt,0deg));transition:transform .42s cubic-bezier(.16,1,.3,1),filter .35s,margin .42s;cursor:pointer;overflow:visible;filter:brightness(var(--light,.82));will-change:transform;contain:layout style}
.book+.book{margin-left:clamp(-118px,-7vw,-82px)}
.book-cover{position:absolute;inset:0;display:block;overflow:hidden;border-radius:3px 10px 10px 3px;background:var(--tone,#b9a37a);box-shadow:18px 24px 38px #000b,0 4px 10px #0009,inset 0 0 0 1px #ffffff2b}
.book-cover img{display:block;width:100%;height:100%;object-fit:cover;mix-blend-mode:normal}
.book-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#0008 0,#fff2 3%,transparent 9%,transparent 72%,#0006 100%),linear-gradient(transparent 48%,#050505cf);pointer-events:none}
.book-spine{position:absolute;z-index:-1;left:-15px;top:4px;bottom:4px;width:18px;border-radius:4px 0 0 4px;background:linear-gradient(90deg,#090909,var(--tone,#74634d) 55%,#191715);transform:rotateY(-66deg);transform-origin:right center;box-shadow:-7px 5px 13px #0008}
.book::after{content:"";position:absolute;z-index:-2;right:-9px;top:8px;bottom:7px;width:13px;border-radius:0 7px 7px 0;background:repeating-linear-gradient(0deg,#e9e1d2 0 2px,#bcb3a6 2px 3px);transform:rotateY(64deg);transform-origin:left center;box-shadow:7px 8px 15px #0008;pointer-events:none}
.book:hover,.book:focus-visible{z-index:20;filter:brightness(1.04);transform:perspective(1200px) translateY(-38px) rotateY(-3deg) scale(1.055);outline:none}
.book:has(~ .book:hover),.book:has(~ .book:focus-visible){transform:perspective(1200px) translateX(-18px) translateY(var(--rise,0px)) rotateY(var(--lean,-18deg)) rotateZ(var(--tilt,0deg))}
.book:hover~.book,.book:focus-visible~.book{transform:perspective(1200px) translateX(24px) translateY(var(--rise,0px)) rotateY(var(--lean,-18deg)) rotateZ(var(--tilt,0deg))}
.book-number,.book-title{position:absolute;z-index:1;left:1rem;right:1rem;text-shadow:0 2px 8px #0009}
.book-number{bottom:4rem;font:600 .65rem Arial,sans-serif;letter-spacing:.15em}
.book-title{bottom:1rem;font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(1.35rem,2.3vw,2rem);line-height:1.18}
.work-controls{position:absolute;z-index:4;bottom:2rem;right:clamp(1.25rem,4.5vw,5rem);display:flex;align-items:center;gap:1.2rem;font:600 .7rem Arial,sans-serif;letter-spacing:.1em}
.work-controls button{width:2.25rem;height:2.25rem;border:1px solid #f5f1ea77;border-radius:50%;background:none;color:#f5f1ea;font-size:1.15rem}
.work-controls button:hover{background:#f5f1ea;color:#151413}
@media(max-width:680px){.work-top{top:1.3rem}.work-top>span{font-size:.5rem;text-align:right}.work-view h2{top:17%;font-size:30vw}.book-viewport{top:26%;bottom:15%}.book-track{padding:0 18vw}.book{flex-basis:64vw;height:min(52vh,410px)}.book+.book{margin-left:-24vw}.book-title{font-size:1.55rem}.work-hint{bottom:5.3rem}.work-controls{bottom:1.5rem}}
@media(prefers-reduced-motion:reduce){.journey-copy,.book,.journey-button{animation:none;transition:none}}

/* Side-on book marquee: light page depth, continuous transform-only motion. */
.book-viewport{top:20%;bottom:8%;overflow:hidden;perspective:none;cursor:default;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 8%,#000 92%,transparent 100%)}
.book-track{position:absolute;left:0;top:50%;display:flex;align-items:center;width:max-content;min-width:0;height:auto;padding:3rem 0;transform:translate3d(0,-50%,0);will-change:transform;transform-style:flat}
.book-set{position:relative;z-index:var(--set-stack);display:flex;align-items:center;flex:none}
.book-set:has(.book:hover),.book-set:has(.book:focus-visible){z-index:100}
.book-wrap{position:relative;display:block;flex:0 0 230px;width:230px;height:330px;margin-right:-115px;z-index:var(--stack);transition:margin .45s cubic-bezier(.2,.7,.2,1)}
.book-wrap:has(.book:hover),.book-wrap:has(.book:focus-visible){z-index:30}
.book{position:relative;display:block;width:230px;height:330px;max-height:none;flex:none;padding:0;border:0;background:transparent;color:#fff;transform:rotate(6deg);transform-origin:center;filter:none;contain:layout style paint;transition:transform .45s cubic-bezier(.2,.7,.2,1);will-change:transform}
.book:hover,.book:focus-visible{z-index:2;filter:none;transform:rotate(6deg) translateY(-28px) scale(1.045);outline:none}
.book-back,.book-page,.book-cover{position:absolute;left:0;top:0;width:200px;height:286px;border-radius:2px;transform-origin:0 0}
.book-back{display:block;background:var(--tone);transform:translateX(18px) skewY(26deg);filter:brightness(.65);box-shadow:inset 0 0 0 1px #0008;z-index:1}
.book-page{display:block;top:4px;height:278px;background:linear-gradient(90deg,#9b875c,#e8dcc0 18%,#fff7e5 50%,#dccdac 86%,#8c784e);transform:translateX(calc(var(--page) * 2px)) skewY(26deg);z-index:calc(12 - var(--page));box-shadow:inset 0 1px #fff8,inset 0 -1px #654b2828}
.book-cover{left:0;top:0;z-index:20;overflow:hidden;background:var(--tone);transform:skewY(26deg);border-radius:2px;box-shadow:0 0 0 1px #0007,inset 7px 0 12px -8px #0009,7px 12px 18px #0007}
.book-cover::after{background:linear-gradient(90deg,#0005,transparent 8%,transparent 92%,#fff2)}
.book-cover img{width:100%;height:100%;object-fit:cover}
.book-spine,.book::after{display:none}
.book-number,.book-title{left:.9rem;right:.9rem;text-shadow:0 2px 7px #000c;transform:skewY(26deg)}
.book-number{bottom:3.4rem}.book-title{bottom:.9rem;font-size:1.25rem}
.work-controls{pointer-events:none;color:#aaa39a}
@media(max-width:680px){.book-viewport{top:25%;bottom:13%}.book-wrap{flex-basis:170px;width:170px;height:244px;margin-right:-82px}.book{width:170px;height:244px}.book-back,.book-page,.book-cover{width:140px;height:200px}.book-page{top:3px;height:194px}.book-title{font-size:1rem}.work-controls{bottom:1.5rem}}

/* Selected title font and the personal room interaction. */
.font-picker{display:none!important}
.profile-doll{position:absolute;z-index:5;right:5.5%;bottom:27%;width:clamp(105px,11.5vw,190px);padding:0;border:0;background:radial-gradient(ellipse at 50% 76%,#d7873a1f 0,transparent 68%);cursor:pointer;filter:drop-shadow(0 15px 12px #0009);transition:transform .35s ease,filter .35s ease}
.profile-doll::after{content:"";position:absolute;inset:0;background:#5b2d1828;mix-blend-mode:multiply;pointer-events:none}
.profile-doll img{width:100%;height:auto;filter:brightness(.57) saturate(.72) sepia(.12) hue-rotate(-7deg);opacity:.9;transition:filter .35s,opacity .35s}
.profile-doll>span{position:absolute;left:50%;bottom:-2.2rem;transform:translateX(-50%) translateY(5px);white-space:nowrap;border:1px solid #ffe4b077;border-radius:999px;background:#3b2419df;backdrop-filter:blur(8px);box-shadow:0 8px 24px #0007;color:#fff3dc;padding:.45rem .8rem;font-size:.7rem;opacity:0;pointer-events:none;transition:opacity .22s,transform .22s}
.profile-doll:hover,.profile-doll:focus-visible{transform:translateY(-5px);background:radial-gradient(ellipse at 50% 70%,#ffc76855 0,#e99a2e20 48%,transparent 72%);filter:drop-shadow(0 0 16px #ffbd554f) drop-shadow(0 18px 15px #000b)}
.profile-doll:hover img,.profile-doll:focus-visible img{filter:brightness(1.02) saturate(.93) sepia(.08) drop-shadow(0 0 7px #ffd27a45);opacity:1}
.profile-doll:hover>span,.profile-doll:focus-visible>span{opacity:1;transform:translateX(-50%) translateY(0)}
.profile-doll:focus-visible{outline:2px solid #f4d59d;outline-offset:5px}
.scene-personal{position:absolute;inset:0;z-index:12;overflow:hidden;background:#241208;opacity:0;transform:scale(1.035);filter:blur(5px);pointer-events:none;transition:opacity .75s ease,transform 1.1s cubic-bezier(.16,1,.3,1),filter .8s ease}
.scene-personal.is-visible{opacity:1;transform:scale(1);filter:none;pointer-events:auto}
.personal-room-base,.personal-room-light img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.personal-room-base{filter:brightness(.58) saturate(.8)}
.personal-room-light{position:absolute;inset:0;opacity:.28;transition:opacity .8s ease;pointer-events:none;-webkit-mask-image:radial-gradient(ellipse 42% 65% at 50% 13%,#000 0,#000 35%,#000b 58%,transparent 100%);mask-image:radial-gradient(ellipse 42% 65% at 50% 13%,#000 0,#000 35%,#000b 58%,transparent 100%)}
.scene-personal.is-lit .personal-room-light{opacity:1}
.scene-personal.is-lit .personal-room-base{filter:brightness(.72) saturate(.92)}
.personal-back{position:absolute;z-index:6;top:90px;left:clamp(1.25rem,4.5vw,5rem);border:1px solid #f5d59388;border-radius:999px;background:#29170ec9;backdrop-filter:blur(8px);color:#fff0cf;padding:.7rem 1rem;font-size:.82rem}
.personal-back:hover,.personal-back:focus-visible{background:#754721;outline:none}
.lamp-pull{--pull-y:0px;position:absolute;z-index:6;left:43%;top:9%;width:14%;height:36%;padding:0;border:0;background:transparent;color:#ffe4a0;cursor:ns-resize;touch-action:none}
.pull-cord{position:absolute;left:50%;top:8%;width:2px;height:calc(42% + var(--pull-y));background:linear-gradient(#29150b,#d6aa5d);transform:translateX(-50%);transform-origin:top;box-shadow:0 0 4px #000;transition:height .18s ease}
.pull-knob{position:absolute;left:50%;top:50%;width:17px;height:24px;border-radius:45% 45% 55% 55%;background:linear-gradient(90deg,#4a260f,#e0a857 48%,#5b2d10);box-shadow:0 3px 8px #0008;transform:translate(-50%,var(--pull-y));transition:transform .18s ease}
.lamp-pull:active .pull-knob{transition:none}
.pull-hint{position:absolute;left:50%;top:72%;transform:translateX(-50%) translateY(5px);white-space:nowrap;border:1px solid #ffe0a066;border-radius:999px;background:#2d190ec7;backdrop-filter:blur(7px);padding:.42rem .75rem;font-size:.68rem;opacity:0;transition:opacity .2s,transform .2s}
.lamp-pull:hover .pull-hint,.lamp-pull:focus-visible .pull-hint{opacity:1;transform:translateX(-50%)}
.lamp-pull:focus-visible{outline:2px solid #ffe09b;outline-offset:3px}
.personal-file{position:absolute;z-index:4;left:59%;bottom:4%;width:clamp(210px,23vw,370px);padding:0;border:0;background:transparent;cursor:pointer;filter:drop-shadow(18px 24px 20px #120702aa);transform:perspective(900px) rotateX(3deg) rotateZ(1.5deg);transform-origin:center bottom;transition:transform .5s ease,filter .5s ease,opacity .35s ease}
.personal-file::after{content:"";position:absolute;left:10%;right:2%;bottom:-2%;height:8%;border-radius:50%;background:#12080366;filter:blur(12px);z-index:-1}
.personal-file img{display:block;width:100%;height:auto;filter:brightness(.78) sepia(.08) saturate(.9)}
.personal-file>span{position:absolute;left:50%;bottom:4%;transform:translate(-50%,8px);white-space:nowrap;border:1px solid #ffe4b077;border-radius:999px;background:#352015e8;color:#fff1d8;padding:.48rem .8rem;font-size:.69rem;opacity:0;transition:opacity .2s,transform .2s}
.personal-file:hover,.personal-file:focus-visible{transform:perspective(900px) translateY(-7px) rotateX(1deg) rotateZ(.5deg);outline:none;filter:drop-shadow(22px 30px 24px #120702cc) drop-shadow(0 0 13px #ffc76c52)}
.personal-file:hover>span,.personal-file:focus-visible>span{opacity:1;transform:translate(-50%,0)}
.scene-personal.is-lit .personal-file{filter:drop-shadow(20px 28px 23px #12070299)}
.scene-personal.book-open .personal-file{opacity:0;transform:scale(.82);pointer-events:none}
.personal-book{position:absolute;inset:0;z-index:9;display:grid;place-items:center;padding:5.2rem 2.5vw 1.2rem;background:#1209048f;backdrop-filter:blur(5px);opacity:0;transform:scale(.91);transition:opacity .5s ease,transform .7s cubic-bezier(.16,1,.3,1)}
.personal-book.is-visible{opacity:1;transform:scale(1)}
.personal-book-stage{position:relative;width:min(1100px,91vw);aspect-ratio:4512/2619;filter:drop-shadow(0 28px 32px #0009)}
.personal-book-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.personal-book-close{position:absolute;z-index:8;top:5.3rem;right:clamp(1rem,4vw,4rem);border:1px solid #f4d39f99;border-radius:999px;background:#2b190edb;color:#fff0d5;padding:.62rem .92rem;cursor:pointer}
.personal-book-close:hover,.personal-book-close:focus-visible{background:#754721;outline:none}
.book-object{position:absolute;z-index:2;padding:0;border:0;background:transparent;cursor:grab;touch-action:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(3px 7px 5px #3b1b0870);transition:transform .28s ease,filter .28s ease}
.book-object img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-drag:none}
.book-object.is-dragging{z-index:7;cursor:grabbing;transition:none;transform:scale(1.04)!important;filter:drop-shadow(9px 18px 10px #27100599)}
.book-object:hover,.book-object:focus-visible{z-index:6;transform:translateY(-8px) rotate(0deg) scale(1.055)!important;filter:drop-shadow(7px 14px 8px #2710058f);outline:none}
.book-object-film{left:7.3%;top:18%;width:10.6%;height:68%;transform:rotate(-2deg)}
.book-object-capabilities{left:20.2%;top:15.5%;width:17.2%;height:67%;transform:rotate(1.2deg)}
.book-object-likes{left:38.2%;top:34%;width:11.2%;height:48%;transform:rotate(-3deg)}
.book-object-resume{left:57.3%;top:15%;width:22.2%;height:70%;transform:rotate(.8deg)}
.book-object-tag{left:48.4%;top:50%;width:12.2%;height:39%;transform:rotate(-8deg)}
.book-object-postbox{left:80%;top:54%;width:10.8%;height:34%;transform:rotate(2deg)}
.personal-object-modal{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:4.5rem 5vw 2rem;background:#080402d6;backdrop-filter:blur(12px);opacity:0;transition:opacity .28s ease}
.personal-object-modal.is-visible{opacity:1}
.personal-object-modal figure{position:relative;display:flex;flex-direction:column;align-items:center;max-width:88vw;max-height:84vh;margin:0;transform:scale(.88);transition:transform .4s cubic-bezier(.16,1,.3,1)}
.personal-object-modal.is-visible figure{transform:scale(1)}
.personal-object-modal figure img{display:block;max-width:min(78vw,900px);max-height:76vh;width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 26px 28px #000b)}
.personal-object-modal figcaption{margin-top:.75rem;color:#fff1d8;font-size:.8rem;letter-spacing:.12em}
.personal-object-close{position:absolute;z-index:2;top:5rem;right:clamp(1rem,4vw,4rem);width:2.7rem;height:2.7rem;border:1px solid #f4d39f99;border-radius:50%;background:#2b190edb;color:#fff;font-size:1.4rem;cursor:pointer}
.mail-scene{position:absolute;inset:0;z-index:30;overflow:hidden;background:#6f80cb;opacity:0;transform:scale(1.025);transition:opacity .65s ease,transform .9s cubic-bezier(.16,1,.3,1)}
.mail-scene.is-visible{opacity:1;transform:scale(1)}
.mail-scene-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.mail-scene-back{position:absolute;z-index:12;top:5.3rem;left:clamp(1rem,4.5vw,5rem);border:1px solid #fff5d0aa;border-radius:999px;background:#5b2730a8;backdrop-filter:blur(8px);color:#fff8e8;padding:.68rem 1rem;cursor:pointer}
.mail-scene-back:hover,.mail-scene-back:focus-visible{background:#9b393e;outline:none}
.mail-scene-home{position:absolute;z-index:12;top:5.3rem;right:clamp(1rem,4.5vw,5rem);min-height:2.8rem;border:1px solid #fff5d0aa;border-radius:999px;background:#5b2730a8;backdrop-filter:blur(8px);color:#fff8e8;padding:.68rem 1rem;cursor:pointer}
.mail-scene-home:hover,.mail-scene-home:focus-visible{background:#9b393e;outline:none}
@media(max-width:680px){.mail-scene-home{top:4.6rem;right:1rem;max-width:49vw;padding:.6rem .75rem;font-size:.78rem}.mail-scene-back{max-width:49vw;padding:.6rem .75rem;font-size:.78rem}}

/* Product boards retain their own proportions instead of being letterboxed to one height. */
.project-view.is-merch .project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;background:transparent}
.project-view.is-merch .gallery-chapter{grid-column:1/-1;margin-top:2.5rem;margin-bottom:0}
.project-view.is-merch .gallery-chapter:first-child{margin-top:0}
.project-view.is-merch .gallery-item,.project-view.is-merch .gallery-chapter:first-child + .gallery-item{display:block;grid-column:auto;width:100%;min-width:0;margin:0;padding:clamp(.6rem,1vw,1.1rem);align-self:start}
.project-view.is-merch .gallery-item img,.project-view.is-merch .gallery-chapter:first-child + .gallery-item img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;background:transparent}
.project-view.is-merch .gallery-item.gallery-item-badges{grid-column:1/-1;width:100%;max-width:1100px;margin:0 auto}
.project-view.is-merch .merch-composition{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;align-items:start}
.project-view.is-merch .merch-composition-column{display:flex;flex-direction:column;gap:1.5rem;min-width:0}
.project-view.is-merch .gallery-item-badges .merch-slide-view,.project-view.is-merch .gallery-item-badges .merch-slide-image{min-height:0}
.project-view.is-merch .gallery-item-badges .merch-slide-image{height:auto}
.project-view.is-merch .project-gallery .merch-slide-view,.project-view.is-merch .project-gallery .merch-slide-image{min-height:0}
.project-view.is-merch .project-cover{display:none}
.merch-media-stack{display:grid;gap:.55rem}
.merch-media{display:block;width:100%;padding:0;border:0;background:#fbfaf6;cursor:zoom-in}
.merch-media img{width:100%;height:auto}
.merch-media:hover,.merch-media:focus-visible{outline:2px solid #b56e37;outline-offset:3px}
.project-view.is-merch .project-cover{background:#fff;padding:clamp(1rem,3vw,2.5rem)}
.project-view.is-merch .project-cover #project-cover[hidden]{display:none}
#merch-cover-series[hidden]{display:none}
.merch-carousel{background:#fffaf2;border:1px solid #e7dfd3;padding:clamp(.55rem,1.2vw,1rem)}
.merch-carousel-cover{max-width:1000px;margin:auto}
.merch-slide-view{min-height:clamp(250px,38vw,570px);display:flex;align-items:center;justify-content:center;background:#fff;overflow:hidden}
.merch-slide-image{display:flex;align-items:center;justify-content:center;width:100%;min-height:inherit;background:#fff}
.merch-crop{display:block;position:relative;width:100%;overflow:hidden;background:#fff}
.merch-crop-pair{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;width:100%;align-items:center}
.merch-crop-pair .merch-crop{max-width:100%!important}
.merch-crop img{position:absolute;display:block;max-height:none!important;height:auto!important;max-width:none!important;object-fit:initial!important;background:transparent!important}
.merch-slide-controls{display:grid;grid-template-columns:3rem 1fr 3rem;align-items:center;gap:.5rem;padding:.7rem 0 .25rem}
.merch-slide-controls>button{width:2.5rem;height:2.5rem;border:1px solid #a7815f;border-radius:50%;background:#fff;color:#583c2b;cursor:pointer;font-size:1.2rem}
.merch-slide-controls>button:last-child{justify-self:end}
.merch-dots{display:flex;justify-content:center;align-items:center;gap:.55rem}
.merch-dot{width:.65rem;height:.65rem;border:1px solid #9b7d62;border-radius:50%;background:#fff;cursor:pointer}
.merch-dot.is-active{background:#8b5735;transform:scale(1.25)}
.merch-slide-controls button:hover,.merch-slide-controls button:focus-visible{outline:2px solid #a7815f;outline-offset:2px}
.merch-slide-caption{padding:.3rem .35rem .35rem;color:#392c22}
.merch-slide-caption strong{font-size:.94rem}
.merch-slide-caption p{font-size:.8rem;line-height:1.6;margin:.3rem 0 0;color:#74665b}
@media(max-width:680px){.merch-slide-view{min-height:270px}.merch-carousel-cover{margin:0}.merch-slide-caption p{font-size:.76rem}.merch-crop-pair{grid-template-columns:1fr}}
.project-view.is-merch .project-end{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem}
.project-view.is-merch .project-end #next-project{justify-self:end}
.project-view.is-merch .project-end .project-studio-return{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1rem;border:1px solid #7c694d;border-radius:4px;background:#fffaf2;color:#30271b;font-size:.94rem;font-weight:600;white-space:nowrap;cursor:pointer}
.project-view.is-merch .project-end .project-studio-return:hover,.project-view.is-merch .project-end .project-studio-return:focus-visible{background:#eed7af;color:#30271b}
@media(max-width:680px){.project-view.is-merch .project-end{grid-template-columns:1fr 1fr;gap:1rem .75rem}.project-view.is-merch .project-end .project-studio-return{grid-column:1/-1;grid-row:1;width:100%}}
.lamb-reflection{display:none}
.project-view.is-lamb .lamb-reflection{display:block;max-width:1100px;margin:5rem auto 0;padding:3rem clamp(1.25rem,4vw,3rem);border-top:1px solid #b8abd9;background:#f3effb;color:#2b2540}
.lamb-reflection-kicker,.lamb-reflection-grid span{font:700 .7rem Arial,sans-serif;letter-spacing:.12em;color:#7569a2}
.lamb-reflection h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(2.2rem,4vw,4rem);font-weight:500;line-height:1.25;margin:1rem 0 2.5rem}
.lamb-reflection-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem 3rem}
.lamb-reflection-grid>div{border-top:1px solid #cfc5e6;padding-top:1rem}
.lamb-reflection-grid p{font-size:clamp(.94rem,1.1vw,1.05rem);line-height:1.9;margin:.85rem 0 0}
@media(max-width:680px){.project-view.is-lamb .lamb-reflection{margin-top:3rem;padding:2rem 1.25rem}.lamb-reflection-grid{grid-template-columns:1fr;gap:1.5rem}}
.merch-lightbox{position:fixed;inset:0;width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:0;border:0;background:#f7f3eb;color:#2a2724;overflow:hidden}
.merch-lightbox::backdrop{background:#17110bd9}
.merch-lightbox-bar{position:absolute;z-index:2;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:4.4rem;padding:.6rem clamp(1rem,3vw,2.5rem);background:#fffcf4e8;border-bottom:1px solid #e2d9ca;backdrop-filter:blur(12px)}
.merch-lightbox-bar strong{font-size:clamp(.85rem,1.1vw,1rem);font-weight:600}
.merch-lightbox-controls{display:flex;align-items:center;gap:.45rem;white-space:nowrap}
.merch-lightbox-controls button{min-width:2.5rem;height:2.5rem;border:1px solid #bfb4a5;border-radius:999px;background:#fffaf0;color:#2a2724;cursor:pointer;font-size:1.2rem}
.merch-lightbox-controls #merch-zoom-reset{min-width:3.7rem;font-size:.78rem}
.merch-lightbox-controls button:hover,.merch-lightbox-controls button:focus-visible{background:#f5d59b;outline:2px solid #9b6830;outline-offset:2px}
.merch-lightbox-stage{position:absolute;inset:4.4rem 0 2rem;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;cursor:grab;background:radial-gradient(circle,#fffdfa 0,#f2ece2 100%)}
.merch-lightbox-stage:active{cursor:grabbing}
.merch-lightbox-stage img{display:block;max-width:94vw;max-height:calc(100vh - 9rem);width:auto;height:auto;object-fit:contain;user-select:none;pointer-events:none;will-change:transform}
.merch-lightbox-hint{position:absolute;bottom:.4rem;left:0;right:0;margin:0;text-align:center;color:#756c60;font-size:.7rem}
@media(max-width:680px){.project-view.is-merch .project-gallery{grid-template-columns:1fr;gap:1rem;margin-left:-1.25rem;margin-right:-1.25rem}.project-view.is-merch .gallery-item{margin-bottom:0}.project-view.is-merch .merch-composition{grid-template-columns:1fr;gap:1rem}.project-view.is-merch .merch-composition-column{gap:1rem}.merch-lightbox-bar{align-items:flex-start;flex-direction:column;padding:.6rem 1rem}.merch-lightbox-controls{align-self:flex-end}.merch-lightbox-stage{inset:6.8rem 0 1.8rem}.merch-lightbox-stage img{max-height:calc(100vh - 10rem)}.merch-lightbox-hint{font-size:.62rem}}
.mailbox-hotspot{position:absolute;z-index:4;left:42%;top:49%;width:17%;height:35%;padding:0;border:0;background:transparent;cursor:pointer}
.mailbox-hotspot>span{position:absolute;left:50%;top:-2.5rem;transform:translate(-50%,8px);white-space:nowrap;border:1px solid #fff3d899;border-radius:999px;background:#7a2528d9;color:#fff8e8;padding:.45rem .78rem;font-size:.69rem;opacity:0;transition:opacity .2s,transform .2s}
.mailbox-hotspot:hover>span,.mailbox-hotspot:focus-visible>span{opacity:1;transform:translate(-50%,0)}
.mailbox-hotspot:focus-visible{outline:2px solid #fff2b7;outline-offset:4px}
.mail-envelope{position:absolute;z-index:7;left:50%;top:58%;width:min(36vw,520px);aspect-ratio:2849/1793;padding:0;border:0;background:transparent;opacity:0;transform:translate(-50%,0) scale(.12);filter:drop-shadow(0 16px 18px #44202f70);pointer-events:none;transition:top 1.5s cubic-bezier(.2,.72,.17,1),transform 1.5s cubic-bezier(.2,.72,.17,1),opacity .28s ease;cursor:pointer}
.scene-studio .lamp-hotspot,.scene-studio .computer-hotspot{position:absolute;z-index:4;border:0;background:transparent;padding:0;cursor:pointer}
.scene-studio .lamp-easter-toggle{position:absolute;z-index:7;min-width:0;min-height:0;border:0;border-radius:50%;background:transparent;padding:0;cursor:pointer}
.scene-studio .lamp-easter-toggle:hover,.scene-studio .lamp-easter-toggle:focus-visible{outline:2px solid #ffd38a;outline-offset:1px;background:#ffce7430}
.project-view.is-campaign #project-cover[hidden],#poster-cover-grid[hidden],.poster-lightbox-window[hidden],#merch-lightbox-image[hidden]{display:none!important}
.project-view.is-campaign .project-cover{padding:clamp(1rem,3vw,2.5rem);background:#f7fafc}
.project-view.is-campaign .project-gallery{display:block;max-width:none;background:transparent}
.poster-section{margin:clamp(2rem,5vw,5rem) 0}
.poster-section h2{font-family:"Songti SC","Noto Serif CJK SC",serif;font-size:clamp(1.5rem,2.5vw,2.4rem);font-weight:500;margin:0 0 1.3rem}
.poster-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.6rem,1.3vw,1.2rem);align-items:start}
.poster-card{margin:0;min-width:0;background:#fff;padding:clamp(.35rem,.8vw,.75rem);box-shadow:0 6px 22px #23304413}
.poster-card-media{display:flex;align-items:center;justify-content:center;aspect-ratio:3/4;overflow:hidden;background:#f2f3f4}
#poster-cover-grid .poster-card-media,#poster-cover-grid .poster-card-media .merch-crop{aspect-ratio:1!important}
.poster-card-media .merch-crop{max-width:none!important;width:100%;height:100%;aspect-ratio:3/4!important}
.poster-card-media .merch-crop img{max-height:none!important;max-width:none!important;height:auto!important;object-fit:initial!important}
.poster-card-media>img{display:block;width:100%;height:100%;object-fit:cover;max-height:none}
.poster-card figcaption{display:flex;align-items:baseline;gap:.55rem;padding:.6rem .1rem .15rem;border-top:1px solid #e3e5e8;font-size:.78rem}
.poster-card figcaption span{font-size:.61rem;color:#71808a}
.poster-card figcaption strong{font-weight:500;line-height:1.45}
.poster-lightbox-window{position:relative;display:block;max-width:90vw;max-height:calc(100vh - 10rem);overflow:hidden;background:#fff;will-change:transform}
.poster-lightbox-window img{position:absolute;display:block;max-width:none!important;max-height:none!important;height:auto!important;object-fit:initial!important;user-select:none;pointer-events:none}
@media(max-width:850px){.poster-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.project-view.is-campaign .project-cover{padding:.5rem}.poster-grid{gap:.5rem}.poster-card{padding:.25rem}.poster-card figcaption{font-size:.65rem}.poster-section{padding:0 .5rem}}
.scene-studio.lamp-boost::after{opacity:1;background:radial-gradient(ellipse 13% 11% at 51% 29%,#ffe3a8aa 0,#ffc66878 42%,transparent 100%),radial-gradient(ellipse 36% 31% at 52% 53%,#ffbc6078 0,#f3a54645 47%,transparent 100%);mix-blend-mode:screen}
.scene-studio.lamp-boost>.scene-image{filter:none}
.scene-studio .lamp-hotspot{clip-path:polygon(0 84%,14% 78%,15% 69%,37% 13%,37% 10%,40% 7%,67% 3%,70% 8%,79% 7%,89% 11%,97% 22%,100% 32%,98% 36%,57% 36%,55% 30%,44% 27%,25% 77%,37% 81%,40% 91%,32% 97%,3% 97%)}
.scene-studio .computer-hotspot{clip-path:polygon(31% 0,99% 0,93% 68%,88% 70%,100% 93%,96% 100%,0 100%,0 93%,22% 68%)}
.scene-studio .lamp-hotspot:focus-visible,.scene-studio .computer-hotspot:focus-visible{outline:3px solid #ffe09b;outline-offset:3px}
.studio-object-label{position:absolute;z-index:5;display:block;white-space:nowrap;border:1px solid #ffe5aa88;border-radius:99px;background:#402615dc;backdrop-filter:blur(7px);box-shadow:0 8px 24px #1e0d0766;color:#fff4d8;padding:.48rem .85rem;font-size:.72rem;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .25s,transform .25s}
.scene-studio:has(.lamp-hotspot:hover) .lamp-object-label,.scene-studio:has(.lamp-hotspot:focus-visible) .lamp-object-label,.scene-studio:has(.computer-hotspot:hover) .computer-object-label,.scene-studio:has(.computer-hotspot:focus-visible) .computer-object-label{opacity:1;transform:translateY(0)}
@media(max-width:680px){.studio-object-label{font-size:.66rem;padding:.38rem .6rem}}
.mail-envelope img{position:absolute;left:0;top:50%;width:100%;height:auto;object-fit:contain;transform:translateY(-50%);transition:opacity .6s ease,transform .8s cubic-bezier(.16,1,.3,1)}
.envelope-open{opacity:0;transform:translateY(-50%) scale(.9)}
.mail-envelope>span{position:absolute;left:50%;bottom:-2.2rem;transform:translateX(-50%) translateY(6px);white-space:nowrap;border:1px solid #fff4d0a6;border-radius:999px;background:#7d2b2edb;color:#fff;padding:.45rem .8rem;font-size:.7rem;opacity:0;transition:opacity .22s,transform .22s}
.mail-scene.has-letter .mail-envelope{top:14%;opacity:1;transform:translate(-50%,0) scale(1)}
.mail-scene.letter-ready .mail-envelope{pointer-events:auto}
.mail-scene.incoming-complete .mail-envelope{pointer-events:none}
.mail-scene.letter-ready .mail-envelope:hover>span,.mail-scene.letter-ready .mail-envelope:focus-visible>span{opacity:1;transform:translateX(-50%)}
.mail-envelope:focus-visible{outline:2px solid #fff1b0;outline-offset:6px}
.mail-scene.envelope-opened .envelope-closed{opacity:0;transform:translateY(-50%) scale(.92)}
.mail-scene.envelope-opened .envelope-open{opacity:1;transform:translateY(-50%) scale(1)}
.mail-scene.envelope-opened .mail-envelope{pointer-events:auto}
.mail-note{position:absolute;z-index:8;left:50%;top:50%;width:min(24vw,360px);max-height:66vh;object-fit:contain;opacity:0;transform:translate(-50%,0) scale(.72);clip-path:inset(100% 0 0 0);filter:drop-shadow(0 22px 22px #3d172a80);pointer-events:none;transition:top 1.35s cubic-bezier(.16,1,.3,1),transform 1.35s cubic-bezier(.16,1,.3,1),opacity .8s ease,clip-path 2.4s .55s ease}
.mail-scene.note-visible .mail-note{top:8%;opacity:1;transform:translate(-50%,0) scale(1);clip-path:inset(0 0 0 0)}
.mail-scene:not(.note-visible) .mail-note{transition:top 1s ease,transform 1s ease,opacity .65s ease,clip-path 1s ease}
.mail-compose{position:absolute;z-index:9;left:50%;top:3%;width:min(44vw,52vh,560px);opacity:0;transform:translate(-50%,28%) scale(.72);pointer-events:none;transition:opacity .55s ease,transform 1.1s cubic-bezier(.16,1,.3,1)}
.mail-scene.compose-writing .mail-compose{opacity:1;transform:translate(-50%,0) scale(1);pointer-events:auto}
.compose-paper{position:relative;width:100%;aspect-ratio:658/1170;filter:drop-shadow(0 20px 22px #421c2e7a)}
.compose-paper>img{position:absolute;inset:0;width:100%;height:100%}
.compose-paper canvas,.compose-paper textarea{position:absolute;left:3%;top:12%;width:92%;height:78.5%}
.compose-paper>img{object-fit:contain;pointer-events:none}
.compose-paper canvas{z-index:2;touch-action:none;cursor:crosshair}
.compose-paper textarea{z-index:3;box-sizing:border-box;border:0;outline:0;resize:none;background:transparent;padding:7% 9%;font:clamp(.94rem,1.55vw,1.25rem)/1.75 'KaiTi','STKaiti',serif;color:#2c211c;caret-color:#9b292c}
.mail-compose[data-mode="draw"] textarea{pointer-events:none;opacity:0}
.mail-compose[data-mode="type"] canvas{pointer-events:none}
.compose-tools{position:absolute;z-index:5;left:50%;bottom:2.6rem;display:flex;justify-content:center;gap:.45rem;width:max-content;max-width:94%;margin:0;transform:translateX(-50%);flex-wrap:wrap}
.compose-tools button{border:1px solid #fff0cf9c;border-radius:999px;background:#6e2a2dcf;color:#fff7e8;padding:.46rem .72rem;font-size:.7rem;cursor:pointer;backdrop-filter:blur(7px)}
.compose-tools button:hover,.compose-tools button:focus-visible,.compose-tools button.is-active{background:#fff2d9;color:#70252a;outline:none}
.mail-scene.compose-writing .mail-envelope{top:27%;opacity:1;transform:translate(-50%,0) scale(1);pointer-events:none}
.mail-scene.compose-writing .envelope-closed{opacity:0}
.mail-scene.compose-writing .envelope-open{opacity:1;transform:translateY(-50%) scale(1)}
.mail-scene.outgoing-open .mail-envelope{top:14%;opacity:1;transform:translate(-50%,0) scale(1);pointer-events:auto}
.mail-scene.outgoing-closed .mail-envelope{top:14%;opacity:1;transform:translate(-50%,0) scale(1);pointer-events:auto;cursor:grab;touch-action:none}
.mail-scene.outgoing-closed .envelope-open{opacity:0}
.mail-scene.outgoing-closed .envelope-closed{opacity:1;transform:translateY(-50%) scale(1)}
.mail-envelope.is-mail-dragging{transition:none;cursor:grabbing}
.mail-envelope.is-delivering{left:50%!important;top:58%!important;transform:translate(-50%,0) scale(.08)!important;opacity:0!important;transition:left 1.15s ease,top 1.15s ease,transform 1.15s ease,opacity 1.05s .2s ease!important}
.delivery-success{position:absolute;z-index:10;left:50%;top:42%;transform:translate(-50%,18px);font:clamp(1.6rem,4vw,3.5rem) 'KaiTi','STKaiti',serif;color:#fff8db;text-shadow:0 4px 18px #7c252c;opacity:0;pointer-events:none;transition:opacity .55s ease,transform .55s ease}
.mail-scene.delivery-done .delivery-success{opacity:1;transform:translate(-50%,0)}
body:has(.scene-personal.is-visible) .site-header{color:#fff5df;text-shadow:0 1px 8px #000}
body:has(.scene-personal.is-visible) .identity span,body:has(.scene-personal.is-visible) .site-nav span{color:#fff1d3}
@media(max-width:680px){.profile-doll{right:2%;bottom:29%;width:112px}.profile-doll>span{right:0;left:auto;transform:translateY(5px);font-size:.62rem}.profile-doll:hover>span,.profile-doll:focus-visible>span{transform:none}.personal-back{top:76px}.lamp-pull{left:37%;width:26%;top:8%}.personal-file{left:48%;bottom:5%;width:48vw}.pull-hint{font-size:.61rem}.personal-book{padding:5rem 1vw 1rem}.personal-book-stage{width:98vw}.personal-book-close,.personal-object-close{top:4.6rem}.personal-object-modal figure img{max-width:92vw;max-height:72vh}.mail-scene-back{top:4.6rem}.mailbox-hotspot{left:36%;top:51%;width:28%;height:31%}.mail-envelope{width:min(72vw,520px)}.mail-scene.has-letter .mail-envelope{top:20%}.mail-note{width:min(48vw,350px)}.mail-scene.note-visible .mail-note{top:13%}.mail-compose{top:4%;width:min(78vw,50vh)}.mail-scene.compose-writing .mail-envelope{top:35%}}
@media(prefers-reduced-motion:reduce){.scene-personal,.personal-room-light,.profile-doll,.profile-doll img,.pull-knob{transition:none}}
.local-player-status{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f6dcb82d;padding:.7rem .25rem .15rem;color:#f8e4c8;font-size:.72rem;letter-spacing:.04em}.local-player-status span:last-child{font:600 .68rem Arial,sans-serif;color:#d7bfa4}

