*{box-sizing:border-box} :root{color-scheme:dark;--ivory:#efe5cf;--muted:#b8ae99;--gold:#d7ba83;--line:#dbceb22c;--ink:#121411;--red:#db6d50;--story-size:27px;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--ivory)}body{font-family:var(--serif);-webkit-font-smoothing:antialiased}button,a,input{ -webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:1px solid var(--gold);outline-offset:7px}button,a{touch-action:manipulation}button[hidden],[hidden]{display:none!important}#novel{position:relative;width:100%;height:100%;height:100svh;isolation:isolate;overflow:hidden}#scenery,.scene,.shade,.grain,#moths{position:absolute;inset:0;pointer-events:none}.scene{background-position:center;background-size:cover;opacity:0;transition:opacity 1.2s ease;transform:scale(1.025)}.scene.active{opacity:1;animation:scene-drift 40s ease-out both}.shade{background:linear-gradient(0deg,rgba(7,12,11,.97) 0%,rgba(7,12,11,.85) 11%,rgba(7,12,11,.32) 36%,transparent 62%),linear-gradient(180deg,rgba(7,10,9,.42),transparent 17%);transition:background 1.2s}.is-title .shade{background:linear-gradient(90deg,rgba(9,14,12,.9) 0%,rgba(9,14,12,.64) 23%,rgba(9,14,12,.1) 54%,transparent 73%),linear-gradient(0deg,rgba(7,10,8,.7),transparent 22%),linear-gradient(180deg,rgba(7,10,9,.35),transparent 25%)}.is-ending .shade{background:linear-gradient(90deg,rgba(7,12,11,.92),rgba(7,12,11,.75) 43%,rgba(7,12,11,.28)),linear-gradient(0deg,rgba(7,12,11,.6),transparent)}.grain{opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.8' d='M0 0h160v160H0z'/%3E%3C/svg%3E");mix-blend-mode:screen}.topbar{position:absolute;z-index:4;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:31px 43px}.signature{display:flex;align-items:center;gap:15px}.signature svg{width:25px;height:32px;color:var(--gold)}.signature span,.eyebrow{font-family:var(--sans);font-size:10px;font-weight:400;letter-spacing:.24em;text-transform:uppercase}.signature span{color:#e5d9bcae;max-width:45vw}.top-actions{display:flex;gap:22px;align-items:center}.quiet{font-family:var(--sans);font-size:11px;font-weight:400;color:#e8decbc4;letter-spacing:.04em;display:inline-flex;align-items:center;gap:10px;min-height:36px;padding:0}.quiet:hover{color:var(--ivory)}.nav-divider{height:12px;width:1px;background:var(--line)}.sound-toggle svg{width:20px;height:20px}.sound-waves{display:none}.sound-toggle[aria-pressed=true] .sound-waves{display:block}.sound-toggle[aria-pressed=true] .sound-slash{display:none}.menu-mark{display:flex;flex-direction:column;gap:5px;width:16px}.menu-mark i{height:1px;width:16px;background:currentColor}.menu-mark i:last-child{width:11px;align-self:flex-end}.title-screen{position:absolute;left:8.2%;top:49%;transform:translateY(-50%);width:40%;max-width:540px;animation:fade-rise 1.5s both}.eyebrow{color:var(--gold);margin:0 0 27px}h1{margin:0;font-weight:400;line-height:.91;text-shadow:0 3px 32px #090c0b33}h1 span{display:block;font-size:clamp(35px,4.3vw,68px);font-style:italic;font-weight:400;line-height:1.1;letter-spacing:-.025em;margin-left:4px}h1 strong{font-family:'UnifrakturMaguntia',Georgia,serif;font-weight:400;display:block;font-size:clamp(105px,11.8vw,183px);line-height:1.12;letter-spacing:-.055em;margin-left:-5px}.title-ornament{display:flex;align-items:center;gap:15px;font-size:14px;color:var(--gold);margin:17px 0 23px;width:141px}.title-ornament span{height:1px;background:linear-gradient(90deg,var(--gold),transparent);width:56px;opacity:.6}.title-ornament span:first-child{transform:rotate(180deg)}.tagline{font-size:21px;font-style:italic;font-weight:400;color:#e8ddc6c9;line-height:1.45;margin:0 0 36px}.start-actions{display:flex;align-items:flex-start;flex-direction:column;gap:17px}.start-link{position:relative;display:inline-flex;align-items:center;justify-content:space-between;gap:44px;font-family:var(--serif);font-size:22px;line-height:1.4;padding:0 0 9px;border-bottom:1px solid #e3ca954f;transition:color .2s,border-color .2s;text-align:left;min-width:220px}.start-link span{font-size:29px;line-height:1;transition:transform .3s}.start-link:hover{color:var(--gold);border-color:var(--gold)}.start-link:hover span{transform:translateX(7px)}.reading-note{font-family:var(--sans);font-size:10px;letter-spacing:.07em;color:#d4c6ac80;margin:27px 0 0}.has-save #begin-button{font-size:16px;border:0;min-width:0;padding:0;color:var(--muted);gap:16px}.has-save #begin-button span{font-size:20px}.title-footer{position:absolute;bottom:29px;left:44px;right:44px;display:flex;justify-content:space-between;font-family:var(--sans);font-size:9px;letter-spacing:.1em;color:#e3d9c08c}.reading-screen{position:absolute;inset:0}.dialogue{position:absolute;left:8.2%;right:8.2%;bottom:82px;max-width:1010px;animation:fade-rise .7s both}.speaker{color:var(--gold);font-style:italic;font-size:19px;letter-spacing:.04em;margin:0 0 14px;display:flex;align-items:center;gap:16px}.speaker:before{content:'';height:1px;width:24px;background:var(--gold);opacity:.6}.story-text{font-size:var(--story-size);font-weight:500;line-height:1.48;letter-spacing:.005em;margin:0;max-width:890px;min-height:2.96em;text-shadow:0 2px 16px #0008;white-space:pre-line}.story-text .cursor{display:inline-block;height:.85em;width:1px;background:var(--gold);margin-left:5px;vertical-align:baseline;animation:blink 1s step-end infinite}.next-link{font-family:var(--sans);font-size:10px;letter-spacing:.12em;color:var(--gold);text-transform:uppercase;display:flex;align-items:center;gap:25px;margin-top:25px;min-height:29px;padding:0}.next-link span{font-size:26px;font-family:var(--serif);transition:transform .2s}.next-link:hover span{transform:translateX(6px)}.reading-footer{position:absolute;bottom:21px;left:43px;right:43px;display:flex;justify-content:space-between;align-items:center}.reading-footer .quiet{font-size:9px;color:#d4c9b480;letter-spacing:.07em}.reading-footer .quiet:hover{color:var(--ivory)}.read-hint{font-family:var(--sans);font-size:9px;letter-spacing:.08em;color:#d4c9b459}.choices{display:flex;flex-direction:column;gap:0;max-width:720px;margin-top:24px}.choice{display:flex;align-items:baseline;gap:20px;text-align:left;border-top:1px solid var(--line);padding:14px 8px 14px 0;line-height:1.25;font-size:21px;transition:color .2s,padding .25s}.choice:last-child{border-bottom:1px solid var(--line)}.choice:hover,.choice:focus-visible{color:var(--gold);padding-left:9px}.choice-number{font-style:italic;font-size:15px;color:#d6b98599;min-width:21px}.choice-arrow{margin-left:auto;color:var(--gold);font-size:24px;opacity:0;transition:opacity .2s}.choice:hover .choice-arrow{opacity:1}.has-choices .dialogue{bottom:75px}.has-choices .story-text{font-size:24px;min-height:0;max-width:900px}.text-hidden .dialogue,.text-hidden .topbar,.text-hidden #history-button,.text-hidden .read-hint{opacity:0;pointer-events:none}.text-hidden .shade{opacity:0}.dialogue,.topbar,.shade{transition:opacity .35s}.ending-screen{position:absolute;left:8.2%;top:51%;transform:translateY(-50%);max-width:570px;width:70%;animation:fade-rise 1.5s both}.ending-screen h2{font-size:clamp(45px,4.7vw,74px);font-weight:400;line-height:1.04;letter-spacing:-.03em;margin:0}.ending-screen>p:not(.eyebrow):not(.reading-note){font-size:24px;line-height:1.45;margin:0 0 24px;color:#e6dbc5d6}.ending-screen .ending-echo{font-style:italic;color:var(--gold)!important;font-size:20px!important}.ending-screen .start-link{font-size:20px;margin-top:8px}.ending-screen .eyebrow{margin-bottom:20px}.toast{position:absolute;left:50%;bottom:32px;transform:translate(-50%,10px);margin:0;padding:10px 18px;background:#101511d9;border:1px solid var(--line);font-family:var(--sans);font-size:11px;opacity:0;pointer-events:none;transition:.3s;z-index:9}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{background:#151a16f7;color:var(--ivory);border:1px solid #d8c89c3d;padding:35px 40px 38px;width:min(640px,calc(100% - 36px));max-height:85svh;box-shadow:0 25px 120px #0008}dialog::backdrop{background:#08100dd6;backdrop-filter:blur(12px)}dialog[open]{animation:fade-rise .3s both}.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:20px}.dialog-top h2{font-weight:400;font-size:35px;font-style:italic;margin:0;letter-spacing:-.02em}.close-button{font-family:var(--sans);font-size:28px;font-weight:400;color:var(--muted);padding:0;min-width:36px;min-height:36px}.close-button:hover{color:var(--ivory)}.menu-tabs{display:flex;gap:26px;border-bottom:1px solid var(--line);margin-top:28px}.menu-tabs button{font-family:var(--sans);font-size:11px;color:var(--muted);padding:0 0 13px}.menu-tabs button[aria-current]{color:var(--gold);border-bottom:1px solid var(--gold)}.menu-body{padding-top:25px}.menu-copy{font-size:20px;line-height:1.5;color:var(--muted);margin:0 0 20px}.menu-kicker{font:10px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin:0 0 10px}.menu-link{width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;border-bottom:1px solid var(--line);padding:15px 0;font-size:23px}.menu-link:hover{color:var(--gold)}.menu-link small{font:10px var(--sans);color:var(--muted)}.menu-endings{margin-top:28px;padding-top:0}.ending-row{font-size:17px;color:var(--muted);padding:7px 0;display:flex;gap:15px}.ending-row.found{color:var(--gold)}.ending-row span:first-child{font:11px var(--sans);align-self:center;min-width:18px}.setting{padding:17px 0;border-bottom:1px solid var(--line)}.setting label,.setting-label{font-size:21px;display:block;margin-bottom:10px}.setting select{appearance:none;background:#ffffff08;color:var(--ivory);font:13px var(--sans);padding:10px 14px;border:1px solid var(--line);border-radius:0;width:100%}.setting select option{background:#171e18}.setting p{font:11px/1.6 var(--sans);color:var(--muted);margin:8px 0 0}.setting.inline{display:flex;align-items:center;justify-content:space-between;gap:20px}.setting.inline label{margin:0}.setting input[type=checkbox]{accent-color:var(--gold);width:18px;height:18px;cursor:pointer}.shortcut{font:11px/1.8 var(--sans);color:var(--muted);margin-top:24px}.shortcut kbd{color:var(--gold);font:11px var(--sans)}.credits{font-size:18px;line-height:1.6;color:var(--muted)}.credits p{margin-top:0}.credits a{color:var(--gold);text-underline-offset:4px}.credits details{font:11px/1.9 var(--sans);margin-top:20px}.credits summary{cursor:pointer;color:var(--ivory)}.reference-links{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:12px}.history-list{margin-top:22px;max-height:60svh;overflow-y:auto;padding-right:14px;scrollbar-color:#8c7951 #151a16;scrollbar-width:thin}.history-entry{padding:17px 0;border-top:1px solid var(--line)}.history-entry .history-speaker{font-size:17px;color:var(--gold);font-style:italic;display:block;margin-bottom:7px}.history-entry p{font-size:21px;line-height:1.45;margin:0;color:var(--ivory)}.history-entry.choice-entry p{color:var(--gold);font-style:italic}.text-button{font-size:19px;border-bottom:1px solid var(--line);padding:8px 0}.text-button:hover,.accent{color:var(--gold)}#confirm-dialog{max-width:470px}#confirm-dialog>p{font-size:21px;line-height:1.4;color:var(--muted)}.confirm-actions{display:flex;justify-content:space-between;gap:20px;margin-top:28px}.no-script{position:absolute;inset:20%;z-index:10;background:var(--ink);padding:40px;font-size:24px}.moth{position:absolute;width:3px;height:3px;border-radius:50%;background:#eed5a9;opacity:0;filter:blur(.3px);animation:float-moth linear infinite}.moth:nth-child(3n){background:#db684b;width:2px;height:2px}@keyframes fade-rise{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}@keyframes scene-drift{from{transform:scale(1.045)}to{transform:scale(1.005)}}@keyframes blink{50%{opacity:0}}@keyframes float-moth{0%{transform:translate(0,25px);opacity:0}20%{opacity:.5}80%{opacity:.3}100%{transform:translate(45px,-140px);opacity:0}}@media(min-width:1700px){.dialogue{bottom:110px}.story-text{max-width:970px;font-size:31px}.title-screen{max-width:600px}.tagline{font-size:25px}}@media(max-height:750px) and (min-width:701px){.title-screen{top:50%}h1 strong{font-size:130px}h1 span{font-size:48px}.eyebrow{margin-bottom:18px}.tagline{margin-bottom:24px}.title-ornament{margin:10px 0 17px}.reading-note{margin-top:20px}.topbar{padding-top:23px}.dialogue{bottom:65px}.story-text{font-size:25px}.has-choices .story-text{font-size:22px}.choice{font-size:19px;padding:11px 0}.choices{margin-top:18px}.ending-screen{max-width:550px}.ending-screen h2{font-size:53px}.ending-screen>p:not(.eyebrow):not(.reading-note){font-size:21px;margin-bottom:16px}.ending-screen .eyebrow{margin-bottom:15px}}@media(max-width:700px){.topbar{padding:21px 22px}.signature{gap:9px}.signature svg{width:20px;height:29px}.signature span{font-size:8px;letter-spacing:.12em;max-width:45vw}.top-actions{gap:15px}.quiet{font-size:10px;gap:8px}.desktop-label{display:none}.nav-divider{display:none}.scene{background-position:65% center}.is-title .scene{background-position:64% center}.is-title .shade{background:linear-gradient(0deg,rgba(6,12,10,.95),rgba(6,12,10,.82) 28%,rgba(6,12,10,.27) 58%,rgba(6,12,10,.08)),linear-gradient(90deg,#08100d22,transparent)}.title-screen{left:8%;top:auto;bottom:14%;transform:none;width:85%;max-width:430px}h1 span{font-size:40px}h1 strong{font-size:120px;line-height:1.1}.eyebrow{font-size:8px;letter-spacing:.19em;margin-bottom:18px}.title-ornament{margin:9px 0 15px;width:110px;gap:11px;font-size:11px}.tagline{font-size:19px;margin-bottom:25px}.start-link{font-size:21px;min-width:220px}.reading-note{font-size:9px;margin-top:20px}.title-footer{left:23px;right:23px;bottom:23px;font-size:8px}.title-footer span:last-child{display:none}.dialogue{left:7%;right:7%;bottom:81px}.speaker{font-size:17px;margin-bottom:12px;gap:11px}.speaker:before{width:18px}.story-text{font-size:clamp(23px,5.8vw,28px);line-height:1.42;font-weight:500;min-height:4.26em}.shade{background:linear-gradient(0deg,rgba(5,11,9,.98) 0%,rgba(5,11,9,.88) 20%,rgba(5,11,9,.4) 47%,transparent 72%),linear-gradient(180deg,#08100d88,transparent 20%)}.next-link{margin-top:18px}.has-choices .dialogue{bottom:76px}.has-choices .story-text{font-size:22px;line-height:1.4}.choices{margin-top:19px}.choice{font-size:19px;padding:13px 0;gap:14px}.choice-number{font-size:14px}.choice-arrow{opacity:.5}.reading-footer{left:23px;right:23px;bottom:20px}.read-hint{display:none}.reading-footer .quiet{font-size:9px}.ending-screen{left:8%;width:84%;top:auto;bottom:12%;transform:none;max-width:480px}.ending-screen h2{font-size:47px;max-width:330px}.ending-screen>p:not(.eyebrow):not(.reading-note){font-size:22px;line-height:1.35;margin-bottom:20px}.ending-screen .ending-echo{font-size:19px!important}.is-ending .shade{background:linear-gradient(0deg,#07100cf5,#07100cd9 48%,#07100c66 75%,#07100c55)}dialog{padding:25px 23px;max-height:87svh}.dialog-top h2{font-size:29px}.menu-tabs{gap:23px;margin-top:23px}.menu-tabs button{font-size:10px}.menu-link{font-size:21px}.menu-copy{font-size:19px}.credits{font-size:17px}.confirm-actions{flex-direction:column;align-items:flex-start;gap:12px}}@media(max-width:700px) and (max-height:690px){.title-screen{bottom:11%}h1 strong{font-size:102px}h1 span{font-size:33px}.tagline{margin-bottom:19px}.eyebrow{margin-bottom:13px}.reading-note{margin-top:17px}.dialogue{bottom:65px}.speaker{margin-bottom:8px}.story-text{font-size:22px;line-height:1.35}.has-choices .story-text{font-size:20px}.choice{font-size:17px;padding:10px 0}.ending-screen{bottom:10%}.ending-screen h2{font-size:39px}.ending-screen>p:not(.eyebrow):not(.reading-note){font-size:20px}.ending-screen .start-link{font-size:18px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.scene{transform:none}.moth{display:none}}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-motion .scene,.no-motion .moth{animation:none!important;transition:none!important}.no-motion .scene{transform:none}.no-motion .dialogue,.no-motion .title-screen,.no-motion .ending-screen{animation:none!important}@media(max-width:700px){.large-text .story-text{font-size:29px}.large-text.has-choices .story-text{font-size:25px}}@media(max-width:700px) and (max-height:690px){.large-text .story-text{font-size:25px}.large-text.has-choices .story-text{font-size:23px}}
@media(max-height:500px) and (min-width:701px){.topbar{padding:12px 26px}.signature svg{height:25px}.title-screen{left:7%;top:52%}.title-screen .eyebrow{margin-bottom:11px;font-size:8px}h1 span{font-size:29px}h1 strong{font-size:83px}.title-screen .title-ornament{display:none}.tagline{font-size:18px;margin:12px 0 17px}.start-link{font-size:19px;min-width:195px;padding-bottom:5px}.reading-note{margin-top:13px;font-size:8px}.title-footer{bottom:13px;left:27px;right:27px;font-size:8px}.dialogue,.has-choices .dialogue{bottom:48px;left:7%}.speaker{font-size:15px;margin-bottom:8px}.story-text,.has-choices .story-text{font-size:20px;line-height:1.35;min-height:0}.next-link{margin-top:12px}.choices{margin-top:12px;max-width:740px}.choice{font-size:17px;padding:8px 0;gap:15px}.reading-footer{bottom:5px;left:27px;right:27px}.ending-screen{left:7%;top:53%;max-width:600px}.ending-screen h2{font-size:38px}.ending-screen>p:not(.eyebrow):not(.reading-note){font-size:18px;margin-bottom:13px}.ending-screen .eyebrow{margin-bottom:13px}.ending-screen .title-ornament{margin:8px 0 12px}.ending-screen .start-link{font-size:17px}}
/* Expression variants dissolve without restarting the camera movement. */
.scene.active{animation:none;transform:none}.scene{transform:none}#scenery{animation:scene-drift 45s ease-in-out alternate infinite}.expression-change .scene{transition-duration:.55s}.no-motion #scenery{animation:none;transform:none}
/* The artwork collection stays inside the menu; previews do not change the story. */
#menu-dialog.gallery-open{width:min(1000px,calc(100% - 36px))}.gallery-intro .menu-copy{font-size:18px;max-width:620px;margin-bottom:23px}.art-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px 20px;padding-bottom:5px}.art-card{display:block;text-align:left;min-width:0;padding:0}.art-thumbnail{display:block;overflow:hidden;background:#0c100e;aspect-ratio:1672/941;border:1px solid var(--line)}.art-thumbnail img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s,opacity .35s;opacity:.87}.art-card:hover img,.art-card:focus-visible img{transform:scale(1.035);opacity:1}.art-card-meta{display:flex;justify-content:space-between;gap:10px;font:9px var(--sans);text-transform:uppercase;letter-spacing:.11em;color:var(--gold);margin-top:11px}.art-card-meta>span{color:var(--muted);text-align:right}.art-card-title{display:block;font-size:21px;line-height:1.15;margin-top:7px}.art-card:hover .art-card-title{color:var(--gold)}.art-viewer{width:min(1440px,calc(100% - 40px));max-width:none;max-height:94svh;padding:22px 26px 17px;background:#101510fc;overflow:hidden}.art-viewer .dialog-top{margin-bottom:16px}.art-viewer .dialog-top h2{font-size:28px}.art-viewer .menu-kicker{font-size:9px;margin-bottom:5px}.art-stage{height:min(66svh,740px);display:flex;align-items:center;justify-content:center;background:#080c09;position:relative}.art-stage img{display:block;width:100%;height:100%;object-fit:contain;transition:opacity .18s}.art-stage.is-loading img{opacity:.3}.art-error{font:16px/1.5 var(--serif);color:var(--muted);padding:30px;text-align:center}.art-viewer-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:12px}.art-step{display:flex;align-items:center;gap:12px;color:var(--gold);font-size:23px;min-height:40px;padding:0 7px}.art-step span{font:11px var(--sans);color:var(--ivory)}.art-step:hover span{color:var(--gold)}#art-count{font:10px var(--sans);letter-spacing:.15em;color:var(--muted)}@media(max-width:700px){.menu-tabs{justify-content:space-between;gap:10px}.art-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 13px}.art-card-meta{font-size:8px;letter-spacing:.04em;gap:6px;flex-direction:column}.art-card-meta>span{text-align:left}.art-card-title{font-size:18px}.gallery-intro .menu-copy{font-size:17px}.art-viewer{width:calc(100% - 20px);padding:20px 15px 12px}.art-viewer .dialog-top h2{font-size:25px}.art-stage{height:min(57svh,600px)}.art-viewer .dialog-top{gap:12px}.art-viewer-footer{margin-top:9px}.art-step{padding:0 3px;gap:8px}}@media(max-height:500px) and (min-width:701px){.art-viewer{padding:10px 16px 5px}.art-viewer .dialog-top{margin-bottom:8px}.art-viewer .dialog-top h2{font-size:22px}.art-stage{height:58svh}.art-viewer-footer{margin-top:3px}.art-step{min-height:30px}}@media(prefers-reduced-motion:reduce){#scenery{animation:none;transform:none}}
/* Reserve the complete sentence and its controls before revealing any letters. */
.story-text{display:grid}.story-text .text-measure,.story-text .visible-text{grid-area:1/1;min-width:0}.story-text .text-measure{visibility:hidden;pointer-events:none;user-select:none}.story-text .cursor{position:absolute;width:0;margin-left:2px;border-left:1px solid var(--gold);background:none}.dialogue.is-typing .next-link,.dialogue.is-typing .choices{visibility:hidden;pointer-events:none}.dialogue .next-link:disabled,.dialogue .choice:disabled{opacity:1}
/* Opacity transitions are owned by the scene loader, with an opaque base below. */
.scene{transition:none}
/* Ink moves inside an already laid-out paragraph; the reading panel stays anchored. */
.dialogue{animation:none}.ink-word{display:inline-block;opacity:0;transform:none;vertical-align:baseline}.ink-word.revealed{opacity:1;animation:ink-arrive .28s ease-out both}.ink-word.ink-emphasis{font-style:italic;color:var(--voice-ink,var(--gold))}.ink-complete .ink-word.revealed{animation:none;filter:none;transform:none}.dialogue .next-link,.dialogue .choices{transition:opacity .18s ease}.dialogue.is-typing .next-link,.dialogue.is-typing .choices{opacity:0}
.dialogue[data-treatment=place] .speaker,.dialogue[data-treatment=vow] .speaker{font-family:'UnifrakturMaguntia',Georgia,serif;font-style:normal;font-size:27px;letter-spacing:0;line-height:1.3}.dialogue[data-treatment=place] .speaker:before{width:17px;height:17px;background:none;content:'✦';font:17px/1 var(--serif)}.dialogue[data-treatment=oracle]{--voice-ink:#e4c58e}.dialogue[data-treatment=oracle] .speaker:before{width:15px;height:15px;background:none;content:'◈';font:17px/1 var(--serif)}.dialogue[data-treatment=oracle] .ink-word.revealed{animation:omen-ink .45s ease-out both}.dialogue[data-treatment=water]{--voice-ink:#b2d0c7}.dialogue[data-treatment=water] .speaker{color:#b2d0c7}.dialogue[data-treatment=water] .speaker:before{width:18px;height:15px;background:none;content:'⌁';font:24px/.6 var(--serif)}.dialogue[data-treatment=water] .ink-word.revealed{animation:water-ink .6s ease-out both}.dialogue[data-treatment=edict]{--voice-ink:#edb294}.dialogue[data-treatment=edict] .speaker:before{width:17px;height:15px;background:none;content:'†';font:20px/.7 var(--serif)}.dialogue[data-treatment=edict] .ink-word.revealed{animation:seal-ink .32s ease-out both}.dialogue[data-treatment=echo]{--voice-ink:#f0dbbc}.dialogue[data-treatment=echo] .story-text{font-style:italic;text-shadow:0 0 24px #e5c7a52b,0 2px 16px #0008}.dialogue[data-treatment=echo] .speaker:before{width:17px;height:15px;background:none;content:'◌';font:20px/.7 var(--serif)}.dialogue[data-treatment=echo] .ink-word.revealed{animation:ghost-ink .85s ease-out both}.dialogue[data-treatment=letter] .story-text{font-style:italic;line-height:1.55;max-width:680px;padding-left:24px;border-left:1px solid #d7ba8359}.dialogue[data-treatment=letter] .ink-word.revealed{animation:letter-ink .6s ease-out both}.dialogue[data-treatment=vow] .speaker:before{width:17px;height:17px;background:none;content:'✧';font:23px/.7 var(--serif)}
/* Veyra's words unfurl; Aster's arrive with the clear beat of a tool. */
.dialogue[data-treatment=harvest]{--voice-ink:#dec8a1}.dialogue[data-treatment=harvest] .speaker:before{width:18px;height:15px;background:none;content:'❧';font:22px/.7 var(--serif)}.dialogue[data-treatment=harvest] .ink-word.revealed{animation:omen-ink .65s ease-out both}.dialogue[data-treatment=forge]{--voice-ink:#dfae88}.dialogue[data-treatment=forge] .speaker:before{width:18px;height:15px;background:none;content:'✣';font:18px/.8 var(--serif)}.dialogue[data-treatment=forge] .ink-word.revealed{animation:seal-ink .18s ease-out both}
.margin-echo{position:absolute;left:10%;top:29%;max-width:58%;pointer-events:none;user-select:none;z-index:2;font-family:var(--serif);font-size:clamp(33px,3.6vw,64px);font-style:italic;font-weight:400;line-height:1.1;letter-spacing:-.025em;transform:rotate(-4deg);color:#f2dfbc}.margin-echo span{display:block;animation:wandering-echo 7s ease-in-out both}.text-hidden .margin-echo{display:none}.no-motion .margin-echo,#novel[data-presentation=quiet] .margin-echo{display:none}.no-motion .ink-word.revealed,#novel[data-presentation=quiet] .ink-word.revealed{animation:none;filter:none;transform:none}#novel[data-presentation=quiet] .dialogue .speaker{font:italic 19px var(--serif);letter-spacing:.04em;color:var(--gold)}#novel[data-presentation=quiet] .dialogue .speaker:before{content:'';width:24px;height:1px;background:var(--gold)}#novel[data-presentation=quiet] .dialogue .story-text{font-style:normal;padding-left:0;border-left:0;line-height:1.48}#novel[data-presentation=quiet] .ink-emphasis{font-style:normal;color:inherit}
@keyframes ink-arrive{from{opacity:0}to{opacity:1}}@keyframes omen-ink{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes water-ink{0%{opacity:0;transform:translateY(3px)}65%{opacity:1;transform:translateY(-1px)}100%{opacity:1;transform:translateY(0)}}@keyframes seal-ink{from{opacity:0;filter:blur(.7px)}to{opacity:1;filter:blur(0)}}@keyframes ghost-ink{from{opacity:0;filter:blur(4px);transform:translateY(5px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}@keyframes letter-ink{from{opacity:0;filter:blur(1.1px)}to{opacity:1;filter:blur(0)}}@keyframes wandering-echo{0%{opacity:0;transform:translate(-8px,9px);filter:blur(3px)}20%{opacity:.27;filter:blur(0)}75%{opacity:.21}100%{opacity:0;transform:translate(17px,-7px);filter:blur(2px)}}
@media(max-width:700px){.dialogue[data-treatment=place] .speaker,.dialogue[data-treatment=vow] .speaker{font-size:23px}.dialogue[data-treatment=letter] .story-text{padding-left:18px}.margin-echo{left:8%;top:25%;max-width:79%;font-size:37px}#novel[data-presentation=quiet] .dialogue .speaker{font-size:17px}}@media(max-height:500px) and (min-width:701px){.dialogue[data-treatment=place] .speaker,.dialogue[data-treatment=vow] .speaker{font-size:21px}.margin-echo{top:25%;font-size:35px}}@media(prefers-reduced-motion:reduce){.margin-echo{display:none}.ink-word.revealed{animation:none!important;filter:none;transform:none}}
.dialogue .ink-complete .ink-word.revealed{animation:none;filter:none;transform:none;opacity:1}

/* Each new composition keeps its own focal point on narrow screens. */
@media(max-width:700px){.is-reading .scene,.is-ending .scene{background-position:var(--mobile-focus,65% center)}}

/* Atmosphere sits above the painting and below the reading shade and controls. */
#scenery{z-index:0}#atmosphere{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;contain:strict}.shade{z-index:2}.grain{z-index:3}.title-screen,.title-footer,.reading-screen,.ending-screen{z-index:4}.topbar{z-index:5}.margin-echo{z-index:4}.setting .volume-label{font:12px var(--sans);color:var(--muted);margin-top:20px}.setting input[type=range]{width:100%;accent-color:var(--gold);height:26px;cursor:pointer}.no-motion #atmosphere{display:none}@media(prefers-reduced-motion:reduce){#atmosphere{display:none}}
