/* Winter light, quiet glass and parchment. No inherited metallic-frame layer. */
body.rpg-ui{color:#eff6f3;background:radial-gradient(ellipse at 10% 0,#2c4b59,transparent 64%),radial-gradient(ellipse at 90% 65%,#353d51,transparent 65%),#142e3b}
.rpg-ui :is(.portal-login,.portal-steps article,.story-panel,.adv-paper,.adv-box,.adv-card,.scene-dialogue,.scene-task-drawer){color:#29444a;background:linear-gradient(125deg,rgba(255,250,241,.96),rgba(237,246,241,.96));border:0;border-radius:28px;box-shadow:inset 0 1px 8px rgba(255,255,255,.18),0 10px 36px rgba(8,31,53,.12)}
.rpg-ui :is(.portal-login,.story-panel,.adv-box,.adv-paper) :is(h1,h2,h3){color:#28434b}
.rpg-ui :is(.portal-login,.adv-paper,.story-panel) :is(input:not([type=radio]):not([type=checkbox]):not([type=range]),select,textarea){color:#29464c;background:#fffdf5;border:1px solid #a9bcba;border-radius:14px;font-size:16px}
.rpg-ui :is(.portal-submit,.adv-primary,.primary-button,.continue-button){background:#42636e;color:#fff8e9;border:1px solid rgba(255,255,255,.3);border-radius:18px;box-shadow:inset 0 1px rgba(255,255,255,.12)}
.rpg-ui .portal-shell{max-width:1280px;padding-inline:clamp(20px,4vw,56px)}
.rpg-ui .portal-header,.rpg-ui .portal-footer{border-color:rgba(220,239,234,.2)}
.rpg-ui .portal-brand{color:#f3f2e4}
.rpg-ui .brand-box{color:#f4ecd7;background:rgba(220,239,234,.08);border:1px solid rgba(255,255,255,.3);border-radius:50%}
.rpg-ui .header-login{color:#edf4ed;background:rgba(220,239,234,.06);border-color:rgba(255,255,255,.3);border-radius:99px}
.rpg-ui .portal-hero{grid-template-columns:minmax(0,1fr);gap:32px;padding-block:36px}
.rpg-ui .hero-copy h1{color:#f5f0df;line-height:1.02}
.rpg-ui .hero-copy h1 em{color:#eadbb9}
.rpg-ui .hero-copy h1 em::after{opacity:.15;height:5px;bottom:2px;border-radius:99px}
.rpg-ui .hero-description{color:#cedfdf}
.rpg-ui .portal-eyebrow{color:#d9d8c1}
.rpg-ui .hero-tags span{color:#d7e8e4;border:1px solid rgba(255,255,255,.15);background:rgba(220,239,234,.04);border-radius:99px}
.rpg-ui .portal-login{width:100%;max-width:560px;justify-self:center;padding:clamp(23px,4vw,35px)}
.rpg-ui .portal-login :is(.login-intro,.login-help p,.option-note){color:#526d70}
.rpg-ui .portal-login .login-topline{color:#647971}
.rpg-ui .portal-login :is(.login-help,.login-topline,details,fieldset){border-color:rgba(90,123,119,.2)}
.rpg-ui .portal-login :is(.login-symbol,.resume-game){background:#e3e9d9;color:#35534f}
.rpg-ui .portal-login .login-status{color:#4a6343}
.rpg-ui .portal-login .login-status.error{color:#943e32}
.rpg-ui .box-art{display:block;position:relative;overflow:hidden;isolation:isolate;height:clamp(270px,42vw,410px);max-width:560px;margin-top:28px;border:1px solid rgba(255,255,255,.3);border-radius:42% 42% 28px 28px;box-shadow:0 16px 45px rgba(8,30,53,.2)}
.rpg-ui .box-art .fairy-portal-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 32%;z-index:-2}
.rpg-ui .box-art::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(12,44,67,.58));pointer-events:none;z-index:-1}
.rpg-ui .box-art .art-orbit{border-color:rgba(244,234,211,.2)}
.rpg-ui .box-art .art-box{color:#f3f1dd;background:rgba(224,241,236,.08);border:1px solid rgba(255,255,255,.3);box-shadow:0 0 24px rgba(242,226,190,.1);border-radius:30%}
.rpg-ui .box-art .art-caption{color:#f2eddb;z-index:3}
.rpg-ui .art-star{color:#ede5cb}
.rpg-ui .portal-steps{gap:24px;border-color:rgba(220,239,234,.16)}
.rpg-ui .portal-steps article{padding:25px;min-width:0;background:rgba(220,239,234,.045);border:0;box-shadow:none}
.rpg-ui .portal-steps :is(h2,p){color:#deedeb}
.rpg-ui .portal-steps article>span{color:#d3d7c7}
.rpg-ui .portal-footer,.rpg-ui .portal-footer a{color:#c7dbd8}
.rpg-ui :is(.topbar,.adv-top){border-bottom:1px solid rgba(255,255,255,.12);background:rgba(22,44,56,.6)}
.rpg-ui :is(.map-stage,.world-canvas,.adv-art){border:0}
.rpg-ui .adv-card{overflow:hidden;border-radius:30px}
.rpg-ui .adv-card img{border-radius:28px 28px 0 0}
.rpg-ui .adv-card :is(h2,p),.rpg-ui .adv-prose{color:#2c474b}
.rpg-ui .adv-small,.rpg-ui .adv-progress{color:#546e70}
.rpg-ui .adv-note{color:#365358;background:#e7efe8;border:0;border-radius:18px}
.rpg-ui .adv-restart{color:#5e7476}
.rpg-ui .adv-paper{border:0;border-radius:30px 30px 0 0}
.rpg-ui .scene-narration{background:rgba(30,58,70,.92);border:1px solid rgba(255,255,255,.3);border-radius:26px;padding:18px 20px;max-height:46dvh;box-shadow:inset 0 1px rgba(255,255,255,.08),0 8px 28px rgba(5,30,51,.12)}
.rpg-ui .scene-narration h1{color:#faf3e2;text-shadow:0 2px 8px rgba(19,43,55,.3)}
.rpg-ui .scene-narration .scene-ambience{padding:10px 0 0;border-top:1px solid rgba(213,236,227,.12);margin-top:10px;justify-content:flex-start}
.rpg-ui .scene-narration .scene-ambience .ambience-controls{justify-content:flex-start}
.rpg-ui .scene-narration .scene-reader{padding:0;flex-wrap:wrap}
.rpg-ui .scene-narration .scene-recap-wrap{padding:8px 0}
.rpg-ui .scene-narration .music-picker[open]{flex-basis:100%;width:100%}
.rpg-ui .scene-narration .scene-reader details[open]{flex-basis:100%}
.rpg-ui .scene-narration :is(.music-settings,.reader-settings){position:relative;top:auto;left:auto;right:auto;width:100%;max-width:340px;max-height:35dvh;overflow:auto;margin-top:8px}
.rpg-ui .task-open .scene-narration:has(.music-picker[open],.scene-reader details[open]){bottom:calc(var(--rpg-hud-height) + 8px);max-height:40dvh;z-index:24}
.rpg-ui .scene-header button,.rpg-ui .scene-chapter-list{color:#eff5e8;background:rgba(39,70,79,.86);border:1px solid rgba(255,255,255,.3);border-radius:22px}
.rpg-ui .scene-reader,.rpg-ui .scene-ambience,.rpg-ui .scene-ambience .ambience-controls,.rpg-ui .scene-recap-wrap{pointer-events:none}
.rpg-ui .scene-reader :is(button,summary,input,select,.reader-settings),.rpg-ui .scene-ambience :is(button,a,summary,input,select,.music-settings),.rpg-ui .scene-recap-wrap button{pointer-events:auto}
.rpg-ui .scene-chapter-list button{border-radius:14px}
.rpg-ui :is(.scene-dialogue,.scene-task-drawer) :is(p,strong,h2){color:#29474c}
.rpg-ui .scene-companions{z-index:5}
.rpg-ui .scene-secret{z-index:6}
.rpg-ui #advActors{z-index:3}
.fairy-environment{--fairy-x:0px;--fairy-y:0px;isolation:isolate}
.fairy-depth{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;perspective:900px;contain:layout paint;border-radius:inherit}
.fairy-depth-layer{position:absolute;inset:0;background-size:100% 100%;background-position:center;background-repeat:no-repeat;backface-visibility:hidden}
.fairy-sky{mask-image:linear-gradient(#000 0 26%,transparent 43%);transform:translate3d(calc(var(--fairy-x)*.18),calc(var(--fairy-y)*.15),0) scale(1.035)}
.fairy-trees{mask-image:linear-gradient(transparent 22%,#000 39% 60%,transparent 80%);transform:translate3d(calc(var(--fairy-x)*.5),calc(var(--fairy-y)*.45),0) scale(1.035)}
.fairy-snow{mask-image:linear-gradient(transparent 61%,#000 84%);transform:translate3d(var(--fairy-x),var(--fairy-y),0) scale(1.035)}
.fairy-environment.fairy-in-view .fairy-depth-layer{will-change:transform}
.fairy-foreground{position:absolute;inset:0;z-index:4;pointer-events:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;padding:0 5% 4%;gap:2%}
.fairy-friend{position:relative;pointer-events:auto;justify-self:center;width:100%;max-width:145px;min-height:48px;padding:0;border:0;border-radius:20px;background:none;cursor:pointer;transform-origin:center bottom}
.fairy-friend:nth-child(2){margin-bottom:13%}
.fairy-friend:nth-child(3){width:72%;margin-bottom:3%}
.fairy-friend:nth-child(4){margin-bottom:12%}
.fairy-friend img{display:block;width:100%;max-height:clamp(100px,21vh,220px);object-fit:contain;object-position:bottom;transform-origin:50% 90%}
.fairy-lite :is(.scene-narration,.fairytale-menu-button){backdrop-filter:none}
.rpg-ui .adv-actor img{max-width:22vw;object-fit:contain}
@supports(backdrop-filter:blur(8px)){.rpg-ui .scene-narration{background:rgba(30,58,70,.72);backdrop-filter:blur(8px)}}
@media(min-width:900px){.rpg-ui .portal-hero{grid-template-columns:minmax(0,1fr) minmax(340px,460px);gap:clamp(35px,6vw,90px);padding-block:65px}}
@media(max-width:650px){.rpg-ui .portal-steps article{display:block}.rpg-ui .portal-steps h2{margin-top:10px}.rpg-ui .adv-cards{grid-template-columns:minmax(0,1fr)}.rpg-ui .adv-paper{padding-inline:20px}.rpg-ui .adv-toolbar{display:flex;flex-wrap:wrap;gap:8px}.rpg-ui .adv-toolbar button{flex:1 1 125px;min-height:48px;margin:0;border-radius:18px}.rpg-ui .scene-narration{left:12px;right:12px;padding:14px 16px}.rpg-ui .scene-narration h1{font-size:clamp(23px,6vw,31px)}.fairy-foreground{padding-inline:4%}.fairy-friend img{max-height:min(20vh,150px)}}
html.comfort-high .rpg-ui .scene-narration{background:#123443;backdrop-filter:none}

/* One gentle presentation pool: all ambient and greeting particles share the JS cap. */
body.fairytale-managed :is(#snowLayer,.scene-atmosphere,#advParticles){display:none!important}
.fairy-environment{--fairy-breeze-x:0px;--fairy-breeze-y:0px}
.fairy-ambient-field{position:absolute;inset:0;pointer-events:none;overflow:hidden;transform:translate3d(var(--fairy-breeze-x),var(--fairy-breeze-y),0)}
.fairy-drift{position:absolute;color:rgba(247,244,224,.65);font:normal 11px/1 Georgia,serif;opacity:.3;pointer-events:none;animation:fairy-ambient-drift calc(9s + var(--drift-index)*.6s) ease-in-out infinite}
.fairy-sparks-layer{position:fixed;inset:0;z-index:96;pointer-events:none;overflow:hidden;contain:strict}
.fairy-spark{position:absolute;color:#f1e3c4;font:12px/1 Georgia,serif;opacity:.5;text-shadow:0 0 5px rgba(253,225,179,.18);pointer-events:none;will-change:transform,opacity}
.fairy-friend::before,.scene-companion::before,.adv-actor::before{content:'';position:absolute;inset:8%;border-radius:50%;background:radial-gradient(ellipse,rgba(255,223,173,.2),transparent 70%);opacity:0;pointer-events:none;transition:opacity .35s ease}
.fairy-greeted::before{opacity:.45}
.fairy-friend[data-fairy-star=true]::after{content:'';position:absolute;top:0;right:2%;width:30%;height:24%;border-radius:50%;background:radial-gradient(ellipse,rgba(255,232,175,.28),transparent 72%);filter:drop-shadow(0 0 7px rgba(255,226,165,.3));opacity:.65;pointer-events:none;animation:fairy-star-breathe 7s cubic-bezier(.4,0,.2,1) infinite}
.fairy-in-view .fairy-friend img,.fairy-in-view .scene-companion img{animation:fairy-breathe 7s cubic-bezier(.4,0,.2,1) infinite}
.fairy-friend:nth-child(2) img{animation-delay:-2s}.fairy-friend:nth-child(3) img{animation-delay:-4s}
.rpg-ui .scene-companion.waving{animation:none}
.rpg-ui .scene-companion[data-motion=glow]{animation:none;filter:drop-shadow(0 0 6px rgba(255,230,190,.16))}
.rpg-ui :is(.scene-arriving,.scene-magic) .scene-flash{animation:none;opacity:0}
.rpg-ui :is(.scene-arriving,.scene-magic) .scene-art{animation:fairy-image-arrive .8s ease-out both}
.fairy-environment .scene-art,.fairy-environment #advBackdrop{transform:translate3d(calc(var(--fairy-x)*.08),calc(var(--fairy-y)*.08),0) scale(1.035)}
.fairy-sleeping .fairy-environment *{animation-play-state:paused!important}
@keyframes fairy-breathe{0%,100%{transform:translate3d(0,0,0) scale(1)}28%{transform:translate3d(0,-1px,0) scale(1.009)}46%{transform:translate3d(0,-2px,0) scale(1.018)}67%{transform:translate3d(0,-.8px,0) scale(1.011)}}
@keyframes fairy-star-breathe{0%,100%{opacity:.5;transform:scale(1)}28%{opacity:.61}46%{opacity:.74;transform:scale(1.018)}67%{opacity:.63}}
@keyframes fairy-ambient-drift{0%,100%{transform:translate3d(-3px,5px,0);opacity:.16}50%{transform:translate3d(3px,-12px,0);opacity:.42}}
@keyframes fairy-image-arrive{from{opacity:.82}to{opacity:1}}
html:is(.comfort-reduce,.adv-reduced) .fairy-depth{display:none}
html:is(.comfort-reduce,.adv-reduced) .fairy-environment *{animation:none!important}
@media(prefers-reduced-motion:reduce){.fairy-depth{display:none}.fairy-environment *{animation:none!important}}

.rpg-ui .adv-paper{background:rgba(250,248,238,.92);border:0;border-radius:32px 32px 0 0;box-shadow:0 12px 34px rgba(10,32,46,.1)}
.rpg-ui .adv-box{background:rgba(255,255,248,.48);border:0;box-shadow:none}

/* Calm legacy chapter affordances as well as the foreground figures. */
.rpg-ui .scene-transitioning .scene-art{animation:fairy-image-leave .35s ease both}
.rpg-ui .scene-secret>span{border:1px solid rgba(255,255,255,.3);background:rgba(47,80,91,.5);box-shadow:0 0 12px rgba(255,229,184,.14);animation:none}
.rpg-ui .scene-companion[data-motion=float],.rpg-ui .scene-companion[data-motion=walk]{animation:none}
.rpg-ui .scene-companion[data-motion=float] img,.rpg-ui .scene-companion[data-motion=walk] img{animation:fairy-breathe 7s cubic-bezier(.4,0,.2,1) infinite,fairy-companion-idle 9s ease-in-out infinite}
.rpg-ui .scene-companion small{border:1px solid rgba(255,255,255,.3)}
.rpg-ui .scene-actions button,.rpg-ui .scene-header button{border:1px solid rgba(255,255,255,.3);font-weight:500}
@keyframes fairy-image-leave{to{opacity:.65}}
@keyframes fairy-companion-idle{0%,100%{translate:0 0}50%{translate:0 -2px}}

/* Background-only grading: foreground family bitmaps keep their original colors. */
.fairy-depth,.rpg-ui #advBackdrop,.rpg-ui .map-image{filter:contrast(1.08) saturate(1.05);backface-visibility:hidden}
.fairy-depth,.rpg-ui .map-image{transform:translateZ(0)}
.fairy-luminescence,.fairy-ground-fog,.fairy-light-map{position:absolute;inset:0;pointer-events:none}
.fairy-luminescence{display:none;z-index:1;mix-blend-mode:screen;background:radial-gradient(ellipse at 72% 0,rgba(127,214,205,.17),transparent 58%),conic-gradient(from 165deg at 76% -15%,transparent 0 13deg,rgba(161,220,243,.09) 17deg,transparent 25deg 42deg,rgba(240,212,172,.1) 46deg,transparent 55deg);opacity:.65;transform-origin:75% 0}
.fairy-winter .fairy-luminescence{display:block}
.fairy-in-view .fairy-luminescence{animation:fairy-northern-light 24s ease-in-out infinite alternate}
.fairy-ground-fog{display:none;z-index:2;top:60%;bottom:-7%;overflow:hidden;mix-blend-mode:screen}
.fairy-winter .fairy-ground-fog{display:block}
.fairy-ground-fog i{position:absolute;inset:0 -15%;background:radial-gradient(ellipse at 23% 80%,rgba(210,229,235,.16),transparent 55%),radial-gradient(ellipse at 74% 95%,rgba(234,239,230,.13),transparent 62%);transform:translate3d(-3%,0,0);opacity:.55}
.fairy-ground-fog i+ i{inset:10% -25% -10%;background:radial-gradient(ellipse at 70% 90%,rgba(201,219,238,.13),transparent 65%);opacity:.4}
.fairy-in-view .fairy-ground-fog i{animation:fairy-ground-drift 23s ease-in-out infinite alternate}
.fairy-in-view .fairy-ground-fog i+ i{animation-duration:37s;animation-direction:alternate-reverse;animation-delay:-11s}
.fairy-light-map{z-index:3;overflow:hidden}
.fairy-light{position:absolute;width:18px;height:18px;overflow:visible;fill:#ffe5ac;filter:drop-shadow(0 0 4px rgba(255,224,165,.38));opacity:.32;transform:translate3d(calc(-50% + var(--fairy-x)*var(--light-mx)),calc(-50% + var(--fairy-y)*var(--light-my)),0);animation:fairy-light-twinkle 5.5s ease-in-out infinite alternate;pointer-events:none}
.fairy-light.fairy-light-tween{animation:none}
.fairy-effects-off :is(.fairy-luminescence,.fairy-ground-fog){display:none}
.fairy-lite .fairy-ground-fog i+ i{display:none}.fairy-lite .fairy-luminescence{animation:none}
.fairy-environment:not(.fairy-in-view) :is(.fairy-luminescence,.fairy-ground-fog i){animation-play-state:paused}
html:is(.comfort-reduce,.adv-reduced) :is(.fairy-luminescence,.fairy-ground-fog){display:none}
@keyframes fairy-northern-light{from{transform:translate3d(-1%,0,0) rotate(-1deg);opacity:.45}to{transform:translate3d(1%,1%,0) rotate(1deg);opacity:.7}}
@keyframes fairy-ground-drift{from{transform:translate3d(-3%,1%,0)}to{transform:translate3d(3%,-2%,0)}}
@keyframes fairy-light-twinkle{from{opacity:.22}to{opacity:.54}}
@media(prefers-reduced-motion:reduce){.fairy-luminescence,.fairy-ground-fog{display:none}}

/* Pseudo-element animations need explicit motion/visibility rules too. */
.fairy-sleeping .fairy-friend[data-fairy-star=true]::after,.fairy-environment:not(.fairy-in-view) .fairy-friend[data-fairy-star=true]::after{animation-play-state:paused}
html:is(.comfort-reduce,.adv-reduced) .fairy-friend[data-fairy-star=true]::after{animation:none}
@media(prefers-reduced-motion:reduce){.fairy-friend[data-fairy-star=true]::after{animation:none}}
