@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700;800&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--ink:#f4ecd9;--muted:#c5b5d1;--purple:#bc73ff;--line:#ba7cec40;--walk:0}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:#09050f;color:var(--ink);font:16px/1.6 'DM Sans',sans-serif;overflow:hidden}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.65;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #e2b8ff;outline-offset:5px}h1,h2,h3{font-family:'Barlow Condensed',Impact,sans-serif;line-height:1.05;margin:0}h1{font-size:clamp(3rem,5.7vw,5.5rem)}h2{font-size:2.5rem}h3{font-size:1.8rem}p{margin:.75rem 0}em{font-style:normal;color:var(--purple)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;border:1px solid #d8a7ff;background:#c482ff;color:#180921;padding:.8rem 1.6rem;border-radius:4px;font-weight:700;box-shadow:0 4px 28px #a442e92b}.button:hover{background:#dfb4ff}.button.secondary{background:#20122ccc;color:#eeddf7;border-color:#ad7dcc}.quiet{background:transparent;color:#d8c0e8;border:0;border-bottom:1px solid #9970b866;min-height:44px;padding:.5rem .15rem;font-size:.875rem}.quiet:hover{color:#fff}.eyebrow{color:#d0a7ed;letter-spacing:.13em;font-size:.75rem;font-weight:600}.adventure-header{position:fixed;inset:0 0 auto;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:20px 4%;background:linear-gradient(#09050fd9,transparent);pointer-events:none}.adventure-header>*{pointer-events:auto}.brand{font:800 1.8rem/.9 'Barlow Condensed',sans-serif;letter-spacing:.04em}.brand span{display:block;margin-top:8px;font:500 .625rem/1.2 'DM Sans',sans-serif;letter-spacing:.1em}#chapter-label{font-size:.75rem;letter-spacing:.12em;color:#dbc2e9}.header-actions{display:flex;align-items:center;gap:1.4rem}.menu-toggle{min-height:44px;display:flex;align-items:center;gap:1rem;background:#120b1dbb;border:1px solid #bd8bdf66;color:#f3e4fc;padding:.5rem .9rem;border-radius:4px}.menu-toggle span{font-size:1.1rem}
#adventure{position:relative;width:100%;height:100svh;min-height:650px;overflow:hidden;isolation:isolate;--walk:0}.scene-world{position:absolute;inset:0;z-index:-3;background:#10091a}.landscape{position:absolute;width:100%;height:100%;object-fit:cover;transition:opacity .9s,transform 1.2s;inset:0}.landscape-world{opacity:1;object-position:50% 50%}.landscape-path{opacity:0;object-position:50% 50%}.scene-shade{position:absolute;inset:0;background:linear-gradient(#08030f80,transparent 30%,#0804101a 55%,#080410f2 100%),radial-gradient(ellipse,transparent 35%,#09050f77);pointer-events:none}.mist{position:absolute;width:160%;height:35%;left:-30%;bottom:10%;background:radial-gradient(ellipse,#dab0ff28,transparent 62%);filter:blur(30px);animation:mist-drift 18s ease-in-out infinite alternate;pointer-events:none}.mist-b{bottom:38%;opacity:.5;animation-delay:-9s;animation-duration:25s}@keyframes mist-drift{from{transform:translateX(-10%)}to{transform:translateX(10%)}}
.scene-title{position:absolute;top:16%;left:7%;right:7%;text-align:center;z-index:5;pointer-events:none;text-shadow:0 3px 30px #08020f}.scene-title h1{white-space:pre-line;letter-spacing:-.015em}.scene-title>p:last-child{color:#dac5e7;font-size:1rem;margin-top:1rem}.scene-title .eyebrow{margin-bottom:1rem}.scene-dialogue{position:absolute;bottom:7%;left:50%;transform:translateX(-50%);z-index:10;width:min(560px,90%);text-align:center;padding:1.2rem 1.5rem;background:linear-gradient(#100918c9,#100918ed);border:1px solid #b779dd45;border-radius:7px;box-shadow:0 12px 40px #0004;backdrop-filter:blur(10px)}#dialogue-speaker{font-size:.75rem;letter-spacing:.17em;color:#ce9eed;margin:0 0 .5rem}#dialogue-line{font-size:1rem;line-height:1.5;margin:0 auto 1rem;max-width:460px}.scene-actions{display:flex;flex-direction:column;align-items:center;gap:.4rem}.scene-actions .button{min-width:230px}.scene-footnote{position:absolute;bottom:1.8%;left:6%;right:6%;margin:0;text-align:center;font-size:.75rem;color:#bda2cf;z-index:11}.gate-stage{position:absolute;inset:0;z-index:2;perspective:1500px;pointer-events:none;transition:visibility 0s 2.4s}.gate-left,.gate-right{position:absolute;top:50%;height:max(100svh,67vw);width:50%;overflow:hidden;transform:translateY(-50%);transition:transform 2.2s cubic-bezier(.3,.05,.2,1),filter 2.2s;transform-origin:left center}.gate-right{right:0;transform-origin:right center}.gate-stage img{position:absolute;width:200%;height:100%;object-fit:cover;max-width:none;top:0}.gate-left img{left:0;object-position:left center}.gate-right img{right:0;object-position:right center}.opening-gates .gate-left{transform:translateY(-50%) rotateY(108deg);filter:brightness(.4)}.opening-gates .gate-right{transform:translateY(-50%) rotateY(-108deg);filter:brightness(.4)}.opening-gates .gate-stage{visibility:hidden}.opening-gates[data-scene="gates"] .scene-title,.opening-gates[data-scene="gates"] .scene-dialogue{opacity:0;transition:opacity .4s}
.guardian{position:absolute;left:50%;top:45%;width:min(56svh,470px);transform:translate(-50%,-50%);z-index:4;opacity:0;pointer-events:none;transition:opacity .5s}.guardian img,.guardian video{display:block;width:100%;mix-blend-mode:screen;mask-image:radial-gradient(ellipse at 50% 46%,#000 43%,transparent 76%)}.guardian video{position:absolute;inset:0;opacity:0}.guardian.film-playing #guardian-performance,.guardian.reaction-playing #guardian-reaction{opacity:1}.guardian.film-playing #guardian-pose,.guardian.reaction-playing #guardian-pose{opacity:0}[data-scene="meeting"] .guardian,[data-scene="explore"] .guardian{opacity:1}[data-scene="meeting"] .scene-title{top:12%}[data-scene="meeting"] .scene-title h1{font-size:clamp(2.4rem,4vw,4rem)}[data-scene="meeting"] .scene-title>p:last-child{display:none}[data-scene="meeting"] .scene-title .eyebrow{margin-bottom:.4rem}[data-scene="meeting"] .guardian{top:48%}
[data-scene="path"] .landscape-world{opacity:0}[data-scene="path"] .landscape-path{opacity:1;transform:scale(calc(1 + var(--walk)*.45));transform-origin:50% 42%;transition:opacity .9s,transform .1s linear}[data-scene="path"] .scene-title{top:13%}[data-scene="path"] .scene-title h1{font-size:clamp(2.5rem,4.6vw,4.5rem)}.path-light{position:absolute;z-index:4;width:30px;height:30px;left:calc(45% + var(--walk)*5%);top:calc(66% - var(--walk)*22%);transform:translate(-50%,-50%);display:none}.path-light span{display:block;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle,#fff2ff 6%,#ddbbff 20%,#bd64ff66 45%,transparent 70%);box-shadow:0 0 35px 10px #a442ff99;animation:soul-pulse 2s ease-in-out infinite}.path-light:after{content:'';position:absolute;left:45%;top:25%;width:4px;height:80px;background:linear-gradient(#c57dff99,transparent);filter:blur(3px);transform:rotate(15deg);transform-origin:top}#path-progress{display:none;position:absolute;z-index:12;width:min(360px,75%);height:3px;bottom:5.7%;left:50%;transform:translateX(-50%);background:#e7bfff26}#path-progress span{display:block;width:calc(var(--walk)*100%);height:100%;background:#d6a2ff;box-shadow:0 0 15px #ba6bff}[data-scene="path"] .path-light,[data-scene="path"] #path-progress{display:block}.button.holding{background:#e3baff;box-shadow:0 0 35px #be6bff77}@keyframes soul-pulse{50%{transform:scale(.75);opacity:.7}}
.crypt-room{position:absolute;inset:0;z-index:2;background:radial-gradient(ellipse,#25132e88,#0b0711ed)}.grave-stage{position:absolute;top:7%;bottom:19%;left:50%;transform:translateX(-50%);aspect-ratio:2/3;max-width:95%;width:auto}.empty-grave,#grave-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border:0;background:none;display:block;box-shadow:0 0 90px #120815}.empty-grave{background:url('assets/crypt-interiors.webp') left center/300% 100%;border-radius:4px;cursor:pointer}.grave-stage[data-style="violet"] .empty-grave{background-position:center}.grave-stage[data-style="ancient"] .empty-grave{background-position:right}.grave-caption{position:absolute;bottom:0;left:0;right:0;font-size:.875rem;text-align:center;background:linear-gradient(transparent,#0b0614db);padding:1rem .5rem .5rem;margin:0;color:#ead7f2}.grave-actions{position:absolute;bottom:5%;left:50%;transform:translateX(-50%);width:min(660px,90%);display:flex;align-items:center;justify-content:center;gap:.45rem 1rem;flex-wrap:wrap}.grave-actions .button{min-height:44px;padding:.6rem 1.15rem}.grave-actions .quiet{font-size:.8125rem}#grave-status{position:absolute;left:5%;right:5%;bottom:1%;font-size:.75rem;line-height:1.4;text-align:center;color:#cab3d8;margin:0}#grave-status:empty{display:none}[data-scene="room"] .scene-title,[data-scene="claimed"] .scene-title{top:11%;left:5%;right:auto;text-align:left;max-width:27%;z-index:4}[data-scene="room"] .scene-title h1,[data-scene="claimed"] .scene-title h1{font-size:clamp(2.5rem,4vw,4rem)}[data-scene="room"] .scene-dialogue{bottom:5%}[data-scene="room"] .scene-footnote{bottom:1%}[data-scene="claimed"] .grave-stage{bottom:23%}.soul-arrival{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 65%,#b552ef66,transparent 50%)}.soul-home .soul-arrival{animation:home-light 2.2s ease both}@keyframes home-light{0%,100%{opacity:0}40%{opacity:1}}.carving{filter:drop-shadow(0 0 18px #ae58eb66)}
.explore-places{position:absolute;inset:0;z-index:8;pointer-events:none}.place{position:absolute;pointer-events:auto;border:1px solid #c18ddd77;background:#11091de0;color:#f3e4fa;padding:1rem 1.3rem;text-align:left;border-radius:4px;backdrop-filter:blur(8px);transition:background .2s,transform .2s}.place:hover{background:#432254;transform:translateY(-3px)}.place span{display:block;font-size:.625rem;letter-spacing:.09em;color:#cca4e5}.place strong{font:600 1.7rem/1.1 'Barlow Condensed',sans-serif;display:block;margin-top:.3rem}.place-crypt{right:12%;top:38%}.place-story{left:12%;top:37%}.place-coffin{left:15%;top:58%}.place-cute{right:15%;top:58%}[data-scene="explore"] .scene-title{top:12%}[data-scene="explore"] .scene-title h1{font-size:clamp(2.5rem,4.5vw,4.5rem)}[data-scene="explore"] .scene-title .eyebrow{display:none}[data-scene="explore"] .scene-dialogue{padding:.8rem 1rem;bottom:5%}[data-scene="explore"] .scene-actions{flex-direction:row;justify-content:center;flex-wrap:wrap}[data-scene="explore"] #dialogue-speaker{display:none}[data-scene="explore"] .scene-footnote{display:none}
.scene-arriving .scene-title{animation:scene-title-in .7s ease both}@keyframes scene-title-in{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
dialog{background:#140c1e;color:var(--ink);border:1px solid #a26ebc88;border-radius:8px;padding:2rem;width:min(520px,92vw);max-height:85svh;overflow:auto;box-shadow:0 20px 100px #000b}dialog::backdrop{background:#06030dde;backdrop-filter:blur(9px)}.dialog-close{position:absolute;right:.75rem;top:.5rem;border:0;background:none;color:#dcc6ea;font-size:2rem;width:44px;height:44px}.menu-dialog nav{display:grid;margin:1.5rem 0}.menu-dialog nav a{border-bottom:1px solid var(--line);padding:.7rem .2rem;font-size:1.1rem}.menu-dialog nav a:hover{color:#d7a5ff}.menu-socials{display:flex;gap:1.5rem;flex-wrap:wrap;color:#d9aaff;margin:1rem 0}.menu-socials a{min-height:44px;display:inline-flex;align-items:center}.claim-intro{color:var(--muted)}.grave-styles{border:0;margin:1.5rem 0;padding:0}.grave-styles legend{font-size:.875rem;margin-bottom:.6rem}.grave-style-options{display:grid;gap:.5rem}.grave-style-options label{display:flex;gap:.8rem;align-items:center;padding:.5rem .75rem;border:1px solid #76508e66;border-radius:4px;font-size:.9375rem;cursor:pointer}.grave-style-options label:has(input:checked){border-color:#cf95f2;background:#352045}.grave-style-options input{accent-color:#bc73ff;width:18px;height:18px}.swatch{width:32px;height:42px;background:url('assets/crypt-interiors.webp') left center/300% 100%;border-radius:2px}.swatch-violet{background-position:center}.swatch-ancient{background-position:right}.name-entry{display:grid;gap:.75rem;margin-top:.5rem}.name-entry input{background:#09050f;color:#fff;border:1px solid #aa7ac9;border-radius:4px;padding:.85rem;font-size:1rem;width:100%}#name-help{font-size:.75rem;color:var(--muted)}#grave-response{font:600 1.3rem/1.3 'Barlow Condensed',sans-serif;color:#d5b3e8;margin-top:1.25rem}.claim-dialog label[for]{font-size:.875rem}
.info-overlay{position:fixed;inset:0;z-index:40;overflow:auto;background:linear-gradient(#0c0713f2,#0c0713f8),url('assets/adventure-path.webp') center/cover;background-attachment:fixed;padding:0 5% 4rem}.info-toolbar{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;background:#0c0713ed;backdrop-filter:blur(12px)}.info-toolbar .button{min-height:44px;padding:.5rem 1rem}.panel{max-width:1100px;margin:2rem auto}.panel-heading{margin-bottom:2rem}.panel p,.panel li{color:var(--muted)}.panel .eyebrow{color:#d3a4f4}.story-layout{display:grid;grid-template-columns:1.3fr .8fr;gap:8%;align-items:center}.story-book h1{font-size:clamp(3rem,5vw,4.6rem);margin-bottom:1.5rem}.chapter-number{font-size:.75rem;letter-spacing:.1em}.story-book p{line-height:1.8}.welcome-player video{width:100%;max-height:60svh}.welcome-player>p{font-size:.875rem;text-align:center}.chapter-controls{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--line)}.chapter-controls span{font-size:.875rem}.chapter-controls .button{margin-left:auto}.merch-preview{margin:2rem 0 3rem}.merch-title{display:flex;gap:1rem;align-items:center;justify-content:space-between}.merch-title span{font-size:.75rem;white-space:nowrap;border:1px solid var(--line);padding:.4rem}.merch-preview img{width:100%;height:auto;margin:1rem 0}.merch-items{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;font-size:.875rem}.merch-note{font-size:.875rem}.reaction-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-top:1.5rem}.clip-wrap{position:relative}.clip-wrap video{width:100%}.play-clip{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);white-space:nowrap;min-height:44px;background:#13091ee8;border:1px solid #9f74b6;color:#fff;padding:.5rem 1rem}.clip-label{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.clip-label a{font-size:.875rem;text-decoration:underline;min-height:44px;display:inline-flex;align-items:center}.reaction-card>p{font-size:.875rem}.rule-list{margin-top:2rem}.rule-list details{border-bottom:1px solid var(--line);padding:1.2rem 0}.rule-list summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:1rem}.rule-list summary span{color:#c99fed;font-size:.875rem}.rule-list p{max-width:750px}.path-heading{margin-bottom:2.5rem}.path-heading>p:last-child{font-size:1.125rem}.reaper-path{display:grid;gap:1rem}.path-phase{border:1px solid var(--line);border-radius:5px;background:#1b1025aa}.path-phase summary{list-style:none;display:flex;gap:1rem;padding:1.5rem;cursor:pointer;align-items:center}.path-number{font:700 2.5rem 'Barlow Condensed';color:#cf9ced}.path-title{display:grid;gap:.3rem}.path-title strong{font:600 2.25rem/1.1 'Barlow Condensed'}.path-label{font-size:.75rem;letter-spacing:.08em;color:#d1a8ee}.path-toggle{margin-left:auto;font-size:1.8rem}.path-toggle:after{content:'+'}.path-phase[open] .path-toggle:after{content:'−'}.path-body{padding:0 1.5rem 1.5rem 5.2rem}.path-body li{margin:.65rem 0}.path-milestone{border-top:1px solid var(--line);padding-top:1rem}.path-milestone strong{display:block;color:#dfc3f3;font-size:.875rem}.milestone-complete>span{font-size:.75rem;border:1px solid var(--line);padding:.1rem .3rem;color:#dec1f2}.milestone-complete a{text-decoration:underline}.path-future,#path-progress{margin:2.5rem 0;border-top:1px solid var(--line);padding-top:1.5rem}.path-date{font-size:.875rem}.token-layout,.token-bottom{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-top:1.5rem}.token-intro>p:not(.eyebrow){font-size:1.125rem;margin:1.5rem 0}.token-facts{padding:1.5rem;background:#21132dbb;border:1px solid var(--line);border-radius:5px}.token-facts dl{margin:0}.token-facts dl>div{padding:1rem 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem}.token-facts dd{margin:0;text-align:right}.token-facts dt{color:var(--muted)}.contract-notice{padding-top:1.5rem}.contract-notice h2{font-size:2rem;margin:.5rem 0}.token-bottom{border-top:1px solid var(--line);padding-top:2rem;margin-top:3rem}.official-links{display:flex;gap:1rem;flex-wrap:wrap}.text-link{color:#d9b3f6;min-height:44px;display:inline-flex;align-items:center;text-decoration:underline;text-underline-offset:4px}.noscript{position:fixed;inset:0;z-index:99;display:grid;place-content:center;padding:2rem;background:#10091b}
@media(max-width:700px){.adventure-header{padding:14px 5%;gap:.5rem}.brand{font-size:1.5rem}.brand span{display:none}#chapter-label{display:none}.header-actions{gap:.8rem}.header-actions .quiet{font-size:.75rem}.menu-toggle{font-size:.875rem;gap:.65rem;padding:.4rem .65rem}#adventure{min-height:620px}.scene-title{top:16%;left:6%;right:6%}.scene-title h1{font-size:clamp(2.6rem,11vw,4rem)}.scene-title .eyebrow{font-size:.625rem;letter-spacing:.08em;max-width:260px;margin:0 auto 1rem}.scene-title>p:last-child{font-size:.9375rem}.scene-dialogue{bottom:6%;padding:1rem;width:90%}#dialogue-line{font-size:.9375rem;line-height:1.45}.scene-footnote{font-size:.6875rem;bottom:1.5%}.scene-actions .button{width:100%;min-height:48px}.scene-actions .quiet{font-size:.8125rem}.guardian{width:min(48svh,370px)}[data-scene="meeting"] .guardian{top:43%;width:min(46svh,360px)}[data-scene="meeting"] .scene-title{top:11%}[data-scene="meeting"] .scene-title h1{font-size:2.4rem}[data-scene="meeting"] .scene-title .eyebrow{display:none}[data-scene="meeting"] .scene-footnote{max-width:310px;margin:auto}[data-scene="path"] .scene-title{top:12%}[data-scene="path"] .scene-title h1{font-size:2.5rem}.path-light{top:calc(63% - var(--walk)*23%)}#path-progress{bottom:4.7%}.gate-stage img{object-fit:fill}.gate-left,.gate-right{height:100%;top:0;transform:none;width:50%}.opening-gates .gate-left{transform:rotateY(105deg)}.opening-gates .gate-right{transform:rotateY(-105deg)}
[data-scene="room"] .scene-title,[data-scene="claimed"] .scene-title{top:10%;left:5%;right:5%;max-width:none;text-align:center}[data-scene="room"] .scene-title h1,[data-scene="claimed"] .scene-title h1{font-size:2rem}[data-scene="room"] .scene-title .eyebrow,[data-scene="claimed"] .scene-title .eyebrow{display:none}[data-scene="room"] .scene-title>p:last-child{display:none}[data-scene="claimed"] .scene-title>p:last-child{font-size:.875rem;margin:.35rem 0}.grave-stage{top:16%;bottom:27%;max-width:96%}.grave-caption{font-size:.75rem;padding:.7rem .3rem .3rem}[data-scene="room"] .scene-dialogue{bottom:4%;padding:.7rem 1rem}[data-scene="room"] #dialogue-speaker{display:none}[data-scene="room"] #dialogue-line{margin-bottom:.5rem;font-size:.875rem}[data-scene="room"] .scene-footnote{display:none}[data-scene="claimed"] .grave-stage{top:20%;bottom:27%}.grave-actions{bottom:6%;gap:.2rem .8rem;width:92%}.grave-actions .button{font-size:.875rem;flex:1 1 40%;padding:.5rem .7rem}.grave-actions .quiet{font-size:.75rem;min-height:40px}.grave-actions #finish-adventure{order:8;flex-basis:100%}#grave-status{bottom:1%;font-size:.6875rem;max-height:2.8em;overflow:auto}
[data-scene="explore"] .guardian{top:43%;width:min(40svh,300px)}[data-scene="explore"] .scene-title{top:11%}[data-scene="explore"] .scene-title h1{font-size:2.3rem}[data-scene="explore"] .scene-title>p:last-child{font-size:.875rem}.place{padding:.6rem .8rem;max-width:42%}.place span{font-size:.5625rem}.place strong{font-size:1.35rem}.place-story{left:5%;top:31%}.place-crypt{right:5%;top:31%}.place-coffin{left:5%;top:54%}.place-cute{right:5%;top:54%}[data-scene="explore"] .scene-dialogue{bottom:4%;padding:.7rem 1rem}[data-scene="explore"] .scene-actions{gap:0}[data-scene="explore"] #dialogue-line{font-size:.875rem;margin-bottom:.5rem}
dialog{padding:1.5rem}.menu-dialog nav a{font-size:1rem}.story-layout,.token-layout,.token-bottom{grid-template-columns:1fr;gap:2rem}.welcome-player{max-width:350px;margin:auto}.reaction-grid{grid-template-columns:1fr;max-width:420px;margin-inline:auto}.merch-title{display:block}.merch-title h2{font-size:2rem;margin-bottom:1rem}.merch-items{grid-template-columns:1fr 1fr}.panel h1{font-size:2.8rem}.path-phase summary{padding:1rem;gap:.8rem}.path-title strong{font-size:1.8rem}.path-number{font-size:2rem}.path-body{padding:0 1rem 1rem}.token-facts dl>div{flex-wrap:wrap}.token-facts dd{text-align:left}.chapter-controls .button{font-size:.875rem;padding:.6rem 1rem}.info-overlay{padding-inline:5%}}
@media(max-height:680px){.scene-title{top:13%}.scene-title h1{font-size:2.4rem}.scene-title .eyebrow{margin-bottom:.5rem}.scene-dialogue{bottom:4%;padding:.65rem 1rem}.scene-footnote{display:none}.guardian{top:42%;width:270px}[data-scene="meeting"] .guardian{width:270px;top:42%}.scene-actions{gap:0}#dialogue-line{margin-bottom:.6rem}#path-progress{bottom:2%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.motion-paused .mist,.motion-paused .path-light span{animation-play-state:paused}.motion-paused .scene-arriving .scene-title{animation:none}.motion-paused .landscape{transition:none}
/* Preserve the gate artwork's proportions on phones and wide screens. */
.gate-stage{inset:0 auto 0 50%;width:max(100vw,150svh);transform:translateX(-50%)}.gate-left,.gate-right{top:50%;height:max(100svh,67vw);transform:translateY(-50%)}.gate-stage img{object-fit:fill}.gate-left{transform-origin:10% center}.gate-right{transform-origin:90% center}.opening-gates .gate-left{transform:translateY(-50%) rotateY(105deg)}.opening-gates .gate-right{transform:translateY(-50%) rotateY(-105deg)}#adventure:not([data-scene="gates"]) .gate-stage{display:none}
@media(min-width:701px){[data-scene="room"] .scene-title,[data-scene="claimed"] .scene-title{max-width:24%}}
@media(max-height:620px){body{overflow:auto}#adventure{height:680px;min-height:680px}.scene-dialogue{bottom:5%}.adventure-header{position:absolute}}

/* Continuous scene: artwork, character and destinations share one coordinate plane. */
#adventure{height:100svh;min-height:620px;--walk:0;background:#110a20}
.scene-world{z-index:0;overflow:hidden;background:#160d27}
.world-plane{position:absolute;left:50%;top:50%;width:max(100vw,78svh);height:max(100vw,78svh);transform:translate(-50%,-50%);transform-origin:74% 45%;will-change:transform;transition:transform 1.6s cubic-bezier(.2,.65,.2,1),filter 1s}
.world-art{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:fill}
.scene-shade{background:linear-gradient(#070410cc,transparent 30%,transparent 66%,#070410e8);z-index:5;pointer-events:none}
.mist{z-index:5;pointer-events:none;bottom:18%;opacity:.55}
.gate-stage{z-index:6;perspective:1200px;transition:opacity .9s 2.5s,visibility 0s 3.5s}
.gate-left,.gate-right{transition:transform 3s cubic-bezier(.25,.02,.25,1),filter 3s}
#adventure:not([data-scene="gates"]) .gate-stage{display:block;opacity:0;visibility:hidden}
.opening-gates .gate-stage{opacity:0;visibility:hidden}
.guardian,[data-scene="meeting"] .guardian,[data-scene="explore"] .guardian{top:68%;left:53%;width:34%;transform:translate(-50%,-50%);opacity:1;z-index:3;transition:opacity 1s;filter:drop-shadow(0 12px 20px #08030f80)}
.guardian img,.guardian video{mask-image:radial-gradient(ellipse at 50% 43%,#000 43%,transparent 73%);mix-blend-mode:screen}
[data-scene="gates"] .guardian{opacity:.7}
[data-scene="path"] .guardian{opacity:0}
[data-scene="path"] .world-plane{transform:translate(calc(-50% - var(--walk)*24%),calc(-50% + var(--walk)*5%)) scale(calc(1 + var(--walk)*1.8));transition:none}
[data-scene="room"] .world-plane,[data-scene="claimed"] .world-plane{transform:translate(-74%,-45%) scale(2.8);filter:blur(12px)}
#soul-field{position:absolute;inset:0;z-index:7;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen;opacity:.85}
.scene-title{z-index:8;top:16%;text-shadow:0 4px 36px #000,0 2px 8px #000}
.scene-title h1{font-size:clamp(3rem,6vw,6rem);line-height:.98;letter-spacing:-.01em}
.scene-title>p:last-child{font-size:1.1rem}.scene-title .eyebrow{font-size:.875rem}
[data-scene="meeting"] .scene-title,[data-scene="path"] .scene-title{top:14%}
[data-scene="meeting"] .scene-title h1,[data-scene="path"] .scene-title h1{font-size:clamp(2.5rem,5vw,4.6rem)}
[data-scene="meeting"] .scene-title .eyebrow,[data-scene="path"] .scene-title .eyebrow,[data-scene="path"] .scene-title>p:last-child{display:none}
.scene-dialogue{z-index:10;border:0;box-shadow:none;backdrop-filter:none;background:none;bottom:7%;width:min(660px,90%);padding:0;text-shadow:0 2px 9px #000,0 2px 24px #000}
#dialogue-line{font-size:1.125rem;max-width:600px;line-height:1.5}#dialogue-speaker{font-size:.875rem;margin-bottom:.3rem}
.scene-actions{gap:.4rem}.scene-actions .button{border-radius:40px;min-width:245px;background:linear-gradient(135deg,#e1b5ff,#a74deb);box-shadow:0 0 32px #b557ed66}
.scene-footnote{font-size:.8125rem;bottom:1.5%;color:#d8bce9}
.cinematic[data-scene="meeting"] .scene-actions .button,.cinematic[data-scene="path"] .scene-actions .button{background:#160b24a8;color:#f2dfff;border-color:#b987d38c;box-shadow:none;min-height:44px;font-size:.875rem}
[data-scene="meeting"] #dialogue-speaker,[data-scene="path"] #dialogue-speaker{display:none}
#path-progress{display:none;position:absolute;bottom:3.8%;left:50%;transform:translateX(-50%);width:min(220px,60%);height:2px;background:#e5c6ff33;border:0;margin:0;padding:0;z-index:9}
#path-progress span{width:calc(var(--walk)*100%);height:100%;display:block;background:#e2bcff;box-shadow:0 0 12px #d09aff}
[data-scene="path"] #path-progress{display:block}
#chapter-dots{position:absolute;right:4%;top:50%;z-index:9;display:grid;gap:12px}#chapter-dots i{width:4px;height:4px;border-radius:50%;background:#c1a0d166}#chapter-dots[data-chapter="0"] i:nth-child(1),#chapter-dots[data-chapter="1"] i:nth-child(2),#chapter-dots[data-chapter="2"] i:nth-child(3),#chapter-dots[data-chapter="3"] i:nth-child(4),#chapter-dots[data-chapter="4"] i:nth-child(4){background:#f1d9ff;box-shadow:0 0 12px #cf87ff}
/* Destinations are attached to the pictured door, sign, coffin and Grimlet. */
.explore-places{z-index:5}.place{background:transparent;border:0;box-shadow:none;backdrop-filter:none;border-radius:12px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:0;text-shadow:0 2px 6px #000,0 0 18px #10021f;max-width:none;transition:filter .2s;}
.place:hover{background:#bd67ff16;transform:none;filter:drop-shadow(0 0 15px #ad5fe9)}.place:focus-visible{outline:2px solid #edcaff;outline-offset:0;background:#bd67ff16}
.place strong{font-size:clamp(1.4rem,2.8vw,2.6rem);margin:0}.place span{font-size:.75rem;letter-spacing:.06em;order:2;color:#e0baf4}
.place-crypt{left:66%;top:31%;width:16%;height:24%;right:auto;justify-content:end;padding-bottom:2%}
.place-story{left:17%;top:35%;width:21%;height:13%;transform:rotate(-5deg)}.place-story:hover{transform:rotate(-5deg)}
.place-coffin{left:17%;top:58%;width:23%;height:17%;right:auto;justify-content:end;padding-bottom:2%}
.place-cute{left:43%;top:56%;width:19%;height:23%;right:auto;justify-content:end;padding-bottom:0}.place-cute span{display:none}.place-cute strong{font-size:1rem;background:#120b1bab;padding:.4rem 1rem;border:1px solid #b884d777;border-radius:20px}
[data-scene="explore"] .scene-title{top:12%}[data-scene="explore"] .scene-title h1{font-size:clamp(2.6rem,5vw,4.6rem)}
[data-scene="explore"] .scene-title>p:last-child{font-size:.9375rem}
[data-scene="explore"] .scene-dialogue{bottom:4%;background:none;padding:0}.scene-actions .quiet{font-size:.875rem}
/* The Crypt finishes the journey in the stone, with useful controls below. */
.crypt-room{z-index:8;background:radial-gradient(ellipse,#24132c55,#080510e8);animation:crypt-enter 1.2s ease both}
@keyframes crypt-enter{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
.grave-stage{top:7%;bottom:21%;box-shadow:0 20px 80px #0008}
[data-scene="claimed"] .grave-stage{bottom:24%}
[data-scene="room"] .scene-title,[data-scene="claimed"] .scene-title{z-index:9}
.grave-actions{bottom:6%;max-width:650px}.grave-actions .button{border-radius:28px}.grave-caption{font-size:.875rem}#grave-status{font-size:.8125rem;bottom:1.5%;max-width:650px;margin:auto}
.soul-home .soul-arrival{animation:home-light 3s ease both;background:radial-gradient(ellipse at 50% 59%,#d5b1ff99,transparent 48%);mix-blend-mode:screen}
.roadmap-progress{position:static;display:block;border-top:1px solid var(--line);padding-top:2rem;margin-top:2rem}
.info-overlay{background:linear-gradient(110deg,#090511f5,#1b0c29ee),url('assets/adventure-path.webp') center/cover}
.panel-heading,.path-heading{border-bottom:1px solid var(--line);padding-bottom:2rem}
.path-phase{border:0;border-left:2px solid #80509a;background:linear-gradient(90deg,#38204777,transparent);border-radius:0}.path-phase[open]{border-left-color:#d09bf5}.path-number{font-size:3.5rem;opacity:.7}
.token-facts{border-radius:0;border-top:2px solid #c388ed;background:linear-gradient(135deg,#32203e99,#170d22)}
.story-book h1{font-size:clamp(3rem,5vw,5.5rem)}.story-book p{font-size:1.0625rem}.chapter-number{font-size:.875rem}
@media(max-width:700px){
 .world-plane{width:max(100vw,78svh);height:max(100vw,78svh);top:49%}
 .adventure-header{padding:calc(12px + env(safe-area-inset-top)) 5% 12px}.header-actions .quiet{font-size:.8125rem}
 .scene-title{top:15%;left:5%;right:5%}.scene-title h1{font-size:clamp(2.8rem,11vw,4.5rem)}.scene-title .eyebrow{font-size:.75rem;max-width:290px}.scene-title>p:last-child{font-size:1rem}
 .scene-dialogue{bottom:7%;width:88%;padding:0}#dialogue-line{font-size:1rem;line-height:1.45}.scene-actions .button{width:auto;min-width:230px}.scene-footnote{font-size:.75rem;bottom:2%}
 [data-scene="meeting"] .scene-title,[data-scene="path"] .scene-title{top:13%}[data-scene="meeting"] .scene-title h1,[data-scene="path"] .scene-title h1{font-size:2.7rem}
 .guardian,[data-scene="meeting"] .guardian,[data-scene="explore"] .guardian{width:37%;top:67%;left:52%}
 .place strong{font-size:1.5rem}.place span{font-size:.75rem;letter-spacing:0}.place-crypt{left:66%;width:15%}.place-story{left:20%;width:19%}.place-coffin{left:20%;width:20%}.place-cute{left:43%;width:19%;top:57%}
 [data-scene="explore"] .scene-title{top:13%}[data-scene="explore"] .scene-title h1{font-size:2.7rem}[data-scene="explore"] .scene-title>p:last-child{max-width:240px;margin:.75rem auto}
 [data-scene="explore"] .scene-dialogue{bottom:5%}[data-scene="explore"] #dialogue-line{font-size:.9375rem}
 [data-scene="room"] .scene-title,[data-scene="claimed"] .scene-title{top:12%;left:5%;right:5%;text-align:center;max-width:none}[data-scene="room"] .scene-title h1,[data-scene="claimed"] .scene-title h1{font-size:2.2rem}
 .grave-stage{top:19%;bottom:27%}[data-scene="claimed"] .grave-stage{top:21%;bottom:29%}
 [data-scene="room"] .scene-dialogue{bottom:5%;padding:0}[data-scene="room"] #dialogue-line{font-size:1rem}.grave-actions{bottom:7%;gap:.2rem .9rem}.grave-actions .quiet{font-size:.8125rem}#grave-status{bottom:1%;font-size:.75rem;max-height:3.2em;line-height:1.5}
 #chapter-dots{right:3%;gap:10px}.scene-footnote{left:8%;right:8%}
 .merch-title span,.path-label,.path-date,.merch-items,.merch-note{font-size:.875rem}.path-title strong{font-size:2rem}.path-body{line-height:1.75}
}
@media(min-aspect-ratio:16/10){.world-plane{width:100vw;height:100vw;top:43%}.guardian,[data-scene="meeting"] .guardian,[data-scene="explore"] .guardian{width:24%;top:58%}.place-coffin{top:56%}.place-cute{top:50%;height:20%}}
@media(max-height:620px){#adventure{height:680px}.world-plane{width:max(100vw,610px);height:max(100vw,610px)}.adventure-header{position:absolute}}
@media(prefers-reduced-motion:reduce){.crypt-room{animation:none}#soul-field{display:none}.world-plane{transition:none}}
.motion-paused #soul-field{display:none}.motion-paused .crypt-room{animation:none}
[data-scene="gates"] .world-plane{transform:translate(-50%,-50%) scale(.94)}.opening-gates[data-scene="gates"] .world-plane{transform:translate(-50%,-50%) scale(1);transition:transform 3s cubic-bezier(.25,.02,.25,1)}
/* Corrections measured against the October 2 iPhone recording. */
.scene-world{background:radial-gradient(ellipse at 50% 35%,#281b40,#100919 75%)}
.world-plane{mask-image:linear-gradient(transparent,#000 12%,#000 86%,transparent)}
#adventure[data-scene="gates"] .guardian,#adventure[data-scene="meeting"] .guardian{top:53%;left:50%;width:45%}
#adventure[data-scene="meeting"] .scene-title{top:12%}
#adventure[data-scene="meeting"] .scene-dialogue{bottom:6%;background:linear-gradient(transparent,#10091dcc 30%,#10091d88);padding:1rem;border-radius:12px}
#scene-dialogue #dialogue-line{max-width:540px}
#art-loader{position:absolute;inset:0;z-index:20;background:radial-gradient(ellipse at 50% 48%,#2c1241,#09050f 65%);display:grid;place-content:center;text-align:center;padding:2rem;transition:opacity .4s}
#art-loader strong{font:700 2.5rem 'Barlow Condensed',sans-serif;letter-spacing:.12em;color:#ead5ff}#art-loader p{font-size:1rem;color:#d2b4e5}#art-loader button{margin:auto}
.art-loading .scene-world,.art-loading .gate-stage,.art-loading .scene-title,.art-loading .scene-dialogue,.art-loading #soul-field,.art-loading .scene-footnote,.art-loading #chapter-dots{visibility:hidden}
.art-loading #art-loader{display:grid}body:not(.art-loading) #art-loader{display:none}
.crypt-room{background:radial-gradient(ellipse at 50% 50%,#29153944,#080511dd)}
.grave-stage{box-shadow:none}.empty-grave,#grave-canvas{box-shadow:none;mask-image:linear-gradient(transparent,#000 7%,#000 88%,transparent)}
[data-scene="room"] #dialogue-line,[data-scene="room"] #dialogue-speaker{display:none}
[data-scene="room"] .scene-actions{flex-direction:row;justify-content:center;gap:1rem;flex-wrap:wrap}
[data-scene="room"] .scene-dialogue{bottom:3%}
@media(max-width:700px){
 #adventure[data-scene="gates"] .guardian,#adventure[data-scene="meeting"] .guardian{top:53%;width:48%;left:50%}
 #adventure[data-scene="meeting"] .scene-title{top:12%}
 #adventure[data-scene="meeting"] .scene-dialogue{bottom:5%;padding:.75rem 0}
 #adventure[data-scene="room"] .grave-stage{top:16%;bottom:15%;max-width:100%}
 #adventure[data-scene="claimed"] .grave-stage{top:17%;bottom:25%;max-width:100%}
 #adventure[data-scene="room"] .scene-dialogue{bottom:3%;width:94%}
 #adventure[data-scene="room"] .scene-actions{gap:.3rem 1rem}
 #adventure[data-scene="room"] .scene-title{top:10%}
 .grave-caption{background:linear-gradient(transparent,#100817cc);font-size:.875rem}
}
@media(min-aspect-ratio:16/10){#adventure[data-scene="gates"] .guardian,#adventure[data-scene="meeting"] .guardian{width:29%;top:52%}}
/* Let the action lead; short captions appear, then leave the scene. */
#adventure:is([data-scene="gates"],[data-scene="meeting"],[data-scene="path"],[data-scene="explore"]) .scene-title{opacity:0;pointer-events:none;animation:none}
#adventure .scene-footnote,#chapter-dots,#chapter-label,#dialogue-speaker{display:none}
#adventure[data-scene="gates"] #dialogue-line{display:none}
#adventure[data-scene="meeting"] .scene-dialogue,#adventure[data-scene="path"] .scene-dialogue,#adventure[data-scene="explore"] .scene-dialogue{background:none;backdrop-filter:none;border:0;border-radius:0;box-shadow:none;padding:0;bottom:4%}
#adventure[data-scene="meeting"] #dialogue-line,#adventure[data-scene="path"] #dialogue-line{position:fixed;bottom:calc(100svh * .23);left:50%;transform:translateX(-50%);width:min(88vw,620px);margin:0;font-size:clamp(1.125rem,2vw,1.5rem);font-weight:500;text-shadow:0 2px 8px #000,0 0 28px #000;pointer-events:none}
/* The dialogue ancestor must not create a containing block for timed captions. */
#adventure:is([data-scene="meeting"],[data-scene="path"]) .scene-dialogue{left:5%;width:90%;transform:none}
.spoken-line{animation:caption-beat 4.8s ease both}
@keyframes caption-beat{0%{opacity:0;filter:blur(3px);translate:0 8px}16%,72%{opacity:1;filter:blur(0);translate:0 0}100%{opacity:0;filter:blur(0);translate:0 -4px}}
#adventure:is([data-scene="meeting"],[data-scene="path"]) .scene-actions{flex-direction:row;justify-content:center;gap:1.5rem}
#adventure:is([data-scene="meeting"],[data-scene="path"]) .scene-actions .button{min-width:0;width:auto;min-height:44px;border:0;border-bottom:1px solid #c08bdf66;border-radius:0;background:none;color:#d8c0e8;box-shadow:none;padding:.5rem .15rem;font-size:.875rem;font-weight:400}
#adventure[data-scene="gates"] .scene-dialogue{bottom:9%}
#adventure[data-scene="gates"] .scene-actions .button{font-size:1rem;padding:1rem 2rem}
#adventure[data-scene="explore"] #dialogue-line{font-size:1rem;margin-bottom:.5rem}
#adventure[data-scene="explore"] .scene-actions{flex-direction:row;gap:1rem}
#adventure[data-scene="explore"] .scene-actions .button{font-size:.875rem;min-width:0;width:auto;padding:.65rem 1.2rem}
#path-progress{bottom:2%}
#adventure[data-scene="room"] .scene-title .eyebrow,#adventure[data-scene="claimed"] .scene-title .eyebrow{display:none}
#adventure[data-scene="room"] .scene-title h1{font-size:clamp(1.75rem,3vw,2.5rem)}
@media(prefers-reduced-motion:reduce){.spoken-line{opacity:1;animation:none}}
.motion-paused .spoken-line{animation:none;opacity:1}

/* A single painted world; composite the whole character layer into it. */
#adventure .guardian{filter:none;mix-blend-mode:screen;isolation:auto}
#adventure .guardian img,#adventure .guardian video{mix-blend-mode:normal;mask-image:radial-gradient(ellipse at 50% 42%,#000 33%,#000c 48%,transparent 69%)}
.place span{display:none}.place-crypt{justify-content:end;padding-bottom:3%}.place strong{line-height:1.1}
.place-cute{justify-content:end}.place-cute strong{font-size:.9375rem;font-weight:500;background:#180d2599;border-color:#b884d744;padding:.35rem .8rem}
#adventure[data-scene="explore"] .scene-actions .quiet{font-size:.8125rem;color:#baa4c9}
@media(max-width:700px){.place-crypt strong{font-size:1.4rem;white-space:nowrap}.place-story strong,.place-coffin strong{font-size:1.5rem}}
