/* Reference-led theme layers. Layout remains live DOM and real puzzle rules. */
:root[data-theme] {--ink:var(--theme-ink);--muted:var(--theme-muted);--cream:var(--theme-cream);background:var(--theme-backgroundColor);}
html[data-theme] body {background:var(--theme-backgroundColor);}
html[data-theme] .cat-atmosphere,html[data-theme] .menu-screen .cat-atmosphere,html[data-theme] .play-screen .cat-atmosphere,html[data-theme] .map-screen .cat-atmosphere {background:var(--theme-background) center/cover no-repeat;opacity:1;}
html[data-theme] .room-light,html[data-theme] .floating-paw {display:none;}
html[data-theme] .cat-sprite {background-image:var(--cat-source);background-size:500% 100%;background-position:calc(var(--cat-col,0)*25%) 0;}
html[data-theme] .cat-sprite.has-video {background-image:none;}
html[data-theme] .obstacle {background-image:var(--prop-source);background-size:contain;background-repeat:no-repeat;background-position:center bottom;filter:drop-shadow(0 2px 1px #163f4233);}
html[data-theme] .cat-home,html[data-theme] .cat-home-art,html[data-theme] .cat-package-home {background:var(--home-source) center bottom/contain no-repeat;}
html[data-theme] .cat-home {width:100%;height:100%;}
html[data-theme] .home-symbol {left:41%;top:23%;bottom:auto;width:21%;height:21%;padding:0;display:grid;place-items:center;border:1px solid #b29274;border-radius:50%;background:#fff2d8;color:#876447;font-size:clamp(10px,calc(var(--cell-size)*.17),18px);}
html[data-theme] .home-marker-original .home-symbol {display:none;}
html[data-theme] .active-home .cat-home {filter:drop-shadow(0 2px 1px #6f513236);}
html[data-theme] .active-home .cat-home:before,html[data-theme] .selected-cell:before {display:none;}
html[data-theme] .icon-button {background:#fff1d5 url('assets/themes/felt-garden/cream-fiber.webp') center/128px;border:2px solid #fff9e3;box-shadow:inset 0 0 0 2px #d9c4a1,0 3px 2px #062f4077;color:var(--theme-ink);border-radius:50%;}
html[data-theme] .icon-button:before {content:'';position:absolute;inset:5px;border:1px dashed #c6ad86;border-radius:inherit;pointer-events:none;}
html[data-theme] .game-logo h1 {background:none;color:#fff0d3;-webkit-text-stroke:0;font-size:50px;height:auto;width:auto;line-height:1.2;overflow:visible;text-shadow:0 2px #d3b88c,0 4px #927954,0 6px 5px #052f4580;}
html[data-theme] .game-logo h1 span {font-size:inherit;color:inherit;text-shadow:inherit;}
html[data-theme] .game-logo p,html[data-theme] .menu-modes b,html[data-theme] .menu-modes small,html[data-theme] .menu-rank {color:#fff0d5;text-shadow:0 2px 2px #073646;}
html[data-theme] .menu-cats.breed-family {grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));width:75%;left:12.5%;height:95%;bottom:0;gap:4px 6px;}
html[data-theme] .breed-family .menu-cat {max-width:160px;width:92%;}
html[data-theme] .cat-name-tag {background:#fff1d4;color:#154755;border-color:#c8b291;}
.theme-shortcut {position:absolute;top:68px;left:50%;translate:-50% 0;z-index:8;min-height:44px;display:flex;align-items:center;gap:5px;color:#fff1d5;background:#0c3f4ecc;border:1px solid #bcd9dc88;border-radius:24px;padding:7px 14px;font-size:12px;font-weight:800;}
.theme-shortcut .icon {width:18px;height:18px;}
html[data-theme] .button.primary {background:#f5e6c7 url('assets/themes/felt-garden/cream-fiber.webp') center/128px;color:#134958;text-shadow:0 1px #fff9e6;border:3px solid #fff6df;box-shadow:inset 0 0 0 2px #ceb98f,0 5px #917b54,0 9px 12px #082e4766;}
html[data-theme] .button.primary:before {border-color:#baa17d;}
html[data-theme] .collection-button,html[data-theme] .scene-bubble,html[data-theme] .currency-pill {color:#154552;background:#f5e6c7 url('assets/themes/felt-garden/cream-fiber.webp');border-color:#fff8e2;}
html[data-theme] .welcome-rug {background:radial-gradient(ellipse,#63979955,#38687133 60%,transparent 65%);}
html[data-theme] .play-screen {
  --stage-height:calc(100dvh - var(--safe-top) - var(--safe-bottom));
  --stage-width:min(100vw,calc(var(--stage-height)*.46258));
  --board-size:calc(var(--stage-width)*.9);
  --board-height:calc(var(--board-size)*1.026);
  width:var(--stage-width);height:var(--stage-height);margin:var(--safe-top) auto 0;max-width:none;padding:0;display:block;position:relative;overflow:visible;user-select:none;-webkit-user-select:none;
}
html[data-theme] .play-screen .cat-atmosphere {position:fixed;inset:0;background-size:cover;}
html[data-theme] .game-top {position:absolute;top:3.4%;left:4%;width:92%;height:10%;max-width:none;margin:0;display:block;z-index:5;}
html[data-theme] .game-top>.icon-button {position:absolute;top:0;width:13.2%;height:auto;aspect-ratio:1;min-width:44px;min-height:44px;}
html[data-theme] .game-top>.back-button {left:0;}
html[data-theme] .game-top>.icon-button:last-child {right:0;}
html[data-theme] .game-top .icon {width:57%;height:57%;stroke-width:2.6;}
html[data-theme] .game-level-title {position:absolute;top:23%;left:10%;width:80%;background:none;border:0;box-shadow:none;padding:0;text-align:center;}
html[data-theme] .level-world-label {min-height:0;height:calc(var(--stage-width)*.055);font-size:calc(var(--stage-width)*.036);line-height:1.2;color:#fff1d5;padding:0 2px;font-weight:850;}
html[data-theme] .level-world-label:before,html[data-theme] .level-world-label:after {content:'❧';color:#d9dda1;font-size:1.4em;margin:0 5px;}
html[data-theme] .level-world-label>.icon {display:none;}
html[data-theme] .game-level-title h1 {font-family:'Yuanti SC','Hiragino Sans GB','PingFang SC',sans-serif;font-size:calc(var(--stage-width)*.1);font-weight:900;line-height:1.08;margin-top:0;gap:8px;color:#fff0d4;text-shadow:0 2px #d5c09a,0 3px #8f8268,0 4px 3px #13313aaa;}
html[data-theme] .game-level-title h1>b {font-size:inherit;color:inherit;}
html[data-theme] .game-level-title h1>em {display:none;}
html[data-theme] .level-separator {font-size:.6em;}
html[data-theme] .board-stats {position:absolute;top:15%;left:11%;width:78%;height:6.8%;padding:6px 9px;display:grid;grid-template-columns:1fr 1.1fr 1.35fr;gap:0;border:2px solid #fff6dc;border-radius:999px;background:#f6e8cb url('assets/themes/felt-garden/cream-fiber.webp') center/128px;box-shadow:inset 0 0 0 2px #c9b48f,0 4px 4px #073a4a77;}
html[data-theme] .board-stats:before,html[data-theme] .partner-bar:before {content:'';position:absolute;inset:5px;border:1px dashed #c5ad89;border-radius:inherit;pointer-events:none;}
html[data-theme] .board-stats>div,html[data-theme] .board-stats>div:nth-child(n) {background:none;border:0;box-shadow:none;border-radius:0;min-height:0;padding:0;display:flex;flex-direction:column;justify-content:center;align-items:center;}
html[data-theme] .board-stats>div:nth-child(n+2) {border-left:1px solid #a69d8b;}
html[data-theme] .board-stats span:not(.stars):not(.hearts) {color:#083a46;font-size:calc(var(--stage-width)*.032);line-height:1.2;}
html[data-theme] .board-stats b {font-size:calc(var(--stage-width)*.055);line-height:1.1;color:#073e4b;}
html[data-theme] .board-stats b small {font-size:.65em;color:inherit;}
html[data-theme] .board-stats .rating-caption {display:none !important;}
html[data-theme] .stars {display:flex;gap:3px;justify-content:center;}
html[data-theme] .board-stats .stars .icon {width:calc(var(--stage-width)*.072);height:calc(var(--stage-width)*.075);}
html[data-theme] .stars .empty {fill:transparent;stroke:#daa42c;stroke-width:1.7;filter:drop-shadow(0 1px #af7b1f);}
html[data-theme] .stars .filled {fill:#ffd96b;stroke:#d79b24;}
html[data-theme] #live-rating .stars .filled {fill:transparent;stroke:#daa42c;stroke-width:1.7;filter:drop-shadow(0 1px #af7b1f);}
html[data-theme] .arena {position:absolute;top:24.8%;left:0;width:100%;height:auto;padding:0;display:flex;align-items:center;justify-content:center;}
html[data-theme] .board-scene {width:var(--board-size);height:var(--board-height);background:#ebdfc2;border-radius:12px;}
html[data-theme] .board {width:var(--board-size);height:var(--board-height);background:#ebdfc2;border-radius:12px;}
html[data-theme] .board-edge {inset:-12px;border:12px solid transparent;background:#ebdfc2;border-image:url('assets/themes/felt-garden/board-frame.webp') 38 34 38 34 / 12px stretch;box-shadow:0 4px 5px #092e4199;border-radius:19px;clip-path:inset(0 round 18px);}
html[data-theme] .board-edge:after {display:none;}
html[data-theme] .tiles {gap:3px;background:#d9cfb4;border-radius:10px;overflow:hidden;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-template-rows:repeat(var(--rows),minmax(0,1fr));}
html[data-theme] .cell,html[data-theme] .floor,html[data-theme] .cell:nth-child(2n),html[data-theme] .floor:nth-child(3n),html[data-theme] .wall {background:var(--theme-tileA) center/100% 100%;border:0;border-radius:10px;box-shadow:0 1px #ccbea2;filter:none;}
html[data-theme] .cell.cloth-sage,html[data-theme] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme] .cell:after {display:none;}
html[data-theme] .orb .cat-sprite {width:104%;height:104%;left:-2%;bottom:0;filter:drop-shadow(0 2px 1px #64523d44);}
html[data-theme] .orb.selected .cat-sprite {filter:drop-shadow(0 0 1px #fff3da) drop-shadow(0 2px 1px #66533c44);}
html[data-theme] .orb-halo,html[data-theme] .orb.selected .orb-halo {display:none;}
html[data-theme] .orb.selected .orb-halo {opacity:.4;width:65%;height:13%;border:1px solid var(--orb-color);background:#fff0bb66;bottom:3%;box-shadow:none;}
html[data-theme] .orb.selected .selection-pointer,html[data-theme] .orb.selected .selection-spark,html[data-theme] .selection-pointer,html[data-theme] .selection-spark {display:none;}
html[data-theme] .tethers {opacity:.22;}
html[data-theme] .yarn-traveller,html[data-theme] .yarn-knot {display:none;}
html[data-theme] .home-occupied .home-heart {color:#ed906c;}
html[data-theme] .partner-bar {position:absolute;top:70.5%;left:8.5%;width:83%;height:max(44px,6.6%);padding:5px 11px;display:flex;align-items:center;justify-content:center;gap:8px;background:#f4e6c9 url('assets/themes/felt-garden/cream-fiber.webp') center/128px;border:2px solid #fff5dc;border-radius:999px;color:#0b4050;}
html[data-theme] .partner-strip {display:flex;justify-content:center;gap:0;flex:1;min-width:0;}
html[data-theme] .partner-strip>button {display:flex;gap:5px;align-items:center;justify-content:center;width:auto;height:100%;min-height:44px;flex:1;border:0;box-shadow:none;border-radius:0;background:none;padding:0 6px;color:#083d4b;}
.partner-avatar {position:relative;display:block;flex-shrink:0;}
.partner-symbol {display:none;}
html[data-theme] .partner-strip>button+button {border-left:1px solid #a59c87;}
html[data-theme] .partner-strip .cat-sprite {width:clamp(24px,calc(var(--stage-width)*.11),44px);height:clamp(24px,calc(var(--stage-width)*.11),44px);border-radius:50%;border:2px solid var(--orb-color);background-color:#e4f2ed;flex-shrink:0;}
html[data-theme] .partner-strip>button.selected .cat-sprite {box-shadow:0 0 0 1px #fff8dd;}
html[data-theme] .partner-name {font-size:calc(var(--stage-width)*.04);font-weight:900;white-space:nowrap;}
html[data-theme] .partner-strip:has(button:nth-child(3)) .partner-name {display:none;}
html[data-theme] .partner-strip:has(button:nth-child(3)) .cat-sprite {width:32px;height:32px;}
html[data-theme] #docked-count {font-size:calc(var(--stage-width)*.036);color:#093f4d;white-space:nowrap;padding-left:9px;border-left:1px solid #a59c87;}
html[data-theme] #docked-count b {font-size:1.35em;}
html[data-theme] .board-message {position:absolute;top:79%;left:0;width:100%;height:3%;display:flex;justify-content:center;align-items:center;padding:0;color:#bed0d3;font-size:calc(var(--stage-width)*.033);font-weight:800;text-shadow:0 1px #082e44;}
html[data-theme] .control-dock {position:absolute;top:83.2%;left:10%;width:80%;height:10.5%;display:block;padding:0;}
html[data-theme] .game-actions {width:100%;height:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1fr);gap:14px;}
html[data-theme] .game-actions button,html[data-theme] .game-actions button:nth-child(n) {height:100%;min-height:44px;border:0;box-shadow:none;aspect-ratio:1;border-radius:0;background:url('assets/themes/felt-garden/button.webp') center/100% 100% no-repeat;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:10px 4px;color:#063f4b;}
html[data-theme] .game-actions button:disabled {background-image:url('assets/themes/felt-garden/button-disabled.webp');opacity:.8;filter:none;}
html[data-theme] .game-actions button .icon,html[data-theme] .game-actions button:nth-child(n) .icon {width:36%;height:36%;color:#06434f;stroke-width:2.6;}
html[data-theme] .game-actions button span,html[data-theme] .game-actions button:nth-child(n) span {font-size:calc(var(--stage-width)*.04);font-weight:900;color:#083e4b;}
html[data-theme] .game-actions button:disabled span,html[data-theme] .game-actions button:disabled .icon {color:#9b9686;}
html[data-theme] .game-actions button:active {translate:0 2px;}
html[data-theme] .gate {background-image:linear-gradient(#d0b78666,#d0b78666),var(--theme-tileA);}
html[data-theme] .portal {background-image:linear-gradient(#cab9df66,#cab9df66),var(--theme-tileB);}
html[data-theme] .ice {background-image:linear-gradient(#c9edf488,#c9edf488),var(--theme-tileB);}
html[data-theme] dialog {background:#fff0d3 url('assets/themes/felt-garden/cream-fiber.webp') center/180px;color:#174653;border-color:#fff7e0;}
html[data-theme] .dialog-content h2 {color:#144b59;}
.cat-slot-tabs {display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:12px 0;}
.cat-slot-tabs button {min-height:44px;border:1px solid #8fa8a8;background:#f1e8d3;border-radius:12px;font-size:11px;color:#164d5a;}
.cat-slot-tabs button.selected {background:#c4dadd;border:2px solid #4f8e9c;}
.cat-package-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.cat-package-card {position:relative;border:2px solid color-mix(in srgb,var(--cat-accent) 65%,#7e796e);background:linear-gradient(150deg,color-mix(in srgb,var(--cat-accent) 35%,#fffdf5),color-mix(in srgb,var(--cat-accent) 58%,#fff7e7));border-radius:20px;padding:24px 8px 10px;color:#243b47;display:flex;flex-direction:column;align-items:center;box-shadow:inset 0 1px #ffffffc9,0 4px 0 color-mix(in srgb,var(--cat-accent) 70%,#b2a484);}
.cat-package-card.chosen {border-color:#246e76;box-shadow:inset 0 0 0 2px #ffffffc9,0 0 0 3px #246e76,0 5px 0 #246e764d;}
.cat-card-badge {position:absolute;top:6px;right:7px;padding:3px 7px;border-radius:999px;background:#ffffffbd;color:#375461;font-size:11px;font-weight:800;line-height:1.3;}
.chosen .cat-card-badge {background:#246e76;color:white;}
.cat-package-card .cat-sprite {width:100%;height:auto;aspect-ratio:1;}
.cat-package-card b {font-size:15px;color:inherit;}.cat-package-card small {font-size:11px;color:#40525b;}
.cat-package-home {width:56px;height:56px;display:block;}
.theme-picker-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0;}
.theme-picker-grid button {position:relative;border:2px solid #b0b7a7;border-radius:16px;overflow:hidden;background:#f7ead0;padding:0 0 10px;color:#174653;}
.theme-picker-grid img {width:100%;height:140px;object-fit:cover;object-position:top;display:block;margin-bottom:8px;}
.theme-picker-grid b,.theme-picker-grid small {display:block;font-size:12px;}.theme-picker-grid small {font-size:10px;margin-top:5px;}
.theme-picker-grid button:disabled {opacity:.55;}.theme-picker-grid .chosen {border-color:#438596;box-shadow:0 0 0 2px #a4d4dc;}
.photo-picker {position:relative;min-height:50px;display:grid;place-items:center;border:2px dashed #739fa8;background:#e3eddf;border-radius:16px;margin:16px 0;font-weight:800;}
.photo-picker input {position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;}
.photo-preview img {display:block;max-width:100%;max-height:240px;margin:0 auto 14px;border-radius:16px;}
.photo-name {display:block;font-size:12px;}.photo-name input {display:block;width:100%;border:1px solid #94b1ae;border-radius:12px;padding:12px;margin-top:6px;background:#fff9e9;}
#photo-status,.photo-draft-list {font-size:12px;line-height:1.6;}.photo-draft-list {margin-top:16px;}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme] .play-screen {--stage-width:min(100vw,980px);--board-size:calc(var(--stage-height)*.7);width:var(--stage-width);}
 html[data-theme] .game-top {top:3%;height:15%;left:3%;width:94%;}
 html[data-theme] .game-top>.icon-button {width:44px;}
 html[data-theme] .game-level-title {top:0;left:48%;width:42%;}
 html[data-theme] .level-world-label {font-size:12px;height:18px;width:100%;display:flex;align-items:center;justify-content:center;}
 html[data-theme] .game-level-title h1 {font-size:20px;margin-top:0;}
 html[data-theme] .board-stats {top:21%;left:53%;width:43%;height:16%;}
 html[data-theme] .board-stats span:not(.stars):not(.hearts) {font-size:12px;}
 html[data-theme] .board-stats b {font-size:23px;}
 html[data-theme] .board-stats .stars .icon {width:23px;height:26px;}
 html[data-theme] .arena {top:20%;left:2%;width:48%;}
 html[data-theme] .partner-bar {top:43%;left:53%;width:43%;height:16%;}
 html[data-theme] .partner-name,html[data-theme] #docked-count {font-size:13px;}
 html[data-theme] .board-message {top:63%;left:53%;width:43%;font-size:12px;}
 html[data-theme] .control-dock {top:72%;left:56%;width:37%;height:24%;}
 html[data-theme] .game-actions button span {font-size:15px !important;}
 .theme-shortcut {top:12px;}
}

html[data-theme] .cat-sprite[data-asset-state="failed"]:not(.has-video) {background:none;display:grid;place-items:center;border:2px dashed var(--orb-color,#96a6a2);border-radius:30%;background-color:#fff1d8b8;}
html[data-theme] .cat-sprite[data-asset-state="failed"]:not(.has-video):after {content:"🐾 " attr(data-fallback-label) " " attr(data-fallback-symbol);font-size:clamp(10px,2.5vw,16px);text-align:center;color:var(--theme-ink);}
html[data-theme] .partner-strip .cat-sprite[data-asset-state="failed"]:not(.has-video):after {content:'🐾';font-size:18px;}
html[data-theme] .partner-avatar:has(.cat-sprite[data-asset-state="failed"]) .partner-symbol {display:grid;position:absolute;right:0;bottom:0;place-items:center;min-width:13px;min-height:13px;border-radius:50%;background:#fff2d7;color:#423958;border:1px solid currentColor;font-size:11px;line-height:1;}

/* samples/2: bold illustrated outlines, cool glossy UI and sunny garden. */
html[data-theme="cartoon-garden"] .icon-button {background:linear-gradient(135deg,#fff,#eefaff);border:2px solid #0b3558;box-shadow:inset 0 0 0 2px #e4f2f8,0 2px 0 #85a4b4;color:#082c51;border-radius:28%;}
html[data-theme="cartoon-garden"] .icon-button:before,
html[data-theme="cartoon-garden"] .board-stats:before,
html[data-theme="cartoon-garden"] .partner-bar:before {display:none;}
html[data-theme="cartoon-garden"] .game-top .icon {stroke-width:3.4;}
html[data-theme="cartoon-garden"] .level-world-label {color:#072b51;text-shadow:-1px -1px #fff,1px -1px #fff,-1px 1px #fff,1px 1px #fff;}
html[data-theme="cartoon-garden"] .level-world-label:before,
html[data-theme="cartoon-garden"] .level-world-label:after {content:'';display:inline-block;background:url('assets/themes/cartoon-garden/ornament.webp') center/contain no-repeat;width:calc(var(--stage-width)*.08);height:calc(var(--stage-width)*.08);vertical-align:middle;margin:0 4px;}
html[data-theme="cartoon-garden"] .level-world-label:after {transform:scaleX(-1);}
html[data-theme="cartoon-garden"] .game-level-title h1 {color:#072b51;text-shadow:-2px -2px #fff,2px -2px #fff,-2px 2px #fff,2px 2px #fff;}
html[data-theme="cartoon-garden"] .game-level-title h1>b {color:#ff8054;}
html[data-theme="cartoon-garden"] .board-stats {background:linear-gradient(135deg,#fffef9,#faf8ef);border:1.6px solid #123b62;box-shadow:none;}
html[data-theme="cartoon-garden"] .board-stats>div:nth-child(n+2),
html[data-theme="cartoon-garden"] .partner-strip>button+button,
html[data-theme="cartoon-garden"] #docked-count {border-left-color:#8ca8b8;}
html[data-theme="cartoon-garden"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="cartoon-garden"] .board-stats b,
html[data-theme="cartoon-garden"] .partner-name,
html[data-theme="cartoon-garden"] #docked-count {color:#072b51;}
html[data-theme="cartoon-garden"] #live-rating .stars .filled,
html[data-theme="cartoon-garden"] .stars .empty {fill:#e1eef6;stroke:#658eaf;stroke-width:1.7;filter:none;}
html[data-theme="cartoon-garden"] .stars .filled {fill:#ffe287;stroke:#b47a24;}
html[data-theme="cartoon-garden"] .board,
html[data-theme="cartoon-garden"] .board-scene {background:#5f94b2;border-radius:12px;}
html[data-theme="cartoon-garden"] .board-edge {inset:-8px;border:1.5px solid #124970;border-image:none;background:linear-gradient(135deg,#b9e8ff,#72b9db);box-shadow:inset 0 0 0 2px #d0efff,inset 0 0 0 4px #4e90b5,0 5px 0 #c3a66e77;clip-path:inset(0 round 18px);}
html[data-theme="cartoon-garden"] .tiles {gap:1px;background:#234f71;border-radius:10px;}
html[data-theme="cartoon-garden"] .cell,
html[data-theme="cartoon-garden"] .floor,
html[data-theme="cartoon-garden"] .cell:nth-child(2n),
html[data-theme="cartoon-garden"] .floor:nth-child(3n),
html[data-theme="cartoon-garden"] .wall {background:var(--theme-tileA) center/100% 100%;border:.7px solid #234f7177;border-radius:10px;box-shadow:none;}
html[data-theme="cartoon-garden"] .cell.cloth-sage,
html[data-theme="cartoon-garden"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="cartoon-garden"] .orb .cat-sprite,
html[data-theme="cartoon-garden"] .orb.selected .cat-sprite {filter:drop-shadow(0 2px 0 #6da3bd33);}
html[data-theme="cartoon-garden"] .partner-bar {background:#fffcf4;border:1.6px solid #103b60;box-shadow:none;}
html[data-theme="cartoon-garden"] .partner-strip .cat-sprite {border-width:2px;background-color:#e3f4fc;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="cartoon-garden"] .partner-strip>button+button {position:relative;border-left:0;}
html[data-theme="cartoon-garden"] .partner-strip>button+button:before {content:'';position:absolute;left:0;top:50%;height:24px;border-left:1px solid #8ca8b8;transform:translateY(-50%);}
html[data-theme="cartoon-garden"] .board-message {color:#7e90a7;text-shadow:none;font-weight:900;}
html[data-theme="cartoon-garden"] .board-message>span {background:#f4f2edc9;border:1px solid #fff;border-radius:99px;padding:5px 24px;}
html[data-theme="cartoon-garden"] .game-actions button,
html[data-theme="cartoon-garden"] .game-actions button:nth-child(n) {background:linear-gradient(125deg,#edfaff,#c4eefe);border:1.5px solid #105076;box-shadow:inset 0 0 0 2px #f2fcff,0 3px 0 #17466c;border-radius:24%;gap:5px;padding:9px 4px;}
html[data-theme="cartoon-garden"] .game-actions button:nth-child(3) {background:linear-gradient(135deg,#ffe993,#ffd967);border-color:#774514;box-shadow:inset 0 0 0 2px #fff3bb,0 3px 0 #926027;color:#633609;}
html[data-theme="cartoon-garden"] .game-actions button:disabled {background:linear-gradient(135deg,#d9dfe8,#b9c5d2);border-color:#567185;box-shadow:inset 0 0 0 2px #e8edf0,0 3px 0 #68859a;opacity:1;}
html[data-theme="cartoon-garden"] .game-actions button .icon,
html[data-theme="cartoon-garden"] .game-actions button:nth-child(n) .icon {color:#0e3c60;width:48%;height:48%;stroke-width:3.5;}
html[data-theme="cartoon-garden"] .game-actions button span,
html[data-theme="cartoon-garden"] .game-actions button:nth-child(n) span {color:#0a3157;}
html[data-theme="cartoon-garden"] .game-actions button:nth-child(3) .icon,
html[data-theme="cartoon-garden"] .game-actions button:nth-child(3) span {color:#65350b;}
html[data-theme="cartoon-garden"] .game-actions button:disabled .icon,
html[data-theme="cartoon-garden"] .game-actions button:disabled span {color:#7f92a9;}
html[data-theme="cartoon-garden"] .game-logo h1 {color:#072e53;text-shadow:-2px -2px #fff,2px 2px #fff;}
html[data-theme="cartoon-garden"] .game-logo p,
html[data-theme="cartoon-garden"] .menu-modes b,
html[data-theme="cartoon-garden"] .menu-modes small,
html[data-theme="cartoon-garden"] .menu-rank {color:#123f5b;text-shadow:0 1px #fff;}
html[data-theme="cartoon-garden"] .button.primary {background:linear-gradient(135deg,#f0fcff,#c4edfb);border:2px solid #134568;box-shadow:inset 0 0 0 2px #fff,0 4px #496c83;color:#113957;}
html[data-theme="cartoon-garden"] .button.primary:before {display:none;}
html[data-theme="cartoon-garden"] .collection-button,
html[data-theme="cartoon-garden"] .scene-bubble,
html[data-theme="cartoon-garden"] .currency-pill,
html[data-theme="cartoon-garden"] dialog {background:#fffdf4;border-color:#123d61;color:#173d5a;}
html[data-theme="cartoon-garden"] .theme-shortcut {background:#fffdf0;border:1.5px solid #113f60;color:#123d5e;}
html[data-theme="cartoon-garden"] .cat-name-tag {background:#fffefa;border-color:#143e61;color:#173d5e;}
@media (orientation:portrait) {
 html[data-theme="cartoon-garden"] .play-screen {--board-size:calc(var(--stage-width)*.915);--board-height:var(--board-size);}
 html[data-theme="cartoon-garden"] .game-top {top:2.5%;}
 html[data-theme="cartoon-garden"] .game-level-title {top:34%;}
 html[data-theme="cartoon-garden"] .level-world-label {font-size:calc(var(--stage-width)*.041);height:calc(var(--stage-width)*.055);display:flex;align-items:center;justify-content:center;width:100%;}
 html[data-theme="cartoon-garden"] .game-level-title h1 {font-size:calc(var(--stage-width)*.093);}
 html[data-theme="cartoon-garden"] .board-stats {top:14.6%;left:17.5%;width:65%;height:5.9%;padding:4px 9px;}
 html[data-theme="cartoon-garden"] .arena {top:23.8%;}
 html[data-theme="cartoon-garden"] .partner-bar {top:68.8%;left:9%;width:82%;height:6.6%;}
 html[data-theme="cartoon-garden"] .board-message {top:77.7%;height:3.4%;font-size:calc(var(--stage-width)*.036);}
 html[data-theme="cartoon-garden"] .control-dock {top:82.5%;left:15.5%;width:69%;height:9.6%;}
 html[data-theme="cartoon-garden"] .game-actions {gap:13px;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="cartoon-garden"] .level-world-label:before,
 html[data-theme="cartoon-garden"] .level-world-label:after {width:20px;height:20px;}
}

/* samples/3: soft watercolor, paper grain, sage tiles and deep violet ink. */
html[data-theme="watercolor-garden"] .icon-button {background:#fff4dc var(--theme-tileA) center/128px;border:1px solid #d2b88a;box-shadow:inset 0 0 0 2px #fff9ee,0 3px 3px #877a5855;color:#292046;border-radius:29%;}
html[data-theme="watercolor-garden"] .icon-button:before,
html[data-theme="watercolor-garden"] .board-stats:before,
html[data-theme="watercolor-garden"] .partner-bar:before {display:none;}
html[data-theme="watercolor-garden"] .game-top .icon {stroke-width:3.5;}
html[data-theme="watercolor-garden"] .level-world-label {color:#171b48;text-shadow:none;}
html[data-theme="watercolor-garden"] .level-world-label:before,
html[data-theme="watercolor-garden"] .level-world-label:after,
html[data-theme="watercolor-garden"] .board-message:before,
html[data-theme="watercolor-garden"] .board-message:after {content:'';display:inline-block;flex-shrink:0;background:url('assets/themes/watercolor-garden/ornament.webp') center/contain no-repeat;width:calc(var(--stage-width)*.05);height:calc(var(--stage-width)*.05);margin:0 7px;}
html[data-theme="watercolor-garden"] .level-world-label:after,
html[data-theme="watercolor-garden"] .board-message:after {transform:scaleX(-1);}
html[data-theme="watercolor-garden"] .game-level-title h1,
html[data-theme="watercolor-garden"] .game-level-title h1>b {color:#271b45;text-shadow:0 1px #fff6de;}
html[data-theme="watercolor-garden"] .board-stats,
html[data-theme="watercolor-garden"] .partner-bar {border:0;background:linear-gradient(#fffbea88,#fff8e280),var(--theme-tileA) center/160px;box-shadow:none;}
html[data-theme="watercolor-garden"] .board-stats>div:nth-child(n+2),
html[data-theme="watercolor-garden"] #docked-count {border-left-color:#b7adbc;}
html[data-theme="watercolor-garden"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="watercolor-garden"] .board-stats b,
html[data-theme="watercolor-garden"] .partner-name,
html[data-theme="watercolor-garden"] #docked-count {color:#1a1d49;}
html[data-theme="watercolor-garden"] #live-rating .stars .filled,
html[data-theme="watercolor-garden"] .stars .empty {fill:#d6d4de9c;stroke:#8d879d;stroke-width:1.8;filter:none;}
html[data-theme="watercolor-garden"] .stars .filled {fill:#f4cf73;stroke:#b6a26d;}
html[data-theme="watercolor-garden"] .board,
html[data-theme="watercolor-garden"] .board-scene {background:#a5af79;border-radius:10px;}
html[data-theme="watercolor-garden"] .board-edge {inset:-11px;border:11px solid transparent;border-image:url('assets/themes/watercolor-garden/board-frame.webp') 24 20 26 20 / 11px stretch;background:var(--theme-tileA) center/128px;box-shadow:0 2px 2px #67764755;clip-path:inset(0 round 15px);}
html[data-theme="watercolor-garden"] .tiles {gap:0;background:#9faa78;border-radius:9px;}
html[data-theme="watercolor-garden"] .cell,
html[data-theme="watercolor-garden"] .floor,
html[data-theme="watercolor-garden"] .cell:nth-child(2n),
html[data-theme="watercolor-garden"] .floor:nth-child(3n),
html[data-theme="watercolor-garden"] .wall {background:var(--theme-tileA) center/100% 100%;border:0;border-radius:7px;box-shadow:inset 0 0 0 .6px #a4ac74;}
html[data-theme="watercolor-garden"] .cell.cloth-sage,
html[data-theme="watercolor-garden"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="watercolor-garden"] .orb .cat-sprite,
html[data-theme="watercolor-garden"] .orb.selected .cat-sprite {filter:drop-shadow(0 2px 1px #77846344);}
html[data-theme="watercolor-garden"] .partner-strip .cat-sprite {background-color:#dcebdc;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="watercolor-garden"] .partner-symbol {position:absolute;right:-1px;bottom:-1px;display:grid;place-items:center;width:38%;height:38%;border:1px solid var(--orb-color);border-radius:50%;background:#fff8e8;color:var(--orb-color);font-size:clamp(10px,calc(var(--stage-width)*.035),15px);font-weight:900;line-height:1;}
html[data-theme="watercolor-garden"] .partner-strip>button+button {position:relative;border-left:0;}
html[data-theme="watercolor-garden"] .partner-strip>button+button:before {content:'';position:absolute;left:0;top:50%;height:24px;border-left:1px solid #b7adbc;transform:translateY(-50%);}
html[data-theme="watercolor-garden"] .board-message {color:#79788e;font-weight:850;text-shadow:0 1px #fff8e9;}
html[data-theme="watercolor-garden"] .game-actions button,
html[data-theme="watercolor-garden"] .game-actions button:nth-child(n) {background:var(--theme-tileA) center/128px;border:1px solid #c5a776;box-shadow:inset 0 0 0 2px #fff7e8,0 3px 3px #887a5d4d;border-radius:26%;gap:5px;padding:8px 4px;}
html[data-theme="watercolor-garden"] .game-actions button:nth-child(3) {background:linear-gradient(#bcefdcbb,#c0eadbb0),var(--theme-tileA) center/128px;border-color:#8daf94;box-shadow:inset 0 0 0 2px #e9fff0,0 3px 3px #719d8b55;}
html[data-theme="watercolor-garden"] .game-actions button:disabled {background:linear-gradient(#c4c2d1ce,#b4b1c4dd),var(--theme-tileA) center/128px;border-color:#aaa5b6;box-shadow:inset 0 0 0 2px #ddd9e2,0 3px 3px #88809444;opacity:1;}
html[data-theme="watercolor-garden"] .game-actions button .icon,
html[data-theme="watercolor-garden"] .game-actions button:nth-child(n) .icon {color:#282449;width:55%;height:55%;stroke-width:3.5;}
html[data-theme="watercolor-garden"] .game-actions button span,
html[data-theme="watercolor-garden"] .game-actions button:nth-child(n) span {color:#26234e;}
html[data-theme="watercolor-garden"] .game-actions button:nth-child(3) .icon,
html[data-theme="watercolor-garden"] .game-actions button:nth-child(3) span {color:#25635f;}
html[data-theme="watercolor-garden"] .game-actions button:disabled .icon,
html[data-theme="watercolor-garden"] .game-actions button:disabled span {color:#8b8798;}
html[data-theme="watercolor-garden"] .game-logo h1 {color:#271e46;text-shadow:0 2px #fff8e3;}
html[data-theme="watercolor-garden"] .game-logo p,
html[data-theme="watercolor-garden"] .menu-modes b,
html[data-theme="watercolor-garden"] .menu-modes small,
html[data-theme="watercolor-garden"] .menu-rank {color:#27264c;text-shadow:0 1px #fff9e8;}
html[data-theme="watercolor-garden"] .button.primary {background:var(--theme-tileA) center/128px;border:1px solid #c8af83;box-shadow:inset 0 0 0 2px #fff8ec,0 4px #b1a481;color:#25224a;text-shadow:none;}
html[data-theme="watercolor-garden"] .button.primary:before {display:none;}
html[data-theme="watercolor-garden"] .collection-button,
html[data-theme="watercolor-garden"] .scene-bubble,
html[data-theme="watercolor-garden"] .currency-pill,
html[data-theme="watercolor-garden"] .cat-name-tag,
html[data-theme="watercolor-garden"] dialog {background:var(--theme-tileA) center/160px;border-color:#e9dac0;color:#25284a;}
html[data-theme="watercolor-garden"] .theme-shortcut {background:#fbf2dfe6;border:1px solid #c4b89b;color:#272a49;}
html[data-theme="watercolor-garden"] .dialog-content h2 {color:#27254c;}
@media (orientation:portrait) {
 html[data-theme="watercolor-garden"] .play-screen {--board-size:calc(var(--stage-width)*.9);--board-height:calc(var(--board-size)*1.026);}
 html[data-theme="watercolor-garden"] .game-top {top:2.4%;}
 html[data-theme="watercolor-garden"] .game-top>.icon-button {width:11.2%;}
 html[data-theme="watercolor-garden"] .game-level-title {top:39%;}
 html[data-theme="watercolor-garden"] .level-world-label {font-size:calc(var(--stage-width)*.038);display:flex;align-items:center;justify-content:center;width:100%;}
 html[data-theme="watercolor-garden"] .game-level-title h1 {font-size:calc(var(--stage-width)*.092);line-height:1.2;}
 html[data-theme="watercolor-garden"] .board-stats {top:15.2%;left:16%;width:68%;height:6.1%;padding:5px 8px;}
 html[data-theme="watercolor-garden"] .arena {top:25.2%;}
 html[data-theme="watercolor-garden"] .partner-bar {top:70.5%;left:10%;width:80%;height:6.5%;}
 html[data-theme="watercolor-garden"] .board-message {top:78.5%;height:2.5%;font-size:calc(var(--stage-width)*.034);}
 html[data-theme="watercolor-garden"] .control-dock {top:83%;left:18.5%;width:63%;height:8.5%;}
 html[data-theme="watercolor-garden"] .game-actions {gap:12px;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="watercolor-garden"] .level-world-label:before,
 html[data-theme="watercolor-garden"] .level-world-label:after,
 html[data-theme="watercolor-garden"] .board-message:before,
 html[data-theme="watercolor-garden"] .board-message:after {width:20px;height:20px;}
}

/* samples/4: moonlit storybook, translucent navy glass and lavender stone. */
html[data-theme="moon-fable"] .icon-button {background:linear-gradient(135deg,#645a9cbf,#433778d9);border:1.3px solid #b5abe8;box-shadow:inset 0 0 0 1px #c0bafa55,0 3px 3px #09103566;color:#fff8ef;border-radius:50%;}
html[data-theme="moon-fable"] .icon-button:before,
html[data-theme="moon-fable"] .board-stats:before,
html[data-theme="moon-fable"] .partner-bar:before {display:none;}
html[data-theme="moon-fable"] .game-top .icon {stroke-width:3.5;}
html[data-theme="moon-fable"] .level-world-label {color:#fff5df;text-shadow:0 1px 2px #070e33;}
html[data-theme="moon-fable"] .level-world-label:before,
html[data-theme="moon-fable"] .level-world-label:after {content:'';display:inline-block;flex-shrink:0;background:url('assets/themes/moon-fable/ornament.webp') center/contain no-repeat;width:calc(var(--stage-width)*.043);height:calc(var(--stage-width)*.043);margin:0 7px;}
html[data-theme="moon-fable"] .level-world-label:after {transform:scaleX(-1);}
html[data-theme="moon-fable"] .game-level-title h1 {font-family:'Songti SC','STSong','SimSun',serif;font-weight:900;line-height:1.1;color:#fff2d2;text-shadow:0 2px 2px #101642;}
html[data-theme="moon-fable"] .game-level-title h1>b {color:#f8ddb0;}
html[data-theme="moon-fable"] .board-stats,
html[data-theme="moon-fable"] .partner-bar {background:linear-gradient(125deg,#56649a9c,#132454dd);border:1.2px solid #aab0e4;box-shadow:inset 0 0 0 1px #aebcf32b,0 3px 5px #080e35aa;backdrop-filter:blur(5px);}
html[data-theme="moon-fable"] .board-stats>div:nth-child(n+2),
html[data-theme="moon-fable"] #docked-count {border-left-color:#788fc0;}
html[data-theme="moon-fable"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="moon-fable"] .board-stats b,
html[data-theme="moon-fable"] .partner-name,
html[data-theme="moon-fable"] #docked-count {color:#fff9ee;}
html[data-theme="moon-fable"] .board-stats #target-count {color:#ffda86;}
html[data-theme="moon-fable"] #live-rating .stars .filled,
html[data-theme="moon-fable"] .stars .empty {fill:transparent;stroke:#ffdb8a;stroke-width:1.8;filter:drop-shadow(0 1px 1px #102552);}
html[data-theme="moon-fable"] .stars .filled {fill:#ffdd8d;stroke:#bba471;}
html[data-theme="moon-fable"] .board,
html[data-theme="moon-fable"] .board-scene {background:#566198;border-radius:12px;}
html[data-theme="moon-fable"] .board-edge {inset:-10px;border:10px solid transparent;border-image:url('assets/themes/moon-fable/board-frame.webp') 25 23 26 27 / 10px stretch;background:#8f90cc;box-shadow:0 5px 8px #080e35aa;clip-path:inset(0 round 22px);}
html[data-theme="moon-fable"] .tiles {gap:2px;background:#596397;border-radius:11px;}
html[data-theme="moon-fable"] .cell,
html[data-theme="moon-fable"] .floor,
html[data-theme="moon-fable"] .cell:nth-child(2n),
html[data-theme="moon-fable"] .floor:nth-child(3n),
html[data-theme="moon-fable"] .wall {background:var(--theme-tileA) center/100% 100%;border:.6px solid #bbc4ef;border-radius:8px;box-shadow:inset 0 0 1px #e0e6ff,0 1px 2px #2a376288;}
html[data-theme="moon-fable"] .cell.cloth-sage,
html[data-theme="moon-fable"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="moon-fable"] .orb .cat-sprite,
html[data-theme="moon-fable"] .orb.selected .cat-sprite,
html[data-theme="moon-fable"] .obstacle {filter:drop-shadow(0 3px 2px #17214477);}
html[data-theme="moon-fable"] .partner-strip .cat-sprite {background-color:#acbce7;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="moon-fable"] .partner-name {font-size:calc(var(--stage-width)*.032);font-weight:700;}
html[data-theme="moon-fable"] #docked-count {font-size:calc(var(--stage-width)*.033);}
html[data-theme="moon-fable"] .tethers {opacity:.07;}
html[data-theme="moon-fable"] .level-separator {display:block;width:.16em;height:.16em;border-radius:50%;background:currentColor;font-size:inherit;overflow:hidden;color:#fff2d2;text-indent:-999px;}
html[data-theme="moon-fable"] .partner-strip>button+button {position:relative;border-left:0;}
html[data-theme="moon-fable"] .partner-strip>button+button:before {content:'';position:absolute;left:0;top:50%;height:24px;border-left:1px solid #7890c4;transform:translateY(-50%);}
html[data-theme="moon-fable"] .board-message {color:#d6d8f0;text-shadow:0 1px #111b42;}
html[data-theme="moon-fable"] .game-actions button,
html[data-theme="moon-fable"] .game-actions button:nth-child(n) {background:linear-gradient(130deg,#e0d9ff,#b9adee);border:1px solid #e0daff;box-shadow:inset 0 0 0 1px #f4efff99,0 3px 5px #08123688;border-radius:25%;gap:5px;padding:8px 4px;}
html[data-theme="moon-fable"] .game-actions button:nth-child(3) {background:linear-gradient(130deg,#fff0af,#ffd97b);border-color:#fff3c3;box-shadow:inset 0 0 0 1px #fff9d299,0 3px 5px #17153688;}
html[data-theme="moon-fable"] .game-actions button:disabled {background:linear-gradient(130deg,#b9b2c8,#938da9);border-color:#cec6dc;box-shadow:inset 0 0 0 1px #dad4e466,0 3px 5px #141b3f88;opacity:1;}
html[data-theme="moon-fable"] .game-actions button .icon,
html[data-theme="moon-fable"] .game-actions button:nth-child(n) .icon {color:#392456;width:55%;height:55%;stroke-width:3.5;}
html[data-theme="moon-fable"] .game-actions button span,
html[data-theme="moon-fable"] .game-actions button:nth-child(n) span {color:#302447;}
html[data-theme="moon-fable"] .game-actions button:nth-child(3) .icon,
html[data-theme="moon-fable"] .game-actions button:nth-child(3) span {color:#754309;}
html[data-theme="moon-fable"] .game-actions button:disabled .icon,
html[data-theme="moon-fable"] .game-actions button:disabled span {color:#736780;}
html[data-theme="moon-fable"] .game-logo h1 {font-family:'Songti SC','STSong',serif;color:#fff1d4;text-shadow:0 2px 3px #102250;}
html[data-theme="moon-fable"] .game-logo p,
html[data-theme="moon-fable"] .menu-modes b,
html[data-theme="moon-fable"] .menu-modes small,
html[data-theme="moon-fable"] .menu-rank {color:#fff2df;text-shadow:0 1px #17214e;}
html[data-theme="moon-fable"] .button.primary {background:linear-gradient(125deg,#ece6ff,#bfb2ef);border:1px solid #e8dcff;box-shadow:inset 0 0 0 1px #fff5,0 4px #514678;color:#322149;text-shadow:none;}
html[data-theme="moon-fable"] .button.primary:before {display:none;}
html[data-theme="moon-fable"] .collection-button,
html[data-theme="moon-fable"] .scene-bubble,
html[data-theme="moon-fable"] .currency-pill,
html[data-theme="moon-fable"] .cat-name-tag,
html[data-theme="moon-fable"] .theme-shortcut {background:linear-gradient(125deg,#4e5485dd,#22315ed9);border-color:#a2acdc;color:#fff3de;}
html[data-theme="moon-fable"] dialog {background:linear-gradient(135deg,#e6dffe,#d0c8ed);border-color:#eee5ff;color:#292044;box-shadow:0 7px #625287,0 16px 48px #040a2680;}
html[data-theme="moon-fable"] .dialog-content h2 {color:#292044;}
html[data-theme="moon-fable"] .dialog-content>.eyebrow,
html[data-theme="moon-fable"] .dialog-content>p,
html[data-theme="moon-fable"] .result-metrics span {color:#65518e;}
html[data-theme="moon-fable"] .result-metrics {background:#c3bee5;border-color:#a6a0ce;}
html[data-theme="moon-fable"] .cat-sprite[data-asset-state="failed"]:not(.has-video):after {color:#322149;}
html[data-theme="moon-fable"] .setting-row small,
html[data-theme="moon-fable"] .settings-note {color:#6b5a84;}
@media (orientation:portrait) {
 html[data-theme="moon-fable"] .play-screen {--board-size:calc(var(--stage-width)*.9);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols));}
 html[data-theme="moon-fable"] .game-top {top:2.5%;}
 html[data-theme="moon-fable"] .game-top>.icon-button {width:11.5%;background:none;border:0;box-shadow:none;}
 html[data-theme="moon-fable"] .game-top>.icon-button:before {display:block;inset:3px;background:linear-gradient(135deg,#645a9cbf,#433778d9);border:1.3px solid #b5abe8;box-shadow:inset 0 0 0 1px #c0bafa55,0 3px 3px #09103566;}
 html[data-theme="moon-fable"] .game-top>.icon-button .icon {position:relative;z-index:1;}
 html[data-theme="moon-fable"] .game-level-title {top:28%;}
 html[data-theme="moon-fable"] .level-world-label {font-size:calc(var(--stage-width)*.038);display:flex;align-items:center;justify-content:center;width:100%;}
 html[data-theme="moon-fable"] .game-level-title h1 {font-size:calc(var(--stage-width)*.078);gap:5px;}
 html[data-theme="moon-fable"] .board-stats {top:12.45%;left:14%;width:72%;height:5.7%;padding:4px 8px;}
 html[data-theme="moon-fable"] .arena {top:22.2%;}
 html[data-theme="moon-fable"] .partner-bar {top:68.8%;left:14%;width:72%;height:5.7%;}
 html[data-theme="moon-fable"] .partner-strip .cat-sprite {width:clamp(24px,calc(var(--stage-width)*.09),39px);height:clamp(24px,calc(var(--stage-width)*.09),39px);}
 html[data-theme="moon-fable"] .board-message {top:77%;height:3%;}
 html[data-theme="moon-fable"] .control-dock {top:82.5%;left:20%;width:60%;height:8%;}
 html[data-theme="moon-fable"] .game-actions {gap:13px;}
 html[data-theme="moon-fable"] .reference-scene {--board-size:calc(var(--stage-width)*.81);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols)*.98);}
 html[data-theme="moon-fable"] .reference-scene .arena {top:20.85%;}
 html[data-theme="moon-fable"] .reference-scene .partner-bar {top:78.5%;}
 html[data-theme="moon-fable"] .reference-scene .board-message {display:none;}
 html[data-theme="moon-fable"] .reference-scene .board-message.has-hint {display:flex;top:92.8%;height:3.5%;font-size:calc(var(--stage-width)*.03);}
 html[data-theme="moon-fable"] .reference-scene .control-dock {top:85.7%;height:7.7%;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="moon-fable"] .reference-scene {--board-size:calc(var(--stage-height)*.44);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols));}
 html[data-theme="moon-fable"] .partner-name,
 html[data-theme="moon-fable"] #docked-count {font-size:13px;}
 html[data-theme="moon-fable"] .level-world-label:before,
 html[data-theme="moon-fable"] .level-world-label:after {width:20px;height:20px;}
}

/* samples/5: forest-green foliage, clean cream HUD and soft short-haired kittens. */
html[data-theme="fresh-garden"] .icon-button {background:linear-gradient(135deg,#fff8df,#f6e9c3);color:#104d36;border:1px solid #fff9e5;box-shadow:0 2px 2px #092f2444;}
html[data-theme="fresh-garden"] .icon-button:before,
html[data-theme="fresh-garden"] .board-stats:before,
html[data-theme="fresh-garden"] .partner-bar:before {display:none;}
html[data-theme="fresh-garden"] .game-top .icon {stroke-width:3.5;}
html[data-theme="fresh-garden"] .game-level-title h1 {color:#fffdf1;text-shadow:0 1px 2px #16432d44;font-weight:900;}
html[data-theme="fresh-garden"] .game-level-title h1>b {color:#ffe6a6;}
html[data-theme="fresh-garden"] .level-world-label {color:#fffdf2;width:100%;}
html[data-theme="fresh-garden"] .level-world-label:before,
html[data-theme="fresh-garden"] .level-world-label:after {content:'';display:inline-block;width:calc(var(--stage-width)*.049);height:calc(var(--stage-width)*.049);margin:0 7px;vertical-align:middle;background:url('assets/themes/fresh-garden/ornament.webp') center/contain no-repeat;}
html[data-theme="fresh-garden"] .level-world-label:after {transform:scaleX(-1);}
html[data-theme="fresh-garden"] .level-separator {display:block;width:.16em;height:.16em;border-radius:50%;background:currentColor;font-size:inherit;overflow:hidden;text-indent:-999px;}
html[data-theme="fresh-garden"] .board-stats,
html[data-theme="fresh-garden"] .partner-bar {background:linear-gradient(125deg,#fffbed,#e9e9d5);border:1px solid #fff9df;box-shadow:0 2px 2px #183d2c33;}
html[data-theme="fresh-garden"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="fresh-garden"] .board-stats b,
html[data-theme="fresh-garden"] .partner-name,
html[data-theme="fresh-garden"] #docked-count {color:#104d36;}
html[data-theme="fresh-garden"] .board-stats>div:nth-child(n+2),
html[data-theme="fresh-garden"] .partner-strip>button+button,
html[data-theme="fresh-garden"] #docked-count {border-left-color:#a1af99;}
html[data-theme="fresh-garden"] #move-count {width:calc(var(--stage-width)*.073);height:calc(var(--stage-width)*.073);display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,#ff8863,#ff653f);box-shadow:inset 0 1px 1px #ffc5a4,0 1px 1px #c74621;color:white;font-size:calc(var(--stage-width)*.050);}
html[data-theme="fresh-garden"] #live-rating .stars .filled,
html[data-theme="fresh-garden"] .stars .empty {fill:transparent;stroke:#dc8b1b;stroke-width:1.7;filter:drop-shadow(0 1px #b4700c);}
html[data-theme="fresh-garden"] .stars .filled {fill:#ffda6b;stroke:#c58c21;}
html[data-theme="fresh-garden"] .board,
html[data-theme="fresh-garden"] .board-scene {background:#164b35;border-radius:9px;}
html[data-theme="fresh-garden"] .board-edge {inset:-9px;border:9px solid #fff1cc;border-image:none;background:linear-gradient(135deg,#fff8df,#f2e8c7);box-shadow:inset 0 0 0 1px #fffbed,0 3px 3px #0c352960;border-radius:19px;clip-path:inset(0 round 19px);}
html[data-theme="fresh-garden"] .tiles {gap:2px;background:#17523a;border:1px solid #17523a;border-radius:8px;}
html[data-theme="fresh-garden"] .cell,
html[data-theme="fresh-garden"] .floor,
html[data-theme="fresh-garden"] .cell:nth-child(2n),
html[data-theme="fresh-garden"] .floor:nth-child(3n),
html[data-theme="fresh-garden"] .wall {background:var(--theme-tileA) center/100% 100%;border:.6px solid #f9f3d8;border-radius:6px;box-shadow:0 1px #184b3422;}
html[data-theme="fresh-garden"] .cell.cloth-sage,
html[data-theme="fresh-garden"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="fresh-garden"] .orb .cat-sprite,
html[data-theme="fresh-garden"] .orb.selected .cat-sprite,
html[data-theme="fresh-garden"] .obstacle {filter:drop-shadow(0 2px 1px #36522c40);}
html[data-theme="fresh-garden"] .tethers {opacity:.06;}
html[data-theme="fresh-garden"] .partner-strip .cat-sprite {background-color:#e1f0e6;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="fresh-garden"] .partner-name {font-size:calc(var(--stage-width)*.034);font-weight:850;}
html[data-theme="fresh-garden"] #docked-count {font-size:calc(var(--stage-width)*.032);}
html[data-theme="fresh-garden"] .board-message {color:#e0edd8;text-shadow:0 1px #17492f;}
html[data-theme="fresh-garden"] .game-actions button,
html[data-theme="fresh-garden"] .game-actions button:nth-child(n) {position:relative;background:none;border:0;box-shadow:none;border-radius:0;padding:0;justify-content:flex-start;gap:0;overflow:visible;aspect-ratio:auto;width:100%;min-width:0;}
html[data-theme="fresh-garden"] .game-actions button:before {content:'';position:absolute;top:0;left:0;width:100%;aspect-ratio:1;border-radius:50%;background:linear-gradient(135deg,#fff8df,#f4e8c5);border:1px solid #fffbe9;box-shadow:0 2px 2px #072e2544;}
html[data-theme="fresh-garden"] .game-actions button:disabled {opacity:1;background:none;}
html[data-theme="fresh-garden"] .game-actions button:disabled:before {background:linear-gradient(135deg,#a8b7a8,#899e91);border-color:#c1cfc2;}
html[data-theme="fresh-garden"] .game-actions button .icon,
html[data-theme="fresh-garden"] .game-actions button:nth-child(n) .icon {position:relative;width:53%;height:auto;aspect-ratio:1;margin-top:18%;color:#104c34;stroke-width:3.5;}
html[data-theme="fresh-garden"] .game-actions button span,
html[data-theme="fresh-garden"] .game-actions button:nth-child(n) span {position:absolute;top:calc(var(--stage-width)*.17);color:#fffdf1;font-size:calc(var(--stage-width)*.033);font-weight:850;}
html[data-theme="fresh-garden"] .game-actions button:disabled .icon {color:#697f70;}
html[data-theme="fresh-garden"] .game-actions button:disabled span {color:#b4c5b8;}
html[data-theme="fresh-garden"] .game-logo h1 {color:#fff8dc;text-shadow:0 2px 2px #173d2f;}
html[data-theme="fresh-garden"] .game-logo p,
html[data-theme="fresh-garden"] .menu-modes b,
html[data-theme="fresh-garden"] .menu-modes small,
html[data-theme="fresh-garden"] .menu-rank {color:#fff9e2;text-shadow:0 1px #123e28;}
html[data-theme="fresh-garden"] .button.primary {background:linear-gradient(135deg,#fff7dd,#e6ead0);border:1px solid #fff9e4;box-shadow:0 4px #a6b495;color:#104d36;text-shadow:none;}
html[data-theme="fresh-garden"] .button.primary:before {display:none;}
html[data-theme="fresh-garden"] .collection-button,
html[data-theme="fresh-garden"] .scene-bubble,
html[data-theme="fresh-garden"] .currency-pill,
html[data-theme="fresh-garden"] .cat-name-tag,
html[data-theme="fresh-garden"] .theme-shortcut {background:linear-gradient(135deg,#fff8e3,#e4e8ce);border-color:#fff9e4;color:#174d35;}
html[data-theme="fresh-garden"] dialog {background:linear-gradient(135deg,#fff8e6,#e3e8cd);border-color:#fff9e5;color:#194d34;box-shadow:0 7px #869b76,0 16px 48px #0b382580;}
html[data-theme="fresh-garden"] .dialog-content h2 {color:#194d34;}
html[data-theme="fresh-garden"] .dialog-content>.eyebrow,
html[data-theme="fresh-garden"] .dialog-content>p,
html[data-theme="fresh-garden"] .result-metrics span,
html[data-theme="fresh-garden"] .setting-row small,
html[data-theme="fresh-garden"] .settings-note {color:#657b54;}
html[data-theme="fresh-garden"] .result-metrics {background:#d9e2c5;border-color:#b7c6a5;}
@media (orientation:portrait) {
 html[data-theme="fresh-garden"] .play-screen {--board-size:calc(var(--stage-width)*.878);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols)*1.016);}
 html[data-theme="fresh-garden"] .game-top {top:3.8%;}
 html[data-theme="fresh-garden"] .game-top>.icon-button {width:12%;}
 html[data-theme="fresh-garden"] .game-level-title {top:5%;}
 html[data-theme="fresh-garden"] .level-world-label {height:calc(var(--stage-width)*.049);font-size:calc(var(--stage-width)*.039);display:flex;align-items:center;justify-content:center;}
 html[data-theme="fresh-garden"] .game-level-title h1 {font-size:calc(var(--stage-width)*.086);gap:7px;}
 html[data-theme="fresh-garden"] .board-stats {top:11.8%;left:13.4%;width:73.2%;height:6.5%;padding:3px 7px;}
 html[data-theme="fresh-garden"] .board-stats b {font-size:calc(var(--stage-width)*.061);}
 html[data-theme="fresh-garden"] .arena {top:20.65%;}
 html[data-theme="fresh-garden"] .partner-bar {left:11.5%;width:77%;height:max(44px,5.8%);}
 html[data-theme="fresh-garden"] .control-dock {top:83.2%;left:17.5%;width:65%;height:10%;}
 html[data-theme="fresh-garden"] .game-actions {gap:calc(var(--stage-width)*.084);}
 html[data-theme="fresh-garden"] .reference-scene .partner-bar {top:78%;}
 html[data-theme="fresh-garden"] .reference-scene .board-message {display:none;}
 html[data-theme="fresh-garden"] .reference-scene .board-message.has-hint {display:flex;top:96%;height:3%;font-size:calc(var(--stage-width)*.028);}
 html[data-theme="fresh-garden"] .reference-scene .control-dock {top:85.6%;height:10%;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="fresh-garden"] .reference-scene {--board-size:calc(var(--stage-height)*.52);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols));}
 html[data-theme="fresh-garden"] .partner-name,
 html[data-theme="fresh-garden"] #docked-count {font-size:13px;}
 html[data-theme="fresh-garden"] .level-world-label:before,
 html[data-theme="fresh-garden"] .level-world-label:after {width:20px;height:20px;}
 html[data-theme="fresh-garden"] #move-count {width:30px;height:30px;font-size:21px;}
 html[data-theme="fresh-garden"] .control-dock {top:68%;height:28%;}
 html[data-theme="fresh-garden"] .game-actions {gap:14px;}
 html[data-theme="fresh-garden"] .game-actions button:before {width:66px;height:66px;left:50%;translate:-50% 0;}
 html[data-theme="fresh-garden"] .game-actions button .icon,
 html[data-theme="fresh-garden"] .game-actions button:nth-child(n) .icon {width:35px;height:35px;margin-top:15px;}
 html[data-theme="fresh-garden"] .game-actions button span,
 html[data-theme="fresh-garden"] .game-actions button:nth-child(n) span {top:72px;font-size:13px !important;}
}

/* samples/6: warm handmade paper, cut leaves, knitted caves and fluffy kittens. */
html[data-theme="paper-garden"] .icon-button {background:#fff0d5 url('assets/themes/paper-garden/paper-fiber.webp') center/150px;border:1px solid #fff9e5;box-shadow:0 2px 3px #78532e55;color:#183f35;}
html[data-theme="paper-garden"] .icon-button:before {border-color:#cba479;}
html[data-theme="paper-garden"] .game-top .icon {stroke-width:3.3;}
html[data-theme="paper-garden"] .level-world-label {color:#183f35;width:100%;}
html[data-theme="paper-garden"] .level-world-label:before,
html[data-theme="paper-garden"] .level-world-label:after {content:'';display:inline-block;background:url('assets/themes/paper-garden/ornament.svg') center/contain no-repeat;width:calc(var(--stage-width)*.055);height:calc(var(--stage-width)*.055);margin:0 6px;vertical-align:middle;}
html[data-theme="paper-garden"] .level-world-label:after {transform:scaleX(-1);}
html[data-theme="paper-garden"] .game-level-title h1,
html[data-theme="paper-garden"] .game-level-title h1>b {color:#183f35;text-shadow:0 1px #fff5d6,0 1.5px #886c3b55;}
html[data-theme="paper-garden"] .level-separator {display:block;width:.16em;height:.16em;border-radius:50%;background:currentColor;font-size:inherit;overflow:hidden;text-indent:-999px;}
html[data-theme="paper-garden"] .board-stats,
html[data-theme="paper-garden"] .partner-bar {background:#ffefd4 url('assets/themes/paper-garden/paper-fiber.webp') center/180px;border:1px solid #fff9e8;box-shadow:0 3px 4px #9e744c55;}
html[data-theme="paper-garden"] .board-stats:before,
html[data-theme="paper-garden"] .partner-bar:before {display:none;}
html[data-theme="paper-garden"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="paper-garden"] .board-stats b,
html[data-theme="paper-garden"] .partner-name,
html[data-theme="paper-garden"] #docked-count {color:#183f35;}
html[data-theme="paper-garden"] .board-stats>div:nth-child(n+2),
html[data-theme="paper-garden"] .partner-strip>button+button,
html[data-theme="paper-garden"] #docked-count {border-left-color:#c7a274;}
html[data-theme="paper-garden"] #target-count {color:#c96534;text-shadow:0 1px #fff7d5;}
html[data-theme="paper-garden"] #live-rating .stars .filled,
html[data-theme="paper-garden"] .stars .empty {fill:#f8e8c6;stroke:#b99562;stroke-width:1.7;filter:drop-shadow(0 1px #fff7df);}
html[data-theme="paper-garden"] .stars .filled {fill:#f5cc6b;stroke:#aa793e;}
html[data-theme="paper-garden"] .board,
html[data-theme="paper-garden"] .board-scene {background:#d9bf8f;border-radius:9px;}
html[data-theme="paper-garden"] .board-edge {inset:-11px;border:11px solid transparent;border-image:url('assets/themes/paper-garden/board-frame.webp') 20 24 20 24 / 11px stretch;background:#d6b786;box-shadow:0 3px 4px #98734666;border-radius:18px;clip-path:inset(0 round 18px);}
html[data-theme="paper-garden"] .tiles {gap:3px;background:#dbbf8e;border:1px solid #f5e7bd;border-radius:9px;}
html[data-theme="paper-garden"] .cell,
html[data-theme="paper-garden"] .floor,
html[data-theme="paper-garden"] .cell:nth-child(2n),
html[data-theme="paper-garden"] .floor:nth-child(3n),
html[data-theme="paper-garden"] .wall {background:var(--theme-tileA) center/100% 100%;border:.6px solid #fff4d7;border-radius:7px;box-shadow:0 1px #947b4655;}
html[data-theme="paper-garden"] .cell.cloth-sage,
html[data-theme="paper-garden"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="paper-garden"] .tethers {opacity:.06;}
html[data-theme="paper-garden"] .orb .cat-sprite,
html[data-theme="paper-garden"] .orb.selected .cat-sprite,
html[data-theme="paper-garden"] .obstacle {filter:drop-shadow(0 2px 1px #795b3644);}
html[data-theme="paper-garden"] .reference-scene .orb .cat-sprite {width:112%;height:112%;left:-6%;bottom:-1%;}
html[data-theme="paper-garden"] .reference-scene .cat-home {width:108%;height:108%;}
html[data-theme="paper-garden"] .partner-strip .cat-sprite {background-color:#f9e7c7;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="paper-garden"] .partner-name {font-size:calc(var(--stage-width)*.034);}
html[data-theme="paper-garden"] #docked-count {font-size:calc(var(--stage-width)*.033);}
html[data-theme="paper-garden"] .board-message {color:#7b8052;text-shadow:0 1px #fff4d1;}
html[data-theme="paper-garden"] .game-actions button,
html[data-theme="paper-garden"] .game-actions button:nth-child(n) {aspect-ratio:auto;min-width:0;width:100%;background:#fff0d8 url('assets/themes/paper-garden/paper-fiber.webp') center/140px;border:1px solid #fff9e8;box-shadow:0 2px 3px #9d754866,inset 0 0 0 1px #eed7b0;border-radius:25%;padding:6px 3px;gap:2px;}
html[data-theme="paper-garden"] .game-actions button:nth-child(3) {background:linear-gradient(135deg,#ffe9a6,#f3c956);border-color:#ffefc4;box-shadow:0 2px 3px #9d754866,inset 0 0 0 1px #dbaa49;}
html[data-theme="paper-garden"] .game-actions button:disabled {background:linear-gradient(135deg,#dbd6d3,#c6c1c0);border-color:#efeae6;opacity:1;}
html[data-theme="paper-garden"] .game-actions button .icon,
html[data-theme="paper-garden"] .game-actions button:nth-child(n) .icon {width:55%;height:55%;color:#183f35;stroke-width:3.3;}
html[data-theme="paper-garden"] .game-actions button span,
html[data-theme="paper-garden"] .game-actions button:nth-child(n) span {color:#183f35;font-size:calc(var(--stage-width)*.033);}
html[data-theme="paper-garden"] .game-actions button:nth-child(3) .icon {color:#b26d08;}
html[data-theme="paper-garden"] .game-actions button:disabled .icon,
html[data-theme="paper-garden"] .game-actions button:disabled span {color:#99918b;}
html[data-theme="paper-garden"] .game-logo h1 {color:#183f35;text-shadow:0 2px #fff1d3,0 3px #bd9c70;}
html[data-theme="paper-garden"] .game-logo p,
html[data-theme="paper-garden"] .menu-modes b,
html[data-theme="paper-garden"] .menu-modes small,
html[data-theme="paper-garden"] .menu-rank {color:#345846;text-shadow:0 1px #fff2d3;}
html[data-theme="paper-garden"] .button.primary {background:#fff0d6 url('assets/themes/paper-garden/paper-fiber.webp') center/180px;border-color:#fff8e3;color:#183f35;box-shadow:0 4px #b29468,0 6px 7px #7d613650;text-shadow:none;}
html[data-theme="paper-garden"] .button.primary:before {border-color:#cfb088;}
html[data-theme="paper-garden"] .collection-button,
html[data-theme="paper-garden"] .scene-bubble,
html[data-theme="paper-garden"] .currency-pill,
html[data-theme="paper-garden"] .cat-name-tag,
html[data-theme="paper-garden"] .theme-shortcut,
html[data-theme="paper-garden"] dialog {background:#fff0d6 url('assets/themes/paper-garden/paper-fiber.webp') center/180px;border-color:#fff8e3;color:#183f35;}
html[data-theme="paper-garden"] .dialog-content h2 {color:#183f35;}
html[data-theme="paper-garden"] .dialog-content>.eyebrow,
html[data-theme="paper-garden"] .dialog-content>p,
html[data-theme="paper-garden"] .result-metrics span,
html[data-theme="paper-garden"] .setting-row small,
html[data-theme="paper-garden"] .settings-note {color:#6f714e;}
html[data-theme="paper-garden"] .result-metrics {background:#ead8b6;border-color:#cbb184;}
@media (orientation:portrait) {
 html[data-theme="paper-garden"] .play-screen {--board-size:calc(var(--stage-width)*.9);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols)*.971);}
 html[data-theme="paper-garden"] .game-top {top:2.5%;}
 html[data-theme="paper-garden"] .game-top>.icon-button {width:10.8%;}
 html[data-theme="paper-garden"] .game-level-title {top:20%;left:5%;width:90%;}
 html[data-theme="paper-garden"] .level-world-label {font-size:calc(var(--stage-width)*.036);height:calc(var(--stage-width)*.055);display:flex;align-items:center;justify-content:center;}
 html[data-theme="paper-garden"] .game-level-title h1 {font-size:calc(var(--stage-width)*.081);gap:8px;margin-top:3px;}
 html[data-theme="paper-garden"] .board-stats {top:12.2%;left:15.5%;width:69%;height:5.2%;padding:3px 6px;}
 html[data-theme="paper-garden"] .board-stats b {font-size:calc(var(--stage-width)*.050);}
 html[data-theme="paper-garden"] .board-stats span:not(.stars):not(.hearts) {font-size:calc(var(--stage-width)*.027);}
 html[data-theme="paper-garden"] .arena {top:19.4%;}
 html[data-theme="paper-garden"] .reference-scene {--board-size:calc(var(--stage-width)*.685);}
 html[data-theme="paper-garden"] .reference-scene .partner-bar {top:82.3%;left:16%;width:68%;height:max(44px,5.1%);padding:3px 6px;gap:4px;}
 html[data-theme="paper-garden"] .reference-scene .partner-strip>button {padding:0 4px;gap:4px;}
 html[data-theme="paper-garden"] .reference-scene .partner-strip .cat-sprite {width:calc(var(--stage-width)*.09);height:calc(var(--stage-width)*.09);}
 html[data-theme="paper-garden"] .reference-scene .board-message {top:88.1%;height:2.2%;font-size:calc(var(--stage-width)*.029);}
 html[data-theme="paper-garden"] .reference-scene .control-dock {top:90.5%;left:20%;width:60%;height:7%;}
 html[data-theme="paper-garden"] .reference-scene .game-actions {gap:calc(var(--stage-width)*.035);}
}
@media (orientation:portrait) and (max-height:700px) {
 html[data-theme="paper-garden"] .reference-scene .board-message:not(.has-hint) {display:none;}
 html[data-theme="paper-garden"] .reference-scene .board-message.has-hint {top:97.5%;height:2%;font-size:10px;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="paper-garden"] .reference-scene {--board-size:calc(var(--stage-height)*.35);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols)*.971);}
 html[data-theme="paper-garden"] .partner-name,
 html[data-theme="paper-garden"] #docked-count {font-size:13px;}
 html[data-theme="paper-garden"] .level-world-label:before,
 html[data-theme="paper-garden"] .level-world-label:after {width:20px;height:20px;}
}

/* samples/7: photographic moonlake, serif lettering and blue glass controls. */
html[data-theme="moon-real"] .icon-button {background:linear-gradient(135deg,#20304bdd,#19263de8);border:1px solid #94a5c455;box-shadow:inset 0 0 0 1px #c3d2ee11,0 2px 4px #09162d55;color:#f6f7fc;}
html[data-theme="moon-real"] .icon-button:before,
html[data-theme="moon-real"] .board-stats:before,
html[data-theme="moon-real"] .partner-bar:before {display:none;}
html[data-theme="moon-real"] .game-top .icon {stroke-width:3.5;}
html[data-theme="moon-real"] .game-level-title h1,
html[data-theme="moon-real"] .game-level-title h1>b {font-family:'Songti SC','STSong','Noto Serif CJK SC',serif;color:#f4f6ff;font-weight:700;text-shadow:0 1px 2px #0b1833;}
html[data-theme="moon-real"] .level-world-label {font-family:'Songti SC','STSong',serif;font-weight:600;color:#edf2ff;width:100%;}
html[data-theme="moon-real"] .level-world-label:before,
html[data-theme="moon-real"] .level-world-label:after {content:'';display:inline-block;background:url('assets/themes/moon-real/ornament.svg') center/contain no-repeat;width:calc(var(--stage-width)*.046);height:calc(var(--stage-width)*.035);margin:0 8px;vertical-align:middle;}
html[data-theme="moon-real"] .level-world-label:after {transform:scaleX(-1);}
html[data-theme="moon-real"] .level-separator {display:block;width:.13em;height:.13em;border-radius:50%;background:currentColor;font-size:inherit;overflow:hidden;text-indent:-999px;}
html[data-theme="moon-real"] .board-stats,
html[data-theme="moon-real"] .partner-bar {background:linear-gradient(130deg,#233149da,#1b2942e8);border:1px solid #8ca3cc55;box-shadow:inset 0 0 0 1px #c6d9ff11,0 2px 4px #06132c44;}
html[data-theme="moon-real"] .board-stats span:not(.stars):not(.hearts),
html[data-theme="moon-real"] .board-stats b,
html[data-theme="moon-real"] .partner-name,
html[data-theme="moon-real"] #docked-count {font-family:'Songti SC','STSong',serif;font-weight:600;color:#f2f5ff;}
html[data-theme="moon-real"] .board-stats>div:nth-child(n+2),
html[data-theme="moon-real"] .partner-strip>button+button,
html[data-theme="moon-real"] #docked-count {border-left-color:#b1bfd066;}
html[data-theme="moon-real"] #live-rating .stars .filled,
html[data-theme="moon-real"] .stars .empty {fill:none;stroke:#c9d1e4;stroke-width:1.5;filter:none;}
html[data-theme="moon-real"] .stars .filled {fill:#f9da91;stroke:#ffe4a6;}
html[data-theme="moon-real"] .board,
html[data-theme="moon-real"] .board-scene {background:#a0add7;border-radius:9px;}
html[data-theme="moon-real"] .board-edge {inset:-10px;border:10px solid transparent;border-image:url('assets/themes/moon-real/board-frame.webp') 22 23 22 23 / 10px stretch;background:#a8b1e0;box-shadow:0 3px 4px #07183999;border-radius:17px;clip-path:inset(0 round 17px);}
html[data-theme="moon-real"] .tiles {gap:2px;background:#8c9cc6;border:1px solid #6a7baa;border-radius:9px;}
html[data-theme="moon-real"] .cell,
html[data-theme="moon-real"] .floor,
html[data-theme="moon-real"] .cell:nth-child(2n),
html[data-theme="moon-real"] .floor:nth-child(3n),
html[data-theme="moon-real"] .wall {background:var(--theme-tileA) center/100% 100%;border:.8px solid #e3e9f4;border-radius:7px;box-shadow:0 1px #7585b3;}
html[data-theme="moon-real"] .cell.cloth-sage,
html[data-theme="moon-real"] .floor.cloth-sage:nth-child(3n) {background:var(--theme-tileB) center/100% 100%;}
html[data-theme="moon-real"] .orb .cat-sprite,
html[data-theme="moon-real"] .orb.selected .cat-sprite,
html[data-theme="moon-real"] .obstacle {filter:drop-shadow(0 2px 1px #14244455);}
html[data-theme="moon-real"] .reference-scene .orb .cat-sprite {width:111%;height:111%;left:-5.5%;bottom:-1%;}
html[data-theme="moon-real"] .reference-scene .cat-home {width:106%;height:106%;}
html[data-theme="moon-real"] .tethers {opacity:.05;}
html[data-theme="moon-real"] .partner-strip .cat-sprite {background-color:#25344b;background-size:750% 150%;background-position:calc(var(--cat-col,0)*23.076923% + 3.846154%) 0;}
html[data-theme="moon-real"] .partner-name {font-size:calc(var(--stage-width)*.030);}
html[data-theme="moon-real"] #docked-count {font-size:calc(var(--stage-width)*.030);}
html[data-theme="moon-real"] .board-message {color:#e2e9f7;text-shadow:0 1px #091936;}
html[data-theme="moon-real"] .game-actions button,
html[data-theme="moon-real"] .game-actions button:nth-child(n) {aspect-ratio:auto;min-width:0;width:100%;background:linear-gradient(135deg,#25354cf2,#1a2943f5);border:1px solid #809bc780;box-shadow:inset 0 0 0 1px #b8cef011,0 2px 3px #09162d55;border-radius:18px;padding:4px 2px;gap:2px;}
html[data-theme="moon-real"] .game-actions button:disabled {background:linear-gradient(135deg,#25354cf2,#1a2943f5);opacity:1;}
html[data-theme="moon-real"] .game-actions button .icon,
html[data-theme="moon-real"] .game-actions button:nth-child(n) .icon {width:52%;height:55%;color:#f5f7ff;stroke-width:2.7;}
html[data-theme="moon-real"] .game-actions button span,
html[data-theme="moon-real"] .game-actions button:nth-child(n) span {font-family:'Songti SC','STSong',serif;font-weight:500;font-size:calc(var(--stage-width)*.029);color:#f4f6ff;}
html[data-theme="moon-real"] .game-actions button:nth-child(3) .icon,
html[data-theme="moon-real"] .game-actions button:nth-child(3) span {color:#9debd7;}
html[data-theme="moon-real"] .game-logo h1 {font-family:'Songti SC','STSong',serif;color:#f6f7fd;text-shadow:0 2px 4px #0a1938;}
html[data-theme="moon-real"] .game-logo p,
html[data-theme="moon-real"] .menu-modes b,
html[data-theme="moon-real"] .menu-modes small,
html[data-theme="moon-real"] .menu-rank {color:#edf2fc;text-shadow:0 1px #08162d;}
html[data-theme="moon-real"] .button.primary {background:linear-gradient(135deg,#334862,#22344e);border:1px solid #a9bfdf88;color:#f2f6ff;box-shadow:0 4px #17233c,0 6px 9px #08132677;text-shadow:none;}
html[data-theme="moon-real"] .button.primary:before {display:none;}
html[data-theme="moon-real"] .collection-button,
html[data-theme="moon-real"] .scene-bubble,
html[data-theme="moon-real"] .currency-pill,
html[data-theme="moon-real"] .cat-name-tag,
html[data-theme="moon-real"] .theme-shortcut,
html[data-theme="moon-real"] dialog {background:linear-gradient(135deg,#2c3d57,#1b2c47);border-color:#a4b6d2;color:#f0f4ff;}
html[data-theme="moon-real"] .dialog-content h2 {color:#eff4ff;}
html[data-theme="moon-real"] .dialog-content>.eyebrow,
html[data-theme="moon-real"] .dialog-content>p,
html[data-theme="moon-real"] .result-metrics span,
html[data-theme="moon-real"] .setting-row small,
html[data-theme="moon-real"] .settings-note {color:#b6c6df;}
html[data-theme="moon-real"] .result-metrics {background:#172945;border-color:#647d9d;}
html[data-theme="moon-real"] .cat-sprite[data-asset-state="failed"]:not(.has-video):after {color:#27364c;}
html[data-theme="moon-real"] #toast {background:#20334ff5;color:#f4f7ff;border-color:#9eb4d1;box-shadow:0 4px 0 #101f38,0 8px 20px #08132a55;bottom:calc(25px + var(--safe-bottom));}
@media (orientation:portrait) {
 html[data-theme="moon-real"] .play-screen {--stage-available-height:calc(100dvh - var(--safe-top) - var(--safe-bottom));--stage-width:min(100vw,calc(var(--stage-available-height)*.513714));--stage-height:calc(var(--stage-width)/.513714);--board-size:calc(var(--stage-width)*.9);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols));margin-top:calc(var(--safe-top) + (var(--stage-available-height) - var(--stage-height))*.5);}
 html[data-theme="moon-real"] .play-screen .cat-atmosphere {position:absolute;inset:0;background-size:100% 100%;}
 html[data-theme="moon-real"] .game-top {top:2.4%;left:3.3%;width:93.4%;}
 html[data-theme="moon-real"] .game-top>.icon-button {width:9.4%;}
 html[data-theme="moon-real"] .game-level-title {top:12.5%;left:5%;width:90%;}
 html[data-theme="moon-real"] .level-world-label {height:calc(var(--stage-width)*.033);font-size:calc(var(--stage-width)*.027);display:flex;align-items:center;justify-content:center;}
 html[data-theme="moon-real"] .game-level-title h1 {font-size:calc(var(--stage-width)*.064);gap:8px;margin-top:5px;}
 html[data-theme="moon-real"] .board-stats {top:10.2%;left:19%;width:62%;height:5.6%;padding:3px 5px;}
 html[data-theme="moon-real"] .board-stats b {font-size:calc(var(--stage-width)*.048);}
 html[data-theme="moon-real"] .board-stats span:not(.stars):not(.hearts) {font-size:calc(var(--stage-width)*.024);}
 html[data-theme="moon-real"] .board-stats .stars .icon {width:calc(var(--stage-width)*.052);height:calc(var(--stage-width)*.054);}
 html[data-theme="moon-real"] .arena {top:17.9%;}
 html[data-theme="moon-real"] .reference-scene {--board-size:calc(var(--stage-width)*.79);}
 html[data-theme="moon-real"] .reference-scene .partner-bar {top:84.9%;left:12.2%;width:75.6%;height:max(44px,6.1%);padding:3px 7px;gap:5px;}
 html[data-theme="moon-real"] .reference-scene .partner-strip>button {padding:0 5px;gap:5px;}
 html[data-theme="moon-real"] .reference-scene .partner-strip .cat-sprite {width:calc(var(--stage-width)*.10);height:calc(var(--stage-width)*.10);}
 html[data-theme="moon-real"] .reference-scene .board-message {display:none;}
 html[data-theme="moon-real"] .reference-scene .board-message.has-hint {display:flex;top:98%;height:2%;font-size:calc(var(--stage-width)*.024);}
 html[data-theme="moon-real"] .reference-scene .control-dock {top:91.85%;left:13.4%;width:73.2%;height:5.9%;}
 html[data-theme="moon-real"] .reference-scene .game-actions {gap:calc(var(--stage-width)*.035);}
}
@media (orientation:portrait) and (max-height:700px) {
 html[data-theme="moon-real"] .reference-scene {--board-size:calc(var(--stage-width)*.74);}
 html[data-theme="moon-real"] .reference-scene .partner-bar {top:82%;}
 html[data-theme="moon-real"] .reference-scene .control-dock {top:91%;height:7.8%;}
 html[data-theme="moon-real"] .reference-scene .board-message.has-hint {top:89.6%;height:1.5%;font-size:9px;}
}
@media (orientation:landscape) and (max-height:600px) {
 html[data-theme="moon-real"] .reference-scene {--board-size:calc(var(--stage-height)*.43);--board-height:calc(var(--board-size)*var(--grid-rows)/var(--grid-cols));}
 html[data-theme="moon-real"] .partner-name,
 html[data-theme="moon-real"] #docked-count {font-size:13px;}
 html[data-theme="moon-real"] .level-world-label:before,
 html[data-theme="moon-real"] .level-world-label:after {width:20px;height:20px;}
}

/* Homes are distinct destination cards; arriving never changes cat scale. */
html[data-theme] .cell.home-cell:after {
  display:block;content:"";position:absolute;inset:2px;z-index:1;
  border:2px solid color-mix(in srgb,var(--home-accent) 80%,#647078);
  border-radius:8px;
  background:linear-gradient(145deg,color-mix(in srgb,var(--home-accent) 38%,#fffdf1),color-mix(in srgb,var(--home-accent) 68%,#fff6e1));
  box-shadow:inset 0 1px 0 #ffffffbd,0 1px 3px #183f4726;pointer-events:none;
}
html[data-theme] .home-cell .cat-home {z-index:2;}
.home-card-name {position:absolute;top:4px;left:5px;z-index:3;max-width:calc(100% - 10px);padding:1px 3px;border-radius:5px;background:#fffdf1de;color:#274450;font-size:clamp(7px,calc(var(--cell-size)*.13),11px);font-weight:800;line-height:1.15;white-space:nowrap;pointer-events:none;}
html[data-theme] .home-occupied.home-cell:after {border-color:var(--home-accent);box-shadow:inset 0 0 0 1px #fffdf1,0 0 7px color-mix(in srgb,var(--home-accent) 70%,transparent);}
.home-food-shower {position:absolute;inset:0;z-index:11;pointer-events:none;overflow:visible;}
.home-food-shower span {position:absolute;left:var(--x);top:var(--y);width:clamp(9px,calc(var(--cell-size,60px)*.2),16px);height:16px;opacity:0;filter:drop-shadow(0 1px 1px #3e2b3866);animation:scatter-food 1.45s var(--delay) cubic-bezier(.2,.65,.3,1) forwards;}
.home-food-party span {animation-duration:2.25s;}
.home-food-shower svg {display:block;width:100%;height:100%;fill:#b8793c;stroke:#754a26;stroke-width:.8;}
@keyframes scatter-food {
  0% {opacity:0;transform:translate(-50%,-50%) rotate(0deg);}
  12% {opacity:1;}
  42% {opacity:1;transform:translate(calc(-50% + var(--food-dx)*.65),var(--food-rise)) rotate(calc(var(--food-spin)*.5));}
  76% {opacity:1;transform:translate(calc(-50% + var(--food-dx)),var(--food-drop)) rotate(var(--food-spin));}
  88% {opacity:.8;transform:translate(calc(-50% + var(--food-dx)),calc(var(--food-drop) - 7px)) rotate(var(--food-spin));}
  100% {opacity:0;transform:translate(calc(-50% + var(--food-dx)),calc(var(--food-drop) + 4px)) rotate(var(--food-spin));}
}
html[data-motion="off"] .home-food-shower {display:none;}
@media (prefers-reduced-motion:reduce) {.home-food-shower {display:none;}}
/* Four companions keep separate touch targets and leave room for the home count. */
html[data-theme] .partner-bar:has(.partner-strip>button:nth-child(3)) {left:5%;width:90%;padding:3px 6px;gap:4px;}
html[data-theme] .partner-strip:has(button:nth-child(3))>button {min-width:44px;padding:0;}
html[data-theme] .partner-bar:has(.partner-strip>button:nth-child(3)) #docked-count {flex-shrink:0;padding-left:6px;}
