@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#11141d;--panel:#1a1f2c;--muted:#939cad;--text:#eff1f5;--lime:#c0f777;--cell:48px;--gap:6px;font-family:'DM Sans',system-ui,sans-serif;background:var(--bg);color:var(--text)}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 38% 48%,#20312e55,transparent 47%),var(--bg)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button{border:0}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.topbar{max-width:1080px;margin:auto;padding:32px 32px 24px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;text-decoration:none;color:var(--text);font:700 28px 'Space Grotesk',sans-serif;letter-spacing:-1.3px}.brand-period{color:var(--lime)}.brand-mark{display:grid;grid-template-columns:8px 8px;gap:3px;margin-right:12px;transform:rotate(-6deg)}.brand-mark i{width:8px;height:8px;background:var(--lime);border-radius:2px}.header-actions{display:flex;align-items:center;gap:8px}.mode-label{font-size:12px;letter-spacing:2px;color:var(--muted);margin-right:24px}.icon-button{height:40px;width:40px;display:grid;place-items:center;background:transparent;border-radius:12px;color:#abb4c5;transition:.2s}.icon-button:hover{background:#ffffff0c;color:var(--text)}.game-layout{max-width:780px;margin:30px auto 0;display:grid;grid-template-columns:minmax(0,456px) 220px;gap:64px;align-items:start;padding:0 20px}.scoreboard{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;padding:0 4px}.score-primary{display:flex;flex-direction:column}.eyebrow{font-size:12px;font-weight:600;letter-spacing:1.8px;color:var(--muted)}.score{font:600 58px/1.12 'Space Grotesk',sans-serif;letter-spacing:-3px;font-variant-numeric:tabular-nums}.best-score{display:flex;flex-direction:column;align-items:flex-end;gap:7px}.best-score .eyebrow{display:flex;align-items:center;gap:7px;letter-spacing:1.2px}.best-score svg{width:17px;height:17px;color:var(--lime)}#best{font:500 27px 'Space Grotesk',sans-serif;color:#d0d6df;font-variant-numeric:tabular-nums}.board-wrap{position:relative;width:100%;aspect-ratio:1}.board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr));gap:var(--gap);padding:10px;border:1px solid #3d495555;border-radius:18px;background:#202632;box-shadow:0 20px 70px #0004,inset 0 1px #ffffff08;width:100%;height:100%;touch-action:none;user-select:none}.cell{padding:0;min-width:0;position:relative;border-radius:6px;background:#2b3342;transition:background .13s,box-shadow .13s;outline-offset:0!important}.cell.filled,.mini-cell,.ghost-cell{background:var(--block);box-shadow:inset 0 2px 0 #ffffff35,inset 0 -3px 0 #0002;border-radius:5px}.cell.filled:after,.mini-cell:after,.ghost-cell:after{content:'';position:absolute;inset:5px;border:1px solid #ffffff18;border-bottom-color:#0000000b;border-radius:3px;pointer-events:none}.cell.preview{background:var(--block);opacity:.47;box-shadow:inset 0 0 0 2px #ffffff66}.cell.invalid{background:#ff6c7044;box-shadow:inset 0 0 0 2px #ff909077}.cell.will-clear{filter:brightness(1.5);box-shadow:0 0 12px #ffffff44}.cell.rescue-preview{background:#c0f77777;box-shadow:inset 0 0 0 2px var(--lime)}.cell.placed{animation:place .22s ease-out}.cell.clearing{animation:clear .3s ease-out both;z-index:1}.tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px;min-height:108px}.piece-slot{height:108px;border-radius:14px;background:#1b202b;border:1px solid #ffffff06;display:flex;align-items:center;justify-content:center;touch-action:none;position:relative;padding:8px;transition:border-color .2s,background .2s,transform .2s;user-select:none}.piece-slot:hover{background:#232a36}.piece-slot.selected{border-color:var(--lime);background:#c0f7770a}.piece-slot.used{background:#171c25;border-color:transparent;cursor:default}.piece-slot.used:after{content:'✓';font-size:22px;color:#424c5c}.piece-slot.no-fit{opacity:.42}.piece-shape{display:grid;gap:3px;pointer-events:none;position:relative}.mini-cell{width:23px;height:23px;position:relative}.mini-cell:after{inset:3px}.instruction{font-size:13px;text-align:center;color:var(--muted);margin:15px -20px 0;min-height:20px;line-height:1.5}.game-aside{padding-top:26px}.aside-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.aside-heading .eyebrow{font-size:11px;letter-spacing:1.4px}.combo-tag{color:#b8c3d5;background:#252c39;padding:5px 9px;border-radius:7px;font:600 14px 'Space Grotesk',sans-serif}.combo-title{font:500 23px 'Space Grotesk',sans-serif;letter-spacing:-.7px;margin:19px 0 14px}.combo-dots{display:flex;gap:6px}.combo-dots i{height:5px;width:27px;border-radius:3px;background:#303846;transition:.3s}.combo-dots i.lit{background:var(--lime);box-shadow:0 0 10px #c0f77733}.combo-panel p{font-size:14px;line-height:1.65;color:var(--muted);margin:14px 0 0}.combo-panel.active .combo-title,.combo-panel.active .combo-tag{color:var(--lime)}.rescue{display:flex;align-items:center;gap:11px;width:100%;position:relative;text-align:left;background:#242d2c;border:1px solid #bdf07420;border-radius:13px;padding:17px 13px 22px;margin-top:35px;overflow:hidden}.rescue-icon{font-size:28px;color:var(--lime)}.rescue-copy{display:flex;flex-direction:column;gap:4px}.rescue-copy strong{font-size:13px;font-weight:600}.rescue-copy>span{font-size:11px;color:#a4b3a0}#charge-label{font-size:12px;margin-left:auto;color:#bed4ad;white-space:nowrap}.charge-track{position:absolute;height:3px;background:#c0f77715;left:0;right:0;bottom:0}.charge-track>span{display:block;height:100%;width:0;background:var(--lime);transition:width .4s}.rescue.ready{border-color:#c0f77788;box-shadow:0 0 22px #c0f7770e}.rescue.armed{background:#c0f77724;outline:2px solid var(--lime)}.quiet-guide{margin-top:42px}.guide-number{font-size:11px;letter-spacing:1.5px;color:#819080}.quiet-guide p{font-size:14px;line-height:1.65;color:#aeb5c2;margin:9px 0 25px}.no-rush{font-size:12px;color:#798392;line-height:1.7;border-top:1px solid #ffffff0b;padding-top:19px}.no-rush>span{display:block;font-size:24px;color:#a2ada5;margin-bottom:5px}footer{text-align:center;font-size:12px;letter-spacing:.3px;color:#677383;padding:26px 16px 24px;margin-top:8px}.board-fx{position:absolute;inset:0;pointer-events:none;overflow:visible}.particle{position:absolute;width:6px;height:6px;border-radius:2px;background:var(--block);animation:particle .6s ease-out forwards}.board-message{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;justify-content:center;align-items:center;opacity:0;text-align:center;color:white;font:700 39px 'Space Grotesk',sans-serif;text-shadow:0 3px 14px #000b;z-index:4}.board-message.show{animation:announce 1.3s ease both}.board-message small{font-size:19px;font-weight:500;margin-top:5px;color:var(--lime)}#drag-ghost{display:none;position:fixed;pointer-events:none;z-index:30;gap:6px;filter:drop-shadow(0 10px 12px #0007);opacity:.94}.ghost-cell{position:relative}.sr-only{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}dialog{border:1px solid #ffffff1c;border-radius:24px;background:#1c2330;color:var(--text);padding:0;width:min(410px,calc(100vw - 32px));box-shadow:0 30px 100px #0007}dialog::backdrop{background:#090d16c9;backdrop-filter:blur(7px)}.modal-inner{padding:32px}.modal-icon{color:var(--lime);font-size:38px}.modal-inner h1,.modal-inner h2{font:600 30px 'Space Grotesk',sans-serif;letter-spacing:-1px;margin:14px 0}.modal-inner p,.modal-inner li{font-size:15px;line-height:1.65;color:#b8c2d1}.modal-inner ol{padding-left:21px}.modal-inner li{padding-left:5px;margin:12px 0}.modal-inner strong{color:#eef3eb}.modal-score{font:600 64px 'Space Grotesk',sans-serif;color:var(--lime);letter-spacing:-3px}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:25px}.primary-button,.secondary-button{width:100%;padding:15px 18px;border-radius:12px;font-weight:700;font-size:15px}.primary-button{background:var(--lime);color:#182514}.secondary-button{background:#293343;color:#c8d0dd}.keyboard-note{font-size:12px!important}.shake{animation:shake .24s ease}.score.bump{animation:bump .25s ease}
@keyframes place{from{transform:scale(.75);filter:brightness(1.4)}to{transform:scale(1)}}@keyframes clear{30%{transform:scale(1.12);filter:brightness(1.8)}to{transform:scale(.15);opacity:0}}@keyframes particle{to{transform:translate(var(--dx),var(--dy)) rotate(150deg);opacity:0}}@keyframes announce{0%{opacity:0;transform:translateY(10px) scale(.9)}15%,65%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-18px)}}@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}@keyframes bump{50%{transform:scale(1.08)}}
@media(min-width:1000px){.game-layout{margin-top:42px;transform:translateX(24px)}}
@media(max-width:700px){.topbar{padding:20px 22px 13px}.brand{font-size:25px}.mode-label{display:none}.header-actions{gap:2px}.icon-button{height:37px;width:37px}.game-layout{display:flex;flex-direction:column;max-width:472px;padding:0 18px;margin:12px auto 0;gap:0}.play-area{width:100%}.scoreboard{margin-bottom:15px}.score{font-size:46px}.eyebrow{font-size:11px}#best{font-size:24px}.board{gap:5px;padding:8px;border-radius:15px}.cell{border-radius:4px}.cell.filled:after{inset:4px}.tray{margin-top:16px;gap:10px;min-height:87px}.piece-slot{height:87px;border-radius:12px}.mini-cell{width:20px;height:20px}.instruction{font-size:12px;margin-top:11px}.game-aside{padding:0;width:100%;display:flex;flex-direction:column;gap:0}.combo-panel{display:none}.rescue{margin-top:18px;padding:12px 16px 16px;gap:13px;border-radius:12px}.rescue-copy strong{font-size:14px}.rescue-copy>span{font-size:12px}#charge-label{font-size:14px}.quiet-guide{display:none}footer{padding:20px 10px;font-size:11px;margin:0}.board-message{font-size:32px}}
@media(max-height:740px) and (max-width:700px){.topbar{padding-top:12px;padding-bottom:7px}.game-layout{max-width:382px;margin-top:5px}.score{font-size:38px}.scoreboard{margin-bottom:10px}.tray{margin-top:10px;min-height:72px}.piece-slot{height:72px}.mini-cell{width:18px;height:18px}.rescue{margin-top:10px;padding-top:9px;padding-bottom:12px}footer{padding:12px} .instruction{margin-top:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Let even five-cell pieces fit within narrow mobile trays. */
.piece-slot{container-type:size}.piece-slot .mini-cell{width:min(23px,calc((100cqw - (var(--piece-width) - 1)*3px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*3px)/var(--piece-height)));height:auto;aspect-ratio:1}
@media(max-width:700px){.piece-slot .mini-cell{width:min(20px,calc((100cqw - (var(--piece-width) - 1)*3px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*3px)/var(--piece-height)))}}
@media(max-height:740px) and (max-width:700px){.piece-slot .mini-cell{width:min(18px,calc((100cqw - (var(--piece-width) - 1)*3px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*3px)/var(--piece-height)))}}

/* Block Revel: saturated arcade colors and a roomier playing surface. */
:root{--bg:#101b4a;--panel:#18366c;--muted:#b3c3ee;--text:#f6f7ff;--lime:#d4ff6b;--gap:4px}
body{background:radial-gradient(ellipse at 12% 25%,#4935ae80,transparent 50%),radial-gradient(ellipse at 95% 80%,#077caa66,transparent 52%),linear-gradient(145deg,#15234f,#131f4e 50%,#112e53)}
.topbar{max-width:1120px;padding-top:24px;padding-bottom:16px}
.brand{font-size:30px}.brand-period{color:#ffc952}.brand-mark i:nth-child(2){background:#55caff}.brand-mark i:nth-child(3){background:#ff92bd}
.mode-label{background:#30468d;border:1px solid #708ce95c;border-radius:30px;padding:7px 13px;color:#d5e5ff;letter-spacing:1.5px}
.icon-button{background:#253b7055;color:#cbddff}.icon-button:hover{background:#4261ac66;color:white}
.game-layout{max-width:896px;grid-template-columns:minmax(0,560px) 220px;gap:36px;justify-content:center;margin:10px auto 0;padding:0 20px;transform:none}
.scoreboard{margin-bottom:16px}.score{color:#e1fcff;text-shadow:0 3px 0 #193f79,0 0 25px #70e1ff22}.eyebrow{color:#bbcef0}.best-score #best{color:#ffdf89}.best-score svg{color:#ffcf58}
.board{gap:4px;padding:9px;border:3px solid #648feb;border-radius:20px;background:linear-gradient(145deg,#3c65b1,#233e88 55%,#3564a1);box-shadow:0 7px 0 #102657,0 0 0 1px #abe4ff44,inset 0 2px 0 #c6eeff55,0 20px 50px #03092555}
.cell{background:linear-gradient(145deg,#35548c,#2c4479);border:1px solid #87b8ff16;border-radius:7px;box-shadow:inset 0 2px 3px #0b23502e;transition:none}
.cell.filled,.mini-cell,.ghost-cell{background:linear-gradient(145deg,#ffffff3d,#ffffff00 45%,#00000018),var(--block);border:1px solid #ffffff5c;box-shadow:inset 0 2px 0 #ffffff65,inset 0 -4px 0 #00000022,0 2px 3px #071c5633;border-radius:7px}
.cell.filled:after,.mini-cell:after,.ghost-cell:after{inset:4px;border:1px solid #ffffff26;border-top-color:#ffffff55;border-radius:3px}
.cell.preview{background:var(--block);opacity:.7;border-color:#fff9;box-shadow:inset 0 0 0 2px #ffffff99}
.cell.invalid{background:#f871853f;box-shadow:inset 0 0 0 2px #ffadb2}
.cell.rescue-preview{background:#dcff7377;box-shadow:inset 0 0 0 2px #e5ffad}
.cell.will-clear{filter:brightness(1.4);box-shadow:0 0 15px #cbefff80;z-index:1}
.cell.placed{animation:snap-place .11s cubic-bezier(.2,.8,.2,1)}.cell.clearing{animation:clear .17s ease-out both}
.tray{gap:12px;min-height:144px;margin-top:20px}
.piece-slot{--pad-color:#719ced;height:144px;padding:12px;border:2px solid color-mix(in srgb,var(--pad-color) 55%,#3457a0);border-radius:20px;background:radial-gradient(ellipse at 50% 0%,color-mix(in srgb,var(--pad-color) 30%,transparent),transparent 80%),linear-gradient(160deg,#274b83,#1c3265);box-shadow:inset 0 2px 0 #ffffff15,0 5px 0 #081a45aa;transition:border-color .12s,background .12s,transform .12s}
.piece-slot:hover{border-color:var(--pad-color);background:color-mix(in srgb,var(--pad-color) 20%,#203d77)}
.piece-slot.selected{background:color-mix(in srgb,var(--pad-color) 30%,#203d77);border-color:#efffc3;box-shadow:0 0 0 2px #d4ff6b66,inset 0 0 25px #ffffff0d,0 5px 0 #081a45aa}
.piece-slot.used{background:#16326780;border:2px dashed #6897dc33;box-shadow:none}.piece-slot.used:after{color:#8badde80}
.piece-slot.no-fit{opacity:.6}
.piece-slot .piece-shape{gap:4px}
.piece-slot .mini-cell{width:min(34px,calc((100cqw - (var(--piece-width) - 1)*4px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*4px)/var(--piece-height)));height:auto;aspect-ratio:1}
.instruction{color:#c5d5f2;font-size:14px;margin-top:17px}
.game-aside{padding-top:30px}.combo-panel{padding:20px 17px;border:1px solid #9795f14d;border-radius:20px;background:linear-gradient(145deg,#5f4db24d,#263c8240);box-shadow:inset 0 1px 0 #ffffff15}.combo-title{font-size:23px;margin-top:16px}.combo-tag{background:#7e74d766;color:#f8d3ff}.combo-panel p{color:#c1c9ee}.combo-dots i{background:#7376b455}.combo-dots i:nth-child(1).lit{background:#61e5db}.combo-dots i:nth-child(2).lit{background:#80bfff}.combo-dots i:nth-child(3).lit{background:#d096ff}.combo-dots i:nth-child(4).lit{background:#ff9cc5}.combo-dots i:nth-child(5).lit{background:#ffe780}
.rescue{background:linear-gradient(135deg,#146968,#164767);border:1px solid #6ef2c655;padding:18px 14px 23px;margin-top:23px;box-shadow:inset 0 1px 0 #a4ffe422}.rescue-copy strong{font-size:14px}.rescue-copy>span{font-size:12px;color:#c0e6d7}#charge-label{color:#dcffb1}.rescue.ready{background:linear-gradient(135deg,#237561,#156174);border-color:#cfff8d}.rescue.armed{background:#3d8160;outline-color:#d7ff8b}
.quiet-guide{margin-top:30px}.guide-number{color:#91c6f5}.quiet-guide p{color:#c2d2ed}.no-rush{color:#9cb5de;border-color:#82b4f633}.no-rush>span{color:#f3c975}footer{color:#91acd2;margin-top:0;padding:22px 12px}
#drag-ghost{top:0;left:0;will-change:transform;filter:drop-shadow(0 7px 9px #00133877)}
dialog{background:linear-gradient(145deg,#263f7c,#182b59);border-color:#7d9beb66}.modal-inner p,.modal-inner li{color:#c8d7f1}.secondary-button{background:#355493;color:#e1ecff}
@media(max-width:760px){
 .topbar{padding:16px 16px 10px}.brand{font-size:27px}.brand-mark{margin-right:9px}.mode-label{display:none}.icon-button{height:38px;width:38px}.header-actions{gap:3px}
 .game-layout{display:flex;flex-direction:column;max-width:512px;padding:0 12px;margin:6px auto 0;gap:0}.play-area{width:100%}.scoreboard{margin-bottom:13px;padding:0 5px}.score{font-size:45px}.eyebrow{font-size:11px}#best{font-size:25px}
 .board{padding:7px;gap:4px;border-width:3px;border-radius:17px}.cell{border-radius:5px}.cell.filled:after{inset:3px;border-radius:2px}
 .tray{gap:9px;margin-top:16px;min-height:124px}.piece-slot{height:124px;padding:8px;border-radius:16px}.piece-slot .mini-cell{width:min(29px,calc((100cqw - (var(--piece-width) - 1)*4px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*4px)/var(--piece-height)))}
 .instruction{font-size:12px;margin:13px 0 0;line-height:1.5}.game-aside{padding:0;width:100%}.combo-panel,.quiet-guide{display:none}.rescue{margin-top:13px;padding:11px 15px 15px;border-radius:13px;gap:12px}.rescue-copy strong{font-size:14px}.rescue-copy>span{font-size:12px}#charge-label{font-size:14px}
 footer{font-size:11px;padding:15px 8px}.board-message{font-size:32px}
}
@media(max-height:740px) and (max-width:760px){
 .topbar{padding-top:10px;padding-bottom:6px}.game-layout{margin-top:4px}.score{font-size:38px}.scoreboard{margin-bottom:10px}
 .tray{margin-top:13px;min-height:112px}.piece-slot{height:112px}.piece-slot .mini-cell{width:min(27px,calc((100cqw - (var(--piece-width) - 1)*4px)/var(--piece-width)),calc((100cqh - (var(--piece-height) - 1)*4px)/var(--piece-height)))}
 .instruction{margin-top:11px}.rescue{margin-top:11px}footer{padding:12px 8px}
}
@media(prefers-reduced-motion:reduce){.cell.placed,.cell.clearing{animation-duration:.01ms!important}}

.blocked-notice{position:absolute;inset:3px;z-index:8;display:grid;place-items:center;border-radius:17px;background:#101d4bc4;backdrop-filter:blur(3px);padding:18px}
.blocked-notice[hidden]{display:none}.blocked-card{text-align:center;width:min(100%,330px);padding:24px 20px;border:1px solid #d6ff815c;border-radius:22px;background:linear-gradient(145deg,#2d4d85,#203365);box-shadow:0 15px 45px #08133866,inset 0 1px #c7efff22}.blocked-spark{font-size:43px;color:#dcff83;text-shadow:0 0 25px #c2ff7166}.blocked-card h2{font:700 30px/1.1 'Space Grotesk',sans-serif;letter-spacing:-.8px;margin:12px 0}.blocked-card p{font-size:15px;line-height:1.5;color:#cbdbf9;margin:0 0 22px}.blocked-card .primary-button{font-size:15px;background:linear-gradient(135deg,#d8ff84,#a9ed62);box-shadow:0 4px 0 #406c34}.blocked-card .primary-button:hover{filter:brightness(1.08)}
@media(max-width:390px){.blocked-notice{padding:14px}.blocked-card{padding:16px 14px}.blocked-spark{font-size:30px}.blocked-card h2{font-size:26px;margin:8px 0}.blocked-card p{font-size:14px;margin-bottom:15px}.blocked-card .primary-button{padding:12px 8px;font-size:14px}}
@media(min-width:761px) and (max-height:850px){
 .topbar{padding-top:14px;padding-bottom:8px}.game-layout{grid-template-columns:minmax(0,clamp(320px,calc(100svh - 300px),520px)) 220px;margin-top:0}.score{font-size:42px}.scoreboard{margin-bottom:12px}.game-aside{padding-top:16px}.tray{min-height:124px;margin-top:16px}.piece-slot{height:124px}.instruction{font-size:12px;margin-top:12px}
}

/* Warm embers live above the board, independently of playable cells. */
.board-fx{z-index:3;overflow:hidden;border-radius:18px;pointer-events:none}
.ember-batch{position:absolute;inset:0;pointer-events:none}
.ember-tile{position:absolute;border-radius:7px;background:radial-gradient(ellipse at 50% 45%,#fffbd3 0%,#ffe885 22%,#ffb743b8 51%,#ff702c44 77%,#ff5c1800 100%);box-shadow:0 0 10px #ffe59abf,0 0 26px #ff971d99,inset 0 0 12px #fff7b5;animation:ember-afterglow 1.05s ease-out both;pointer-events:none}
.ember-tile:after{content:'';position:absolute;inset:12%;border:1px solid #fff2bdaa;border-radius:5px;background:radial-gradient(ellipse at 55% 35%,#fffde9aa,#ffbb4622 70%);animation:ember-core .45s ease-out both}
.ember-spark{position:absolute;border-radius:50%;background:#fff1a9;box-shadow:0 0 4px #ffe99b,0 0 10px #ff9c35;animation:ember-rise var(--ember-life) cubic-bezier(.15,.45,.3,1) var(--ember-delay) both;pointer-events:none}
.cell.clearing{animation:ember-ignite .17s ease-out both;z-index:2}
@keyframes ember-ignite{0%{opacity:1;transform:none}45%{background:#fff2bd;box-shadow:inset 0 0 12px #fff8d4,0 0 16px #ffbe55;opacity:1}100%{background:#ffbb5d;box-shadow:0 0 20px #ff981f;opacity:0;transform:none}}
@keyframes ember-afterglow{0%,9%{opacity:1}25%{opacity:.8}55%{opacity:.35}100%{opacity:0}}
@keyframes ember-core{0%{opacity:0}20%{opacity:1}100%{opacity:0}}
@keyframes ember-rise{0%{opacity:0;transform:translate3d(0,0,0) scale(.6)}12%{opacity:1}60%{opacity:.7}100%{opacity:0;transform:translate3d(var(--ember-x),var(--ember-rise),0) scale(.25)}}
.ember-batch.still .ember-tile{animation:none;opacity:.48;box-shadow:0 0 10px #ffaa4b66}
.ember-batch.still .ember-tile:after{animation:none;opacity:.2}
@media(prefers-reduced-motion:reduce){.ember-spark{display:none}.cell.clearing{animation-duration:.01ms!important}}

@keyframes snap-place{0%{transform:scale(.97);filter:brightness(1.22)}45%{transform:scale(1.025)}100%{transform:scale(1);filter:brightness(1)}}

/* A quick ignition, curling flame and smoke that thins as it rises. */
.ember-flame{position:absolute;z-index:1;pointer-events:none;transform-origin:50% 100%;border-radius:65% 35% 48% 52% / 85% 75% 25% 15%;background:radial-gradient(ellipse at 50% 85%,#fffdeb 0%,#fff4a3 15%,#ffcf47 32%,#ff8120c9 54%,#ff400000 74%);box-shadow:0 4px 12px #ff9b2855;animation:flame-surge var(--flame-life) ease-out both}
.ember-smoke{position:absolute;z-index:2;pointer-events:none;border-radius:50%;background:radial-gradient(ellipse at 31% 46%,#e5dac09c,transparent 50%),radial-gradient(ellipse at 66% 33%,#b9b5b185,transparent 47%),radial-gradient(ellipse at 49% 67%,#514e588f,transparent 59%);animation:smoke-curl 1.3s cubic-bezier(.16,.48,.36,1) var(--smoke-delay) both;transform-origin:50% 70%}
.ember-spark{z-index:3}
@keyframes flame-surge{0%{opacity:0;transform:translateY(8px) scale(.65,.35) rotate(0)}14%{opacity:1;transform:translateY(0) scale(1,1.05) rotate(-7deg)}38%{opacity:.95;transform:translateY(-8px) scale(.8,1.25) rotate(var(--flame-lean))}100%{opacity:0;transform:translateY(var(--flame-rise)) scale(.2,.55) rotate(var(--flame-lean))}}
@keyframes smoke-curl{0%{opacity:0;transform:translate3d(0,8px,0) scale(.3) rotate(0)}15%{opacity:.8}45%{opacity:.5}100%{opacity:0;transform:translate3d(var(--smoke-drift),var(--smoke-rise),0) scale(1.8) rotate(var(--smoke-spin))}}
@media(prefers-reduced-motion:reduce){.ember-flame,.ember-smoke{display:none}}

/* New hands slide into their stationary pads; input stays available throughout. */
.piece-slot{overflow:hidden}
.piece-slot.dealing .piece-shape{animation:deal-in .3s cubic-bezier(.16,.75,.3,1) var(--deal-delay) both}
@keyframes deal-in{0%{opacity:0;transform:translate3d(calc(100cqw + 20px),8px,0) scale(.92) rotate(6deg)}16%{opacity:1}78%{opacity:1;transform:translate3d(-3px,0,0) scale(1.025) rotate(-1deg)}100%{opacity:1;transform:translate3d(0,0,0) scale(1) rotate(0)}}
@media(prefers-reduced-motion:reduce){.piece-slot.dealing .piece-shape{animation:none}}

/* Rescue uses one draggable 3 × 3 brick in place of the ordinary hand. */
.piece-slot.rescue-slot{grid-column:1/-1;--pad-color:#ffc76b;gap:26px;justify-content:center;background:radial-gradient(ellipse at 20% 30%,#ffc44e40,transparent 70%),linear-gradient(135deg,#755b39,#304877);border:2px solid #ffce76;box-shadow:inset 0 2px 0 #fff2c633,0 5px 0 #382d3b,0 0 22px #ffaa321c}
.rescue-slot .rescue-shape{flex-shrink:0;--rescue-icon-size:58px}
.rescue-shape:after{content:'×';position:absolute;inset:0;display:grid;place-items:center;color:#fffbea;font:700 var(--rescue-icon-size,58px)/1 'Space Grotesk',sans-serif;text-shadow:0 2px 2px #82420a,0 0 10px #fff3ac;pointer-events:none}
.rescue-piece-copy{display:flex;flex-direction:column;gap:8px;text-align:left;pointer-events:none}
.rescue-piece-copy strong{font:600 20px/1.15 'Space Grotesk',sans-serif;color:#fff6d8}
.rescue-piece-copy>span{font-size:13px;color:#ffddac;line-height:1.4}
.cell.rescue-preview{background:linear-gradient(135deg,#ffeb925c,#ff9c2a66);border:2px solid #ffdc77;box-shadow:inset 0 0 11px #ffc95c55,0 0 9px #ffac4233;z-index:1}
.cell.rescue-preview.filled{background:linear-gradient(135deg,#ffe99299,#ff973477),var(--block)}
.cell.rescue-empty{background:#ff818133;border:2px dashed #ffada6;box-shadow:none}
#drag-ghost.rescue-drag{opacity:.62;filter:drop-shadow(0 0 12px #ffb74e77)}
#drag-ghost.rescue-drag .ghost-cell{background:linear-gradient(135deg,#fff1a65c,#ffb34833);border:2px solid #fff0b3;box-shadow:inset 0 0 8px #ffd36b44}
#drag-ghost.rescue-drag.invalid-target{opacity:.35}
@media(max-width:760px){.piece-slot.rescue-slot{gap:20px}.rescue-piece-copy strong{font-size:18px}.rescue-piece-copy>span{font-size:12px}.rescue-slot .rescue-shape{--rescue-icon-size:48px}}
@media(max-width:350px){.piece-slot.rescue-slot{gap:14px}.rescue-piece-copy strong{font-size:16px}.rescue-piece-copy>span{font-size:11px}}

/* A shared lobby and a compact live scoreboard keep the game at the center. */
[hidden]{display:none!important}.friends-button{color:#e0ff91;background:#a7e76a1a}
.online-hub{width:min(580px,calc(100% - 32px));margin:24px auto;padding:28px;border:1px solid #799bf077;border-radius:24px;background:linear-gradient(135deg,#2b427c,#263063);box-shadow:0 20px 60px #060f3533}
.online-hub h1{font:600 32px/1.15 'Space Grotesk',sans-serif;letter-spacing:-.7px;margin:12px 0}.lobby-intro{font-size:16px;line-height:1.5;color:#cfddf6;margin:12px 0 24px}
#online-name-form{display:grid;gap:12px}#online-name-form label{font-size:15px;font-weight:600}.online-hub input{min-width:0;width:100%;padding:14px 15px;border:1px solid #8aaff075;background:#162b56;border-radius:12px;color:#eff7ff;font:16px inherit}.online-hub input:focus{outline:2px solid #d4ff84;outline-offset:2px}
.online-message{font-size:14px;color:#ffdf9a;min-height:21px;line-height:1.5;margin:18px 0}.invite-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin:20px 0}.invite-row input{font-size:13px}.invite-row .primary-button{width:auto;white-space:nowrap;padding:13px}
.lobby-players{display:grid;gap:9px;margin:22px 0}.lobby-player{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid #88aafc35;border-radius:13px;background:#172b574d}.lobby-player.me{border-color:#d8fb8099;background:#80994618}.lobby-player>div{display:flex;flex-direction:column;gap:4px;min-width:0}.lobby-player strong{font-size:16px;overflow-wrap:anywhere}.lobby-player small{font-size:13px;color:#b4c5e5}.lobby-player>span{font-size:14px;color:#e0ff9f;white-space:nowrap}.lobby-actions{display:grid;gap:10px}
.match-hud{margin-bottom:12px}.match-top{display:flex;align-items:center;gap:12px;color:#c8dafa;font-size:13px;margin-bottom:7px}.match-top strong{margin-left:auto;font:600 24px/1 'Space Grotesk',sans-serif;color:#fff0a7;font-variant-numeric:tabular-nums}.match-top button{padding:5px 9px;border-radius:8px;background:#5674b03d;font-size:12px;color:#dce7ff}.match-scores{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.match-player{min-width:0;padding:6px 8px;border-radius:10px;border:1px solid #7a9ce24d;background:#1d3364}.match-player.me{border-color:#d5ff84;background:#4c644945}.match-player span{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cddbf1}.match-player strong{display:block;font:600 18px/1.15 'Space Grotesk',sans-serif;color:#f6f9ff;font-variant-numeric:tabular-nums}.match-player.done span{color:#ffd387}
.online-mode .scoreboard,.online-mode .mode-label,.online-mode #restart{display:none}.match-cover{position:absolute;inset:3px;z-index:12;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;padding:24px;border-radius:18px;background:#10244cda;backdrop-filter:blur(3px);text-align:center}.match-cover strong{font:700 42px/1.1 'Space Grotesk',sans-serif;color:#e1ff9c}.match-cover span{font-size:16px;color:#e4ecfd}
@media(max-width:760px){.topbar{padding-left:12px;padding-right:12px}.brand{font-size:24px}.header-actions{gap:0}.icon-button{width:35px;height:36px}.online-hub{margin-top:14px;padding:20px}.online-hub h1{font-size:29px}.online-mode .game-layout{margin-top:0}.match-player{padding:5px 6px}.match-player strong{font-size:16px}.match-top strong{font-size:22px}.match-cover strong{font-size:34px}.online-mode .topbar{padding-top:9px;padding-bottom:5px}}

.remove-player{border:1px solid #8197bc55;background:transparent;color:#b6c3e3;border-radius:9px;font-size:20px;min-width:34px;min-height:34px;cursor:pointer}.lobby-player>div{flex:1;min-width:0}.lobby-player{gap:12px}.online-mode .no-rush{display:none}

.match-event{margin:8px 0 0;padding:8px 12px;border:1px solid #ffd78b66;border-radius:10px;color:#ffe4aa;font-size:13px;background:#8c5a3422}.match-player small{font-size:10px;color:#ffcfa0}.result-emblem{font-size:52px;margin-bottom:12px}.result-emblem.winner{filter:drop-shadow(0 0 20px #ffcf5c66)}.winner-hub{border-color:#e3fc8baa;background:radial-gradient(ellipse at top,#647a4944,transparent 60%),linear-gradient(135deg,#2b427c,#263063)}.result-winner{border-color:#ffdf7999;background:#ffd76a18}.victory-confetti{position:fixed;inset:0;z-index:99;pointer-events:none;overflow:hidden;contain:strict}.victory-confetti i{position:absolute;top:58%;border-radius:2px;will-change:transform,opacity}
.rankings-link{background:#ffdc7720;color:#ffe29b;font-size:12px;font-weight:700;border-radius:8px;padding:5px 10px;min-height:30px}.best-score{gap:3px}
#rankings-dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100svh - 24px);background:linear-gradient(155deg,#33458a,#172650 75%);overscroll-behavior:contain}.rankings-inner{padding:24px}.ranking-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.ranking-heading .icon-button{font-size:28px;flex-shrink:0}#rankings-title{font:700 32px/1.12 'Space Grotesk',sans-serif;letter-spacing:-1px;margin:10px 0}.ranking-intro{color:#c9d8f7;font-size:14px;margin:0 0 22px}.rank-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.rank-cards>div{padding:16px;border:1px solid #aaceff55;border-radius:16px;background:linear-gradient(135deg,#6f8be540,#25496b40);display:flex;flex-direction:column;gap:9px}.rank-cards>div:last-child{background:linear-gradient(135deg,#eed57022,#33637b44)}.rank-cards span{font-size:13px;font-weight:600;color:#e5efff}.rank-cards strong{font:700 36px/1 'Space Grotesk',sans-serif;color:#f7e5a5;overflow-wrap:anywhere}#rank-personal{font-size:13px;color:#dfff9e;margin:13px 0 4px}#rank-country-note{font-size:12px;color:#bdcbed;margin:0}.ranking-tabs{display:flex;padding:4px;border-radius:12px;background:#0d1e46;margin:22px 0 12px;gap:4px}.ranking-tabs button{width:50%;min-height:42px;border-radius:9px;background:transparent;color:#bbcef0;font-weight:700}.ranking-tabs button[aria-selected=true]{background:#5875b9;color:white;box-shadow:0 3px 8px #0003}.ranking-meta{display:flex;justify-content:space-between;gap:8px;align-items:center;color:#bbcef0;font-size:11px}.ranking-meta button{background:transparent;color:#dfff9e;font-size:12px;padding:8px}#ranking-list{padding:0;margin:10px 0;list-style:none;max-height:290px;overflow:auto;border-radius:12px;background:#11244855}.ranking-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:9px;align-items:center;padding:12px;border-bottom:1px solid #a2bbee20;font-size:14px}.ranking-row.me{background:#dfff8915;box-shadow:inset 3px 0 #dfff89}.rank-place{font-size:16px;color:#f9df96}.rank-name{overflow-wrap:anywhere;min-width:0;font-weight:600}.rank-name small{display:block;font-size:11px;font-weight:400;color:#aec1e6;margin-top:3px}.ranking-row strong{font-variant-numeric:tabular-nums;color:#e4f7ff;white-space:nowrap}.ranking-empty{padding:24px 16px;text-align:center;color:#cbd8f1;font-size:14px;line-height:1.6}.ranking-explainer{font-size:11px;line-height:1.6;color:#aebfe3;margin:12px 0 22px}#ranking-profile{display:grid;gap:9px;border-top:1px solid #a2bbee30;padding-top:18px}#ranking-profile label{font-size:12px;font-weight:600;color:#d8e5ff}#ranking-profile input,#ranking-profile select{font:inherit;font-size:15px;color:#f1f5ff;background:#112449;border:1px solid #809ac666;border-radius:10px;padding:12px;width:100%;min-width:0}#ranking-profile select{color-scheme:dark}#ranking-profile p,#ranking-status,#ranking-load-message{font-size:12px;line-height:1.6;color:#bfcfee;margin:4px 0 8px}#ranking-status{color:#dfff9e;margin:16px 0}#ranking-load-message:empty{display:none}#rank-start{margin-top:0}#rank-save:disabled{opacity:.6}
@media(max-width:370px){.rankings-inner{padding:16px}#rankings-title{font-size:28px}.rank-cards>div{padding:12px}.rank-cards strong{font-size:31px}.ranking-row{padding:10px 8px;gap:6px;grid-template-columns:34px minmax(0,1fr) auto}}

.record-line{display:flex;align-items:center;gap:9px}.record-line .rankings-link{white-space:nowrap;padding:5px 7px}

.matchmaking-button{background:linear-gradient(120deg,#65edd3,#b8fa70);color:#153139;box-shadow:0 5px 22px #5ff4d52b}.search-spark{width:88px;height:88px;margin:28px auto;font-size:64px;line-height:88px;text-align:center;color:#fcdc72;text-shadow:0 0 28px #ffd75f77;animation:search-pulse 1.6s ease-in-out infinite}.online-hub>.secondary-button{margin-top:12px}@keyframes search-pulse{50%{transform:rotate(45deg) scale(1.13);color:#63f3da}}@media(prefers-reduced-motion:reduce){.search-spark{animation:none}}

.end-ranking-form{display:grid;gap:10px;margin:20px 0;text-align:left}.end-ranking-form label{font-size:14px;font-weight:700}.end-ranking-form input{width:100%;box-sizing:border-box;padding:12px;border:1px solid #809ac666;border-radius:10px;background:#112449;color:#f1f5ff;font:inherit}.end-ranking-form .end-ranking-status{font-size:12px;line-height:1.5;margin:0}.end-ranking-form button:disabled{opacity:.65}
