/* Three material worlds: sunlit toys, luminous water, and an orbital console. */
body[data-theme="play"]:not([data-bedtime="true"]) {
  --bg:#fff1d7;--surface:#fff9eb;--surface-2:#efdfbf;--ink:#293238;--muted:#616456;--line:#c8ad87;
  --board:#163b3f;--tile:#204a4d;--tile-2:#285655;--ui-accent:#17664f;--ui-lilac:#a64869;--ui-peach:#b45c30;--ui-pink:#a64869;
  --primary:#17664f;--primary-text:#fff9eb;--primary-edge:#0c4535;--nav:#17664f;--nav-text:#fff9eb;
  --button:#fff9eb;--button-text:#293238;--button-edge:#c8ad87;--reset:#fff9eb;--reset-text:#293238;--reset-edge:#c8ad87;
  --hint:#17664f;--hint-text:#fff9eb;--hint-edge:#0c4535;--frame:#e4bd78;--frame-depth:#a57348;--warm:#ffd166;--warm-rgb:255,209,102;
  --world-light-rgb:100,224,186;--world-wall-rgb:196,124,56;--world-pickup-rgb:255,210,102;--world-edge:#68bda2;
  --world-floor-one:#295655;--world-floor-two:#163c43;--world-floor-alt:#245051;--world-collected:#3e5d42;--world-passed:#3a6e62;
  --world-map-one:#fff9eb;--world-map-two:#f3e4c7;--world-map-edge:#bba47d;
  --world-panel:repeating-linear-gradient(7deg,rgba(117,65,26,.12) 0 1px,transparent 1px 7px),linear-gradient(140deg,#f0ce8e,#c49257 55%,#efd093);
  background:radial-gradient(ellipse at 15% 20%,#ffe0a9,transparent 58%),#fff1d7;
}
body[data-theme="play"]:not([data-bedtime="true"]) .app[data-chapter] {
  --accent:#64e0ba;--accent-rgb:100,224,186;--accent-2:#f398b3;--accent2-rgb:243,152,179;--trail-color:#b9f0c9;
  background:radial-gradient(ellipse at 5% 28%,rgba(255,190,99,.3),transparent 45%),radial-gradient(ellipse at 95% 80%,rgba(228,138,151,.16),transparent 43%),linear-gradient(150deg,#fff4dc,#f6e7cb);
}
body[data-theme="midnight"]:not([data-bedtime="true"]) {
  color-scheme:dark;--bg:#061e33;--surface:#0c354a;--surface-2:#164b60;--ink:#e6ffff;--muted:#b5d8df;--line:#347689;
  --board:#052b41;--tile:#0d4258;--tile-2:#0b3a51;--ui-accent:#73f4dc;--ui-lilac:#aab7ff;--ui-peach:#ffada0;--ui-pink:#ffada0;
  --primary:#73f4dc;--primary-text:#07382f;--primary-edge:#2f9c8d;--nav:#73f4dc;--nav-text:#07382f;
  --button:#103f54;--button-text:#e6ffff;--button-edge:#347689;--reset:#103f54;--reset-text:#e6ffff;--reset-edge:#347689;
  --hint:#73f4dc;--hint-text:#07382f;--hint-edge:#2f9c8d;--frame:#5adbd7;--frame-depth:#136c79;--warm:#ffe4a1;--warm-rgb:255,228,161;
  --tracker-bg:#14485b;--tracker-edge:#4a8d9c;--tracker-filled:#0b4250;--tracker-filled-edge:#73f4dc;
  --world-light-rgb:96,241,225;--world-wall-rgb:91,219,224;--world-pickup-rgb:168,255,235;--world-edge:#56aaba;
  --world-floor-one:#15576a;--world-floor-two:#09354d;--world-floor-alt:#10495e;--world-collected:#225e59;--world-passed:#1b6b76;
  --world-map-one:#104055;--world-map-two:#092c43;--world-map-edge:#347f91;
  --world-panel:radial-gradient(ellipse at 10% 0%,#227b90,transparent 70%),linear-gradient(150deg,#0b4260,#04263d);
  background:radial-gradient(ellipse at 20% 0%,#0b5568,transparent 58%),#061e33;
}
body[data-theme="midnight"]:not([data-bedtime="true"]) .app[data-chapter] {
  --accent:#60f1e1;--accent-rgb:96,241,225;--accent-2:#ff9caa;--accent2-rgb:255,156,170;--trail-color:#a3fff1;
  background:radial-gradient(ellipse at 15% 0%,rgba(39,210,209,.2),transparent 55%),radial-gradient(ellipse at 95% 80%,rgba(35,112,204,.24),transparent 55%),linear-gradient(165deg,#08344b,#061e33 65%,#0c3850);
}
body[data-theme="moon"]:not([data-bedtime="true"]) {
  --bg:#090f2e;--surface:#172447;--surface-2:#24375a;--ink:#eff5ff;--muted:#bccced;--line:#526e9f;
  --board:#111e3e;--tile:#1b3051;--tile-2:#202947;--ui-accent:#ffd675;--ui-lilac:#9bdfff;--ui-peach:#b4adff;--ui-pink:#b4adff;
  --primary:#ffd675;--primary-text:#362912;--primary-edge:#aa7b33;--nav:#ffd675;--nav-text:#362912;
  --button:#1a2b4c;--button-text:#eff5ff;--button-edge:#526e9f;--reset:#1a2b4c;--reset-text:#eff5ff;--reset-edge:#526e9f;
  --hint:#ffd675;--hint-text:#362912;--hint-edge:#aa7b33;--frame:#a8d9fa;--frame-depth:#526895;--warm:#ffdc79;--warm-rgb:255,220,121;
  --tracker-bg:#253655;--tracker-edge:#6d86ab;--tracker-filled:#23375a;--tracker-filled-edge:#ffd675;
  --world-light-rgb:144,210,255;--world-wall-rgb:143,199,247;--world-pickup-rgb:255,220,121;--world-edge:#607fae;
  --world-floor-one:#25395c;--world-floor-two:#142443;--world-floor-alt:#292e56;--world-collected:#3e3f4b;--world-passed:#344c70;
  --world-map-one:#243456;--world-map-two:#181f42;--world-map-edge:#536fa4;
  --world-panel:linear-gradient(135deg,#47658d,#263c67 50%,#58799c);
  background:radial-gradient(ellipse at 75% 15%,#25205c,transparent 55%),#090f2e;
}
body[data-theme="moon"]:not([data-bedtime="true"]) .app[data-chapter] {
  --accent:#90d2ff;--accent-rgb:144,210,255;--accent-2:#b4adff;--accent2-rgb:180,173,255;--trail-color:#ffe7a8;
  background:radial-gradient(ellipse at 100% 12%,rgba(120,83,241,.21),transparent 48%),radial-gradient(ellipse at 0% 76%,rgba(52,129,200,.17),transparent 45%),linear-gradient(160deg,#111939,#090f2e 60%,#1a1841);
}

/* Lit edges and dimensional floors, without changing any puzzle geometry. */
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .board {
  background:var(--world-panel);border-color:var(--frame);box-shadow:0 4px 0 var(--frame-depth),inset 0 0 0 1px rgba(255,255,255,.16),0 0 18px rgba(var(--world-light-rgb),.17),0 12px 22px var(--shadow);
}
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .board.win,
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .board.aligned { border-color:var(--warm);box-shadow:0 4px 0 var(--frame-depth),0 0 20px rgba(var(--warm-rgb),.28),0 12px 22px var(--shadow); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell:not(.wall) { background:linear-gradient(145deg,var(--world-floor-one),var(--world-floor-two));border-color:var(--world-edge);box-shadow:inset 0 1px rgba(255,255,255,.1),inset 0 -2px rgba(0,0,0,.1); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell:nth-child(2n):not(.wall) { background:linear-gradient(145deg,var(--world-floor-alt),var(--world-floor-two)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.passed:not(.wall):not(.collected) { background:var(--world-passed);border-color:var(--accent); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.collected:not(.wall) { background:var(--world-collected);border-color:rgba(var(--warm-rgb),.45);box-shadow:inset 0 0 10px rgba(var(--warm-rgb),.1); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.item.sequence.listening { border-color:var(--warm);box-shadow:inset 0 0 0 2px var(--warm),inset 0 0 12px rgba(var(--warm-rgb),.15); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.wall { filter:saturate(1.2) brightness(1.06) drop-shadow(0 2px 3px rgba(var(--world-wall-rgb),.3)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.item:not(.collected) .piece-symbol { filter:saturate(1.15) brightness(1.08) drop-shadow(0 0 4px rgba(var(--world-pickup-rgb),.5)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.item.paint:not(.collected) .piece-symbol { filter:saturate(1.2) brightness(1.08) drop-shadow(0 0 4px rgba(var(--accent2-rgb),.5)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .player .player-art { filter:saturate(1.15) brightness(1.05) drop-shadow(0 0 4px rgba(var(--world-light-rgb),.38)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .player::after { border-color:#eafff9;box-shadow:0 0 7px rgba(var(--world-light-rgb),.3); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.portal::before { filter:saturate(1.2) drop-shadow(0 0 5px rgba(var(--accent2-rgb),.45)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .cell.exit.ready::before { filter:brightness(1.12) drop-shadow(0 0 5px rgba(var(--warm-rgb),.45)); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .live-frame { border-color:rgba(var(--world-light-rgb),.45);box-shadow:0 0 10px rgba(var(--world-light-rgb),.18); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .board-sheen { background:radial-gradient(ellipse at 12% 0%,rgba(var(--world-light-rgb),.14),transparent 65%),radial-gradient(ellipse at 100% 100%,rgba(var(--accent2-rgb),.1),transparent 60%); }

/* Sunlight and painted details on the Toybox table. */
body[data-theme="play"]:not([data-bedtime="true"]) .world-atmosphere::before { background:radial-gradient(ellipse at 0% 18%,rgba(255,186,95,.24),transparent 55%),radial-gradient(ellipse at 100% 80%,rgba(241,143,168,.15),transparent 45%); }
body[data-theme="play"]:not([data-bedtime="true"]) .scene-orbit { border-color:rgba(188,121,61,.24);animation-delay:-7s; }
body[data-theme="play"]:not([data-bedtime="true"]) .scene-flecks i { border-color:#c78b47;background:#ffdc93; }
body[data-theme="play"]:not([data-bedtime="true"]) .scene-flecks i:nth-child(2n) { border-color:#cc7389;background:#ffd1d5; }
body[data-theme="play"]:not([data-bedtime="true"]) .scene-ribbon { border-color:rgba(207,131,61,.2);background:linear-gradient(180deg,rgba(255,204,115,.22),transparent 65%); }
body[data-theme="play"]:not([data-bedtime="true"]) .live-frame { border-color:rgba(180,126,61,.5);box-shadow:0 0 0 1px rgba(255,244,211,.6); }

/* Underwater rays and glowing water contours. */
body[data-theme="midnight"]:not([data-bedtime="true"]) .world-atmosphere::before { background:radial-gradient(ellipse at 20% 0%,rgba(116,255,230,.19),transparent 62%),radial-gradient(ellipse at 100% 70%,rgba(49,121,236,.17),transparent 55%); }
body[data-theme="midnight"]:not([data-bedtime="true"]) .world-atmosphere::after { content:"";position:absolute;inset:0;background:repeating-linear-gradient(112deg,transparent 0 40px,rgba(110,250,227,.045) 40px 60px,transparent 60px 135px); }
body[data-theme="midnight"]:not([data-bedtime="true"]) .scene-ribbon { border-color:rgba(99,242,222,.28);background:linear-gradient(180deg,rgba(99,242,222,.11),transparent 65%); }
body[data-theme="midnight"]:not([data-bedtime="true"]) .scene-orbit { border-color:rgba(94,234,225,.22);animation-delay:-8s; }
body[data-theme="midnight"]:not([data-bedtime="true"]) .scene-flecks i { border-color:#86f9e5;box-shadow:inset 2px 2px rgba(222,255,247,.6),0 0 8px rgba(96,241,225,.25); }
body[data-theme="midnight"]:not([data-bedtime="true"]) .ambient-haze i { opacity:.16;background:radial-gradient(ellipse,#4ad7d2,transparent 68%); }

/* A violet sky, orbital beacons and a distant planet beyond the lunar console. */
body[data-theme="moon"]:not([data-bedtime="true"]) .world-atmosphere::before { background:radial-gradient(ellipse at 100% 15%,rgba(123,99,246,.24),transparent 50%),radial-gradient(ellipse at 0% 65%,rgba(64,157,241,.17),transparent 55%); }
body[data-theme="moon"]:not([data-bedtime="true"]) .world-atmosphere::after { content:"";position:absolute;width:180px;height:180px;right:-86px;bottom:7%;border-radius:50%;border:1px solid rgba(173,218,255,.4);background:radial-gradient(circle at 17% 24%,#6078ba,#242954 38%,#12152f 68%);box-shadow:-4px -3px 18px rgba(150,185,255,.13),inset 6px 3px 10px rgba(173,218,255,.16); }
body[data-theme="moon"]:not([data-bedtime="true"]) .scene-orbit { border-color:rgba(151,208,255,.36);animation-delay:-8s; }
body[data-theme="moon"]:not([data-bedtime="true"]) .scene-orbit::before { background:#ffdc79;box-shadow:0 0 12px rgba(255,220,121,.55); }
body[data-theme="moon"]:not([data-bedtime="true"]) .scene-flecks i { background:#c3e7ff; }
body[data-theme="moon"]:not([data-bedtime="true"]) .ambient-haze i { opacity:.13;background:radial-gradient(ellipse,#8d9bea,transparent 68%); }

/* The room maps share each world's materials and light. */
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .brand b { color:var(--ui-accent); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .chapter-sigil { color:var(--ui-accent);background:var(--surface-2);box-shadow:0 0 8px rgba(var(--world-light-rgb),.1); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .chapter-card { background:linear-gradient(135deg,var(--world-map-one),var(--world-map-two));border-color:var(--world-map-edge); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .chapter-card.current,
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .chapter-card.open { border-color:var(--ui-accent);box-shadow:0 0 10px rgba(var(--world-light-rgb),.13); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .room-grid button { border:1px solid var(--world-map-edge);background:var(--surface-2); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .room-grid button.cleared { border-color:var(--ui-accent); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .room-grid button.playing { background:var(--primary);color:var(--primary-text);border-color:var(--primary);box-shadow:0 0 8px rgba(var(--world-light-rgb),.2); }
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .objective i.done { box-shadow:inset 0 0 0 1px var(--ui-accent),0 0 6px rgba(var(--world-light-rgb),.18); }
body[data-theme="play"]:not([data-bedtime="true"]) .theme-picker [data-theme="play"] i { --preview-bg:#f2d9ab; }
body[data-theme="midnight"]:not([data-bedtime="true"]) .theme-picker [data-theme="midnight"] i { --preview-bg:#093e54; }
body[data-theme="moon"]:not([data-bedtime="true"]) .theme-picker [data-theme="moon"] i { --preview-bg:#172548; }

/* Keep the new lighting inexpensive on low-power phones. */
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .app[data-effects="light"] .cell.wall,
body:is([data-theme="play"],[data-theme="midnight"],[data-theme="moon"]):not([data-bedtime="true"]) .app[data-effects="light"] .piece-symbol { filter:saturate(1.15) brightness(1.05); }
