:root{color-scheme:dark;--bg:#10221b;--panel:#182c23;--ink:#f0f1df;--muted:#a8b9a9;--gold:#ebca78;--line:#354b3b;--field:#6c8055;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}.app{max-width:1180px;margin:auto;padding:0 40px}.topbar{display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);min-height:92px}.brand{color:var(--ink);text-decoration:none;display:flex;gap:13px;align-items:center;font-size:14px;font-weight:700;letter-spacing:.1em}.brand-mark{color:var(--gold);font-size:32px}.edition{font-size:12px;color:var(--muted);letter-spacing:.13em;margin-left:auto}.quiet{border:0;background:transparent;color:var(--ink);font-size:14px;padding:12px}.quiet:hover{color:var(--gold)}.intro{padding:34px 0 25px}.eyebrow,.section-number{color:var(--gold);font-size:12px;letter-spacing:.14em;font-weight:600}.intro h1{font-family:Georgia,serif;font-size:clamp(32px,4.2vw,52px);font-weight:400;letter-spacing:-.035em;line-height:1.08;margin:14px 0}.intro h1 br{display:none}.intro em{color:var(--gold);font-weight:400}.intro p{font-size:16px;color:var(--muted);margin:12px 0}.layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(285px,.8fr);gap:42px;align-items:start}.play-area{border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:20px 26px 16px}.field-heading{display:flex;justify-content:space-between;gap:12px;font-size:12px;letter-spacing:.13em;color:var(--muted)}.arena{max-width:455px;margin:0 auto}.gate-row{height:48px;position:relative}.exit-marker{position:absolute;left:56.25%;bottom:5px;display:flex;flex-direction:column;align-items:center;transform:translateX(-50%);color:var(--gold);font-size:10px;letter-spacing:.07em;white-space:nowrap}.exit-marker>span:first-child{font-size:23px;line-height:1}.board-wrap{border:7px solid #3e5139;border-radius:4px;box-shadow:0 7px 0 #263b2b}.board{position:relative;aspect-ratio:1;background:var(--field);isolation:isolate}.grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(8,1fr);transition:opacity .18s;pointer-events:none}.grid span{background:#859365;border-right:1px solid #566b46;border-bottom:1px solid #566b46}.grid span.alt{background:#788b5c}.board.veiled .grid{opacity:0}.player{position:absolute;left:43.75%;top:106.25%;width:12.5%;height:12.5%;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);color:#ffe098;font-family:Georgia,serif;font-size:clamp(28px,4.6vw,49px);line-height:1;text-shadow:0 2px 0 #392f1b;z-index:3;transition:top .15s ease,left .15s ease;pointer-events:none}.player.instant{transition:none}.player.dead{opacity:0}.burst{display:none;position:absolute;transform:translate(-50%,-50%);color:#ffe4a1;font-size:54px;line-height:1;z-index:4}.burst.show{display:block;animation:burst .65s ease-out forwards}.entry-row{position:relative;height:58px;color:var(--muted);font-size:10px;letter-spacing:.07em}.entry-row>span{position:absolute;left:43.75%;bottom:0;transform:translateX(-50%);white-space:nowrap}.field-status{min-height:20px;text-align:center;font-size:14px;color:#d5ddc8;margin:12px 0 0}.sidebar{padding:4px 0}.sidebar h2{font-family:Georgia,serif;font-size:28px;font-weight:400;margin:12px 0 25px}.setup>label{display:block;font-size:14px;margin-bottom:10px}input[type=text],input:not([type]){width:100%;background:#1d3227;border:1px solid #52634d;color:var(--ink);border-radius:7px;padding:13px 15px;font-size:16px}input::placeholder{color:#a0b39d}.help{font-size:12px;color:var(--muted);display:block;line-height:1.6;margin-top:8px}.error{font-size:13px;color:#ffc1a3;margin:4px 0;min-height:0}.error:empty{display:none}fieldset{border:0;padding:0;margin:24px 0}legend{font-size:14px;margin-bottom:10px}.difficulty{display:flex;align-items:center;gap:12px;padding:13px 14px;border:1px solid var(--line);border-radius:7px;cursor:pointer;margin-bottom:9px}.difficulty:has(input:checked){border-color:var(--gold);background:#24372a}.difficulty input{accent-color:var(--gold);width:16px;height:16px}.difficulty strong{font-size:15px;font-weight:500;display:block}.difficulty small{font-size:12px;display:block;color:var(--muted);margin-top:3px}.difficulty-dots{margin-left:auto;letter-spacing:3px;color:var(--gold)}.primary{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;background:var(--gold);color:#253223;border:0;border-radius:6px;padding:15px 19px;font-size:15px;font-weight:650}.primary:hover{background:#f9d98b}.rules{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}.rules .section-number{color:var(--muted)}.rules p{font-size:13px;color:#c9d5c3;display:flex;gap:10px;line-height:1.6;margin:12px 0}.rules p span{color:#a8bb96;font-size:12px}.stats{display:flex;gap:40px;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.stats>div{min-width:90px}.stats span{display:block;color:var(--muted);font-size:13px}.stats strong{display:block;font-size:36px;font-weight:400;letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin-top:5px}.session-note{font-size:14px;line-height:1.6;min-height:44px;color:var(--muted)}.direction-pad{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:16px}.direction-pad>div{display:flex;gap:70px}.direction-pad button{border:1px solid #607056;background:#243b2c;color:var(--gold);width:62px;height:52px;border-radius:8px;font-size:26px;user-select:none}.direction-pad button:active{background:#4c6340}.keyboard-hint{font-size:12px;text-align:center;color:var(--muted);line-height:1.6}.full{width:100%}footer{display:flex;justify-content:space-between;gap:16px;color:#a1b09f;font-size:11px;letter-spacing:.08em;padding:26px 0;line-height:1.7}dialog{background:#182c23;color:var(--ink);border:1px solid #52634d;border-radius:14px;padding:30px;max-width:520px;width:calc(100% - 32px);max-height:90vh;overflow:auto;box-shadow:0 25px 80px #0007}dialog::backdrop{background:#06120dcc;backdrop-filter:blur(5px)}dialog h2{font-family:Georgia,serif;font-weight:400;font-size:32px;margin:10px 0 20px}dialog p{line-height:1.6;font-size:15px}.dialog-top{display:flex;align-items:flex-start;justify-content:space-between}.close{color:var(--muted);background:none;border:0;font-size:28px;min-width:44px;min-height:44px}.rank-tabs{display:flex;gap:8px}.rank-tabs button{background:none;border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:10px 22px;font-size:14px}.rank-tabs button[aria-pressed=true]{background:var(--gold);color:#243b2c;border-color:var(--gold)}.rank-foot{font-size:12px;color:var(--muted);margin-top:24px}table{width:100%;border-collapse:collapse;font-size:14px;margin-top:20px}td,th{text-align:left;padding:12px 4px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}th{font-size:12px;font-weight:400;color:var(--muted)}td:first-child{color:var(--gold)}td:nth-child(n+3),th:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}.empty{padding:30px 0;color:var(--muted)}.win-symbol{display:block;font-size:46px;color:var(--gold);margin-bottom:15px}#win-dialog .primary{margin-top:24px}body.in-game .intro{padding:22px 0}body.in-game .intro h1{font-size:30px}body.in-game .intro p,body.in-game .intro .eyebrow{display:none}@keyframes burst{0%{opacity:1;scale:.4}60%{opacity:1;scale:1.4}100%{opacity:0;scale:1.8}}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.burst.show{opacity:1}}

.board{container-type:inline-size}.player{font-size:clamp(18px,11cqw,49px)}


.size-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.size-options .difficulty{margin:0;padding:12px 10px}.size-field{margin-bottom:20px}.rank-sizes{margin-top:10px}.rank-tabs{flex-wrap:wrap}.player{width:var(--cell-size,12.5%);height:var(--cell-size,12.5%);font-size:var(--pawn-font,11cqw)}.field-heading{flex-wrap:wrap}.burst{font-size:calc(var(--pawn-font,11cqw) * 1.2)}

.start-hint{font-size:12px;color:var(--gold);line-height:1.5;margin:0 0 12px}.size-options .difficulty>span{min-width:0}.size-options .difficulty{align-items:flex-start}.size-options input{flex-shrink:0;margin-top:4px}.size-options strong{font-size:14px}.size-options small{line-height:1.5}.rank-tabs button{padding:10px 16px}.stats{flex-wrap:wrap}

.completion{margin:16px 0 0}.completion p{font-size:13px;color:var(--muted);margin:0 0 8px;line-height:1.4}.completion strong{color:var(--gold);font-size:18px;font-weight:500;font-variant-numeric:tabular-nums;margin-right:4px}.completion progress{display:block;width:100%;height:7px;appearance:none;border:0;border-radius:6px;overflow:hidden;background:#354b3b;color:var(--gold);accent-color:var(--gold)}.completion progress::-webkit-progress-bar{background:#354b3b;border-radius:6px}.completion progress::-webkit-progress-value{background:var(--gold);border-radius:6px;transition:width .15s ease}.completion progress::-moz-progress-bar{background:var(--gold);border-radius:6px}.win-completion{color:var(--gold)}

.reference-overlay{position:absolute;inset:0;z-index:2;pointer-events:none}.reference-pin{position:absolute;width:22px;height:30px;transform:translate(-50%,-100%);pointer-events:none;filter:drop-shadow(0 2px 2px #10221b88)}.reference-pin::before{content:"";position:absolute;inset:0 0 8px;border-radius:50%;background:var(--gold)}.reference-pin::after{content:"";position:absolute;left:3px;bottom:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--gold)}.reference-pin span{position:relative;z-index:1;display:block;text-align:center;color:#243b2c;font:bold 12px/22px ui-sans-serif,system-ui}.board.reference-placing{cursor:crosshair;outline:2px solid var(--gold);outline-offset:2px}.reference-tools{margin:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0}.reference-tools summary{cursor:pointer;font-size:14px;color:var(--gold);min-height:24px}.reference-tools summary span{float:right;font-variant-numeric:tabular-nums}.reference-warning{font-size:13px;line-height:1.5;color:var(--gold);margin:12px 0}.reference-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.reference-actions button{min-height:42px;padding:10px 12px;color:var(--gold);background:#243b2c;border:1px solid #607056;border-radius:6px;font-size:13px}.reference-position-label{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-top:12px}#reference-placement input[type=range]{width:100%;accent-color:var(--gold);min-height:32px}.reference-list>div{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.reference-list .quiet{font-size:12px;min-height:44px}.reference-tools .help{margin-bottom:0}#ranking-dialog{max-width:610px}#rank-content table{table-layout:fixed}#rank-content th:nth-child(1){width:8%}#rank-content th:nth-child(2){width:29%}#rank-content th:nth-child(3){width:22%}#rank-content th:nth-child(4){width:21%}#rank-content th:nth-child(5){width:20%}#rank-content th{overflow-wrap:anywhere}#reference-feedback:empty{display:none}@media(max-width:400px){#ranking-dialog{padding:20px 14px}#rank-content td,#rank-content th{padding:10px 3px;font-size:12px}}

/* Controls and help share the same game state on every screen. */
.game-controls{padding-top:0}.session-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.session-actions button{min-height:44px}.session-actions #reference-open{color:var(--gold)}#reference-count{font-variant-numeric:tabular-nums;margin-left:6px}.pin-placement-hint{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--gold);border-radius:8px;padding:4px 12px;color:var(--gold);font-size:14px;line-height:1.4}.pin-placement-hint button{min-height:44px}.reference-tools{margin:auto;padding:24px;border:1px solid #52634d;max-width:480px}.reference-tools .dialog-top{gap:12px}.reference-tools h2{font-size:28px}.reference-tools .help,.reference-warning{font-size:14px}.reference-actions button{width:100%;min-height:48px;font-size:16px}.reference-list>div{font-size:14px}.reference-list .quiet{font-size:14px;min-width:70px}.reference-tools input[type=range]{min-height:44px}button{-webkit-tap-highlight-color:transparent}.direction-pad button{-webkit-user-select:none;user-select:none;touch-action:manipulation}.placing-pin .direction-pad,.placing-pin .keyboard-hint{display:none}.sidebar,#session{min-width:0}#player-name{overflow-wrap:anywhere}.board{touch-action:manipulation}dialog{overscroll-behavior:contain}
@media(max-width:760px){
 .app{padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left))}.topbar{min-height:56px;padding-top:env(safe-area-inset-top);gap:8px}.brand{font-size:12px;gap:8px;letter-spacing:.07em}.brand-mark{font-size:26px}.edition{display:none}.topbar>.quiet{margin-left:auto;min-height:44px;padding:10px 8px}.intro{padding:22px 0 16px}.intro h1{font-size:34px;margin:10px 0}.intro h1 br{display:block}.intro p{font-size:16px;line-height:1.5}.layout{grid-template-columns:1fr;gap:20px}.sidebar{grid-row:1}.setup{max-width:500px;margin:auto}.sidebar h2{font-size:28px;margin:10px 0 20px}.help,.difficulty small,.size-options small{font-size:14px}.difficulty{min-height:64px}.size-options{gap:8px}.size-options .difficulty{padding:12px 8px}.size-options strong{font-size:14px}.size-options small{line-height:1.4}.difficulty input{width:18px;height:18px;flex-shrink:0}.rules{display:none}.play-area{padding:12px}.arena{max-width:440px}.field-heading{font-size:12px;letter-spacing:.07em}.field-status{font-size:14px;line-height:1.4}.rank-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rank-tabs button{min-height:44px;padding:10px 6px}.stats{gap:20px}.stats strong{font-size:28px}dialog{padding:22px 18px;width:calc(100% - 24px);max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}footer{flex-direction:column;gap:4px;padding:22px 0 max(18px,env(safe-area-inset-bottom))}
 body.in-game .app{padding-bottom:calc(113px + max(4px,env(safe-area-inset-bottom)))}body.in-game .topbar{min-height:44px}body.in-game .intro,body.in-game footer{display:none}body.in-game .layout{display:flex;flex-direction:column;gap:8px;padding-top:8px}body.in-game .sidebar,body.in-game #session{display:contents}body.in-game #session>.section-number,body.in-game #player-name,body.in-game .session-note{display:none}body.in-game #session>.stats{order:-1;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:0 4px;border:0;width:100%;min-height:32px}body.in-game #session>.stats>div{display:flex;align-items:center;gap:8px;min-width:0}body.in-game .stats span{font-size:14px}body.in-game .stats strong{font-size:24px;margin:0;line-height:1.2}body.in-game .play-area{width:100%;padding:8px 10px}body.in-game .completion{margin-top:6px}body.in-game .completion p{font-size:12px;line-height:18px;margin-bottom:4px}body.in-game .completion strong{font-size:16px}body.in-game .completion progress{height:5px}body.in-game .arena{width:100%;max-width:min(440px,calc(100svh - 326px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));min-width:160px}body.in-game .gate-row{height:28px}body.in-game .exit-marker{font-size:10px;bottom:3px}body.in-game .exit-marker>span:first-child{font-size:18px}body.in-game .entry-row{height:30px}body.in-game .board-wrap{border-width:5px}body.in-game .field-status{margin:8px 0 0;min-height:36px;font-size:13px;line-height:18px}body.in-game .game-controls{position:fixed;z-index:10;bottom:0;left:0;right:0;background:var(--bg);border-top:1px solid var(--line);padding:8px max(16px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));box-shadow:0 -8px 24px #10221b55}body.in-game .direction-pad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:440px;margin:0 auto}body.in-game .side-directions{display:contents}body.in-game .direction-pad button{width:100%;height:60px;font-size:30px;border-radius:12px}body.in-game [data-dir=left]{grid-column:1;grid-row:1}body.in-game [data-dir=up]{grid-column:2;grid-row:1}body.in-game [data-dir=right]{grid-column:3;grid-row:1}body.in-game .keyboard-hint{display:none}body.in-game .session-actions{max-width:440px;margin:auto}body.in-game .pin-placement-hint{max-width:440px;margin:auto;min-height:60px}body.in-game.placing-pin .direction-pad{display:none}
}
@media(orientation:landscape) and (max-height:600px) and (max-width:1024px){
 body.in-game .app{padding:0 max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left))}body.in-game .topbar,body.in-game .intro,body.in-game footer{display:none}body.in-game .layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:16px;padding-top:max(8px,env(safe-area-inset-top));align-items:center}body.in-game .sidebar{display:block;grid-column:2;grid-row:1}body.in-game #session{display:block}body.in-game #session>.section-number,body.in-game .session-note,body.in-game #player-name,body.in-game .keyboard-hint,body.in-game .rules{display:none}body.in-game #session>.stats{display:flex;justify-content:space-between;gap:8px;border:0;padding:0 0 12px}body.in-game #session>.stats>div{display:block;min-width:0}body.in-game .stats span{font-size:14px}body.in-game .stats strong{font-size:24px;margin:4px 0 0}body.in-game .play-area{grid-column:1;grid-row:1;padding:8px;width:100%}body.in-game .completion{margin-top:4px}body.in-game .completion p{font-size:12px;line-height:18px;margin:0 0 3px}body.in-game .completion strong{font-size:16px}body.in-game .completion progress{height:4px}body.in-game .arena{width:100%;min-width:140px;max-width:calc(100svh - 200px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}body.in-game .gate-row{height:24px}body.in-game .entry-row{height:26px}body.in-game .field-status{font-size:12px;line-height:16px;min-height:32px;margin:4px 0 0}body.in-game .game-controls{position:static;padding:0;background:none;border:0;box-shadow:none}body.in-game .direction-pad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}body.in-game .side-directions{display:contents}body.in-game .direction-pad button{width:100%;height:60px;font-size:30px}body.in-game [data-dir=left]{grid-column:1;grid-row:1}body.in-game [data-dir=up]{grid-column:2;grid-row:1}body.in-game [data-dir=right]{grid-column:3;grid-row:1}body.in-game .session-actions{flex-wrap:wrap;gap:0;margin-top:8px}body.in-game .session-actions button{flex:1}body.in-game .pin-placement-hint{flex-direction:column;padding:8px;text-align:center}body.in-game.placing-pin .direction-pad{display:none}
}
@media(max-width:760px) and (orientation:portrait){
 body.in-game .play-area{position:relative}body.in-game .field-heading{min-height:34px;padding-right:80px;align-items:center}body.in-game #field-label{display:none}body.in-game .completion{position:absolute;top:8px;right:10px;width:70px;margin:0}body.in-game .completion p{font-size:0;line-height:18px;text-align:right;margin:0 0 3px}body.in-game .completion strong{font-size:16px;margin:0}body.in-game .completion progress{height:4px}body.in-game .arena{max-width:min(440px,calc(100svh - 394px - env(safe-area-inset-top) - env(safe-area-inset-bottom)))}body.in-game .gate-row{height:24px}body.in-game .entry-row{height:24px}
}

