:root{--ink:#1c102b;--cream:#f5ead3;--gold:#e6bd77;--muted:#d2c3dc}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--ink);color:var(--cream);font-family:Quicksand,sans-serif;font-size:15px;line-height:1.85}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:7px}header{position:absolute;top:0;width:100%;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:30px 5%;gap:25px}.brand{display:flex;align-items:center;gap:12px;font-size:31px;color:var(--gold)}.brand span{font-size:12px;font-weight:700;letter-spacing:3px;color:var(--cream)}nav{display:flex;gap:35px;align-items:center;font-size:12px}.nav-cta{border-bottom:1px solid #e6bd7760;padding-bottom:8px}.nav-cta span{padding-left:20px}#motion{background:none;color:var(--cream);border:1px solid #f5ead34d;border-radius:50%;height:34px;width:34px;cursor:pointer}.journey{height:420vh;position:relative}.stage{height:100svh;min-height:650px;position:sticky;top:0;overflow:hidden;background:radial-gradient(ellipse at 70% 60%,#5a3174,#211231 65%)}.world{position:absolute;inset:0;background:url('assets/assembly-court.webp') center/cover;opacity:0;transform:scale(1.2)}.vignette{position:absolute;inset:0;background:linear-gradient(0deg,#1c102b,transparent 25%,#1c0b3145 90%);pointer-events:none}.intro{position:absolute;z-index:4;left:9%;top:27%;width:52%}.eyebrow{font-size:10px;letter-spacing:3px;font-weight:600;color:var(--gold);margin:0 0 24px}h1,h2,h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;line-height:1.04;margin:0 0 28px}h1{font-size:clamp(60px,6.6vw,104px);letter-spacing:-3px}em{font-weight:400;color:var(--gold)}.intro-copy{color:#d6c9df;font-size:14px;margin:25px 0 32px}.button{display:inline-flex;align-items:center;gap:45px;border:1px solid #e6bd7780;border-radius:3px;background:#e6bd7710;padding:13px 24px;font-size:12px;transition:background .3s,transform .3s}.button:hover{background:#e6bd7728;transform:translateY(-3px)}.button span{color:var(--gold);font-size:22px}.cabinet-wrap{position:absolute;right:9%;top:15%;width:34%;max-width:min(470px,50svh);aspect-ratio:2/3;perspective:1400px;transform-origin:50% 51%;will-change:transform;filter:drop-shadow(0 25px 40px #10041b99)}
.cabinet{position:relative;width:100%;height:100%;transform-style:preserve-3d}
.cabinet img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.cabinet-open,.cabinet-closed{position:absolute;inset:0}.cabinet-closed{mask-image:radial-gradient(ellipse 58% 63% at 50% 50%,#000 72%,transparent 100%)}
.cabinet-open{opacity:0}
.portal-glow{position:absolute;left:16%;right:16%;top:20%;bottom:17%;background:radial-gradient(ellipse at 48% 62%,#ffe4a065,transparent 65%);opacity:0;pointer-events:none;mix-blend-mode:screen}
.door{position:absolute;inset:0;backface-visibility:hidden;transform-style:preserve-3d;pointer-events:none}
.door.left{clip-path:polygon(16% 16.5%,49.9% 13.7%,49.9% 82.5%,16% 81%);transform-origin:16% 50%}
.door.right{clip-path:polygon(50.1% 13.7%,84% 16.5%,84% 81%,50.1% 82.5%);transform-origin:84% 50%}
.arrival{position:absolute;left:9%;top:29%;z-index:5;opacity:0;visibility:hidden}.arrival h2{font-size:clamp(70px,7vw,112px);letter-spacing:-2px}.arrival p:not(.eyebrow){font-size:15px;color:#ddd4d9}.text-link{display:inline-block;margin-top:15px;border-bottom:1px solid #e6bd7780;padding-bottom:7px;font-size:12px;color:var(--gold)}.journey-bottom{position:absolute;left:5%;right:5%;bottom:35px;display:flex;align-items:center;justify-content:space-between;font-size:8px;letter-spacing:2px;color:#c8c6c3}.scroll-hint{display:flex;align-items:center;gap:18px}.scroll-hint b{font-size:25px;font-weight:400}.progress-track{position:absolute;bottom:0;height:2px;background:#ffffff15;width:100%}.progress-track i{display:block;width:100%;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left}.stars{position:absolute;inset:0;pointer-events:none}.star{position:absolute;width:3px;height:3px;border-radius:50%;background:#f7db9d;box-shadow:0 0 8px #e6bd77;animation:float 5s ease-in-out infinite alternate}@keyframes float{to{transform:translate(12px,-25px);opacity:.3}}.section{padding:120px 9%;scroll-margin-top:0}h2{font-size:clamp(45px,4.5vw,68px);letter-spacing:-1.5px}.story{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;background:radial-gradient(ellipse at 0 100%,#65348055,transparent 60%)}.story-copy{padding-top:25px;color:var(--muted);font-size:14px}.story-copy .story-lead{color:var(--cream);font-size:18px;font-family:'Cormorant Garamond',serif;line-height:1.65}.divider{text-align:center;color:#a9885655;letter-spacing:10px;font-size:13px}.companions{text-align:center}.character-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:42px 28px;max-width:1280px;margin:60px auto 0;text-align:left}.character-grid article{overflow:hidden}.character-grid img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:18px;border:1px solid #c5a06b30;transition:transform .7s}.character-grid article:hover img{transform:translateY(-6px)}.character-grid article>div{padding:20px 2px 0}h3{font-size:43px;margin:12px 0}.character-grid h3{font-size:38px;margin:0 0 14px}.character-grid p{font-size:14px;line-height:1.8;color:var(--muted);margin:0}.companions-summary{max-width:760px;margin:60px auto 0;font-size:16px;color:var(--muted)}.quote{padding:65px 6% 90px;display:flex;align-items:center;justify-content:center;gap:55px;text-align:center}.quote>span{color:var(--gold);font-size:35px}.quote p{font-family:'Cormorant Garamond',serif;font-size:clamp(26px,3vw,45px);line-height:1.35}.book{display:grid;grid-template-columns:1fr 1fr;gap:12%;align-items:center;background:radial-gradient(ellipse at 25% 55%,#4a2864,transparent 60%);padding-top:80px}.book-display{perspective:1000px;text-align:center}.book-display img{width:80%;max-width:340px;box-shadow:20px 25px 45px #0008;transform:rotateY(13deg) rotateZ(-4deg);border-right:7px solid #b9ab90;transition:transform .7s}.book h2{font-size:clamp(39px,4vw,61px)}.book .author{font-size:10px;letter-spacing:3px;color:var(--gold);margin:30px 0}.book p{font-size:13px;color:var(--muted)}.book .launch-note{font-size:10px;margin-top:24px}footer{padding:35px 5%;border-top:1px solid #f5ead318;display:flex;justify-content:space-between;align-items:center}footer p,footer>a:last-child{font-size:10px;color:var(--muted)}.skip{position:fixed;top:-100px;z-index:100;background:var(--ink);padding:12px}.skip:focus{top:10px}.paused .star{animation-play-state:paused}.flash{position:absolute;inset:0;background:#fff9e7;opacity:0;pointer-events:none;z-index:8}#portal-start{position:absolute;top:110vh}

@media(max-width:700px){header{padding:22px 6%}.brand span{font-size:9px;letter-spacing:2px}nav{gap:15px}nav>a:not(.nav-cta){display:none}.nav-cta{font-size:10px}#motion{flex-shrink:0}.stage{min-height:840px}.intro{left:7%;top:17%;width:86%;text-align:center}h1{font-size:57px;letter-spacing:-2px}.intro .eyebrow{font-size:8px}.intro-copy{font-size:12px;line-height:1.6;margin:18px 0}.cabinet-wrap{width:44%;right:28%;top:62%;max-height:250px}.button{padding:8px 18px;gap:25px}.journey-bottom{bottom:22px;justify-content:center}.journey-bottom>span:first-child,.journey-bottom>span:last-child{display:none}.arrival{left:7%;right:7%;top:23%;text-align:center}.arrival h2{font-size:65px}.world{background-position:60% center}.section{padding:75px 7%}.story{grid-template-columns:1fr;gap:5px}.story-copy{padding:0}.character-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:40px auto 0;gap:32px 20px}.character-grid article>div{padding:18px 2px 0}.companions-summary{margin-top:42px;font-size:15px}.quote{gap:15px;padding:10px 5% 60px}.quote>span{font-size:19px}.book{grid-template-columns:1fr;gap:60px;text-align:center}.book-display img{width:65%}footer{flex-wrap:wrap;gap:10px;justify-content:center}footer p{display:none}footer .brand{width:100%;justify-content:center}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.star{animation:none}.journey{height:auto}.stage{position:relative}.cabinet-wrap{display:none}.world{opacity:.45;transform:none}.intro{width:84%}.arrival{display:none}.character-grid img,.book-display img,.button{transition:none}}

/* A plum atmosphere, with a feathered scrim anchored to the arrival copy. */
.world::after{content:"";position:absolute;inset:0;background:rgba(100,35,145,.38);mix-blend-mode:color;pointer-events:none}
.arrival{isolation:isolate;max-width:720px;text-shadow:0 2px 18px #10051e}
.arrival::before{content:"";position:absolute;z-index:-1;inset:-150px -190px;pointer-events:none;background:radial-gradient(ellipse at center,rgba(23,8,39,.96) 0%,rgba(28,9,47,.88) 25%,rgba(31,10,51,.63) 46%,rgba(35,12,57,.18) 65%,transparent 78%)}
.arrival p:not(.eyebrow){color:#f3eaf6}.arrival em{color:#ffe1a1}.arrival .text-link{color:#ffe1a1}
@media(max-width:700px){.arrival::before{inset:-100px -100px;background:radial-gradient(ellipse,rgba(23,8,39,.96) 0%,rgba(28,9,47,.9) 30%,rgba(31,10,51,.65) 50%,transparent 78%)}}

#train-closeup{position:absolute;top:210vh;pointer-events:none}

@media(max-width:480px){.character-grid{grid-template-columns:1fr;max-width:350px;gap:38px}.character-grid h3{font-size:38px}}

/* Book artwork and touch-friendly layouts. */
.nav-cta{display:inline-flex;align-items:center;gap:16px;white-space:nowrap}
.nav-cta span{padding-left:0}.nav-cta .nav-short{display:none}
.book-title img{display:block;width:100%;height:auto;max-width:560px;margin:auto}
.arrival-title>span{display:block;font-size:.72em;margin-bottom:14px}
.arrival-title img{display:block;width:min(600px,78vw);height:auto;filter:drop-shadow(0 3px 12px #16082580)}
.text-link{min-height:44px;display:inline-flex;align-items:center}
#motion{min-width:44px;min-height:44px}
@media(max-width:700px){
 header{gap:12px;padding:18px 6%}.brand{gap:8px;font-size:25px}.brand span{white-space:nowrap;letter-spacing:1.5px}
 nav{margin-left:auto}.nav-cta{min-height:44px;gap:8px;padding-bottom:0}.nav-cta .nav-full{display:none}.nav-cta .nav-short{display:inline}
 .stage{height:100svh;min-height:700px}.intro{top:16%}.intro h1{font-size:clamp(38px,8.8vw,60px);line-height:1.06;letter-spacing:-1.5px}
 .intro .eyebrow{letter-spacing:2px}.intro-copy{margin:20px 0}.button{min-height:48px}
 .cabinet-wrap{top:calc(62% - 30px);width:min(42%,180px);right:calc(50% - min(21%,90px))}
 .arrival{top:25%}.arrival-title img{width:100%;max-width:560px;margin:auto}.arrival h2{font-size:clamp(44px,9vw,65px)}
 .arrival .eyebrow{font-size:8px;letter-spacing:2px}.arrival-title>span{margin-bottom:12px}
 .book-title{max-width:500px;margin:0 auto 28px}.book .author{margin:24px 0}
}
@media(max-width:380px){header{gap:8px}.brand span{font-size:8px}.nav-cta{font-size:10px}.intro{top:17%}}
@media(max-width:700px) and (max-height:740px){.intro{top:15%}.intro h1{font-size:clamp(37px,8vw,50px)}.intro .eyebrow{margin-bottom:18px}.intro-copy{margin:16px 0}.cabinet-wrap{top:calc(65% - 30px);width:min(38%,155px);right:calc(50% - min(19%,77.5px))}}

.book-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;margin-top:28px}.book-actions .text-link{margin:0;gap:12px}.kindle-button{background:#e6bd7720}.book-actions .button{gap:24px}
@media(max-width:700px){.book-actions{justify-content:center;flex-direction:column;gap:12px}.book-actions .button{max-width:100%;justify-content:center}}
@media(min-width:600px) and (max-width:1000px) and (max-height:500px){
 header{padding:12px 5%}.brand span{font-size:9px}nav{gap:18px;font-size:10px}
 .stage{min-height:100svh}.intro{left:7%;top:25%;width:55%;text-align:left}.intro .eyebrow{font-size:8px;margin-bottom:12px}.intro h1{font-size:38px;letter-spacing:-1px;margin-bottom:12px}.intro-copy{font-size:11px;line-height:1.5;margin:12px 0}.intro .button{min-height:42px;padding:5px 16px}
 .cabinet-wrap{width:25%;right:7%;top:19%;max-width:180px}.journey-bottom{bottom:12px}
 .arrival{top:16%;left:7%;right:7%}.arrival .eyebrow{margin-bottom:12px;font-size:8px}.arrival h2{font-size:40px;margin-bottom:12px}.arrival-title>span{margin-bottom:5px}.arrival-title img{width:340px;max-width:100%}.arrival p:not(.eyebrow){font-size:12px;line-height:1.6;margin:8px 0}.arrival .text-link{margin-top:0}
}

/* A rendered physical book, with its own perspective and paper edges. */
.book-display{perspective:1200px}
.book-display img{display:block;width:100%;max-width:460px;height:auto;margin:auto;box-shadow:none;transform:none;border:0;filter:drop-shadow(0 22px 22px #09041055);transition:none}

.kindle-badge{display:inline-flex;align-items:center;border-radius:10px;overflow:hidden;max-width:100%;transition:transform .25s}
.kindle-badge img{display:block;width:66.67px;max-width:100%;height:auto}
.kindle-badge:hover{transform:translateY(-2px)}
@media(max-width:700px){.book-display img{width:100%;max-width:360px}.book{gap:35px}.kindle-badge img{width:66.67px}}
@media(prefers-reduced-motion:reduce){.kindle-badge{transition:none}.kindle-badge:hover{transform:none}}

.book-display img{transform-origin:50% 75%;backface-visibility:hidden}

/* The full cast shares one scrollable coverflow on every screen size. */
.companion-track{--companion-width:clamp(280px,28vw,360px);display:flex;align-items:flex-start;width:100vw;max-width:none;margin:40px 0 0 -9vw;gap:24px;padding:24px calc((100vw - var(--companion-width)) / 2) 12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.companion-track::-webkit-scrollbar{display:none}
.companion-track article{flex:0 0 var(--companion-width);scroll-snap-align:center;scroll-snap-stop:always;overflow:visible;perspective:1000px}
.companion-track img,.companion-track article:hover img{transform:rotateY(var(--card-turn,0deg)) scale(var(--card-scale,1));transition:transform .2s ease-out;transform-origin:center;backface-visibility:hidden}
.companion-track article>div{padding:20px 2px 0}
.companion-controls{display:grid;grid-template-columns:48px minmax(0,230px) 48px;align-items:center;justify-content:center;gap:12px;margin-top:22px}
.companion-controls button{width:48px;height:48px;border:1px solid #e6bd7760;border-radius:50%;background:#e6bd7710;color:var(--gold);font:22px Georgia,serif;cursor:pointer}
.companion-controls button:disabled{opacity:.3;cursor:default}
.companion-position{font-size:12px;color:var(--cream)}.companion-controls p{grid-column:1/-1;margin:0;color:var(--muted);font-size:11px;letter-spacing:1px}
@media(max-width:700px){.companion-track{--companion-width:min(76vw,320px);margin-left:-7vw;gap:16px}.companion-controls{grid-template-columns:48px minmax(0,180px) 48px}.companion-controls p{letter-spacing:0}}
@media(prefers-reduced-motion:reduce){.companion-track img,.companion-track article:hover img{transform:none;transition:none}}

/* Vector icons stay consistent across platforms and never render as emoji. */
.icon{display:inline-block;width:1.2em;height:1.2em;flex-shrink:0;vertical-align:-.2em;fill:none;stroke:currentColor}
.brand>.icon{width:28px;height:28px}.button .icon{color:var(--gold);width:22px;height:22px}
.text-link{gap:10px}#motion,.companion-controls button{display:inline-flex;align-items:center;justify-content:center}
#motion .icon{width:18px;height:18px}.companion-controls .icon{width:21px;height:21px}
.scroll-hint .icon{width:24px;height:24px}.quote>span .icon{width:30px;height:30px}
.divider{display:flex;align-items:center;justify-content:center;gap:24px;letter-spacing:0}
.divider>span{width:120px;height:1px;background:currentColor}.divider>.icon{width:18px;height:18px}.divider>.icon-moon{width:25px;height:25px}
@media(max-width:700px){.divider{gap:16px}.divider>span{width:60px}.quote>span .icon{width:19px;height:19px}}

.story{align-items:center}
.story-illustration{position:relative;margin:24px -28px 0;isolation:isolate}
.story-art-reveal{position:relative}
.story-illustration img{display:block;width:100%;height:auto;animation:scott-float 7s ease-in-out infinite;animation-play-state:paused;transform-origin:50% 75%}
.story-illustration::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 25% 43%,#ffd79245,transparent 25%);mix-blend-mode:screen;opacity:.16;animation:scott-lamplight 5.5s ease-in-out infinite;animation-play-state:paused}
.story-illustration.is-visible img,.story-illustration.is-visible::after{animation-play-state:running}
.paused .story-illustration img,.paused .story-illustration::after{animation-play-state:paused}
@keyframes scott-float{0%,100%{transform:translateY(0) rotate(-.3deg)}50%{transform:translateY(-7px) rotate(.3deg)}}
@keyframes scott-lamplight{0%,100%{opacity:.12}50%{opacity:.3}}
@media(max-width:700px){.story-illustration{max-width:540px;margin:24px -10px 30px}.story-copy{padding-top:0}}
@media(prefers-reduced-motion:reduce){.story-illustration img,.story-illustration::after{animation:none}.story-illustration img{transform:none}}

.story-phrase{white-space:nowrap}

footer .footer-credit{display:block;margin:0;font-size:12px;color:var(--muted)}
.footer-credit a{color:var(--gold);text-decoration:underline;text-underline-offset:4px}
@media(max-width:700px){footer{padding:28px 7%;gap:18px;text-align:center}footer .footer-credit{width:100%;line-height:1.8}}

.companion-stage{display:flow-root;position:relative}
.companion-stage.scroll-driven .companion-track{scroll-snap-type:none;scroll-behavior:auto}

/* Scroll captions share the cabinet timeline, with a soft scrim for readability. */
.journey{height:520vh}#portal-start{top:48vh}
.journey-captions{position:absolute;left:7%;right:7%;bottom:76px;z-index:7;min-height:70px;pointer-events:none;text-align:center}
.journey-caption{position:absolute;left:0;right:0;bottom:0;max-width:900px;margin:0 auto;padding:12px 20px;font-size:20px;line-height:1.65;color:var(--cream);opacity:0;visibility:hidden;text-shadow:0 2px 12px #140720;isolation:isolate}
.journey-caption::before{content:"";position:absolute;z-index:-1;inset:-20px -40px;background:radial-gradient(ellipse,#1c102be8 15%,#1c102b95 50%,transparent 75%)}
.journey-caption em{color:inherit}
.journey-bottom{justify-content:center;bottom:22px}
.arrival>p:not(.eyebrow){max-width:580px;line-height:1.8}
@media(max-width:700px){.journey-captions{left:5%;right:5%;bottom:67px}.journey-caption{padding:8px 10px;font-size:15px;line-height:1.7}.arrival>p:not(.eyebrow){font-size:14px;max-width:440px;margin:20px auto}.arrival{top:20%}}
@media(min-width:600px) and (max-width:1000px) and (max-height:500px){.journey-captions{bottom:42px}.journey-caption{font-size:14px;max-width:620px}.arrival>p:not(.eyebrow){max-width:420px;font-size:12px;margin:10px 0}}
@media(prefers-reduced-motion:reduce){.journey{height:auto}.journey-captions{display:none}}

.journey-bottom>.scroll-hint{display:flex}

.intro-copy,.journey-caption{color:#fff}

/* Scott occupies the left column; the complete story text stays together on the right. */
.story{grid-template-columns:1.05fr 1fr;gap:8%}
.story-visual{min-width:0}.story-illustration{margin:0 -28px}
.story-copy{padding-top:0}.story-copy h2{color:var(--cream)}
@media(max-width:700px){.story{grid-template-columns:1fr;gap:28px}.story-illustration{max-width:540px;margin:0 -10px}.story-visual{max-width:540px;width:100%;margin:auto}}

@media(max-width:700px){
 .story{grid-template-areas:"heading" "illustration" "body";gap:24px}
 .story-copy{display:contents}
 .story-heading{grid-area:heading;min-width:0}
 .story-heading h2{margin-bottom:0;color:var(--cream)}
 .story-visual{grid-area:illustration}
 .story-body{grid-area:body;color:var(--muted);font-size:14px;min-width:0}
 .story-body .story-lead{color:var(--cream);font-size:18px;font-family:'Cormorant Garamond',serif;line-height:1.65}
}

.companion-track article{opacity:.4;transition:opacity .3s ease}
.companion-track article.is-active{opacity:1}
@media(prefers-reduced-motion:reduce){.companion-track article{transition:none}}

.book>div:last-child{text-align:center}
.book-actions{justify-content:center}
.book-retailers{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:16px}
.retailer-link{display:flex;flex-direction:column;align-items:center;min-width:86px;line-height:1.5;border-radius:10px;padding:3px;transition:color .2s}
.retailer-link:hover{color:#fff}.retailer-link .kindle-badge{flex-shrink:0}.retailer-link:hover .kindle-badge{transform:none}
.amazon-store-badge{width:66.67px;height:66.67px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;background:#171515;border:1px solid #ffffff30;color:#fff;font-family:Arial,sans-serif;line-height:1.2}
.amazon-store-badge>span{font-size:12px;font-weight:700}.amazon-store-badge strong{font-size:20px;letter-spacing:1px;color:#ffbe65;margin-top:3px}
.retailer-name{font-size:11px;font-weight:700;margin-top:9px}.retailer-detail{font-size:10px;color:var(--muted);margin-top:2px}
@media(max-width:700px){.book-actions{gap:24px}}
.amazon-store-badge img{display:block;width:54px;height:auto;max-width:100%}

.intro .cabinet-headline{font-size:clamp(38px,4.6vw,72px);letter-spacing:-1.5px;line-height:1.08}
@media(max-width:700px){.intro .cabinet-headline{font-size:clamp(32px,7.8vw,52px);letter-spacing:-1px}}
