/* A New Page story-world theming. /css/anp-worlds.css, loaded after anp-tokens.css, signed-in app only.
   Set <body data-world="endurance" data-lane="kids|teen"> (lane from the reader's age: 5-10 kids, 11-18 teen). The world tints the home, shelf, night start, transitions
   and end of night. The READER never takes the theme: it gets only the 3px edge (.anp-reader[data-world]). */
[data-world]{--w-bg1:var(--anp-navy,#1F2E55);--w-bg2:var(--anp-ink-deep);--w-surface:rgba(255,255,255,.07);--w-line:rgba(255,255,255,.14);
  --w-text:var(--anp-on-night,#F3EBDD);--w-muted:rgba(243,235,221,.88);--w-chip:rgba(0,0,0,.22);--w-accent:var(--anp-gold);--w-accent-ink:var(--anp-navy,#1F2E55);--w-glow:rgba(255,214,140,.22);--w-glow-pos:70% 20%;--w-art:none;--w-texture:none;--w-amb:none;--w-amb-size:auto;--w-amb-anim:none}
/* ---- worlds: every world is open to ages 5-18 and has two variants. kids = warm, painterly, gently magical; teen = cinematic, muted, film grain, no sparkles ---- */
[data-world="emberwing"][data-lane="kids"]{--w-bg1:#3B2A4A;--w-bg2:#1C1430;--w-accent:#FFB347;--w-glow:rgba(255,160,70,.30);--w-art:url(/reading-program/assets/worlds-v2/emberwing_tile.webp);--w-art-name:"emberwing_tile";--w-amb:radial-gradient(2.4px 2.4px at 30px 120px,rgba(255,170,80,.9) 50%,transparent 51%),radial-gradient(1.8px 1.8px at 110px 60px,rgba(255,210,120,.8) 50%,transparent 51%);--w-amb-size:170px 170px;--w-amb-anim:w-embers 12s linear infinite;}
[data-world="emberwing"][data-lane="teen"]{--w-bg1:#2B2420;--w-bg2:#100C0A;--w-accent:#D9A066;--w-glow:rgba(217,160,102,.16);--w-art:url(/reading-program/assets/worlds-v2/older_v2_dragon_canyon.webp);--w-art-name:"older_v2_dragon_canyon";--w-amb:none;--w-amb-size:auto;--w-amb-anim:none;}
[data-world="kittyhawk"][data-lane="kids"]{--w-chip:rgba(255,255,255,.6);--w-bg1:#5C8DB0;--w-bg2:#E9D3A6;--w-accent:#F2B544;--w-glow:rgba(255,240,200,.45);--w-art:url(/reading-program/assets/worlds-v2/coming_kittyhawk_younger.webp);--w-art-name:"coming_kittyhawk_younger";--w-amb:repeating-linear-gradient(176deg,transparent 0 38px,rgba(255,255,255,.35) 38px 39px,transparent 39px 90px);--w-amb-size:400px 100%;--w-amb-anim:w-wind 14s linear infinite;--w-text:#1F2E55;--w-muted:rgba(31,46,85,.75);--w-surface:rgba(255,255,255,.55);--w-line:rgba(31,46,85,.12);--w-accent-text:#8A4F00;--w-hero-shade:rgba(20,32,56,.9);}
[data-world="kittyhawk"][data-lane="teen"]{--w-bg1:#3A4148;--w-bg2:#15191D;--w-accent:#D8C7A0;--w-glow:rgba(216,199,160,.14);--w-art:url(/reading-program/assets/worlds-v2/coming_kittyhawk_older.webp);--w-art-name:"coming_kittyhawk_older";--w-amb:repeating-linear-gradient(177deg,transparent 0 60px,rgba(255,255,255,.12) 60px 61px,transparent 61px 140px);--w-amb-size:500px 100%;--w-amb-anim:w-wind 14s linear infinite;--w-accent-ink:#15191D;}
[data-world="endurance"][data-lane="kids"]{--w-chip:rgba(255,255,255,.6);--w-bg1:#9CC7DE;--w-bg2:#E8F3F8;--w-accent:#F2B544;--w-glow:rgba(255,255,255,.6);--w-art:url(/reading-program/assets/worlds-v2/coming_endurance_younger.webp);--w-art-name:"coming_endurance_younger";--w-amb:radial-gradient(2.4px 2.4px at 20px 30px,#fff 50%,transparent 51%),radial-gradient(2px 2px at 100px 90px,#fff 50%,transparent 51%);--w-amb-size:160px 130px;--w-amb-anim:w-snow 16s linear infinite;--w-text:#1F2E55;--w-muted:rgba(31,46,85,.75);--w-surface:rgba(255,255,255,.6);--w-line:rgba(31,46,85,.12);--w-accent-text:#8A4F00;--w-hero-shade:rgba(20,32,56,.9);}
[data-world="endurance"][data-lane="teen"]{--w-bg1:#24384A;--w-bg2:#0E1A26;--w-accent:#BFE3F2;--w-glow:rgba(190,230,255,.16);--w-art:url(/reading-program/assets/worlds-v2/coming_endurance_older.webp);--w-art-name:"coming_endurance_older";--w-amb:radial-gradient(1.3px 1.3px at 20px 30px,rgba(255,255,255,.75) 50%,transparent 51%),radial-gradient(1px 1px at 90px 80px,rgba(255,255,255,.6) 50%,transparent 51%);--w-amb-size:170px 140px;--w-amb-anim:w-snow 22s linear infinite;--w-accent-ink:#0E1A26;}
[data-world="apollo13"][data-lane="kids"]{--w-bg1:#22305A;--w-bg2:#0D1430;--w-accent:#FFC94D;--w-glow:rgba(255,201,77,.25);--w-art:url(/reading-program/assets/worlds-v2/coming_apollo13_younger.webp);--w-art-name:"coming_apollo13_younger";--w-amb:radial-gradient(2px 2px at 30px 40px,rgba(255,236,170,.95) 50%,transparent 51%),radial-gradient(1.4px 1.4px at 120px 100px,rgba(255,255,255,.9) 50%,transparent 51%),radial-gradient(1px 1px at 160px 20px,rgba(200,220,255,.8) 50%,transparent 51%);--w-amb-size:190px 150px;--w-amb-anim:w-drift 18s linear infinite;}
[data-world="apollo13"][data-lane="teen"]{--w-bg1:#1C2420;--w-bg2:#0B100E;--w-accent:#F4B942;--w-glow:rgba(244,185,66,.16);--w-art:url(/reading-program/assets/worlds-v2/coming_apollo13_older.webp);--w-art-name:"coming_apollo13_older";--w-amb:radial-gradient(circle 9px at 88% 22%,rgba(255,196,96,.95) 0 3px,rgba(255,170,60,.35) 4px,transparent 9px);--w-amb-size:100% 100%;--w-amb-anim:w-blink 5s steps(2) infinite;--w-accent-ink:#141A16;--w-texture:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);}
[data-world="agency"][data-lane="kids"]{--w-bg1:#4A3426;--w-bg2:#22170F;--w-accent:#FFC069;--w-glow:rgba(255,192,105,.28);--w-art:url(/reading-program/assets/worlds-v2/agency_tile.webp);--w-art-name:"agency_tile";--w-amb:radial-gradient(1.8px 1.8px at 40px 60px,rgba(255,214,150,.85) 50%,transparent 51%),radial-gradient(1.3px 1.3px at 130px 20px,rgba(255,230,180,.7) 50%,transparent 51%);--w-amb-size:170px 140px;--w-amb-anim:w-motes 16s linear infinite;}
[data-world="agency"][data-lane="teen"]{--w-bg1:#2A2320;--w-bg2:#120E0C;--w-accent:#C9965A;--w-glow:rgba(201,150,90,.14);--w-art:url(/reading-program/assets/worlds-v2/older_case_room_01.webp);--w-art-name:"older_case_room_01";--w-amb:linear-gradient(100deg,transparent 40%,rgba(255,220,170,.06) 50%,transparent 60%);--w-amb-size:300% 100%;--w-amb-anim:w-sweep 14s ease-in-out infinite;--w-accent-ink:#120E0C;}
[data-world="stardrift"][data-lane="kids"]{--w-bg1:#2A2C66;--w-bg2:#11123A;--w-accent:#FFD36E;--w-glow:rgba(255,211,110,.28);--w-art:url(/reading-program/assets/worlds-v2/stardrift_cover.webp);--w-art-name:"stardrift_cover";--w-amb:radial-gradient(2.2px 2.2px at 30px 40px,rgba(255,224,140,.95) 50%,transparent 51%),radial-gradient(1.4px 1.4px at 110px 90px,rgba(255,255,255,.9) 50%,transparent 51%),radial-gradient(1px 1px at 150px 140px,rgba(190,200,255,.85) 50%,transparent 51%);--w-amb-size:180px 170px;--w-amb-anim:w-drift 18s linear infinite;}
[data-world="stardrift"][data-lane="teen"]{--w-bg1:#1A1B2E;--w-bg2:#07081A;--w-accent:#9DB0D8;--w-glow:rgba(157,176,216,.12);--w-art:url(/reading-program/assets/worlds-v2/older_stardrift.webp);--w-art-name:"older_stardrift";--w-amb:none;--w-amb-size:auto;--w-amb-anim:none;--w-accent-ink:#07081A;}
[data-world="greenwood"][data-lane="kids"]{--w-bg1:#3C6040;--w-bg2:#1B2E1F;--w-accent:#F2C95A;--w-glow:rgba(242,201,90,.30);--w-art:url(/reading-program/assets/worlds-v2/greenwood_cover.webp);--w-art-name:"greenwood_cover";--w-amb:radial-gradient(3px 1.6px at 40px 30px,rgba(200,220,120,.75) 50%,transparent 51%);--w-amb-size:190px 170px;--w-amb-anim:w-leaves 16s linear infinite;}
[data-world="greenwood"][data-lane="teen"]{--w-bg1:#26332A;--w-bg2:#0F1712;--w-accent:#C7B27A;--w-glow:rgba(199,178,122,.12);--w-art:url(/reading-program/assets/worlds-v2/older_greenwood.webp);--w-art-name:"older_greenwood";--w-amb:none;--w-amb-size:auto;--w-amb-anim:none;--w-accent-ink:#0F1712;}
[data-world="thedig"][data-lane="kids"]{--w-bg1:#5A3E25;--w-bg2:#2A1C10;--w-accent:#FFC46B;--w-glow:rgba(255,196,107,.30);--w-art:url(/reading-program/assets/worlds-v2/thedig_tile.webp);--w-art-name:"thedig_tile";--w-amb:radial-gradient(1.8px 1.8px at 40px 60px,rgba(255,196,107,.85) 50%,transparent 51%),radial-gradient(1.2px 1.2px at 120px 110px,rgba(255,220,160,.7) 50%,transparent 51%);--w-amb-size:170px 150px;--w-amb-anim:w-dust 16s linear infinite;}
[data-world="thedig"][data-lane="teen"]{--w-bg1:#3A2A1C;--w-bg2:#1A120B;--w-accent:#D2AA6C;--w-glow:rgba(210,170,108,.14);--w-art:url(/reading-program/assets/worlds-v2/thedig_night.webp);--w-art-name:"thedig_night";--w-amb:radial-gradient(1.2px 1.2px at 40px 60px,rgba(255,230,190,.5) 50%,transparent 51%);--w-amb-size:160px 120px;--w-amb-anim:w-dust 26s linear infinite;--w-accent-ink:#1A120B;}
[data-world="rescueone"][data-lane="kids"]{--w-bg1:#2C4460;--w-bg2:#132233;--w-accent:#FF8A5B;--w-glow:rgba(255,138,91,.28);--w-art:url(/reading-program/assets/worlds-v2/rescueone_tile.webp);--w-art-name:"rescueone_tile";--w-amb:repeating-linear-gradient(104deg,transparent 0 30px,rgba(220,235,255,.22) 30px 31px,transparent 31px 80px);--w-amb-size:320px 320px;--w-amb-anim:w-rain 12s linear infinite;}
[data-world="rescueone"][data-lane="teen"]{--w-bg1:#222B33;--w-bg2:#0D1217;--w-accent:#E07A55;--w-glow:rgba(224,122,85,.12);--w-art:url(/reading-program/assets/worlds-v2/rescueone_night.webp);--w-art-name:"rescueone_night";--w-accent-ink:#0D1217;--w-amb:repeating-linear-gradient(100deg,transparent 0 22px,rgba(200,220,255,.10) 22px 23px,transparent 23px 60px);--w-amb-size:300px 300px;--w-amb-anim:w-rain 1.6s linear infinite;}
[data-world="blockfall"][data-lane="kids"]{--w-bg1:#2F5C8A;--w-bg2:#132A48;--w-accent:#7FE0A8;--w-glow:rgba(127,224,168,.25);--w-art:url(/reading-program/assets/worlds-v2/blockfall_tile.webp);--w-art-name:"blockfall_tile";--w-amb:radial-gradient(2px 2px at 30px 120px,rgba(127,224,168,.9) 50%,transparent 51%),radial-gradient(1.6px 1.6px at 120px 60px,rgba(200,235,255,.85) 50%,transparent 51%);--w-amb-size:170px 170px;--w-amb-anim:w-rise 18s linear infinite;--w-accent-ink:#10223A;}
[data-world="blockfall"][data-lane="teen"]{--w-bg1:#2A3038;--w-bg2:#11151B;--w-accent:#9FCFB2;--w-glow:rgba(159,207,178,.12);--w-art:url(/reading-program/assets/worlds-v2/older_blockfall_islands.webp);--w-art-name:"older_blockfall_islands";--w-amb:none;--w-amb-size:auto;--w-amb-anim:none;--w-accent-ink:#11151B;}
[data-world="champions"][data-lane="kids"]{--w-bg1:#2B5A40;--w-bg2:#123022;--w-accent:#F2B544;--w-glow:rgba(255,240,200,.28);--w-art:url(/reading-program/assets/worlds-v2/champions_tile.webp);--w-art-name:"champions_tile";--w-amb:linear-gradient(100deg,transparent 40%,rgba(255,240,200,.16) 50%,transparent 60%);--w-amb-size:300% 100%;--w-amb-anim:w-sweep 12s ease-in-out infinite;}
[data-world="champions"][data-lane="teen"]{--w-bg1:#1F2723;--w-bg2:#0C110E;--w-accent:#D9C38F;--w-glow:rgba(217,195,143,.12);--w-art:url(/reading-program/assets/worlds-v2/older_champions_stadium.webp);--w-art-name:"older_champions_stadium";--w-amb:none;--w-amb-size:auto;--w-amb-anim:none;--w-accent-ink:#0C110E;}
/* lane treatments */
[data-lane="kids"] .w-hero img{filter:saturate(1.05)}
[data-lane="teen"] .w-hero img{filter:saturate(.78) contrast(1.06) brightness(.92)}
[data-lane="teen"] .w-scene::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:1;pointer-events:none;opacity:.10;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
[data-lane="teen"] .w-btn{box-shadow:0 2px 0 rgba(0,0,0,.35)}
[data-lane="teen"] .w-card{border-radius:12px;backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.05)}
[data-lane="teen"] .w-eyebrow{letter-spacing:.16em}

/* ---- surfaces that take the world ---- */
.w-scene{position:relative;color:var(--w-text);background:radial-gradient(60% 50% at var(--w-glow-pos),var(--w-glow),transparent 70%),var(--w-texture),linear-gradient(180deg,var(--w-bg1),var(--w-bg2));overflow:hidden;isolation:isolate}
.w-hero{position:relative;min-height:260px;border-radius:24px;overflow:hidden;background:var(--w-bg2)}
.w-hero img{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--w-art-pos,50% 45%)}
.w-hero::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:linear-gradient(180deg,transparent 18%,rgba(10,16,30,.35) 50%,var(--w-hero-shade,var(--w-bg2)) 100%)}
.w-amb{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:1;pointer-events:none;background:var(--w-amb);background-size:var(--w-amb-size);animation:var(--w-amb-anim);opacity:.5}   /* P0-14: at most .5 */
.w-card{background:var(--w-surface);border:1px solid var(--w-line);border-radius:20px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.w-btn{background:var(--w-accent);color:var(--w-accent-ink);border:0;border-radius:999px;height:56px;padding:0 28px;font:700 17px var(--font-sans);box-shadow:0 4px 0 rgba(0,0,0,.25),0 12px 30px var(--w-glow)}
.w-eyebrow{color:var(--w-accent-text,var(--w-accent));font:600 13px var(--font-sans);letter-spacing:.08em;text-transform:uppercase}
/* teens: cinematic letterbox on the hero, no particles except weather (snow, dust) */
[data-lane="teen"] .w-hero{aspect-ratio:2.39/1;min-height:0;border-radius:6px}
[data-lane="teen"] .w-hero::before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:2;box-shadow:inset 0 0 120px rgba(0,0,0,.55)}
[data-lane="teen"] .w-amb{opacity:.45}
/* transition between screens: a 520ms world-colored wipe (never on the reader).
   .go passes across (an in-page swap); .out covers the page as it is LEFT and holds (js/anp-world.js wipe(),
   home to night start). The page navigates in the same tick, so the wipe adds no waiting. */
.w-wipe{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:2147483000;pointer-events:none;background:linear-gradient(90deg,var(--w-bg2,#141E3C),var(--w-bg1,#1F2E55));transform:translateX(-101%);visibility:hidden}
.w-wipe.go{visibility:visible;animation:w-wipe 520ms var(--ease-door,cubic-bezier(.65,0,.35,1)) forwards}
.w-wipe.out{visibility:visible;animation:w-wipe-out 520ms var(--ease-door,cubic-bezier(.65,0,.35,1)) forwards}
.w-wipe.out::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:var(--anp-cream,#FBF8F1);opacity:0;animation:w-wipe-cream 520ms linear forwards}
/* THE READER: calm and neutral. Only a 3px world edge at the top. Ambient elements are never rendered here. */
.anp-reader[data-world]{background:var(--anp-cream);color:var(--anp-ink);box-shadow:inset 0 3px 0 var(--w-accent)}
.anp-reader .w-amb,.anp-reader .w-hero::before{display:none!important}
/* the night's storybook (session.html .sb-book): one static 3px world-accent line just above the book,
   never over or under a word. Needs <body data-world data-lane> (js/anp-world.js data-auto). */
[data-world][data-lane] .sb-book::before{content:"";position:absolute;left:14px;right:14px;top:-7px;height:3px;border-radius:3px;background:var(--w-accent);pointer-events:none;z-index:6}
.sb-book .w-amb,.sb-page .w-amb{display:none!important}
/* portrait art (the two kids covers) sits a little high in a wide frame */
[data-world="greenwood"][data-lane="kids"],[data-world="stardrift"][data-lane="kids"]{--w-art-pos:50% 30%}

@keyframes w-snow{from{background-position:0 0,0 0,0 0}to{background-position:40px 280px,-30px 260px,20px 280px}}
@keyframes w-embers{from{background-position:0 0,0 0}to{background-position:30px -340px,-20px -340px}}
@keyframes w-wind{from{background-position:0 0}to{background-position:-400px 0}}
@keyframes w-twinkle{0%,100%{opacity:.35}50%{opacity:.9}}
@keyframes w-blink{0%,100%{opacity:.45}50%{opacity:.15}}   /* the teen console lamp never passes the 45% weather ceiling */
@keyframes w-sweep{0%,100%{background-position:100% 0}50%{background-position:0 0}}
@keyframes w-dust{from{background-position:0 0}to{background-position:120px -60px}}
@keyframes w-leaves{from{background-position:0 0}to{background-position:-80px 340px}}
@keyframes w-rain{from{background-position:0 0}to{background-position:-60px 300px}}
@keyframes w-wipe{0%{transform:translateX(-101%)}50%{transform:translateX(0)}100%{transform:translateX(101%)}}
@keyframes w-wipe-out{0%{transform:translateX(-101%)}62%,100%{transform:translateX(0)}}
@keyframes w-wipe-cream{0%,52%{opacity:0}100%{opacity:1}}
@keyframes w-drift{from{background-position:0 0}to{background-position:-190px 60px}}
@keyframes w-motes{from{background-position:0 0}to{background-position:40px -280px}}
@keyframes w-rise{from{background-position:0 0}to{background-position:-20px -340px}}
@media (prefers-reduced-motion:reduce){.w-amb{animation:none!important;opacity:.5}.w-wipe.go,.w-wipe.out,.w-wipe.out::after{animation:none!important;visibility:hidden}}
.w-hero .w-eyebrow{color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.6)}

/* =====================================================================================================
   P0-3 / P0-14 (tire-kick Oct 15): THE WORLD, SUBTLE BUT CLEARLY NOTICEABLE, on the app's world surfaces:
   the family home, the shelf (my-story.html), the night start and the end of the night. A page marks itself
   with <body class="w-surface"> only while it shows one of them (session.html: its start and end screens,
   never while reading text is on screen; js/anp-world.js surface()). Logo, type, layout and spacing stay.
   THE READER STAYS NEUTRAL: nothing below targets .story, .line, .sb-cc, .lb-words or the child's line.
   Per world: --w-accent-text (the accent darkened to 4.6:1 or better on white and on the tinted paper, for
   links), --w-btn / --w-btn-ink (the gold button takes the world accent: every pair measured >= 4.5:1, see
   the QA worlds-v2-check), --w-sweep (the teen light sweep's tint). Generated from the values above.
   ===================================================================================================== */
[data-world="emberwing"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FFB347;--w-btn-ink:#1F2E55;}
[data-world="emberwing"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#D9A066;--w-btn-ink:#1F2E55;--w-sweep:rgba(217,160,102,.12);}
[data-world="kittyhawk"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#F2B544;--w-btn-ink:#1F2E55;--w-scrim:#E9D3A6;--w-eon-mix:20%;--w-muted:#1F2E55;}   /* its sky-blue --w-bg1 cannot carry the ink words at 4.5:1 (2.7:1 measured), so the scrim is the world's own sand */
[data-world="kittyhawk"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#D8C7A0;--w-btn-ink:#1F2E55;--w-sweep:rgba(216,199,160,.12);}
[data-world="endurance"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#F2B544;--w-btn-ink:#1F2E55;--w-eon-mix:20%;}   /* a pale sky world: the lamp card takes less of it so the cream words keep 4.5:1 */
[data-world="endurance"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#BFE3F2;--w-btn-ink:#1F2E55;--w-sweep:rgba(191,227,242,.12);}
[data-world="apollo13"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FFC94D;--w-btn-ink:#1F2E55;}
[data-world="apollo13"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#F4B942;--w-btn-ink:#1F2E55;--w-sweep:rgba(244,185,66,.12);}
[data-world="agency"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FFC069;--w-btn-ink:#1F2E55;}
[data-world="agency"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#C9965A;--w-btn-ink:#1F2E55;--w-sweep:rgba(201,150,90,.12);}
[data-world="stardrift"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FFD36E;--w-btn-ink:#1F2E55;}
[data-world="stardrift"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#9DB0D8;--w-btn-ink:#1F2E55;--w-sweep:rgba(157,176,216,.12);}
[data-world="greenwood"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#F2C95A;--w-btn-ink:#1F2E55;--w-scrim-a:84%;--w-muted:#FFF8EC;}   /* its bright canopy needs a firmer scrim for 4.5:1 (4.3 at 70%) */
[data-world="greenwood"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#C7B27A;--w-btn-ink:#1F2E55;--w-sweep:rgba(199,178,122,.12);}
[data-world="thedig"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FFC46B;--w-btn-ink:#1F2E55;}
[data-world="thedig"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#D2AA6C;--w-btn-ink:#1F2E55;--w-sweep:rgba(210,170,108,.12);}
[data-world="rescueone"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#FF8A5B;--w-btn-ink:#1F2E55;}
[data-world="rescueone"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#F2B544;--w-btn-ink:#1F2E55;--w-sweep:rgba(224,122,85,.12);}
[data-world="blockfall"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#7FE0A8;--w-btn-ink:#1F2E55;--w-scrim-a:84%;--w-muted:#FFF8EC;}   /* bright sky art: a firmer scrim for 4.5:1 (4.0 at 70%) */
[data-world="blockfall"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#9FCFB2;--w-btn-ink:#1F2E55;--w-sweep:rgba(159,207,178,.12);}
[data-world="champions"][data-lane="kids"]{--w-accent-text:#7A4E00;--w-btn:#F2B544;--w-btn-ink:#1F2E55;}
[data-world="champions"][data-lane="teen"]{--w-accent-text:#7A4E00;--w-btn:#D9C38F;--w-btn-ink:#1F2E55;--w-sweep:rgba(217,195,143,.12);}
/* teens: one slow light sweep, never particles or sparkle (brief P0-14.3). Kids keep each world's own element,
   at most .5 and on 12 to 18s loops (set in each world above). */
[data-world][data-lane="teen"]{--w-amb:linear-gradient(100deg,transparent 38%,var(--w-sweep,rgba(255,236,200,.10)) 50%,transparent 62%);--w-amb-size:300% 100%;--w-amb-anim:w-sweep 16s ease-in-out infinite}

/* 1. palette: the paper moves 10% toward the world; cards stay milk */
html body.w-surface[data-world][data-lane]{background:color-mix(in srgb,var(--w-bg2) 10%,var(--anp-cream,#FBF8F1))}
/* 4. the header: a 3px world-accent edge (drawn inside the bar, so nothing below moves) */
body.w-surface[data-world][data-lane] .anp-appbar,body.w-surface[data-world][data-lane] > nav,body.w-surface[data-world][data-lane] > .topbar{box-shadow:inset 0 -3px 0 var(--w-accent)}
/* the one gold button wears the world accent (every world's pair passes 4.5:1) */
body.w-surface[data-world][data-lane] #app #start-tonight,body.w-surface[data-world][data-lane] #app a.btn.eon-done:not(.ghost),body.w-surface[data-world][data-lane] #app .w-primary{background:var(--w-btn,#F2B544);color:var(--w-btn-ink,#1F2E55);border-color:transparent}
body.w-surface[data-world][data-lane] #app a.btn.eon-done:not(.ghost){box-shadow:0 4px 0 rgba(0,0,0,.18),0 12px 32px var(--w-glow,rgba(242,181,68,.38))}
/* links on the paper and the progress bar in the world's text accent (never inside the dark world scenes) */
body.w-surface[data-world][data-lane] #app a:not([class*="btn"]):not(.w-primary):not(:is(.hw-band,.w-band,.eon,.w-scene) a){color:var(--w-accent-text,#1F2E55)}
body.w-surface[data-world][data-lane] progress{accent-color:var(--w-accent-text,#1F2E55)}
body.w-surface[data-world][data-lane] [role="progressbar"] > *{background-color:var(--w-accent-text,#1F2E55)}

/* 2. THE WORLD BAND: one full-bleed band at the top of the shelf and the night start (the family home has its
   world scene, home-world.css, at the same heights): phone 200px, computer 320px. Kids: the painting, softly
   warm. Teen: a 2.39:1 letterbox frame over a dark blurred copy of itself, a cooler grade, grain at .06.
   The greeting sits on a --w-bg1 scrim at 70%. 3. one ambient touch, inside the band only, above the scrim. */
.w-band{--bh:200px;position:relative;z-index:0;isolation:isolate;overflow:hidden;height:var(--bh);box-sizing:border-box;
  width:calc(100vw - var(--w-sbw,0px));margin:0 0 16px calc(50% - (100vw - var(--w-sbw,0px)) / 2);background:var(--w-bg2,#141E3C);color:var(--w-text,#F3EBDD)}
@media (min-width:768px){.w-band{--bh:320px;margin-bottom:24px}}
.w-band-bg{display:none}
.w-band-frame{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;overflow:hidden}
.w-band-img{position:absolute;top:0;right:0;bottom:0;left:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--w-art-pos,50% 45%);display:block}
[data-lane="kids"] .w-band-img{filter:saturate(1.05)}
[data-lane="kids"] .w-band-frame::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:linear-gradient(180deg,rgba(255,196,120,.08),rgba(255,170,90,.10));mix-blend-mode:soft-light;pointer-events:none}
[data-lane="teen"] .w-band-bg{display:block;position:absolute;top:-24px;right:-24px;bottom:-24px;left:-24px;inset:-24px;background:var(--w-art) center/cover no-repeat;filter:blur(18px) brightness(.42) saturate(.6)}
[data-lane="teen"] .w-band-frame{top:auto;right:auto;bottom:auto;left:auto;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:min(100%,calc(var(--bh) * 2.39));aspect-ratio:2.39/1;box-shadow:0 0 0 1px rgba(0,0,0,.4),0 18px 40px -18px rgba(0,0,0,.8)}
[data-lane="teen"] .w-band-img{filter:saturate(.78) contrast(1.06) brightness(.92)}
[data-lane="teen"] .w-band-frame::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:rgba(70,110,160,.16);mix-blend-mode:soft-light;box-shadow:inset 0 0 90px rgba(0,0,0,.5);pointer-events:none}
.w-band-grain{display:none}
[data-lane="teen"] .w-band-grain{display:block;position:absolute;top:0;right:0;bottom:0;left:0;inset:0;z-index:2;pointer-events:none;opacity:.06;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
/* the ambient: inside the band, fading out before the scrim (never behind words) */
.w-band .w-amb{z-index:1;-webkit-mask-image:linear-gradient(180deg,#000 0,#000 30%,transparent 58%);mask-image:linear-gradient(180deg,#000 0,#000 30%,transparent 58%)}
.w-band-scrim{position:absolute;z-index:3;left:max(16px,calc((100% - 1120px) / 2 + 16px));bottom:12px;max-width:calc(100% - 32px);box-sizing:border-box;padding:8px 14px 10px;border-radius:14px;
  background:color-mix(in srgb,var(--w-scrim,var(--w-bg1,#1F2E55)) var(--w-scrim-a,70%),transparent);color:var(--w-text,#F3EBDD);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
[data-lane="teen"] .w-band-scrim{left:16px;bottom:10px;border-radius:6px;-webkit-backdrop-filter:none;backdrop-filter:none}
.w-band-img{z-index:0}
.w-band-frame::after{z-index:1}
@media (min-width:768px){.w-band-scrim{bottom:20px;padding:12px 18px 14px}[data-lane="teen"] .w-band-scrim{left:24px;bottom:18px}}
.w-band-eyebrow{display:block;font:600 14px/1.3 var(--font-sans,"Lexend",system-ui,sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--w-text,#F3EBDD)}
[data-lane="teen"] .w-band-eyebrow{letter-spacing:.16em}
.w-band-greet{display:flex;align-items:center;gap:10px;margin:4px 0 0;font:600 17px/1.3 var(--font-sans,"Lexend",system-ui,sans-serif);color:var(--w-text,#F3EBDD)}
.w-band-greet h1,.w-band-greet h2{margin:0;font:600 clamp(20px,1.2vw + 16px,30px)/1.15 var(--font-serif,"Fraunces",Georgia,serif);color:inherit;text-align:left}
.w-band-greet .nb-duo{flex:none}
.w-band-greet .nb-duo .sm-hero{width:44px;height:44px}
.w-band-greet .nb-duo .sm-friend{width:34px;height:34px;margin-left:-10px}
@media (prefers-reduced-motion:reduce){.w-band .w-amb{animation:none!important}}

/* the end of the night: the lamp card takes the world's own night colours and a faint, still painting of the
   world behind the lamp (no motion; the words stay on the dark ground) */
body.w-surface[data-world][data-lane] .eon{background:linear-gradient(180deg,color-mix(in srgb,var(--w-bg1) var(--w-eon-mix,40%),#1F2E55),color-mix(in srgb,var(--w-bg2) var(--w-eon-mix,40%),#141E3C));box-shadow:inset 0 3px 0 var(--w-accent)}
body.w-surface[data-world][data-lane] .eon::before{content:"";position:absolute;top:0;right:0;bottom:45%;left:0;inset:0 0 45% 0;z-index:0;background:var(--w-art) var(--w-art-pos,50% 45%)/cover no-repeat;opacity:.2;-webkit-mask-image:linear-gradient(180deg,#000,transparent);mask-image:linear-gradient(180deg,#000,transparent);pointer-events:none}
body.w-surface[data-world][data-lane="teen"] .eon::before{filter:saturate(.7) brightness(.9);opacity:.16}
body.w-surface[data-world][data-lane] .eon > *{position:relative;z-index:1}

/* X1 2026-10-15 old iPad (no aspect-ratio): the teen letterbox frame is as tall as the band (its width is capped at 2.39 times that) */
@supports not (aspect-ratio:1){
  [data-lane="teen"] .w-band-frame{height:var(--bh)}
}
