.rotating-space{z-index:3;place-items:center;padding:7vh 7vw 6vh;display:grid;position:absolute;inset:0}.space-three{z-index:3;cursor:grab;width:min(78vw,1180px);height:min(74vh,760px);position:relative}.space-three canvas{width:100%;height:100%;display:block}.space-enter-hint{z-index:5;color:#2728365c;letter-spacing:0;place-items:center;min-width:340px;margin:0;font-size:15px;display:grid;position:fixed;bottom:34px;left:50%;transform:translate(-50%)}.space-enter-hint span{animation:2.8s ease-in-out infinite spaceHintBreath}.space-enter-hint:before,.space-enter-hint:after{content:"";background:linear-gradient(90deg,#0000,#27283638);width:94px;height:1px;animation:2.8s ease-in-out infinite spaceHintLineBreath;position:absolute;top:50%}.space-enter-hint:before{right:calc(50% + 62px)}.space-enter-hint:after{left:calc(50% + 62px);transform:scaleX(-1)}@keyframes spaceHintBreath{0%,to{opacity:.42;transform:translateY(0)}50%{opacity:.76;transform:translateY(-2px)}}@keyframes spaceHintLineBreath{0%,to{opacity:.45;width:86px}50%{opacity:.86;width:112px}}@media (width<=900px){.rotating-space{padding:76px 22px 64px}.space-three{width:100%;height:68vh}}.character-stage{z-index:1;isolation:isolate;perspective:1200px;touch-action:manipulation;place-items:center;min-height:78vh;display:grid;position:relative}.stage-light,.stage-orbit,.stage-floor,.presence-field,.stage-portrait{grid-area:1/1}.stage-light{z-index:0;aspect-ratio:.82;background:radial-gradient(ellipse at 50% 48%, #ffffffbd, transparent 58%), radial-gradient(ellipse at 52% 52%, var(--stage-glow,#f0b7c461), transparent 68%);filter:blur(10px);width:min(44vw,660px);transform:translate3d(calc(var(--stage-drift-x) * -8px), calc(var(--stage-drift-y) * -5px), 0) scale(1.02);border-radius:50%;position:relative}.stage-orbit{z-index:1;border:1px solid color-mix(in srgb, var(--stage-accent,#d990a7), transparent 78%);opacity:.34;transform:rotate(-12deg) translate3d(calc(var(--stage-drift-x) * -10px), calc(var(--stage-drift-y) * -8px), 0);border-radius:50%;animation:8.6s ease-in-out infinite stageOrbitBreath;position:relative}.stage-orbit.is-wide{aspect-ratio:.84;width:min(42vw,650px);-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 22% 78%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 22% 78%,#0000 100%)}.stage-orbit.is-close{aspect-ratio:.78;opacity:.18;width:min(30vw,455px);transform:rotate(16deg) translate3d(calc(var(--stage-drift-x) * -6px), calc(var(--stage-drift-y) * -5px), 0);animation-duration:10.8s}.presence-field{pointer-events:none;width:min(44vw,680px);height:min(82vh,780px);position:relative}.presence-field.is-back{z-index:2;opacity:.86;transform:translate3d(calc(var(--stage-drift-x) * -14px), calc(var(--stage-drift-y) * -10px), 0) scale(1.02)}.presence-field.is-front{z-index:3;opacity:.72;mix-blend-mode:normal;transform:translate3d(calc(var(--stage-drift-x) * 8px), calc(var(--stage-drift-y) * 6px), 0) scale(.98)}.presence-field canvas{width:100%;height:100%;display:block}.stage-portrait{z-index:4;width:min(42vw,690px);max-height:86vh;transform:translate3d(calc(var(--stage-drift-x) * 18px), calc(var(--stage-drift-y) * 12px), 0) rotateY(calc(var(--stage-drift-x) * -3deg)) rotateX(calc(var(--stage-drift-y) * 1.6deg));transform-style:preserve-3d;place-items:center;margin:0;transition:transform .42s;animation:7.2s ease-in-out infinite stagePortraitBreath;display:grid;position:relative}.stage-portrait:before{content:"";z-index:-1;filter:blur(18px);background:radial-gradient(at 50% 54%,#ffffffa3,#0000 62%);border-radius:50%;position:absolute;inset:12% 10% 7%}.stage-portrait img{object-fit:contain;filter:drop-shadow(0 22px 24px #4339521f)drop-shadow(0 44px 52px #4339521f);max-width:min(100%,720px);max-height:84vh;display:block}.stage-floor{z-index:3;background:radial-gradient(ellipse at center, color-mix(in srgb, var(--stage-accent,#d990a7), transparent 72%), transparent 70%);filter:blur(12px);opacity:.42;width:min(31vw,470px);height:7vh;transform:translate3d(calc(var(--stage-drift-x) * 6px), calc(var(--stage-drift-y) * 3px), 0) scaleX(1.12);border-radius:50%;align-self:end;margin-bottom:2vh}@keyframes stagePortraitBreath{0%,to{translate:0}50%{translate:0 -12px}}@keyframes stageOrbitBreath{0%,to{opacity:.28;scale:1}50%{opacity:.42;scale:1.035}}@media (prefers-reduced-motion:reduce){.stage-portrait,.stage-orbit{animation:none}}@media (width<=900px){.character-stage{min-height:48vh}.stage-light,.presence-field,.stage-portrait{width:min(82vw,520px)}.presence-field{height:52vh}.stage-portrait img{max-height:50vh}.stage-orbit.is-wide{width:min(78vw,500px)}.stage-orbit.is-close{width:min(58vw,360px)}}.voice-panel{grid-template-columns:auto 1fr;align-items:center;gap:12px 20px;max-width:520px;display:grid}.voice-button{min-width:96px;min-height:40px;color:var(--ink);background:#ffffffc7;border:1px solid #4449621f;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex;box-shadow:0 14px 32px #3a334a1f}.voice-icon{border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:9px solid var(--ink);width:0;height:0}.voice-button.is-playing .voice-icon{background:linear-gradient(90deg, var(--ink) 0 35%, transparent 35% 65%, var(--ink) 65%);border:0;width:11px;height:13px}.voice-wave{align-items:center;gap:7px;height:44px;display:flex}.voice-wave i{background:#454b6961;border-radius:999px;width:4px;height:12px}.voice-button.is-playing+.voice-wave i{animation:.9s ease-in-out infinite pulse}.voice-button.is-playing+.voice-wave i:nth-child(2){animation-delay:.12s}.voice-button.is-playing+.voice-wave i:nth-child(3){animation-delay:.24s}.voice-button.is-playing+.voice-wave i:nth-child(4){animation-delay:.36s}.voice-button.is-playing+.voice-wave i:nth-child(5){animation-delay:.48s}.voice-panel p{color:color-mix(in srgb, var(--character-accent,#d990a7), #272836 30%);grid-column:1/-1;margin:0;font-size:14px}@keyframes pulse{0%,to{transform:scaleY(.8)}50%{transform:scaleY(2.3)}}:root{color:#272836;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--paper:#fbfaf7;--ink:#272836;--muted:#6f7180;--line:#343b522e;--glass:#ffffffa8;--shadow:0 28px 80px #3a334a2e;background:#fbfaf7;font-family:Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{overflow:hidden}button,a{font:inherit}button{cursor:pointer}img{max-width:100%}.screen{background:radial-gradient(circle at 20% 18%,#f4cf8a42,#0000 28%),radial-gradient(circle at 78% 20%,#8db7d93d,#0000 30%),radial-gradient(circle at 70% 78%,#f0b7c43d,#0000 34%),linear-gradient(135deg,#fffdf8 0%,#f8fbff 48%,#fff8fb 100%);min-height:100vh;position:relative;overflow:hidden}.screen:before{content:"";pointer-events:none;opacity:.22;background-image:linear-gradient(#26273509 1px,#0000 1px),linear-gradient(90deg,#26273508 1px,#0000 1px);background-size:38px 38px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000,#0000 72%);mask-image:radial-gradient(circle,#000,#0000 72%)}.glass-button{min-height:44px;color:var(--ink);background:#ffffffc7;border:1px solid #4449621f;border-radius:999px;padding:0 18px;text-decoration:none;box-shadow:0 14px 32px #3a334a1f}.glass-button:hover,.glass-button:focus-visible{background:#fff;border-color:#44496247;outline:0}.eyebrow{color:#8d6e7a;margin:0 0 12px;font-family:Georgia,Times New Roman,serif;font-size:15px}.top-nav{z-index:40;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffff8a;border:1px solid #ffffffb8;border-radius:999px;gap:8px;padding:8px;display:flex;position:fixed;top:24px;right:28px}.top-nav a{min-width:58px;min-height:38px;color:var(--ink);border-radius:999px;place-items:center;text-decoration:none;display:grid}.top-nav a:hover,.top-nav a:focus-visible{background:#ffffffc2;outline:0}.prologue-screen{min-height:100vh;padding:6vh 7vw 0;display:block}.prologue-panel{z-index:4;text-align:center;justify-items:center;max-width:980px;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,calc(5.5vh - 50%))}.prologue-memory{z-index:2;opacity:.34;filter:saturate(.9);mix-blend-mode:multiply;pointer-events:none;width:min(1180px,72vw);margin:0;position:absolute;bottom:-1.8vh;left:50%;transform:translate(-50%)}.prologue-memory img{width:100%;display:block}.prologue-haze{z-index:3;pointer-events:none;background:linear-gradient(#fbfaf7c7 0%,#fbfaf714 42%,#fbfaf785 100%),radial-gradient(#ffffff14,#ffffffd6 72%);position:absolute;inset:0}.prologue-panel h1,.character-copy h1,.placeholder-screen h1{margin:0 0 18px;font-family:Georgia,Songti SC,serif;font-size:clamp(52px,8vw,118px);font-weight:500;line-height:.98}.prologue-panel h1{white-space:nowrap;width:calc(var(--title-count,4) * 1em);min-height:.98em;margin-bottom:clamp(34px,4.6vh,60px);font-size:clamp(70px,7.85vw,132px)}.typewriter-title{text-align:left;justify-content:flex-start;align-items:baseline;display:inline-flex;position:relative}.typewriter-title:after{content:"";left:calc(var(--typed-count) * 1em + .08em);background:#272836ad;width:6px;height:.86em;animation:.9s step-end infinite titleCaret;position:absolute;top:.08em}.placeholder-screen p{max-width:34em;color:var(--muted);margin:0 auto 28px;font-size:clamp(16px,1.4vw,22px);line-height:1.75}.chapter-enter{min-width:220px;color:var(--ink);justify-items:center;gap:6px;margin-top:clamp(8px,1.4vh,18px);padding:0 36px 18px;text-decoration:none;display:grid;position:relative}.chapter-enter:before,.chapter-enter:after{content:"";background:linear-gradient(90deg,#0000,#2728366b);width:92px;height:1px;position:absolute;top:calc(14px + clamp(20px,1.7vw,28px))}.chapter-enter:before{right:calc(50% + 78px)}.chapter-enter:after{left:calc(50% + 78px);transform:scaleX(-1)}.chapter-enter span{color:#9c7d86;font-family:Georgia,Times New Roman,serif;font-size:14px}.chapter-enter strong{letter-spacing:0;font-size:clamp(20px,1.7vw,28px);font-weight:400}.chapter-enter i{border-bottom:1px solid #272836b3;border-right:1px solid #272836b3;width:7px;height:7px;animation:1.8s ease-in-out infinite chapterDrift;transform:rotate(45deg)}.chapter-enter:hover strong,.chapter-enter:focus-visible strong{color:#8d6e7a}.chapter-enter:focus-visible{outline:0}.prologue-frame{z-index:4;color:#27283647;pointer-events:none;width:min(78vw,1360px);height:min(62vh,660px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.frame-line,.frame-corner{color:#373a4e29;display:block;position:absolute}.frame-line{background:currentColor}.frame-top-left{background:linear-gradient(90deg,#373a4e2e,#373a4e0a)}.frame-top-right{background:linear-gradient(90deg,#373a4e0a,#373a4e2e)}.frame-bottom-left{background:linear-gradient(90deg,#373a4e2e,#373a4e0a)}.frame-bottom-right{background:linear-gradient(90deg,#373a4e0a,#373a4e2e)}.frame-left-top{background:linear-gradient(#373a4e2e,#373a4e0a)}.frame-left-bottom{background:linear-gradient(#373a4e0a,#373a4e2e)}.frame-right-top{background:linear-gradient(#373a4e2e,#373a4e0a)}.frame-right-bottom{background:linear-gradient(#373a4e0a,#373a4e2e)}.frame-top-left,.frame-top-right,.frame-bottom-left,.frame-bottom-right{height:1px}.frame-top-left,.frame-bottom-left{left:0;right:calc(50% + 56px)}.frame-top-right,.frame-bottom-right{left:calc(50% + 56px);right:0}.frame-top-left,.frame-top-right{top:0}.frame-bottom-left,.frame-bottom-right{bottom:0}.frame-left-top,.frame-left-bottom,.frame-right-top,.frame-right-bottom{width:1px}.frame-left-top,.frame-right-top{top:0;bottom:calc(50% + 42px)}.frame-left-bottom,.frame-right-bottom{top:calc(50% + 42px);bottom:0}.frame-left-top,.frame-left-bottom{left:0}.frame-right-top,.frame-right-bottom{right:0}.frame-corner{width:42px;height:42px}.frame-corner:before,.frame-corner:after{content:"";background:currentColor;position:absolute}.frame-corner:before{width:42px;height:1px}.frame-corner:after{width:1px;height:42px}.frame-corner-tl{top:-9px;left:-9px}.frame-corner-tr{top:-9px;right:-9px;transform:scaleX(-1)}.frame-corner-bl{bottom:-9px;left:-9px;transform:scaleY(-1)}.frame-corner-br{bottom:-9px;right:-9px;transform:scale(-1)}.prologue-frame span{text-align:center;white-space:nowrap;color:#27283661;min-width:3.2em;padding:0 18px;font-family:Georgia,Songti SC,serif;font-size:clamp(16px,1.25vw,22px);position:absolute}.prologue-frame span:first-of-type{top:50%;left:0;transform:translate(-50%,-50%)}.prologue-frame span:nth-of-type(2){top:0;left:50%;transform:translate(-50%,-50%)}.prologue-frame span:nth-of-type(3){bottom:0;left:50%;transform:translate(-50%,50%)}.prologue-frame span:nth-of-type(4){top:50%;right:0;transform:translate(50%,-50%)}@keyframes titleCaret{0%,to{opacity:0}50%{opacity:1}}@keyframes chapterDrift{0%,to{opacity:.55;transform:translateY(0)rotate(45deg)}50%{opacity:1;transform:translateY(7px)rotate(45deg)}}.space-screen{touch-action:none}.character-room-screen{grid-template-columns:minmax(42vw,1fr) minmax(360px,42vw);align-items:center;gap:3vw;min-height:100vh;padding:6vh 7vw;display:grid}.character-room-screen:after{content:"";z-index:0;background:radial-gradient(circle at 28% 46%, var(--character-glow,#f0b7c459), transparent 30%), radial-gradient(circle at 76% 22%, #ffffffe6, transparent 26%);position:absolute;inset:-20%}.character-copy{z-index:2;max-width:560px;position:relative}.character-copy h1{font-size:clamp(44px,5vw,86px)}.character-copy .eyebrow{font-size:17px}.monologue-panel{gap:28px;margin-top:clamp(20px,3.4vh,40px);display:grid}.monologue-fragments{gap:13px;margin:0;padding:0;list-style:none;display:grid}.monologue-fragments li{color:#2728366b;max-width:36em;padding-left:24px;font-size:clamp(16px,1.12vw,19px);line-height:1.68;transition:color .26s,opacity .26s;position:relative}.monologue-fragments li:before{content:"";background:color-mix(in srgb, var(--character-accent,#d990a7), transparent 44%);border-radius:999px;width:2px;height:1.55em;position:absolute;top:.16em;left:0}.monologue-fragments li.is-active{color:#272836d1}.back-link{z-index:42;color:#27283694;gap:7px;font-size:15px;text-decoration:none;display:inline-grid;position:fixed;top:36px;left:42px}.back-link:after{content:"";transform-origin:0;opacity:.58;background:linear-gradient(90deg,#2728366b,#0000);width:100%;height:1px;transition:transform .26s,opacity .26s;transform:scaleX(.48)}.back-link:hover,.back-link:focus-visible{color:var(--ink);outline:0}.back-link:hover:after,.back-link:focus-visible:after{opacity:.92;transform:scaleX(1)}.placeholder-screen{text-align:center;place-items:center;padding:8vh 7vw;display:grid}.gallery-screen{scroll-behavior:smooth;height:100vh;padding:clamp(84px,9vh,116px) 7vw 10vh;display:block;overflow-y:auto}.gallery-hero,.gallery-cover,.gallery-section{z-index:2;width:min(1240px,100%);margin-left:auto;margin-right:auto;position:relative}.gallery-hero{min-height:44px;margin-bottom:clamp(30px,5vh,58px)}.gallery-hero .glass-button{justify-content:center;align-items:center;display:inline-flex;position:absolute;top:0;right:0}.gallery-heading .eyebrow{margin-bottom:22px}.gallery-heading h1{margin:0;font-family:Georgia,Songti SC,serif;font-size:clamp(48px,7vw,64px);font-weight:500;line-height:.98}.gallery-cover{margin-bottom:clamp(68px,10vh,124px)}.gallery-cover img{aspect-ratio:2;object-fit:cover;mix-blend-mode:multiply;border:1px solid #ffffffc7;border-radius:8px;width:100%;display:block;box-shadow:0 32px 90px #3a334a29}.gallery-cover figcaption,.gallery-piece figcaption{color:#27283685;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.gallery-cover figcaption{margin-top:14px;padding:0 2px}.gallery-cover figcaption span,.gallery-section-heading p{font-family:Georgia,Times New Roman,serif;font-size:13px}.gallery-cover figcaption strong,.gallery-piece figcaption span{color:#272836c7;font-weight:400}.gallery-section{gap:clamp(24px,3vh,38px);margin-bottom:clamp(70px,11vh,132px);display:grid}.gallery-section-heading{border-bottom:1px solid #343b5224;gap:6px;padding-bottom:18px;display:grid}.gallery-section-heading p{color:#8d6e7a;margin:0}.gallery-section-heading h2{margin:0;font-family:Georgia,Songti SC,serif;font-size:clamp(32px,4.6vw,48px);font-weight:500;line-height:1}.gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(18px,2.4vw,34px);display:grid}.gallery-piece{background:linear-gradient(180deg, #ffffffad, #ffffff57), color-mix(in srgb, var(--gallery-accent,#d990a7), transparent 90%);border:1px solid #ffffffb8;border-radius:8px;grid-template-rows:minmax(0,1fr) auto;gap:16px;min-width:0;margin:0;padding:clamp(16px,2vw,26px);display:grid;position:relative;overflow:hidden;box-shadow:0 20px 58px #3a334a1c}.gallery-piece:before{content:"";border:1px solid color-mix(in srgb, var(--gallery-accent,#d990a7), transparent 72%);pointer-events:none;border-radius:6px;position:absolute;inset:12px}.gallery-piece figcaption{z-index:1;min-height:24px;position:relative}.gallery-art-window{z-index:1;border-radius:6px;min-height:0;position:relative;overflow:hidden}.gallery-art-window img{object-fit:contain;object-position:center;filter:drop-shadow(0 18px 22px #43395224);width:100%;height:100%;min-height:0;display:block}.gallery-section-full .gallery-piece{min-height:clamp(360px,45vw,540px)}.gallery-section-full .gallery-art-window img{object-fit:cover;object-position:var(--gallery-focus-x,50%) var(--gallery-focus-y,24%);transform:scale(var(--gallery-zoom,2.05));transform-origin:var(--gallery-focus-x,50%) var(--gallery-focus-y,24%)}.gallery-section-chibi .gallery-piece{min-height:clamp(240px,28vw,360px)}@media (width<=900px){body{overflow:auto}.character-room-screen{grid-template-columns:1fr;gap:0;padding:80px 24px 32px}.space-actions{border-radius:24px;max-width:calc(100vw - 24px);overflow-x:auto}.touch-hint{display:none}.gallery-screen{height:auto;min-height:100vh;padding:78px 22px 64px;overflow:visible}.gallery-hero{margin-bottom:52px}.gallery-heading h1{font-size:clamp(48px,15vw,74px)}.gallery-cover{margin-bottom:66px}.gallery-section{margin-bottom:76px}.gallery-section-full .gallery-grid{grid-template-columns:1fr}.gallery-section-chibi .gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-section-full .gallery-piece{min-height:62vh}.gallery-section-chibi .gallery-piece{min-height:260px}}@media (width<=560px){.gallery-section-chibi .gallery-grid{grid-template-columns:1fr}.gallery-cover figcaption,.gallery-piece figcaption{gap:4px;display:grid}}
