/* Luma's puzzle stage: warm light, ocean glass and tactile pieces. All scenery
   is static. Movement stays on the existing transform/opacity timeline. */
body.view-puzzle{background:radial-gradient(ellipse at 50% -10%,#387d88 0,transparent 62%),linear-gradient(160deg,#123e59,#092b43 75%);color:#fdf5dc}
.view-puzzle .puzzle-view[data-chapter]{background-color:transparent}
.view-puzzle .topbar{background:transparent;border:0}
.view-puzzle .puzzle-back{background:#19465e;border:1px solid #7ba2a8;border-radius:15px;color:#fff4d4;box-shadow:0 3px 0 #082e43!important;min-height:40px}
.view-puzzle .star-wallet{background:linear-gradient(#fff9e5,#f5d994);border:1px solid #ffefbc;border-radius:13px;color:#785322;box-shadow:0 3px 0 #8f6731!important}
.view-puzzle .game-layout{padding-left:10px;padding-right:10px;max-width:620px}
.view-puzzle .puzzle-card{grid-template-rows:32px 94px minmax(0,1fr) 36px auto 58px;gap:8px;overflow:hidden}
.view-puzzle .puzzle-heading{margin:0 3px;align-self:center}
.view-puzzle .puzzle-heading>div{gap:9px;align-items:center}
.view-puzzle .puzzle-heading .eyebrow{color:#f3d48f;font-size:10px;letter-spacing:.7px}
.view-puzzle .puzzle-heading h2{font-size:15px;font-weight:700;opacity:.9;color:#e6f2ed}
.view-puzzle .goal-bar,.view-puzzle .goal-bar:has(.obstacle-goal:not([hidden])){height:94px;grid-template-columns:minmax(0,1fr) 76px 90px;gap:7px;align-items:stretch}
.view-puzzle .goal-targets{background:linear-gradient(#fffbed,#f3e9cd);border:2px solid #dbc58e;border-radius:20px;overflow:visible;box-shadow:0 4px 0 #8b703a,0 6px 0 #082f43!important;padding:4px}
.view-puzzle .goal-targets .goal{position:relative;border:0;border-radius:13px;padding:5px 3px;gap:5px;min-width:0;background:transparent}
.view-puzzle .goal-targets .goal+.goal{border-left:1px solid #d5c8a4;border-radius:0 13px 13px 0}
.view-puzzle .goal-targets .goal>div{gap:3px}
.view-puzzle .goal-targets .goal .icon,.view-puzzle .goal-targets .goal svg:not(.icon){width:29px;height:29px;flex-shrink:0}
.view-puzzle .goal-targets .goal-label{color:#6d6850;font-size:9px;letter-spacing:.4px;font-weight:800}
.view-puzzle .goal-targets .goal>div strong,.view-puzzle .goal-targets #colorGoal>span{font-size:25px;color:#234d66;line-height:1}
.view-puzzle .goal-targets[data-count="1"] .goal .icon{width:36px;height:36px}
.view-puzzle .goal-targets[data-count="1"] .goal>div strong{font-size:34px}
.view-puzzle .goal-targets .goal.done{background:#dfecc9;border-color:transparent}
.view-puzzle .goal-targets .goal.done::after{content:'✓';position:absolute;right:3px;top:2px;color:#3d7c47;font-size:15px;font-weight:900}
.view-puzzle .goal-guide{display:flex;align-items:flex-end;justify-content:center;min-width:0;overflow:hidden}
.view-puzzle .goal-guide img{width:91px;height:91px;max-width:none;object-fit:contain;object-position:center bottom}
.view-puzzle .moves-goal{border:2px solid #e7cd8d;border-radius:20px;background:linear-gradient(#fff8e2,#efd495);padding:7px 0;gap:3px;box-shadow:0 4px 0 #8b703a,0 6px 0 #082f43!important}
.view-puzzle .moves-goal .goal-label{font-size:10px;color:#82632c;letter-spacing:1px}
.view-puzzle .moves-goal>strong{font-size:42px;color:#244f68;line-height:1}
.view-puzzle .many-goals .goal-bar{grid-template-columns:minmax(0,1fr) 90px}
.view-puzzle .many-goals .goal-guide{display:none}
.view-puzzle .board-stage{align-items:center;isolation:isolate}
.view-puzzle .board-shell{padding:5px;border:3px solid #edcf87;border-radius:19px;background:linear-gradient(140deg,#315e70,#15354e 60%,#0d2a42);box-shadow:0 5px 0 #9f7439,0 9px 0 #06283d!important;overflow:visible}
.view-puzzle #board{background:#204965;border-radius:9px;gap:1px;overflow:hidden}
.view-puzzle .cell,.view-puzzle .cell:nth-of-type(even),.view-puzzle .turn-floor-cell.even,.view-puzzle .turn-floor-cell.odd{background:linear-gradient(145deg,#326b84,#285d79 68%,#24556f);border:0;border-radius:3px}
.view-puzzle .cell:nth-of-type(even),.view-puzzle .turn-floor-cell.even{background:linear-gradient(145deg,#2e657f,#255873 68%,#21506b)}
.view-puzzle .cell.path,.view-puzzle .cell.path:nth-of-type(even),.view-puzzle .turn-floor-cell.path,.view-puzzle .turn-floor-cell.path.even{background:linear-gradient(140deg,#e6cd83,#bc994f 62%,#92713b);border-color:#ffe8a0}
.view-puzzle .cell.lit,.view-puzzle .cell.lit:nth-of-type(even),.view-puzzle .turn-floor-cell.lit,.view-puzzle .turn-floor-cell.lit.even{background:linear-gradient(140deg,#fff3ba,#e5c367 62%,#bc933b);border-color:#fff2b5}
.view-puzzle .cell.chained,.view-puzzle .cell.chained:nth-of-type(even),.view-puzzle .turn-floor-cell.chained,.view-puzzle .turn-floor-cell.chained.even{background:linear-gradient(145deg,#638b9a,#3c647b)}
.view-puzzle .cell.crate,.view-puzzle .cell.crate:nth-of-type(even),.view-puzzle .turn-floor-cell.crate,.view-puzzle .turn-floor-cell.crate.even{background:#956832}
.view-puzzle .cell.is-special,.view-puzzle .cell.is-special:nth-of-type(even),.view-puzzle .turn-floor-cell.is-special,.view-puzzle .turn-floor-cell.is-special.even{background:radial-gradient(ellipse,#608da0,#286083);border-color:#c5edf450}
.view-puzzle .cell.selected,.view-puzzle .cell.selected:nth-of-type(even),.view-puzzle .cell.touch-held{background:#588f9f;border-color:#fff1b5;outline:2px solid #ffe8a0;outline-offset:-2px;z-index:4}
.view-puzzle .cell.touch-held,.view-puzzle .cell.touch-neighbor{overflow:visible}
.view-puzzle .cell.touch-neighbor{z-index:3}
.view-puzzle .cell.hint,.view-puzzle .cell.power-focus{outline:2px solid #fff1a9;outline-offset:-2px}
.view-puzzle .cell[aria-selected="true"] .piece{transform:scale(1.055)}
.view-puzzle .board-message{font-size:13px;font-weight:700;line-height:18px;color:#e4efe9;letter-spacing:.1px;height:36px;display:grid;place-items:center;background:linear-gradient(90deg,transparent,#0b304877,transparent);border-radius:16px}
.view-puzzle .puzzle-tools{height:58px;gap:8px}
.view-puzzle .puzzle-tools button{border:1px solid #89b7be;border-radius:16px;background:linear-gradient(#367d90,#246076);color:#fff6d9;font-size:13px;box-shadow:0 4px 0 #082b43!important;gap:6px}
.view-puzzle .puzzle-tools button:active{transform:translateY(2px)}
.view-puzzle .puzzle-tools button:disabled{opacity:.48}
.view-puzzle .puzzle-tools .tool-icon{font-size:25px;height:26px;line-height:26px}
.view-puzzle .booster-bar{gap:12px;justify-content:center}
.view-puzzle .booster-bar button{border:1px solid #9fb9bb;background:linear-gradient(#336b80,#214e68);border-radius:16px;min-height:46px;box-shadow:0 3px 0 #082b43!important}
.view-puzzle .booster-bar button:disabled{opacity:.45}
.view-puzzle .turn-rocket::after{height:26%;width:190%;background:linear-gradient(90deg,transparent,#ffac31 32%,#ffe388 65%,#fffbe7 90%)}
.view-puzzle .turn-prism-ray{height:4px;background:linear-gradient(90deg,#fffbe3,var(--ray,#a9f7ff));border:1px solid #ffffff55}
.view-puzzle .turn-blast{border:3px solid #fff5c0;background:radial-gradient(circle,#fff4bf99, #ffc85b66 30%,transparent 68%)}
.view-puzzle .turn-target-ring{border:2px solid var(--flight-accent,#ffe7a0);outline:1px solid #123c6288;outline-offset:1px;background:none}
.view-puzzle .goal-goal-hit{color:#29674e}
dialog::backdrop{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:#071f36ad}
.victory-mission{display:flex;align-items:center;gap:12px;margin:16px 0;padding:11px;text-align:left;background:#f3e8c9;border:1px solid #d4bd81;border-radius:16px;color:#244f68}
.victory-mission[hidden]{display:none}
.victory-mission>svg{width:76px;height:76px;flex:none;border-radius:12px;background:#dcead7;overflow:hidden}
.victory-mission>div{display:grid;grid-template-columns:1fr auto;gap:5px;min-width:0;flex:1}
.victory-mission small,.victory-mission strong{grid-column:1/-1}
.victory-mission small{font-size:9px;letter-spacing:.7px;color:#76653b}
.victory-mission strong{font-size:15px;line-height:1.3}
.victory-mission progress{align-self:center;width:100%;height:10px;accent-color:#66a56b}
.victory-mission span{font-size:13px;font-weight:800;white-space:nowrap}
@media(max-width:360px){.view-puzzle .game-layout{padding-left:7px;padding-right:7px}.view-puzzle .goal-bar,.view-puzzle .goal-bar:has(.obstacle-goal:not([hidden])){grid-template-columns:minmax(0,1fr) 62px 76px;gap:5px}.view-puzzle .many-goals .goal-bar{grid-template-columns:minmax(0,1fr) 76px}.view-puzzle .goal-targets .goal-label{font-size:8px}.view-puzzle .goal-targets .goal>div strong{font-size:23px}.view-puzzle .puzzle-heading h2{font-size:13px}.view-puzzle .puzzle-tools button{font-size:12px;gap:3px}}
@media(max-height:700px){.view-puzzle .puzzle-card{grid-template-rows:26px 80px minmax(0,1fr) 28px auto 46px;gap:5px}.view-puzzle .goal-bar,.view-puzzle .goal-bar:has(.obstacle-goal:not([hidden])){height:80px}.view-puzzle .goal-guide img{width:80px;height:80px}.view-puzzle .moves-goal>strong{font-size:35px}.view-puzzle .board-message{height:28px;font-size:11px}.view-puzzle .puzzle-tools{height:46px}.view-puzzle .goal-targets .goal .icon{width:24px;height:24px}.view-puzzle .goal-targets .goal>div strong{font-size:22px}.view-puzzle .booster-bar button{min-height:36px}}
@media(orientation:landscape) and (max-height:500px) and (min-width:600px){.view-puzzle .game-layout{max-width:900px}.view-puzzle .puzzle-card{grid-template-rows:26px 84px minmax(0,1fr) auto 46px}.view-puzzle .goal-bar,.view-puzzle .goal-bar:has(.obstacle-goal:not([hidden])){height:84px}.view-puzzle .board-stage{grid-column:2;grid-row:1/-1}}

/* Goal guidance stays on demand; no timer, particles or extra rendering loop. */
.view-puzzle .goal-targets .goal[role="button"]{cursor:pointer}
.view-puzzle .goal-targets .goal[role="button"]::before{content:'?';position:absolute;top:3px;left:4px;display:grid;place-items:center;width:13px;height:13px;border:1px solid #9e926d;border-radius:50%;font-size:9px;line-height:1;color:#6d6850}
.view-puzzle .goal-targets .goal[role="button"]:focus-visible{outline:3px solid #245e7b;outline-offset:-3px}

/* Live and travelling art share the same border-free content box and scale.
   This prevents a two-pixel size jump at both ends of every turn. */
body.shell-ready.view-puzzle .piece>svg,
body.view-puzzle .cell.is-special:has(use[href='#prism']) .piece>svg,
body.view-puzzle .turn-actor .piece>svg{width:96%;height:96%}
.view-puzzle .cell.crate .box-piece>svg,.view-puzzle .turn-actor .box-piece>svg{width:100%;height:100%}
/* The second crate layer is tangible timber bracing, never a UI badge. */
.box-piece>.crate-reinforcement{position:absolute;inset:0;pointer-events:none;width:100%;height:100%}
/* Hardware carries its own painted bevels; empty chain centres leave the piece visible. */
.tile-chain svg{fill:none;stroke:none}
.tile-seal{background:linear-gradient(145deg,#d9f8f3e8,#6499b2eb);border-color:#b4e4e4}
.tile-seal svg{fill:none;stroke:none}
.path-lantern{padding:0;background:linear-gradient(135deg,#ffe8ac,#b98538);border-color:#eac37b}
.path-lantern.is-lit{background:linear-gradient(135deg,#fff4bc,#dfaf42);border-color:#fff0ad}
.path-lantern>.icon{display:block;width:100%;height:100%}
.view-puzzle .cell.path,.view-puzzle .turn-floor-cell.path{outline:1px solid #e6c477;outline-offset:-1px}
.view-puzzle .cell.lit,.view-puzzle .turn-floor-cell.lit{outline-color:#fff1b5}
.view-puzzle .cell.selected,.view-puzzle .cell.touch-held,.view-puzzle .cell.hint,.view-puzzle .cell.power-focus{outline:2px solid #fff1a9;outline-offset:-2px}
.view-puzzle .turn-launch-flash{background:radial-gradient(circle,#fffbe4 0 18%,#ffdc70 40%,#ffad3644 70%);border-radius:50%}

/* A combo gathers into one anchor; source artwork cannot flash back at handoff. */
.combo-intro-surface{position:absolute;z-index:11;pointer-events:none;overflow:visible}
.combo-intro-piece{position:absolute;display:grid;place-items:center;z-index:2}
.combo-intro-piece .piece{position:absolute;inset:0;width:100%;height:100%;display:grid;place-items:center;min-width:0;min-height:0}
.combo-intro-piece .piece>svg{width:96%;height:96%}
.combo-intro-result{position:absolute;z-index:3;display:grid;place-items:center;pointer-events:none}
.combo-intro-result>.combo-power-art,.turn-flyer>.combo-power-art,.prism-convert-core>.combo-power-art{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:100%;max-height:100%}
.prism-convert-core>.combo-power-art{inset:6%;width:88%;height:88%}
.turn-flyer>.combo-power-art{inset:3%;width:94%;height:94%}
.combo-intro-result[data-combo-kind^="prism-"]>.combo-power-art{inset:6%;width:88%;height:88%}
.combo-intro-result[data-combo-kind="propeller-bomb"]>.combo-power-art,.combo-intro-result[data-combo-kind="propeller-rocket"]>.combo-power-art{inset:3%;width:94%;height:94%}
.turn-combo-core{position:absolute;z-index:5;pointer-events:none;transform-origin:center}
.turn-combo-core>.combo-power-art{position:absolute;inset:0;width:100%;height:100%;display:block}
.turn-rocket>.turn-rocket-engine{z-index:0}
.turn-rocket>.piece{z-index:1}
.combo-intro-halo{position:absolute;border:2px solid #fff1ad;border-radius:50%;background:radial-gradient(circle,#fff9d6b0, #ffcf4955 48%, transparent 70%);z-index:1}
.cell.combo-consumed>.piece{visibility:hidden!important}

/* Prism conversion is a single bounded transfer, with no persistent emitters. */
.prism-convert-surface{position:absolute;z-index:10;pointer-events:none;overflow:hidden;border-radius:9px}
.prism-convert-core{position:absolute;z-index:2}
.prism-convert-core .piece{position:absolute;inset:0;display:grid;place-items:center}
.prism-convert-core .piece>svg{width:96%;height:96%}
.prism-convert-ray{position:absolute;height:2px;background:#fff1b2;transform-origin:left center;border-radius:2px}

/* Connected overgrowth: static half-vines meet across the one-pixel grid gap.
   Only actual neighbouring plants connect, behind their existing leaf artwork. */
.plant-cover{inset:0;background:none;border:0;border-radius:0;overflow:visible}
.plant-cover>.plant-vines{position:absolute;inset:-1px;width:calc(100% + 2px);height:calc(100% + 2px);overflow:visible;pointer-events:none}
.plant-vines path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.plant-vines .vine-bark{stroke:#31533a;stroke-width:7}
.plant-vines .vine-stem{stroke:#91bb62;stroke-width:3.5}
.plant-vines .vine-glint{stroke:#d9e9aa;stroke-width:1}
.plant-cover>.icon{position:relative;width:94%;height:94%;filter:none}
/* The layer artwork supplies the cracks; never crop a second arbitrary chunk. */
.ice-1>.icon{opacity:.42;clip-path:none}
.ice-2>.icon{opacity:.52}
.ice-3>.icon{opacity:.66}
.ice-cover b{background:linear-gradient(145deg,#f3ffff,#b5dfec);border-color:#82bdcc;color:#214f69}
.exit-marker{bottom:1px;padding:0;line-height:0;background:linear-gradient(145deg,#f9dea1,#ad7934);border-color:#ffe5aa}
.exit-marker>svg{display:block;width:100%;height:100%}

/* Give every puzzle control its own track. Booster sizing must agree with its
   reserved row, including the extra browser chrome on short phone viewports. */
.shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card{
 --puzzle-heading-height:26px;--puzzle-goal-height:100px;--puzzle-message-height:36px;--puzzle-control-height:48px;
 grid-template-columns:minmax(0,1fr);
 grid-template-areas:"heading" "goals" "board" "message" "boosters" "tools";
 grid-template-rows:var(--puzzle-heading-height) var(--puzzle-goal-height) minmax(0,1fr) var(--puzzle-message-height) var(--puzzle-control-height) var(--puzzle-control-height);
 gap:10px;padding-bottom:8px;
}
.shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card:has(.play-button:not(.is-playing):not([hidden])){
 grid-template-areas:"heading" "goals" "board" "message" "start" "boosters" "tools";
 grid-template-rows:var(--puzzle-heading-height) var(--puzzle-goal-height) minmax(0,1fr) var(--puzzle-message-height) auto var(--puzzle-control-height) var(--puzzle-control-height);
}
.shell-ready.view-puzzle:not(.puzzles-done) .puzzle-heading{grid-area:heading}
.shell-ready.view-puzzle:not(.puzzles-done) .goal-bar{grid-area:goals;height:var(--puzzle-goal-height)}
.shell-ready.view-puzzle:not(.puzzles-done) .board-stage{grid-area:board}
.shell-ready.view-puzzle:not(.puzzles-done) .board-message{grid-area:message;height:var(--puzzle-message-height);line-height:18px}
.shell-ready.view-puzzle:not(.puzzles-done) .play-button{grid-area:start}
.shell-ready.view-puzzle:not(.puzzles-done) .booster-bar{grid-area:boosters;height:100%;min-height:0;padding:0;margin:0;align-items:stretch}
.shell-ready.view-puzzle:not(.puzzles-done) .puzzle-tools{grid-area:tools;height:100%;min-height:0;margin-top:0;margin-bottom:0}
.shell-ready.view-puzzle:not(.puzzles-done) .booster-bar button,
.shell-ready.view-puzzle:not(.puzzles-done) .puzzle-tools button{height:100%;min-height:44px;padding:4px 6px;box-sizing:border-box}
@media(max-height:740px){
 .shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card{--puzzle-heading-height:22px;--puzzle-goal-height:80px;--puzzle-message-height:28px;--puzzle-control-height:44px;gap:8px}
 .shell-ready.view-puzzle:not(.puzzles-done) .board-message{line-height:14px}
}
@media(max-height:620px){
 .shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card{--puzzle-heading-height:20px;--puzzle-goal-height:64px;gap:6px;padding-bottom:6px}
}
@media(orientation:landscape) and (max-height:500px) and (min-width:600px){
 .shell-ready.view-puzzle .game-layout{max-width:900px}
 .shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card{
  --puzzle-heading-height:22px;--puzzle-goal-height:70px;--puzzle-message-height:28px;
  grid-template-columns:minmax(220px,.85fr) minmax(0,1.15fr);
  grid-template-areas:"heading board" "goals board" "message board" "boosters board" "tools board";
  grid-template-rows:var(--puzzle-heading-height) var(--puzzle-goal-height) minmax(var(--puzzle-message-height),1fr) var(--puzzle-control-height) var(--puzzle-control-height);column-gap:16px;
 }
 .shell-ready.view-puzzle:not(.puzzles-done) .puzzle-card:has(.play-button:not(.is-playing):not([hidden])){
  grid-template-areas:"heading board" "goals board" "message board" "start board" "boosters board" "tools board";
  grid-template-rows:var(--puzzle-heading-height) var(--puzzle-goal-height) minmax(var(--puzzle-message-height),1fr) auto var(--puzzle-control-height) var(--puzzle-control-height);
 }
}

/* Keep the lantern and both charge lights inside even the narrowest board cell. */
.lantern-marker{left:4%;right:4%;height:40%;min-height:14px;display:grid;grid-template-columns:minmax(0,1fr) 5px 5px;grid-template-rows:minmax(0,1fr);column-gap:2px;padding:0 1px;justify-items:center;overflow:hidden}
.lantern-marker>.icon{display:block;width:100%;height:100%;max-width:18px;min-width:0;min-height:0;filter:none}
.lantern-marker i{display:block;width:5px;height:5px;min-width:5px;min-height:5px;margin:0}
.lantern-marker{background:linear-gradient(140deg,#88643b,#483d2e);border-color:#d9b478}
.lantern-marker i{background:radial-gradient(circle at 35% 30%,#899c9b,#334d55);border-color:#c6af73}
.lantern-marker i.lit{background:radial-gradient(circle at 35% 30%,#fffbd1,#f1be45);border-color:#ffeab0}
.lantern-marker.charge-2{background:linear-gradient(140deg,#f6d77b,#b98537)}

/* Compact goal artwork must fit the short-screen track instead of stretching it. */
@media(max-height:620px){
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-bar{grid-template-rows:minmax(0,1fr)}
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-bar>div{min-height:0;height:100%}
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-targets .goal{min-height:0;padding:3px 1px;gap:2px}
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-targets .goal>div{flex-direction:row;justify-content:center;gap:3px;min-height:24px}
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-targets .goal .icon{width:24px;height:24px}
 .shell-ready.view-puzzle:not(.puzzles-done) .goal-guide img{width:100%;height:100%;max-width:100%;object-fit:contain}
 .shell-ready.view-puzzle:not(.puzzles-done) .moves-goal{padding:4px 0;gap:2px}
}
/* Fixed objectives use the shared board materials and a bounded static overlay.
   Coral's opaque bed hides the blocker placeholder; seals keep the piece visible. */
.coral-cover,.color-seal{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:3;overflow:hidden}
.coral-cover{background:#194b5d;border-radius:9%;border:1px solid #567d82}
.coral-cover>.icon{display:block;width:100%;height:100%;filter:none}
.coral-cover b{position:absolute;right:2%;bottom:2%;min-width:15px;height:15px;padding:0 2px;display:grid;place-items:center;border:1px solid #ffce9d;border-radius:50%;background:#623c55;color:#fff1d3;font-size:10px;line-height:1;font-weight:800}
.color-seal{inset:0;color:#f1c258;background:transparent;overflow:visible}
.seal-color-1{color:#ef6d91}.seal-color-2{color:#84cc75}.seal-color-3{color:#b987e7}.seal-color-4{color:#65c7ec}
.color-seal>.seal-frame{display:block;width:100%;height:100%;filter:none}
.seal-color-key{position:absolute;left:1%;bottom:1%;width:26%;height:26%;padding:1px;border:1px solid currentColor;border-radius:28%;background:#234a5b;display:grid;place-items:center}
.seal-color-key>svg{display:block;width:100%;height:100%;filter:none}

/* Bounded help remains readable beside its original action icon. */
.puzzle-tools .tool-label{min-width:0}.puzzle-tools .tool-remaining{flex:none;display:inline-grid;place-items:center;min-width:25px;padding:2px 4px;border:1px solid #b8d9d7;border-radius:7px;background:#153f5655;font-size:10px;line-height:1.2;font-variant-numeric:tabular-nums}.puzzle-tools button{gap:5px}.puzzle-tools button:disabled .tool-remaining{opacity:.65}