@media(orientation:landscape) and (max-height:600px) and (max-width:1024px){body.in-game .topbar{display:contents}body.in-game .topbar .brand,body.in-game .topbar .edition{display:none}body.in-game .topbar>.quiet{position:absolute;right:max(12px,env(safe-area-inset-right));top:max(8px,env(safe-area-inset-top));z-index:1;min-height:44px}}

/* Reserve a full waiting cell plus a separate line for its label. */
.arena{container-type:inline-size}.entry-row{min-height:calc(var(--entry-space,12.5cqw) + 24px)}.player{font-variant-emoji:text}

/* Brief impact feedback; all particles disappear before respawning. */
.burst{width:1px;height:1px;font-size:0;pointer-events:none}.burst.show{display:block;animation:none}.burst i{position:absolute;display:block;pointer-events:none}.blast-core{width:48px;height:48px;left:-24px;top:-24px;border-radius:50%;background:radial-gradient(circle,#fff6cc 0 16%,#ffd16b 30%,#f57832 55%,transparent 72%);animation:blast-core .65s ease-out both}.blast-ring{width:28px;height:28px;left:-14px;top:-14px;border:3px solid #ffe5a1;border-radius:50%;animation:blast-ring .65s ease-out both}.blast-smoke{width:38px;height:38px;left:-19px;top:-19px;border-radius:50%;background:radial-gradient(circle,#27302adb,#48513c88 50%,transparent 72%);animation:blast-smoke .9s ease-out both}.blast-spark{width:5px;height:8px;left:-2px;top:-4px;background:#ffd67d;border-radius:3px;animation:blast-spark .75s cubic-bezier(.15,.65,.3,1) both}.board.impact{animation:map-impact .32s ease-out}.session-actions button{min-width:0;padding-left:6px;padding-right:6px}
@keyframes blast-core{0%{transform:scale(.2);opacity:1}35%{transform:scale(1.4);opacity:1}100%{transform:scale(1.8);opacity:0}}
@keyframes blast-ring{0%{transform:scale(.2);opacity:.9}100%{transform:scale(4);opacity:0}}
@keyframes blast-smoke{0%,15%{transform:scale(.2);opacity:0}40%{opacity:.7}100%{transform:translateY(-22px) scale(2.4);opacity:0}}
@keyframes blast-spark{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--dx),var(--dy)) rotate(var(--spin)) scale(.2);opacity:0}}
@keyframes map-impact{0%,100%{transform:translate(0,0)}20%{transform:translate(-3px,2px)}45%{transform:translate(3px,-2px)}70%{transform:translate(-2px,-1px)}}
@media(prefers-reduced-motion:reduce){.board.impact{animation:none!important}.burst .blast-ring,.burst .blast-smoke,.burst .blast-spark{display:none}.burst .blast-core{animation:none!important;opacity:.8;transform:none}}

