.puzzle-panel{--p-ink:#e9eee5;--p-muted:#a6bebc;--p-line:#b7d9cd24;color:var(--p-ink);max-width:1100px;margin:auto;font-family:inherit}.puzzle-panel button{font:inherit;cursor:pointer}.puzzle-top{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--p-line);padding-bottom:18px}.puzzle-top button,.puzzle-secondary{background:none;border:1px solid var(--p-line);color:var(--p-ink);padding:11px 15px;border-radius:12px;min-height:44px}.puzzle-top>span,.puzzle-eyebrow{font-size:10px;letter-spacing:.18em;color:#d4be8f;font-weight:700}.puzzle-intro{padding:34px 0 24px}.puzzle-intro h2{font-family:Georgia,serif;font-size:clamp(30px,4vw,48px);font-weight:400;line-height:1.08;margin:14px 0}.puzzle-intro p,.puzzle-choice p{color:var(--p-muted);line-height:1.7;font-size:14px}.puzzle-choices{display:grid;grid-template-columns:1fr 1fr;gap:18px}.puzzle-choice{padding:24px;text-align:left;position:relative;overflow:hidden;border:1px solid #aecdc334;border-radius:24px;background:radial-gradient(ellipse at 85% 0,#547e7166,transparent 70%),linear-gradient(135deg,#173940,#102b36);color:var(--p-ink);box-shadow:inset 0 1px #ffffff16,0 18px 35px #00101435;transition:transform .18s,border-color .18s}.puzzle-choice:hover{transform:translateY(-3px);border-color:#d8c593}.puzzle-choice h3{font:400 29px Georgia,serif;margin:12px 0}.puzzle-choice>b{display:inline-block;margin-top:10px;color:#e4c993;font-size:13px}.puzzle-mini-art{width:140px;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;transform:rotate(-8deg);margin:6px auto 30px}.puzzle-mini-art i{display:flex;padding:9px;background:var(--tile);border-radius:10px;box-shadow:inset 0 2px #ffffff66,0 5px 0 #001d2933}.puzzle-mini-art svg,.puzzle-tile svg{stroke:#1c4147;stroke-width:1.4;fill:none;stroke-linejoin:round;stroke-linecap:round;width:100%;height:100%}.puzzle-port-art{width:160px;height:140px;display:grid;grid-template-columns:repeat(5,1fr);gap:5px;transform:rotate(6deg);margin:4px auto 31px}.puzzle-port-art i{background:var(--tile);border-radius:5px;box-shadow:inset 0 2px #ffffff66,0 4px #001d2933}.puzzle-disclosure{font-size:12px;line-height:1.7;color:#a9c3c1;margin:22px 0 4px;border-top:1px solid var(--p-line);padding-top:15px}.puzzle-game-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:24px 0}.puzzle-game-heading h2{font:400 clamp(25px,4vw,37px) Georgia,serif;margin:7px 0}.puzzle-game-heading>button{border:1px solid var(--p-line);background:#183b43;color:var(--p-ink);border-radius:11px;padding:10px 16px;min-height:44px}.puzzle-game-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:26px;align-items:start}.puzzle-play{min-width:0}.puzzle-board-wrap{position:relative;padding:12px;background:linear-gradient(135deg,#739b8c,#23484e 40%,#1c3d47);border:1px solid #ced4b44f;border-radius:22px;box-shadow:0 20px 40px #00121d70,inset 0 1px #f1edc95c;overflow:hidden}.puzzle-board-glow{pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse at 20% 0,#dbd5a31c,transparent 65%)}.puzzle-board{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;touch-action:pan-y}.puzzle-tile{position:relative;border:1px solid #ffffff45;border-radius:10px;aspect-ratio:1;background:linear-gradient(150deg,#ffffff40,transparent 55%),var(--tile);padding:10%;box-shadow:inset 0 2px #ffffff50,inset 0 -3px #1a424b25,0 3px 5px #00121d3b;transition:filter .14s,outline .14s;touch-action:pan-y;min-width:0}.puzzle-tile.iced:after{content:'';position:absolute;inset:0;border-radius:inherit;border:3px solid #daffffc4;background:linear-gradient(130deg,transparent 43%,#eaffff8f 46%,transparent 51%,transparent 67%,#eaffff66 70%,transparent 74%);pointer-events:none}.puzzle-tile.selected{outline:3px solid #fff3b8;outline-offset:1px;filter:brightness(1.2);z-index:2}.puzzle-tile .ice-mark{position:absolute;right:1px;top:-1px;color:white;font-size:13px;text-shadow:0 1px 2px #2d7184}.puzzle-tile.landed{animation:puzzle-land .32s cubic-bezier(.2,.8,.3,1)}@keyframes puzzle-land{from{transform:translateY(-10px) scale(.88);filter:brightness(1.12)}to{transform:none;filter:none}}.puzzle-overlay{position:absolute;inset:0;z-index:5;background:#0a2638e8;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:20px;gap:12px}.puzzle-overlay[hidden]{display:none}.puzzle-overlay b{font:400 29px Georgia,serif}.puzzle-overlay span{font-size:13px;color:var(--p-muted)}.puzzle-stats{border:1px solid var(--p-line);border-radius:16px;overflow:hidden;background:#12313a}.puzzle-stats>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid var(--p-line)}.puzzle-stats>div:last-child{border:0}.puzzle-stats span{font-size:11px;color:var(--p-muted)}.puzzle-stats b{font-size:20px;font-weight:500;color:#ead9b1}.puzzle-booster{margin-top:15px;width:100%;min-height:65px;padding:12px;border:1px solid #ccb97a77;border-radius:14px;background:linear-gradient(130deg,#3f645b,#1c4047);color:#f0dfaf;text-align:left;font-weight:700}.puzzle-booster span{display:block;font-size:10px;line-height:1.5;color:#c7d9ce;margin-top:6px;font-weight:400}.puzzle-booster[aria-pressed=true]{outline:2px solid #ebd59e}.puzzle-panel button:disabled{cursor:default;opacity:.48}.puzzle-tile:disabled{opacity:.8}.puzzle-aside>.puzzle-secondary{margin-top:10px;width:100%}.puzzle-control-note{font-size:11px;line-height:1.7;color:var(--p-muted);margin:15px 2px}.puzzle-announcement{min-height:27px;margin:15px 0;font-size:13px;color:#dcca9e}.falling-wrap{width:min(100%,324px);margin:auto;padding:10px}.falling-wrap canvas{display:block;width:100%;height:auto;border-radius:12px;image-rendering:auto}.puzzle-next{padding:16px;border:1px solid var(--p-line);background:#15343c;border-radius:15px;margin-top:15px}.puzzle-next>span{display:block}.puzzle-next canvas{display:block;margin:5px auto}.puzzle-touch{display:flex;justify-content:center;gap:6px;margin:16px auto 0;max-width:360px}.puzzle-touch button{flex:1;min-width:44px;min-height:56px;border-radius:12px;border:1px solid #c8d4be40;background:linear-gradient(145deg,#34565b,#183b45);color:#eadbb8;font-size:26px;touch-action:manipulation}.puzzle-touch small{display:block;font-size:8px;color:var(--p-muted)}.puzzle-finish{padding:18px;background:linear-gradient(130deg,#34564b,#15333c);border:1px solid #d7c79066;border-radius:16px;margin:15px 0}.puzzle-finish h3{font:400 25px Georgia,serif;margin:12px 0}.puzzle-finish p{font-size:12px;line-height:1.7;color:#d3ded1}.puzzle-finish button,.puzzle-error+button{min-height:44px;border:1px solid #d2be85;background:#e3cf9d;color:#183b40;border-radius:10px;padding:10px}.puzzle-error{padding:14px;background:#69423d55;border:1px solid #c5907b77;border-radius:12px;font-size:13px;line-height:1.6}.puzzle-panel :focus-visible{outline:3px solid #ffe2a4;outline-offset:3px}.puzzle-panel canvas:focus-visible{outline-offset:-3px}@media(max-width:680px){.puzzle-top>span{font-size:8px;letter-spacing:.1em}.puzzle-choices{grid-template-columns:1fr}.puzzle-choice{padding:23px}.puzzle-game-layout{grid-template-columns:1fr;gap:20px}.puzzle-aside{display:grid;grid-template-columns:1fr 1fr;gap:10px}.puzzle-stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,1fr)}.puzzle-stats>div{padding:10px;border:0;border-bottom:1px solid var(--p-line)}.puzzle-stats>div:last-child:nth-child(odd){grid-column:1/-1}.puzzle-stats b{font-size:19px}.puzzle-booster{margin:0;grid-column:1/-1}.puzzle-announcement,#puzzle-result{grid-column:1/-1;margin:0}.puzzle-aside>.puzzle-secondary{margin:0}.puzzle-next{margin:0}.puzzle-next canvas{max-width:95px;height:auto}.puzzle-board-wrap{padding:8px;border-radius:16px}.puzzle-board{gap:4px}.puzzle-tile{border-radius:7px}.puzzle-game-heading{padding:18px 0}.falling-wrap{width:min(100%,284px)}.puzzle-intro{padding-top:25px}}@media(prefers-reduced-motion:reduce){.puzzle-panel *{animation:none!important;transition:none!important}}
/* Contain host game's generic aside/canvas rules; controls stay in the first mobile viewport. */
.puzzle-panel .puzzle-aside{position:static;inset:auto;float:none;width:auto;min-width:0;max-width:none;transform:none;align-self:start}
.puzzle-panel .falling-wrap{box-sizing:border-box}
.puzzle-panel .falling-wrap #puzzle-canvas{max-width:100%;height:auto;aspect-ratio:1/2;display:block}
@media(max-width:680px){.puzzle-panel .puzzle-top{padding-bottom:10px;gap:10px}.puzzle-panel .puzzle-top>span{max-width:150px;line-height:1.5}.puzzle-panel .puzzle-game-heading{padding:12px 0;gap:10px}.puzzle-panel .puzzle-game-heading h2{font-size:25px;margin:5px 0}.puzzle-panel .falling-wrap{width:min(100%,220px,calc((100dvh - 340px)/2));padding:7px;border-radius:14px}.puzzle-panel .puzzle-touch{margin-top:10px;gap:5px}.puzzle-panel .puzzle-touch button{min-width:44px;min-height:52px}.puzzle-panel .falling-wrap .puzzle-overlay b{font-size:23px}.puzzle-panel .puzzle-aside{display:grid;grid-template-columns:1fr 1fr}}
/* The shared dialog's 560px width and 44px button minimum do not fit an eight-column board. */
#modal:has(#puzzle-panel){box-sizing:border-box;width:min(1000px,calc(100vw - 32px));max-width:1000px;padding:24px}
#modal #puzzle-board .puzzle-tile{box-sizing:border-box;min-width:0;min-height:0;width:100%;height:auto;aspect-ratio:1;padding:10%;margin:0}
@media(max-width:680px){#modal:has(#puzzle-panel){width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:14px}}
/* Keep every row visible during play rather than requiring scrolling through a tall board. */
#puzzle-panel .puzzle-board-wrap:not(.falling-wrap){box-sizing:border-box;width:min(100%,calc(100dvh - 300px));margin-inline:auto}
/* Bay workshop v2: original glazed collectibles, limestone panels and turquoise water. */
.puzzle-coastal{--p-ink:#183f4b;--p-muted:#496b70;--p-line:#759a9c3d;background:radial-gradient(ellipse at 10% 0,#fffdf1 0,transparent 65%),linear-gradient(155deg,#eaf8f3,#ccebe8);padding:22px;border-radius:26px;box-shadow:inset 0 2px #fff,0 20px 60px #001d2940}
.puzzle-coastal .puzzle-top>span,.puzzle-coastal .puzzle-eyebrow{color:#47797b;letter-spacing:.12em}
.puzzle-coastal .puzzle-game-heading h2{font-family:Georgia,serif;font-weight:700;color:#174d59;text-shadow:0 2px #fff}
.puzzle-coastal .puzzle-game-heading>button,.puzzle-coastal .puzzle-top button,.puzzle-coastal .puzzle-secondary{color:#205461;border:1px solid #91b7b9;background:linear-gradient(#fffdf4,#e1f0e8);box-shadow:0 3px 0 #a9c8c5,inset 0 1px #fff;font-weight:600}
.puzzle-coastal .puzzle-board-wrap{padding:12px;border-radius:25px;border:3px solid #d9f6ed;background:linear-gradient(145deg,#55bfc1,#177b90 50%,#125b75);box-shadow:0 7px 0 #246b7a,0 12px 0 #b7d8d1,0 20px 30px #20565d30,inset 0 2px 4px #fff9}
.puzzle-coastal .puzzle-board{gap:5px;touch-action:none;background:#126a802b;border-radius:13px}
.puzzle-coastal .puzzle-tile{touch-action:none;border:1px solid #fff8;border-radius:12px;background:linear-gradient(145deg,#fcfffc,#bde7e3);box-shadow:inset 0 2px 1px #fff,inset 0 -4px 1px #6cabb28c,0 3px 2px #054e726b}
.puzzle-coastal .puzzle-tile:nth-child(16n+2),.puzzle-coastal .puzzle-tile:nth-child(16n+4),.puzzle-coastal .puzzle-tile:nth-child(16n+6),.puzzle-coastal .puzzle-tile:nth-child(16n+8),.puzzle-coastal .puzzle-tile:nth-child(16n+9),.puzzle-coastal .puzzle-tile:nth-child(16n+11),.puzzle-coastal .puzzle-tile:nth-child(16n+13),.puzzle-coastal .puzzle-tile:nth-child(16n+15){background:linear-gradient(145deg,#ecfffd,#a8d8df)}
.puzzle-mini-art svg,.puzzle-tile svg{stroke:#825951;stroke-width:.8;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 2px 0 #244c6040) drop-shadow(0 -1px 0 #fff8)}
.puzzle-coastal .puzzle-tile svg{overflow:visible;transform:scale(.94)}
.puzzle-coastal .puzzle-tile.selected{outline:3px solid #ffcc4d;outline-offset:0;filter:brightness(1.07);box-shadow:inset 0 0 0 2px white,0 0 14px #ffe883}
.puzzle-coastal .puzzle-tile.iced:after{border:3px solid #f1ffffe8;background:linear-gradient(125deg,#efffff30,transparent 40%,#eaffffb0 43%,transparent 49%,transparent 66%,#fff9 70%,transparent 76%);box-shadow:inset 0 0 8px #b0f8ff,0 0 3px #c4faff}
.puzzle-coastal .puzzle-tile.special{background:radial-gradient(circle,#fff5bf,#94e0d9)!important;box-shadow:inset 0 2px #fff,inset 0 -4px #61aba7,0 0 10px #fff09a8c}
.puzzle-coastal .special svg{stroke:#477787;stroke-width:1.2;transform:scale(1.12)}
.puzzle-coastal .special-sphere{background:radial-gradient(circle,#fff7ec,#d6b1f0)!important}
.puzzle-coastal .puzzle-stats{background:linear-gradient(125deg,#fffef4,#f2ead5);border:2px solid #fff8e8;border-radius:20px;box-shadow:0 5px 0 #b3c9ba,0 9px 18px #2c65751a}
.puzzle-coastal .puzzle-stats>div{border-color:#d4d9c5;padding:12px 15px}
.puzzle-coastal .puzzle-stats>div:first-child{background:linear-gradient(120deg,#268b91,#176379)}
.puzzle-coastal .puzzle-stats>div:first-child span,.puzzle-coastal .puzzle-stats>div:first-child b{color:#fff9dd}
.puzzle-coastal .puzzle-stats b{color:#225c68;font-weight:800;font-size:24px;font-variant-numeric:tabular-nums}
.puzzle-coastal .puzzle-stats span{color:#507171;font-size:12px;font-weight:600}
.puzzle-specials{margin-top:18px;padding:15px;background:linear-gradient(135deg,#fffdf0,#e8f3e6);border:1px solid #fff;border-radius:18px;box-shadow:0 4px 0 #b6d1c3}
.puzzle-specials>.puzzle-eyebrow{font-size:8px;display:block;line-height:1.6;margin-bottom:7px}
.puzzle-specials>div{display:flex;align-items:center;gap:10px;padding:6px 0}
.puzzle-specials svg{width:38px;height:38px;flex:none;stroke:#497782;stroke-width:1.2;filter:drop-shadow(0 3px 1px #346b6c40)}
.puzzle-specials b{display:block;font-size:12px}.puzzle-specials small{display:block;font-size:10px;color:#617a72;margin-top:2px}.puzzle-specials p{font-size:11px;line-height:1.6;margin:10px 0 0;color:#4c6c6d}
.puzzle-coastal .puzzle-disclosure{color:#506e70}.puzzle-coastal .puzzle-announcement{color:#26747b;font-weight:600}.puzzle-coastal .puzzle-overlay{background:#eafbf2ed;color:#275e67}.puzzle-coastal .puzzle-overlay span{color:#507478}.puzzle-coastal .puzzle-finish{background:linear-gradient(135deg,#fff7d5,#d6ece0);border-color:#fff}.puzzle-coastal .puzzle-finish p{color:#3d6465}.puzzle-coastal :focus-visible{outline:3px solid #a54c17;outline-offset:2px}
.puzzle-coastal .puzzle-tile:disabled{opacity:1}.puzzle-coastal .puzzle-board[aria-busy=true]{cursor:wait}
.puzzle-coastal .trace-row:before,.puzzle-coastal .trace-column:before,.puzzle-coastal .trace-bomb:before,.puzzle-coastal .trace-sphere:before{content:'';position:absolute;pointer-events:none;inset:12%;z-index:4;border-radius:50%;border:2px solid #fff8bc;box-shadow:0 0 12px #fff;animation:puzzle-spray .5s ease-out both}
.puzzle-coastal .trace-row:before{inset:40% -8%;border-radius:50%;background:#caffff;animation:puzzle-wave-x .5s ease-out both}.puzzle-coastal .trace-column:before{inset:-8% 40%;border-radius:50%;background:#caffff;animation:puzzle-wave-y .5s ease-out both}.puzzle-coastal .trace-sphere:before{background:radial-gradient(circle,#fff,#ebc4ff50);border-color:#fff}.puzzle-coastal .trace-create svg{animation:puzzle-born .5s ease-out both}.puzzle-coastal .trace-clear:not(.trace-row):not(.trace-column):not(.trace-bomb):not(.trace-sphere) svg{animation:puzzle-glint .5s ease-out both}.puzzle-coastal .trace-fall svg{animation:puzzle-land .5s ease-out both}
@keyframes puzzle-wave-x{from{transform:scaleX(.1);opacity:1}to{transform:scaleX(1.5);opacity:0}}@keyframes puzzle-wave-y{from{transform:scaleY(.1);opacity:1}to{transform:scaleY(1.5);opacity:0}}@keyframes puzzle-spray{from{transform:scale(.3);opacity:1}to{transform:scale(1.65);opacity:0}}@keyframes puzzle-born{0%{transform:scale(.4)}65%{transform:scale(1.25)}100%{transform:scale(1.12)}}@keyframes puzzle-glint{50%{filter:brightness(1.18)}100%{filter:none}}
@media(max-width:680px){.puzzle-coastal{padding:12px;border-radius:20px}.puzzle-coastal .puzzle-top>span{font-size:7px;max-width:130px}.puzzle-coastal .puzzle-board-wrap{padding:7px;border-width:2px;border-radius:17px}.puzzle-coastal .puzzle-board{gap:3px}.puzzle-coastal .puzzle-tile{border-radius:7px}.puzzle-coastal .puzzle-game-layout{gap:20px}.puzzle-coastal .puzzle-stats{grid-template-columns:1fr 1fr;border-radius:16px}.puzzle-coastal .puzzle-stats>div{padding:9px}.puzzle-coastal .puzzle-stats>div:first-child{grid-column:1/-1}.puzzle-coastal .puzzle-stats>div:last-child:nth-child(odd){grid-column:auto}.puzzle-coastal .puzzle-stats b{font-size:20px}.puzzle-coastal .puzzle-stats span{font-size:10px}.puzzle-specials{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:0;padding:12px}.puzzle-specials>.puzzle-eyebrow,.puzzle-specials>p{grid-column:1/-1}.puzzle-specials>div{flex-direction:column;gap:3px;align-items:center;text-align:center}.puzzle-specials b{font-size:10px}.puzzle-specials small{font-size:9px}.puzzle-specials svg{width:32px;height:32px}.puzzle-coastal .puzzle-control-note{font-size:10px;margin-top:18px}.puzzle-coastal .puzzle-game-heading h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.puzzle-coastal *,.puzzle-coastal *:before{animation:none!important;transition:none!important}}
.puzzle-coastal .trace-swap{z-index:3;animation:puzzle-swap .15s ease-in-out forwards}.puzzle-coastal .trace-combine:before{content:'';position:absolute;inset:5%;border-radius:50%;border:3px solid #fff3b1;pointer-events:none;animation:puzzle-spray .16s ease-out both}.puzzle-coastal .trace-convert svg{animation:puzzle-born .16s ease-out both}
@keyframes puzzle-swap{to{transform:translate(var(--swap-x),var(--swap-y))}}
.puzzle-coastal .trace-clear svg{animation:puzzle-clear .13s ease-in forwards!important}.puzzle-coastal .trace-gravity svg{animation:puzzle-gravity .22s cubic-bezier(.3,.1,.7,1) both!important}.puzzle-coastal .puzzle-tile.empty{background:#146f8233!important;box-shadow:inset 0 2px 3px #06485b30;border-color:#b8efee30}
@keyframes puzzle-clear{to{transform:scale(.35);opacity:0;filter:brightness(1.12)}}@keyframes puzzle-gravity{from{transform:translateY(var(--fall-y));opacity:.5}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){.puzzle-coastal .trace-clear svg,.puzzle-coastal .trace-gravity svg{animation:none!important}}
/* Mobile goal strip stays above all eight board rows; duplicate desktop goals are hidden. */
.puzzle-mobile-goals{display:none}.puzzle-coastal .puzzle-stats b{white-space:nowrap}
@media(max-width:680px){
 .puzzle-coastal .puzzle-mobile-goals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin:0 0 12px;padding:5px;background:linear-gradient(135deg,#fffdf1,#eee6cc);border:1px solid #fff;border-radius:15px;box-shadow:0 3px 0 #b0cbc3}
 .puzzle-coastal .puzzle-mobile-goals>div{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;min-width:0;padding:5px 2px;border-radius:10px}
 .puzzle-coastal .puzzle-mobile-goals>div:first-child{background:linear-gradient(135deg,#288d91,#16667a);color:#fff8df;box-shadow:inset 0 1px #fff5}
 .puzzle-coastal .puzzle-mobile-goals span{font-size:9px;font-weight:700;letter-spacing:.04em}
 .puzzle-coastal .puzzle-mobile-goals b{font-size:21px;line-height:1.1;white-space:nowrap;font-variant-numeric:tabular-nums}
 .puzzle-coastal .puzzle-mobile-goals small{font-size:12px;font-weight:600}
 .puzzle-coastal .puzzle-stats>div:nth-child(-n+3){display:none}
 .puzzle-coastal .puzzle-stats{box-shadow:none;border-width:1px;background:#fff9e780}
 .puzzle-coastal .puzzle-stats>div:nth-child(n+4){grid-column:auto;gap:5px;padding:7px}
 .puzzle-coastal .puzzle-stats>div:nth-child(n+4) b{font-size:17px}
 .puzzle-coastal .puzzle-game-heading{padding:10px 0}
}
/* Spatial choreography follows engine target coordinates; decorative layers never receive input. */
.puzzle-coastal{position:relative}.puzzle-fx{position:absolute;inset:12px;pointer-events:none;z-index:4;overflow:hidden;border-radius:12px}.puzzle-fx svg{display:block;width:100%;height:100%;overflow:hidden}.puzzle-fx path,.puzzle-fx circle{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}
.puzzle-fx .fx-charge{stroke:#fff5b3;stroke-width:4;transform-box:fill-box;transform-origin:center;animation:coast-charge .42s ease-out both}.puzzle-fx .fx-beam{stroke:#fff9e1;stroke-width:2;filter:drop-shadow(0 0 3px #dca0ff);stroke-dasharray:1200;stroke-dashoffset:1200;animation:coast-beam .2s ease-out var(--delay) both}.puzzle-fx .fx-target{stroke:#eabaff;stroke-width:3;transform-box:fill-box;transform-origin:center;animation:coast-target .18s ease-out var(--delay) both}
.puzzle-fx .fx-foam{stroke:#ddffff;stroke-width:8;filter:drop-shadow(0 0 5px #fff);stroke-dasharray:800;stroke-dashoffset:800;animation:coast-foam .36s cubic-bezier(.2,.6,.3,1) both}.puzzle-fx .fx-vertical{animation-delay:35ms;stroke-width:7}.puzzle-fx .fx-bomb{stroke:#fff1bb;stroke-width:7;transform-box:fill-box;transform-origin:center;animation:coast-bomb .36s ease-out both}.puzzle-fx .fx-bomb-outer{stroke:#dcffff;stroke-width:3;animation-delay:40ms}
.puzzle-coastal .trace-targeted svg{animation:coast-hit .28s ease-out both}.puzzle-coastal .trace-convert svg{animation:coast-morph .2s ease-out var(--morph-delay) both}
.puzzle-goal-fx{position:absolute;inset:0;pointer-events:none;z-index:9;overflow:visible}.puzzle-goal-flight{position:absolute;display:block;width:22px;height:22px;margin:-11px;filter:drop-shadow(0 2px 3px #2c727d70);animation:coast-goal-flight .45s cubic-bezier(.25,.15,.6,1) var(--delay) both}.puzzle-goal-flight svg{width:100%;height:100%}.goal-arrival{animation:coast-arrival .22s ease-out}
@keyframes coast-charge{0%{transform:scale(.4);opacity:0}35%{transform:scale(1.15);opacity:1}100%{transform:scale(.8);opacity:0}}@keyframes coast-beam{0%{stroke-dashoffset:1200;opacity:0}30%{opacity:1}100%{stroke-dashoffset:0;opacity:.2}}@keyframes coast-target{0%{transform:scale(.3);opacity:0}40%{opacity:1}100%{transform:scale(1.2);opacity:0}}@keyframes coast-foam{0%{stroke-dashoffset:800;opacity:0}15%{opacity:1}75%{opacity:1}100%{stroke-dashoffset:-800;opacity:0}}@keyframes coast-bomb{0%{transform:scale(.12);opacity:0}20%{opacity:1}100%{transform:scale(2);opacity:0}}@keyframes coast-hit{35%{filter:brightness(1.12)}100%{filter:none}}@keyframes coast-morph{0%{transform:scale(.65);filter:brightness(1.18)}65%{transform:scale(1.2)}100%{transform:scale(1.12);filter:none}}@keyframes coast-goal-flight{0%{transform:translate(0,0) scale(1);opacity:1}40%{transform:translate(calc(var(--dx)*.3 - 12px),calc(var(--dy)*.5 - 20px)) scale(.95);opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.4);opacity:0}}@keyframes coast-arrival{50%{transform:scale(1.1);filter:brightness(1.15)}}
@media(max-width:680px){.puzzle-coastal .puzzle-fx{inset:7px}.puzzle-coastal .puzzle-tile svg{transform:scale(1.05)}.puzzle-coastal .special svg{transform:scale(1.16)}}
@media(prefers-reduced-motion:reduce){.puzzle-fx,.puzzle-goal-fx{display:none}.puzzle-coastal .trace-convert svg,.goal-arrival{animation:none!important}}
/* Reserve the dialog scrollbar lane across every motion phase so the board never resizes. */
#modal:has(#puzzle-panel){scrollbar-gutter:stable}
@supports not (scrollbar-gutter:stable){#modal:has(#puzzle-panel){overflow-y:scroll}}
/* Version3 coastal spinner: finite target → spin/flight → impact, never receives input. */
.puzzle-coastal .special-spinner{background:linear-gradient(145deg,#ffe6aa,#a4e7d3)!important;border-color:#fff5ca!important}
.puzzle-fx .fx-spinner-courier{opacity:0;animation:coast-spinner-visible .66s linear both}
.puzzle-fx .fx-spinner-courier path{stroke:#24666e;stroke-width:1px;fill:#57d4cd}.puzzle-fx .fx-spinner-courier path:nth-child(even){fill:#fff0c1}.puzzle-fx .fx-spinner-courier circle{fill:#ffb173;stroke:#24666e;stroke-width:1}.puzzle-fx .fx-spinner-courier circle:last-child{fill:#fff8dd;stroke:none}.puzzle-fx .fx-spinner-delivered{animation-delay:.6s}
.puzzle-fx .fx-spinner-target{stroke:#fff6bf;stroke-width:3;stroke-dasharray:7 4;animation:coast-spinner-target .66s ease both}
.puzzle-fx .fx-spinner-route{stroke:#fff8d5;stroke-width:2;stroke-dasharray:4 7;opacity:.5}
.puzzle-fx .fx-spinner-impact{stroke:#fff6c0;stroke-width:5;transform-box:fill-box;transform-origin:center;animation:coast-spinner-impact .15s ease-out .51s both}
@keyframes coast-spinner-visible{0%,85%{opacity:1}100%{opacity:0}}
@keyframes coast-spinner-target{0%{opacity:.25}20%,85%{opacity:1}100%{opacity:0}}
@keyframes coast-spinner-impact{from{transform:scale(.4);opacity:0}35%{opacity:1}to{transform:scale(1.6);opacity:0}}
/* In-game chrome only; the workshop menu keeps its spacious introduction. */
#modal:has(.puzzle-playing){padding:16px}
.puzzle-playing .puzzle-top{padding-bottom:0;border-bottom:0;min-height:44px;padding-right:36px}
.puzzle-playing .puzzle-game-heading{padding:5px 0 9px;min-height:44px}
.puzzle-playing .puzzle-game-heading h2{font-size:25px;margin:0;line-height:1.15}
.puzzle-playing .puzzle-game-heading .puzzle-eyebrow{display:none}
.puzzle-playing .puzzle-game-layout{gap:18px}
#puzzle-panel.puzzle-playing .puzzle-board-wrap:not(.falling-wrap){width:min(100%,calc(90dvh - 160px))}
.puzzle-playing .puzzle-rules{margin-top:12px;border:1px solid #b2cbc4;border-radius:12px;background:#fff8e7;color:#235462}
.puzzle-playing .puzzle-rules>summary{min-height:44px;cursor:pointer;padding:12px;font-size:12px;font-weight:700;line-height:1.4}
.puzzle-playing .puzzle-rules .puzzle-specials{margin:0;border:0;box-shadow:none;border-radius:0 0 12px 12px}
.puzzle-playing .puzzle-disclosure{margin-top:12px;padding-top:10px}
@media(max-width:680px){
 #modal:has(.puzzle-playing){padding:12px}
 .puzzle-playing .puzzle-top>span{font-size:7px;max-width:110px}
 .puzzle-playing .puzzle-game-heading h2{font-size:22px}
 .puzzle-playing .puzzle-rules{grid-column:1/-1;margin:0}
 .puzzle-playing .puzzle-rules .puzzle-specials{grid-template-columns:repeat(2,minmax(0,1fr))}
 .puzzle-playing .puzzle-mobile-goals{margin-bottom:10px}
 #puzzle-panel.puzzle-playing .puzzle-board-wrap:not(.falling-wrap){width:min(100%,max(224px,calc(90dvh - 215px)))}
}
@media(prefers-reduced-motion:reduce){.puzzle-fx .fx-spinner-courier,.puzzle-fx .fx-spinner-target,.puzzle-fx .fx-spinner-impact{animation:none!important}}
