:root{font-family:'DM Sans',system-ui,sans-serif;color:#eef3ed;background:#101715;font-synthesis:none;--mint:#b5edb9;--amber:#fac776;--muted:#9faa9f;--line:#334238;--panel:#18221d;--coral:#f28d74}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;min-height:44px;border:1px solid transparent;border-radius:9px;font-weight:600;transition:background .15s,transform .15s}button:hover{filter:brightness(1.1)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:wait}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--amber);outline-offset:4px}.mast,main,footer{max-width:1120px;margin:auto}.mast{min-height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:700;display:flex;align-items:center;gap:12px;letter-spacing:-.8px}.brand-mark{width:34px;height:36px;border-radius:8px;background:var(--mint);color:#172719;display:grid;place-items:center;font-size:28px}.beta,.pill{font-size:10px;letter-spacing:1px;border:1px solid var(--line);border-radius:4px;padding:4px 6px;color:var(--muted)}.quiet{background:transparent;border-color:var(--line);padding:10px 15px}.intro{display:flex;justify-content:space-between;align-items:end;gap:24px;padding:36px 0 27px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:var(--mint);margin:0 0 12px}h1,h2,p{margin-top:0}h1,h2{font-family:'Space Grotesk',sans-serif}h1{font-size:clamp(30px,4vw,43px);line-height:1.1;letter-spacing:-1.7px;margin-bottom:12px}.mobile-break{display:none}.lede{color:var(--muted);font-size:15px;margin:0;line-height:1.5}.help-button{background:transparent;white-space:nowrap;font-size:13px}.help-button span{border:1px solid var(--line);border-radius:50%;display:inline-grid;place-items:center;width:23px;height:23px;margin-left:6px}.help{padding:22px;background:var(--panel);border:1px solid var(--line);border-radius:12px;margin-bottom:22px}.help h2{font-size:19px}.help p{font-size:14px;line-height:1.65;color:#bac5ba}.help p:last-child{margin:0}.game-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr);gap:24px}.play-card{border:1px solid var(--line);border-radius:16px;background:var(--panel);overflow:hidden;align-self:start}.board-top{display:flex;align-items:center;justify-content:space-between;padding:17px 24px;border-bottom:1px solid var(--line);gap:12px}.board-top>div{display:flex;align-items:center;gap:9px}.board-top h2{font-size:14px;margin:0;font-family:inherit;font-weight:600}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--mint)}.clock{font-family:'Space Grotesk',sans-serif;font-size:11px;color:var(--muted);letter-spacing:1px}.clock.ticking{font-size:22px;color:var(--amber);font-variant-numeric:tabular-nums}.scoreline{display:flex;justify-content:space-between;padding:19px 32px 17px;gap:14px}.scoreline>div{display:flex;flex-direction:column;gap:4px}.label{font-size:9px;letter-spacing:1.5px;color:var(--muted);font-weight:700}.scoreline strong{font-family:'Space Grotesk',sans-serif;font-size:23px;font-variant-numeric:tabular-nums}.board-wrap{position:relative;margin:0 auto;padding:0 24px;max-width:450px}.board{display:grid;grid-template-columns:repeat(var(--cols,6),1fr);gap:5px;border:1px solid #3a493d;padding:9px;background:#101713;border-radius:12px;aspect-ratio:var(--ratio,1);width:100%;max-height:470px}.cell{min-width:0;min-height:0;border-radius:6px;background:#19221c;display:grid;place-items:center;aspect-ratio:1;position:relative}.cell.wall{background:repeating-linear-gradient(135deg,#334138,#334138 3px,#2c3930 3px,#2c3930 7px);border:1px solid #47534a}.cell.block{color:#17271d;border-bottom:4px solid #0003;box-shadow:inset 0 1px 0 #ffffff4d;font-size:clamp(15px,3.5vw,28px);font-weight:700;font-family:'Space Grotesk',sans-serif}.block.c1{background:var(--mint)}.block.c2{background:var(--amber)}.block.c3{background:var(--coral)}.block.c4{background:#adaae9}.board-overlay{position:absolute;inset:0 24px;border-radius:12px;background:#101715eF;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;backdrop-filter:blur(5px)}.board-overlay strong{font-family:'Space Grotesk',sans-serif;font-size:29px;color:var(--mint)}.board-overlay p{color:var(--muted);margin:12px 0 20px;line-height:1.5}.board-bottom{text-align:center;padding:17px 20px 12px}.board-bottom>p{font-size:12px;color:var(--muted);margin-bottom:13px}.direction-pad{display:flex;justify-content:center;gap:8px}.direction-pad button{width:52px;height:48px;background:#28372d;border:1px solid #4b5d4f;border-bottom-width:3px;font-size:25px;color:var(--mint)}.board-tools{display:flex;justify-content:center;gap:18px;margin-top:5px}.text-button{background:transparent;color:var(--muted);font-size:12px;padding:8px 4px}.side{display:flex;flex-direction:column;gap:18px;min-width:0}.duel-card{padding:28px;background:#becdab0a;border:1px solid var(--line);border-radius:16px}.duel-card h2{font-size:31px;line-height:1.14;letter-spacing:-1px;margin-bottom:15px}.duel-card>p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.6;max-width:270px;margin-bottom:22px}.primary{background:var(--mint);color:#17271d;padding:12px 20px}.primary:hover{background:#c6f7c9}.wide{width:100%;display:flex;align-items:center;justify-content:space-between}.secondary{background:#293a2e;border:1px solid #4b5d4f;padding:10px 14px;font-size:13px}.divider{position:relative;text-align:center;color:var(--muted);font-size:10px;margin:21px 0;display:flex;align-items:center;gap:12px}.divider:before,.divider:after{content:'';height:1px;background:var(--line);flex:1}.join-row{display:flex;gap:8px}.join-row input{min-width:0;flex:1;background:#111914;color:#eef3ed;border:1px solid var(--line);border-radius:8px;padding:12px;font-family:'Space Grotesk',sans-serif;letter-spacing:2px;font-size:12px}.join-row button{flex-shrink:0}.progress-card{padding:21px 24px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:12px}.section-heading h2{font-size:16px;margin:0}.progress-card p{font-size:12px;color:var(--muted);line-height:1.65}.small{font-size:11px!important;line-height:1.6}.link{color:var(--mint);display:inline-block;margin-top:6px}.progress-values{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:10px 0 12px}.progress-values strong{font-size:24px;color:var(--mint)}.achievements{list-style:none;padding:0;font-size:12px;color:var(--amber)}.save-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.save-actions button{font-size:12px}.check-label{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.5;min-height:44px}.check-label input{width:18px;height:18px;flex-shrink:0;accent-color:var(--mint)}.room-code-row{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.code-button{background:#28372d;border:1px dashed var(--mint);font-family:'Space Grotesk',sans-serif;letter-spacing:3px;font-size:19px;padding:8px 12px;color:var(--mint)}#room-status{font-size:13px;color:var(--muted);line-height:1.6;margin-top:14px}.opponent{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}.opponent-head{display:flex;justify-content:space-between;font-size:12px;margin-bottom:10px;gap:10px}.opponent-head span{color:var(--mint)}.mini{max-width:180px;padding:5px;gap:3px;margin:auto;border-radius:6px}.mini .cell{border-radius:3px;font-size:12px!important;border-bottom-width:2px}.notice{color:var(--amber);font-size:13px;line-height:1.5;min-height:20px;margin:17px 0}.notice:empty{margin:0;min-height:0}footer{display:flex;justify-content:space-between;gap:20px;padding:30px 0;color:var(--muted);font-size:11px}footer nav{display:flex;gap:20px;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{display:none!important}@media(min-width:1200px){body{padding:0 40px}}@media(max-width:1199px){.mast,main,footer{margin-left:24px;margin-right:24px}}@media(max-width:760px){.mast{min-height:76px}.brand{font-size:18px;gap:8px}.beta{display:none}.mast .quiet{font-size:11px;padding:8px}.intro{padding:25px 0 22px;align-items:start}.eyebrow{font-size:8px;letter-spacing:1.3px}h1{font-size:32px}.lede{font-size:13px;max-width:340px}.help-button{font-size:0;padding:0;min-width:44px}.help-button span{font-size:14px}.game-layout{grid-template-columns:1fr;gap:20px}.side{display:grid;grid-template-columns:1fr 1fr;gap:14px}.duel-card{padding:20px}.duel-card h2{font-size:26px}.progress-card{padding:20px}.board-wrap{max-width:400px}.board-top{padding:14px 20px}.scoreline{padding:15px 28px}.board{gap:5px}.cell.block{font-size:26px}footer{flex-direction:column;gap:15px}.progress-values strong{font-size:20px}}@media(max-width:520px){.mast,main,footer{margin-left:16px;margin-right:16px}.brand{font-size:16px}.brand-mark{width:28px;height:31px;font-size:25px}.mast .quiet{max-width:150px;line-height:1.35}.intro{gap:5px}.lede{max-width:280px}.side{display:flex}.duel-card h2 br{display:none}.duel-card h2{font-size:25px;max-width:270px}.duel-card>p:not(.eyebrow){max-width:none}.board-wrap{padding:0 16px}.board-overlay{inset:0 16px}.board{padding:7px;gap:4px}.cell.block{font-size:23px}.board-tools{gap:20px}.progress-card{padding:20px}.board-top{padding:13px 17px}.scoreline{padding:14px 24px}.scoreline strong{font-size:21px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Feedback stays outside the puzzle's state and preserves its square grid. */
.board-wrap,.opponent{position:relative}.duel-spark{position:absolute;left:50%;top:50%;pointer-events:none;color:#b9f6cc;font-size:24px;z-index:4}.pulse-status{min-height:1.6em;text-align:center;font-size:.85rem;font-weight:700;color:#ffc56a;margin-top:10px}.play-card.pulsed .board{outline:3px solid #ffc56a;outline-offset:4px}.play-card.shielded .board{outline:2px solid #8bcbb6;outline-offset:3px}#sound-toggle{white-space:nowrap;margin-left:auto}.mast{gap:12px;flex-wrap:wrap}.clock.urgent{color:#ffc56a}@media(prefers-reduced-motion:reduce){.duel-spark{display:none}}
.rival-strip{padding:0 20px 12px;color:var(--mint);font-size:12px;text-align:center;font-variant-numeric:tabular-nums}.direction-pad{touch-action:manipulation;user-select:none}.direction-pad button{touch-action:manipulation}input{font-size:16px!important}.play-card,.duel-card,.progress-card{min-width:0}.board-overlay{overflow:auto}.pulse-status{padding:0 8px}.board-tools{flex-wrap:wrap;gap:4px 18px}footer{padding-bottom:max(24px,env(safe-area-inset-bottom))}
@media(max-width:600px){
 .mast,main,footer{margin-left:max(12px,env(safe-area-inset-left));margin-right:max(12px,env(safe-area-inset-right))}
 .mast{display:grid;grid-template-columns:1fr auto;gap:6px;min-height:0;padding:10px 0}.mast .brand{font-size:16px}.mast #sound-toggle{margin:0;padding:8px 12px}.mast #identity{grid-column:1/-1}.mast #identity .quiet{max-width:none;width:100%;min-height:36px;font-size:12px;padding:6px}
 .intro{padding:16px 0 14px}.intro h1{font-size:26px;margin-bottom:6px}.intro .eyebrow{display:none}.lede{font-size:12px}.in-duel .intro{padding:8px 0}.in-duel .intro h1{font-size:18px}.in-duel .lede{display:none}
 .board-top{padding:10px 14px}.scoreline{padding:10px 18px;gap:8px}.scoreline strong{font-size:19px}.board-wrap{width:100%;max-width:min(380px,calc(100svh - 270px));min-width:220px;padding:0 12px}.board-overlay{inset:0 12px;padding:14px}.board-overlay strong{font-size:23px}.board-overlay p{font-size:12px;margin:8px 0 12px}.board{gap:3px;padding:6px}.cell.block{font-size:clamp(14px,5vw,23px)}
 .board-bottom{padding:8px 12px 6px}.board-bottom>p{margin-bottom:8px;font-size:11px}.direction-pad{gap:10px}.direction-pad button{width:54px;height:52px}.pulse-status{font-size:12px;min-height:18px;margin-top:6px}.rival-strip{padding-bottom:8px}.side{display:flex}.game-layout{gap:14px}.duel-card,.progress-card{padding:18px}.in-duel .duel-card>h2,.in-duel .duel-card>.eyebrow,.in-duel .duel-card>p{display:none}.in-duel .room-code-row{margin-top:0}.opponent-head{flex-wrap:wrap}.code-button{font-size:16px;letter-spacing:2px}.notice{overflow-wrap:anywhere}
}
@media(max-width:360px){.direction-pad{gap:6px}.direction-pad button{width:48px}.scoreline{padding-inline:12px}.label{letter-spacing:1px}.brand{gap:6px}.board-tools{gap:2px 10px}}
@media(max-height:500px) and (orientation:landscape){.intro{padding:10px 0}.board-wrap{max-width:300px}.mast{min-height:60px}.game-layout{grid-template-columns:minmax(0,1.3fr) minmax(230px,1fr)}.side{display:flex}}
.board{position:relative}.sliding-tile{position:absolute;z-index:2;pointer-events:none;margin:0;will-change:transform}