/* Explorer sprite sheet: neutral, two walking poses and startled. */
.player{font-size:0;text-shadow:none}.robot-sprite{display:block;width:75%;height:100%;min-width:18px;min-height:24px;background:url("assets/explorer-sprites.png") 0 0/400% 100% no-repeat;filter:drop-shadow(0 1px 1px #10221b);transform-origin:50% 90%;animation:robot-idle 3s ease-in-out infinite}.robot-sprite.walking{animation:robot-walk .18s steps(1,end) both}.player[data-facing=left] .robot-sprite{scale:-1 1}.robot-startled,.robot-debris{width:calc(var(--robot-size)*.75);height:var(--robot-size);left:calc(var(--robot-size)*-.375);top:calc(var(--robot-size)*-.5);background:url("assets/explorer-sprites.png") 0 0/400% 100% no-repeat}.robot-startled{z-index:3;background-position:100% 0;animation:robot-surprise .16s linear both}.robot-debris{z-index:2;opacity:0;animation:robot-parts .75s .12s ease-out both}.robot-debris.part-0{clip-path:inset(0 0 52% 0)}.robot-debris.part-1{clip-path:inset(48% 0 22% 0)}.robot-debris.part-2{clip-path:inset(78% 50% 0 0)}.robot-debris.part-3{clip-path:inset(78% 0 0 50%)}
@keyframes robot-idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
@keyframes robot-walk{0%{background-position:33.3333% 0;transform:translateY(-1px) rotate(-3deg)}50%{background-position:66.6667% 0;transform:translateY(-2px) rotate(3deg)}100%{background-position:0 0;transform:none}}
@keyframes robot-surprise{0%,75%{opacity:1}100%{opacity:0}}
@keyframes robot-parts{0%{opacity:1;transform:translate(0,0) rotate(0)}70%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin))}}
@media(prefers-reduced-motion:reduce){.robot-sprite,.robot-sprite.walking{animation:none!important;background-position:0 0}.robot-debris,.robot-startled{display:none!important}}

