/* Individual painted assets retain their complete silhouettes and alpha edges. */
.companion-portrait,.painted-item{background:none;object-fit:contain;mix-blend-mode:normal;height:auto}
.companion-doors{gap:22px;padding-top:25px;padding-bottom:70px;max-width:1160px}
.companion-door{border:0;border-radius:42%;padding:8px;--turn:-3deg;--drift:-5px}
.companion-door:nth-child(even){--turn:3deg;--drift:5px;transform:translateY(18px)}
.companion-door .companion-portrait{margin:0;transform:rotate(var(--turn));transition:transform .4s ease}
.companion-door:hover .companion-portrait,.companion-door:focus-visible .companion-portrait{transform:translate(var(--drift),-8px) rotate(calc(var(--turn) * -1)) scale(1.045)}
.welcome-cover{max-height:none;overflow:visible;mask:url('assets/redrawn/edge-blot-v1.png') center/100% 100% no-repeat}
.welcome-cover img{height:auto;object-fit:contain}
.welcome-parallax{position:relative;aspect-ratio:3/2;overflow:hidden;isolation:isolate;--greet-x:0px;--greet-y:0px;--greet-scroll:0px}
.welcome-parallax .welcome-fallback{position:absolute;inset:0;width:100%;height:100%;z-index:4}
.welcome-parallax .welcome-layer{position:absolute;inset:-3%;width:106%;height:106%;max-width:none;object-fit:fill;pointer-events:none;visibility:hidden;transition:transform .35s ease-out}
.welcome-parallax.layers-ready .welcome-layer{visibility:visible}
.welcome-parallax.layers-ready .welcome-fallback{visibility:hidden}
.welcome-parallax .welcome-far{z-index:0;transform:translate3d(calc(var(--greet-x) * -.35),calc(var(--greet-y) * -.3 + var(--greet-scroll) * -.22),0)}
.welcome-parallax .welcome-middle{z-index:1;transform:translate3d(calc(var(--greet-x) * .35),calc(var(--greet-y) * .25 + var(--greet-scroll) * .12),0)}
.welcome-parallax .welcome-people{z-index:2;transform:scale(.9);transition:none}
.still .welcome-parallax .welcome-layer{transform:none;transition:none}
.still .welcome-parallax .welcome-people{transform:scale(.9)}
@media(prefers-reduced-motion:reduce){.welcome-parallax .welcome-layer{transform:none;transition:none}.welcome-parallax .welcome-people{transform:scale(.9)}}
.hero-base,.hero-front{inset:-10%;width:120%;height:120%;max-width:none}
.hero-base{transform:translate(calc(var(--px) * -.4),calc(var(--scroll) * .055 + var(--py) * -.4))}
.hero-front{transform:translate(var(--px),calc(var(--py) + var(--scroll) * -.04))}
.bridge-note,.bridge-note:hover{background:transparent;border:0;border-bottom:1px solid #f7ebca85;border-radius:0;padding:12px 0;color:#fff8e8;text-shadow:0 2px 9px #142f2c;font-size:15px}
.bridge-note span{color:#fff1ce}.bridge-note:hover{border-bottom-color:#fff8e8}
.primary,.secondary{border-radius:24px}.primary:hover{box-shadow:none}
dialog{border-radius:28px}dialog:has(.meeting-layout){max-width:1000px;width:92vw;padding:40px 0 40px 48px;overflow:hidden}
.meeting-layout{display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:22px}
.meeting-copy{padding:25px 0}.meeting-copy h2{font-size:clamp(30px,3.5vw,45px)}
.meeting-art{width:112%;max-width:none;height:auto;margin:0 -12% 0 0;border-radius:0}
.painted-choice{border:0;border-radius:35px;padding:12px 5px 20px;transition:background .25s ease}
.painted-choice[aria-pressed=true]{background:#e9dfca70}
.painted-choice strong{font-family:Lora,serif;font-size:19px;max-width:190px}
.painted-choice .painted-item{width:190px;height:180px;object-fit:contain}
.painted-choice:hover .painted-item{transform:translateY(-6px) rotate(-4deg)}
.voyage-reply,.invitation,.entry-context{border-radius:25px}
.voyage-scenery{mask:url('assets/redrawn/edge-blot-v1.png') center/100% 100% no-repeat}
.castle-welcome-art{width:100%;max-height:390px;object-fit:contain;margin:0 auto 14px}
dialog:has(.castle-welcome-art){max-width:820px;width:92vw}
.room-tease{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:25px;align-items:center;min-height:0;padding:35px 5vw 45px 0;background:var(--paper);overflow:visible;mask:none}
.room-tease>img{position:static;width:100%;height:auto;object-fit:contain;mask:url('assets/redrawn/edge-blot-v1.png') center/100% 100% no-repeat}
.room-tease:after{display:none}.room-copy{color:var(--ink);max-width:370px;padding:10px 0}
.room-copy h2{font-size:clamp(32px,3.5vw,50px)}.room-copy p,.room-copy .eyebrow{color:var(--muted)}
.portrait{background-image:url('assets/redrawn/reader-girl-blot-v1.png');background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:0}
.portrait.boy{background-image:url('assets/redrawn/reader-boy-blot-v1.png');background-position:center}
.door-picture>.painted-item{object-fit:contain}.personal-door{border:0}.personal-door h3{font-size:28px}
.autumn-section{display:grid;grid-template-columns:1.35fr 1fr;align-items:center;gap:45px;padding:40px 5vw 100px;max-width:1400px}
/* Preserve the painted raster's detail at its displayed size. */
.autumn-art{display:block;width:100%;height:auto;filter:none;object-fit:contain}.autumn-section .intro{text-align:left;margin:0}.autumn-section h2{font-size:clamp(34px,3.6vw,52px)}
@media(max-width:800px){
 .companion-doors{gap:8px 16px;padding:15px 5% 45px}.companion-door{padding:0}.companion-door:nth-child(even){transform:translateY(10px)}
 dialog:has(.meeting-layout){padding:38px 25px 20px;max-height:90svh;overflow:auto}.meeting-layout{grid-template-columns:1fr;gap:0}.meeting-copy{padding:8px 0}.meeting-art{width:85%;max-width:340px;margin:0 0 0 auto;grid-row:1}
 .painted-choice .painted-item{width:100%;height:110px}.painted-choice strong{font-size:14px}.painted-choice{padding:7px 2px 16px;border-radius:20px}
 .room-tease{grid-template-columns:1fr;padding:15px 0 35px;gap:5px}.room-tease>img{width:100%;max-height:none}.room-copy{padding:20px 7%;max-width:560px;margin:auto}.room-copy h2{font-size:37px}
 .autumn-section{grid-template-columns:1fr;gap:20px;padding:20px 6% 65px}.autumn-section .intro{text-align:center}.autumn-art{max-width:650px;margin:auto}
 .castle-welcome-art{max-height:260px}
}
.still .companion-door,.still .companion-door .companion-portrait{transform:none!important}
@media(prefers-reduced-motion:reduce){.companion-door,.companion-door .companion-portrait{transform:none!important}}
.door-picture>img:not(.painted-item){mask:url('assets/redrawn/edge-blot-v1.png') center/100% 100% no-repeat}
.place-details>p{color:var(--muted)}
dialog:has(.castle-place){max-width:1080px;width:94vw;padding:40px 35px}
.castle-place{display:grid;grid-template-columns:1.05fr 1fr;gap:25px;align-items:center;text-align:left}
.castle-place .castle-welcome-art{max-height:490px;margin:0;width:100%}
.castle-place h2{font-size:34px}.castle-place .invitation{padding:20px;margin:20px 0}.castle-place .invitation h3{font-size:25px}
@media(max-width:800px){dialog:has(.castle-place){padding:35px 22px}.castle-place{grid-template-columns:1fr;gap:15px;text-align:center}.castle-place .castle-welcome-art{max-height:230px}.castle-place h2{font-size:29px}}
/* The portraits are persistent selectors for the story immediately below. */
.companion-doors{padding-bottom:30px;gap:24px}
.companion-door{position:relative;border:2px solid transparent;border-radius:45% 48% 43% 46%;padding:13px;transition:border-color .25s,background .25s,box-shadow .25s}
.companion-door[aria-pressed=true]{border-color:transparent;background:transparent;box-shadow:none}
.companion-door::before{content:"";position:absolute;pointer-events:none;left:-5%;top:-4%;width:110%;aspect-ratio:1;background:url('assets/companion-selection-sun-v1.png') center/contain no-repeat;filter:brightness(.65) sepia(1) saturate(3) hue-rotate(-20deg);opacity:0;transform:rotate(-9deg) scale(.94);transition:opacity .25s ease,transform .35s ease}
.companion-door[aria-pressed=true]::before{opacity:1;transform:rotate(0deg) scale(1)}
.companion-door .companion-portrait,.companion-door .companion-label{position:relative;z-index:1}
.companion-door:focus-visible{outline:2px dashed var(--ink);outline-offset:5px}
.companion-door[aria-pressed=true] .companion-portrait{transform:translateY(-3px) rotate(0deg) scale(1.04)}
.companion-intro{max-width:920px;margin:0 auto;display:grid;grid-template-columns:200px 1fr;gap:40px;align-items:center;padding:25px 5vw 45px}
.companion-intro h2{font-size:42px;margin:0}.companion-intro p{font-size:16px;color:var(--muted);margin:0}
.companion-announcement{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#companion-preview .voyage-scenery{aspect-ratio:3/2;max-height:none}
#companion-preview .voyage-scenery>img{object-fit:contain;object-position:center;width:100%;height:100%}
.story-choices{gap:20px}.story-choices .painted-choice{padding:25px 20px;border:1px solid #71836e45;background:#efe7d53d;min-height:155px;justify-content:center;border-radius:30px 26px 32px 25px;transition:background .2s,border-color .2s,transform .2s}
.story-choices .painted-choice:hover{background:#e9dfca90;transform:translateY(-3px)}
.story-choices .painted-choice[aria-pressed=true]{background:#e5d6b3;border-color:#aa793c}
.story-choices .painted-choice strong{max-width:230px;margin-top:0;font-size:21px}.story-choices .painted-choice>span:last-child{font-size:13px}
@media(max-width:800px){.companion-doors{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:15px 5% 20px}.companion-door{padding:5px}.companion-door:nth-child(even){transform:none}.companion-door[aria-pressed=true]{box-shadow:none}.companion-intro{grid-template-columns:1fr;gap:12px;text-align:center;padding:20px 7% 30px}.companion-intro h2{font-size:33px}.companion-intro p{font-size:15px}.story-choices{grid-template-columns:1fr;gap:12px}.story-choices .painted-choice{padding:20px;min-height:0}.story-choices .painted-choice strong{font-size:19px;max-width:none}.story-choices .painted-choice>span:last-child{font-size:13px}}
@media(prefers-reduced-motion:reduce){.story-choices .painted-choice:hover{transform:none}}
/* Author refinement: gentle controls and named companions. */
.bridge-note,.bridge-note:hover{background:#e4e8cfed;color:#314f43;text-shadow:none;border:1px solid #f4f0d776;border-radius:23px;padding:17px 25px;box-shadow:0 5px 25px #123c2310}
.bridge-note span{color:#526751}.bridge-note:hover{background:#edf0dceF;border-color:#f5f2df}
.companion-door .companion-label{display:block;font:500 clamp(17px,2.1vw,26px) Lora,serif;color:var(--ink);margin:10px 0 4px}
.companion-door{border-radius:42% 46% 30% 33%;padding-bottom:18px}
.voyage-response{scroll-margin-top:35px}
.illustrated-invitation{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:26px;align-items:center;text-align:left}
.illustrated-invitation>img{width:100%;height:auto;object-fit:contain;mask:url('assets/redrawn/edge-blot-v1.png') center/100% 100% no-repeat}
.castle-place .illustrated-invitation{margin:0;padding:15px 20px}.castle-place .castle-welcome-art{max-height:330px}
.season-badge{display:flex;align-items:center;gap:2px;flex-shrink:0;line-height:1.25;color:var(--ink);text-decoration:none;padding:3px 0}
.season-badge img{width:68px;height:62px;object-fit:contain;transform:rotate(-10deg);flex-shrink:0}
.season-badge-copy{display:grid;gap:4px;white-space:nowrap}
.season-badge-copy strong{font-family:var(--display),Georgia,serif;font-size:21px;font-weight:500}
.season-badge-copy time{font-size:12px;color:var(--muted)}
.season-badge:hover strong{color:var(--orange)}
.header{gap:20px}.header nav{gap:24px}
.season-leaves{position:fixed;inset:0;pointer-events:none;z-index:20;overflow:hidden}
.season-leaves img{position:absolute;top:-70px;left:var(--left);width:var(--size);height:auto;opacity:0;animation:leaf-drift var(--duration) linear var(--delay) infinite}
@keyframes leaf-drift{0%,54%{opacity:0;transform:translate(0,-70px) rotate(-25deg)}57%{opacity:.58}72%{transform:translate(45px,45vh) rotate(90deg)}89%{opacity:.48}94%,100%{opacity:0;transform:translate(-30px,110vh) rotate(220deg)}}
.still .season-leaves{display:none}
@media(prefers-reduced-motion:reduce){.season-leaves{display:none}}
@media(max-width:800px){.companion-door .companion-label{font-size:16px;margin:6px 0}.companion-door{padding-bottom:10px}.illustrated-invitation{grid-template-columns:1fr;gap:8px;text-align:center}.illustrated-invitation>img{max-height:220px}.season-badge img{width:52px;height:50px}.season-badge-copy strong{font-size:18px}.season-badge-copy time{font-size:11px}.header{gap:12px;flex-wrap:wrap}.header nav{gap:17px}.castle-place .castle-welcome-art{max-height:230px}}
.companion-door .companion-portrait{width:100%;height:auto;aspect-ratio:1;object-fit:contain}
.companion-door[data-companion=lina] .companion-portrait{scale:1.064}
body[data-skin=halloween] .companion-door[data-companion=lina] .companion-portrait{scale:1.216}
/* Seasonal skin: no layout or route changes. */
.personal-door{border:0;padding-bottom:0;text-align:center}
.personal-door p{min-height:0;margin:0;max-width:290px;align-self:center}
.personal-door h3{margin:8px 0 14px}
.personal-door:hover .door-picture>*{transform:none}
.door-picture.reader-pair{gap:0}
.door-picture.reader-pair>img{width:50%;max-width:170px;height:200px;object-fit:contain;mix-blend-mode:normal}
.personal-start{grid-column:1/-1;text-align:center;margin-top:4px}
.portrait{background-image:var(--reader-girl-art,url('assets/redrawn/reader-girl-blot-v1.png'))}.portrait.boy{background-image:var(--reader-boy-art,url('assets/redrawn/reader-boy-blot-v1.png'))}
body[data-skin=winter]{--paper:#f0f3f3;--ink:#29424a;--muted:#617477;--gold:#f0d49c;--orange:#886446}
body[data-skin=halloween]{--paper:#f5ecdf;--ink:#43384c;--muted:#726576;--gold:#efbc78;--orange:#a85e34}
body[data-skin=winter] .bridge-note{background:#e3eeeeed;color:#365259}
body[data-skin=halloween] .bridge-note{background:#eee0d2ed;color:#584356}
body[data-skin=winter] .invitation,body[data-skin=winter] .voyage-reply,body[data-skin=winter] .entry-context{background:#e4eaea}
body[data-skin=halloween] .invitation,body[data-skin=halloween] .voyage-reply,body[data-skin=halloween] .entry-context{background:#ebdfdc}
@media(max-width:800px){body[data-skin=winter] .hero-base,body[data-skin=halloween] .hero-base{content:normal}}

/* Location introduction with a subordinate first-story invitation. */
.castle-place .first-story-invitation{margin:25px 0 0;padding:20px 23px;text-align:left;border-radius:25px}.first-story-invitation small{color:var(--muted)}.castle-place .first-story-invitation h3{font-size:24px;margin:8px 0 10px}.first-story-invitation p{margin-bottom:16px}.first-story-invitation .primary{font-size:14px;padding:12px 20px}.castle-place:has(.first-story-invitation) .castle-welcome-art{max-height:490px}@media(max-width:800px){.castle-place:has(.first-story-invitation) .castle-welcome-art{max-height:230px}.castle-place .first-story-invitation{text-align:center;margin-top:20px}}

@media(prefers-reduced-motion:reduce){.companion-door::before{transition:none}}

/* Each mobile introduction keeps its picture, heading and copy together. */
@media(max-width:800px){
 .personal-doors{gap:30px;padding:32px 6% 44px}
 .personal-door{display:grid;grid-template-columns:100px minmax(0,1fr);grid-template-areas:"picture title" "picture copy";column-gap:18px;row-gap:8px;align-items:start;text-align:left}
 .personal-door>.door-picture{grid-area:picture;width:100px;height:118px;margin:0;align-self:center}
 .personal-door>.door-picture>img,.personal-door>.door-picture>.painted-item{width:100px;height:118px}
 .personal-door>.door-picture.reader-pair{width:100px;gap:0}
 .personal-door>.door-picture.reader-pair>img{width:50px;height:100px}
 .personal-door>h3{grid-area:title;font-size:24px;line-height:1.18;margin:0;align-self:end}
 .personal-door>p{grid-area:copy;max-width:none;min-height:0;margin:0;font-size:14px;line-height:1.55;align-self:start}
 .personal-start{margin-top:4px}
}

