:root{color-scheme:dark;--ink:#e0e1e6;--muted:#a9b2c4;--night:#080e1b;font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif CJK JP",serif;font-synthesis:none;background:var(--night);color:var(--ink)}
*{box-sizing:border-box}
html{min-height:100%;text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{margin:0;min-width:280px;font-size:1.125rem;font-weight:400;line-height:1.95;letter-spacing:.035em}
.skip-link{position:fixed;z-index:10;top:1rem;left:1rem;padding:.55rem .8rem;color:#080e1b;background:#fff;transform:translateY(-220%)}
.skip-link:focus{transform:translateY(0)}
.room-nav{position:fixed;z-index:4;top:0;left:0;display:flex;justify-content:space-between;width:100%;padding:1.2rem clamp(1.25rem,3vw,2.5rem);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:.75rem;letter-spacing:.09em;pointer-events:none}
.room-nav a{color:#bdc5d3;text-decoration:none;text-shadow:0 1px 12px #02050c;opacity:.72;pointer-events:auto;transition:color 180ms ease,opacity 180ms ease}
.room-nav a:hover,.room-nav a:focus-visible{color:#fff;opacity:1}
.room-brand{letter-spacing:.12em}
.night,.reading-shade,.sky{position:fixed;inset:0;pointer-events:none}
.night{z-index:0;background:#080e1b url('night-window-desktop-v2.png') center center/cover no-repeat}
.reading-shade{z-index:1;background:linear-gradient(90deg,transparent 12%,rgba(4,9,20,.24) 30%,rgba(4,9,20,.30) 65%,transparent 88%);box-shadow:inset 0 0 10vw #03060d33}
.sky{z-index:2;overflow:hidden}
main{position:relative;z-index:3;width:min(46%,680px);margin-inline:auto;padding-bottom:8svh}
.entrance{min-height:92svh;display:flex;flex-direction:column;text-align:center;padding-top:clamp(4rem,10svh,7rem);padding-bottom:4rem}
.room-name{font-size:1.25rem;font-style:italic;letter-spacing:.09em;color:#c5cbd7;margin:0;text-shadow:0 2px 16px #03060d}
.poem{margin-block:auto;padding-top:3rem;padding-bottom:2rem}
h1,h2{font-weight:400;margin:0;line-height:1.7}
h1>span,h2>span{display:block}
h1{font-size:clamp(1.625rem,2.5vw,2.125rem);letter-spacing:.055em}
.subtitle{font-size:1rem;letter-spacing:.12em;margin-top:.65rem}
.verse{margin-top:3rem;font-size:1.0625rem;letter-spacing:.05em}
.verse p{margin:0 0 1.5em}
.verse p:last-child{margin-bottom:0}
.divider{display:flex;align-items:center;justify-content:center;gap:1.15rem;width:min(52%,230px);margin:2rem auto 0;color:#9ba8bd}
.divider:before,.divider:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,#64738b66)}
.divider:after{transform:rotate(180deg)}
.divider span{font-family:serif;font-size:.75rem;opacity:.65}
.scene{padding-top:4.5rem}
h2{text-align:center;font-size:1.375rem;letter-spacing:.09em;margin-bottom:3rem}
.title-phrase{display:inline-block;white-space:nowrap}
.scene-number{font-size:.875rem;letter-spacing:.14em;color:var(--muted);margin-bottom:.7rem}
.prose{text-shadow:0 1px 10px #02061099;text-align:left;line-break:strict;overflow-wrap:break-word;word-break:normal}
.prose p{margin:0 0 1.4em}
.prose p:last-child{margin-bottom:0}
.ending{margin-top:4.5rem;margin-bottom:4rem}
.star{position:absolute;width:3px;height:3px;border-radius:50%;background:#dceaff;opacity:.22}
.star-a{left:24%;top:23%}.star-b{left:76%;top:34%;width:2px;height:2px}
.star.glint{animation:glint 4800ms ease-in-out 1}
.star:before,.star:after{content:"";position:absolute;left:50%;top:50%;background:linear-gradient(transparent,#e4edff,transparent);transform:translate(-50%,-50%);opacity:0}
.star:before{width:1px;height:13px}.star:after{width:13px;height:1px;background:linear-gradient(90deg,transparent,#e4edff,transparent)}
.star.glint:before,.star.glint:after{animation:star-rays 4800ms ease-in-out 1}
@keyframes star-rays{0%,100%{opacity:0}45%{opacity:.65}60%{opacity:.4}}
@keyframes glint{0%,100%{opacity:.22;box-shadow:0 0 0 transparent;transform:scale(1)}45%{opacity:.95;box-shadow:0 0 5px 1px #d3e3ffa6,0 0 14px 3px #a8c5ff40;transform:scale(1.3)}60%{opacity:.75;box-shadow:0 0 7px #c4d9ff66;transform:scale(1.15)}}
.passing-light{position:absolute;top:29%;left:0;width:36px;height:1px;background:linear-gradient(90deg,transparent,#becae966,transparent);opacity:0}
.sky.arrival .passing-light{animation:pass 6500ms ease-in-out 1}
@keyframes pass{0%{transform:translateX(18vw);opacity:0}25%{opacity:.28}75%{opacity:.23}100%{transform:translateX(78vw);opacity:0}}
::selection{background:#59637b;color:white}
@media(min-width:1600px){main{width:46%;max-width:740px}}
@media(max-width:900px){main{width:64%}}
@media(max-width:600px){body{font-size:1rem;line-height:1.95;letter-spacing:.015em}main{width:auto;margin-inline:clamp(1.5rem,6vw,2.25rem)}.night{background-image:url('night-window-mobile-v2.png');background-position:center center}.reading-shade{background:linear-gradient(90deg,rgba(4,9,20,.08),rgba(4,9,20,.22) 18%,rgba(4,9,20,.22) 82%,rgba(4,9,20,.08));box-shadow:none}.entrance{min-height:90svh;padding-top:3rem;padding-bottom:3rem}.room-name{font-size:1.0625rem}.poem{padding-top:2.5rem}h1{font-size:1.625rem}.subtitle{font-size:.9375rem}.verse{font-size:1rem;letter-spacing:0;margin-top:2.5rem}.scene{padding-top:3.5rem}h2{font-size:1.25rem;margin-bottom:2.5rem}.prose p{margin-bottom:1.4em}.divider{margin-top:1.5rem;width:42%}.ending{margin-top:3.5rem}.star-a{left:13%;top:19%}.star-b{left:88%;top:43%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.passing-light{display:none}}

/* Portrait framing keeps the lamp and both window edges in view. */
@media(max-aspect-ratio:1/1){.night{background-image:url('night-window-mobile-v2.png');background-position:center;background-size:100% 100%}}

/* Full manuscript rhythm */
.divider.inner{margin-top:3.9rem;margin-bottom:3.9rem}
.current-door{margin-top:2.8rem;text-align:center}
.current-door a{display:inline-block;color:#b8c1d0;font-size:.9375rem;letter-spacing:.075em;text-decoration-color:#78859a73;text-decoration-thickness:1px;text-underline-offset:.45em;text-shadow:0 1px 12px #020610;opacity:.72;transition:color 180ms ease,opacity 180ms ease,transform 180ms ease}
.current-door a:hover,.current-door a:focus-visible{color:#e5e8ef;opacity:1;transform:translateX(.12rem)}.scene + .night-after{min-height:30svh}
.night-after{min-height:34svh}
.star-c{left:18%;top:39%;width:2px;height:2px}
.star-d{left:82%;top:19%}
.star-e{left:71%;top:56%;width:2px;height:2px}
.star-f{left:29%;top:67%}
.star-g{left:86%;top:76%;width:2px;height:2px}
@media(max-width:600px){.divider.inner{margin-top:3.35rem;margin-bottom:3.35rem}.night-after{min-height:30svh}.star-c{left:89%;top:32%}.star-d{left:16%;top:49%}.star-e{left:84%;top:61%}.star-f{left:12%;top:71%}.star-g{left:87%;top:82%}}
@media(max-width:600px){.room-nav{padding:.9rem 1rem;font-size:.6875rem}.room-nav a:first-child span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}}
@media(max-width:600px){.current-door{margin-top:2.4rem}.current-door a{font-size:.875rem;letter-spacing:.06em}}