.player[data-facing=up] .robot-sprite,.burst[data-facing=up] .robot-startled,.burst[data-facing=up] .robot-debris{background-image:url("assets/explorer-back-sprites.png")}
/* Orbital station: decoration stays outside the featureless playing surface. */
:root{--bg:#07111f;--panel:#0d1c2c;--ink:#edf6ff;--muted:#a7bed0;--gold:#f4c574;--line:#294359;--field:#152b43}
body{background:var(--bg)}.play-area{background:#0c1929;border-color:#2d4963;box-shadow:0 0 28px #4ccfff0b}.intro em,.brand-mark,.eyebrow{color:#86e3f4}.field-heading{color:#a9dcec}.board-wrap,body.in-game .board-wrap{border:0;padding:8%;border-radius:6px;background:#14283c url("assets/station-frame.png") center/100% 100% no-repeat;box-shadow:0 4px 14px #0007}.board{background:var(--field)}.grid span{background:#254962;border-color:#64c9df66}.grid span.alt{background:#203f57}.board.veiled{background:#152b43}.board.veiled .grid{opacity:0}.exit-marker{color:#98f0ff}.entry-row{color:#b3cbdc}.field-status{color:#dcecf7}.difficulty:has(input:checked){background:#152d43;border-color:#86e3f4}.primary{background:var(--gold);color:#122437}.primary:hover{background:#ffdb98}input[type=text],input:not([type]){background:#102438;border-color:#395a73}.direction-pad button,.reference-actions button{background:#132b41;border-color:#3f6a86;color:#9beaff}.direction-pad button:active{background:#254b66}.reference-warning{color:#f4c574}dialog{background:#0d1c2c;border-color:#3f6580}.rank-tabs button[aria-pressed=true]{background:#86e3f4;border-color:#86e3f4;color:#102438}.completion progress,.completion progress::-webkit-progress-bar{background:#294359}.completion progress::-webkit-progress-value{background:#86e3f4}.completion progress::-moz-progress-bar{background:#86e3f4}.completion progress{accent-color:#86e3f4}.reference-pin span{color:#172638}.game-controls{background:var(--bg)}body.in-game .game-controls{box-shadow:0 -8px 24px #07111f66}footer{color:#9eb4c6}

/* Individual scan lines retract into alternating perimeter edges. */
.grid,.board.veiled .grid{display:block;opacity:1;transition:none;overflow:hidden;background:transparent}.scan-line{position:absolute;display:block;background:#70d6ed;box-shadow:0 0 4px #54c9ed88;pointer-events:none;transition:transform .5s cubic-bezier(.55,.05,.3,1) var(--retract-delay,0ms)}.scan-line.horizontal{left:0;width:100%;height:1px;transform:scaleX(1)}.scan-line.vertical{top:0;height:100%;width:1px;transform:scaleY(1)}.board.veiled .scan-line{transition:transform .5s cubic-bezier(.55,.05,.3,1) var(--retract-delay,0ms)}.board.veiled .scan-line.horizontal{transform:scaleX(0)}.board.veiled .scan-line.vertical{transform:scaleY(0)}
@media(prefers-reduced-motion:reduce){.scan-line,.board.veiled .scan-line{transition:none!important}}

/* Larger silhouette in the denser map; logical cell size stays unchanged. */
.board[data-size="16"] .robot-sprite{width:96%;height:128%;min-width:24px;min-height:32px}

#win-dialog{max-width:620px;padding:28px;background:radial-gradient(ellipse at 15% 0,#17394b 0,transparent 65%),#0d1c2c;border-color:#477386}.victory-hero{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:16px}.victory-art{width:100%;height:auto;object-fit:contain}.victory-hero h2{font-family:inherit;font-size:32px;font-weight:700;line-height:1.1;margin:10px 0}.victory-hero p{margin:8px 0;font-size:14px}.victory-hero #win-message{color:var(--muted);overflow-wrap:anywhere}.victory-rank{display:flex;align-items:center;gap:16px;padding:14px 18px;margin:18px 0;border:1px solid #53634d;background:#f4c5740a;border-radius:10px}.victory-rank>strong{font-size:42px;line-height:1;color:var(--gold);font-variant-numeric:tabular-nums}.victory-rank span{font-size:14px}.victory-rank small{display:block;font-size:13px;color:var(--muted);margin-top:5px}.victory-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.victory-stats>div{padding:12px 8px;background:#132b41;border-radius:8px;text-align:center;min-width:0}.victory-stats span{display:block;font-size:13px;color:var(--muted)}.victory-stats strong{display:block;font-size:25px;font-weight:500;line-height:1.3;margin-top:6px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}#win-dialog .help{font-size:13px;line-height:1.45;margin:12px 0}#win-dialog .primary{margin-top:18px}
@media(max-width:480px){#win-dialog{padding:18px 16px}.victory-hero{grid-template-columns:104px minmax(0,1fr);gap:8px}.victory-hero h2{font-size:25px}.victory-hero .eyebrow{font-size:11px;letter-spacing:.08em}.victory-hero p{font-size:13px}.victory-rank{margin:12px 0;padding:12px;gap:12px}.victory-rank>strong{font-size:34px}.victory-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.victory-stats>div{padding:8px}.victory-stats strong{font-size:23px;margin-top:2px}}

.brand-logo{display:block;width:36px;height:36px;object-fit:contain;flex-shrink:0}@media(max-width:760px){.brand-logo{width:30px;height:30px}}

.board-wrap{position:relative}.board-replay{position:absolute;z-index:6;left:50%;top:50%;transform:translate(-50%,-50%);width:max-content;max-width:80%;min-height:48px;justify-content:center;box-shadow:0 8px 32px #0008;border:1px solid #ffe1a2}.step-highlights{position:absolute;inset:0;z-index:1;pointer-events:none}.step-highlights span{position:absolute;width:var(--cell-size);height:var(--cell-size);pointer-events:none}.step-highlights span{background:transparent;box-sizing:border-box;border:1px solid #86e3f4;border-radius:2px;box-shadow:inset 0 0 5px #86e3f422,0 0 5px #86e3f433}
.step-current{opacity:.65;animation:step-appear .3s ease-out both}.step-previous{opacity:.25;animation:step-recede .45s ease-out both}
@keyframes step-appear{from{opacity:0}to{opacity:.65}}@keyframes step-recede{from{opacity:.65}to{opacity:.25}}
.path-reveal{position:absolute;inset:0;z-index:1;pointer-events:none;display:none}.board.revealed{background:#030a12;transition:background .35s}.board.revealed .path-reveal{display:block;animation:paths-appear .5s ease-out both}.path-reveal span{position:absolute;width:var(--cell-size);height:var(--cell-size);background:#86e3f433;border:1px solid #86e3f477;box-sizing:border-box;box-shadow:inset 0 0 7px #86e3f422}.board.revealed .player,.board.revealed .reference-overlay,.board.revealed .grid{visibility:hidden}
@keyframes paths-appear{from{opacity:0}to{opacity:1}}
body.surrendered .direction-pad,body.surrendered .keyboard-hint,body.surrendered #reference-open,body.surrendered #surrender-open{display:none}body.surrendered .session-actions{gap:12px}body.surrendered #new-game{background:var(--gold);color:#122437;border-radius:8px;min-height:48px;flex:1;font-weight:700}
#surrender-open{color:#f1b7a8}
@media(max-width:760px){.session-actions{gap:2px}.session-actions .quiet{padding-left:5px;padding-right:5px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.step-highlights span,.board.revealed,.board.revealed .path-reveal{animation:none;transition:none}}
@media(max-width:400px){.board-replay{font-size:14px;padding:12px}}

.step-leaving{animation:step-disappear .16s ease-out both}@keyframes step-disappear{from{opacity:.25}to{opacity:0}}
@media(prefers-reduced-motion:reduce){.step-leaving{opacity:0;animation:none}}

#email{width:100%;min-height:48px;padding:12px 14px;border:1px solid #395a73;border-radius:8px;background:#102438;color:var(--ink);font:inherit}#email-fields{margin:12px 0}.remembered-player{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:#86e3f40c;border:1px solid #86e3f444;border-radius:8px;margin:14px 0}.remembered-player .quiet{font-size:14px}input[readonly]{opacity:.75}.leaderboard{list-style:none;margin:0;padding:0}.leaderboard li{display:flex;gap:18px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.leaderboard li>strong{font-size:30px;color:var(--gold);min-width:40px}.leaderboard li div{min-width:0}.leaderboard li div>strong{display:block;font-size:20px;overflow-wrap:anywhere}.leaderboard small,.leaderboard li span{display:block;font-size:14px;color:var(--muted);margin-top:5px}.connection-hint{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--gold)}#identity-status{min-height:20px}.play-modes{margin-top:16px}#ranking-dialog{max-width:540px}button:disabled{cursor:default}

.language-control{margin-left:auto}.language-control select{min-height:44px;max-width:110px;padding:8px 6px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--ink);font:inherit;font-size:14px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{gap:14px}.topbar .edition{margin-left:auto}.topbar .language-control+.quiet{margin-left:0}@media(max-width:760px){.topbar{gap:8px}.language-control select{font-size:12px;max-width:86px}.topbar #ranking-open{font-size:13px;padding-left:3px;padding-right:3px}}
