:root{--paper: #f3eee4;--surface: #fffcf5;--ink: #192d3b;--ink-2: #56616a;--line: #d2c9b8;--brass: #845025;--brass-hover: #633b1c;--brass-soft: #f0dfc1;--blueprint: #132a3a;--blueprint-line: #3e5969;--floor: #203d50;--ok: #24634e;--ok-soft: #e5f1e7;--bad: #a0302d;--bad-soft: #fbeae5;--focus: #185bb7;--fs-1: .8125rem;--fs-2: .9375rem;--fs-3: 1rem;--fs-4: 1.375rem;--fs-5: 1.75rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--radius: 12px;--radius-sm: 6px;--tap: 44px;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:100%;line-height:1.5;color:var(--ink);background:var(--paper);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;font-size:var(--fs-2)}h1,h2,h3,p,ul,ol{margin:0}h1,h2,h3{text-wrap:balance;line-height:1.2}p,li{text-wrap:pretty}a{color:var(--focus);text-underline-offset:.2em}button,input,select{font:inherit}button{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.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}.skip-link{position:absolute;top:-100px;padding:12px;background:var(--surface);z-index:10}.skip-link:focus{top:8px}.icon{width:1.1em;height:1.1em;vertical-align:-.2em;flex:none}.app{max-width:1080px;margin:auto;padding:0 24px 24px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 0 18px}.brand{display:flex;align-items:center;gap:10px}.brand-name{display:block;font-size:var(--fs-5);font-weight:700;letter-spacing:-.04em;line-height:1.1}.brand-note{display:block;color:var(--ink-2);font-size:var(--fs-1);margin-top:4px}.btn{min-height:var(--tap);padding:8px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-weight:600;cursor:pointer}.btn-primary{background:var(--brass);border-color:var(--brass);color:var(--surface)}.btn-quiet{background:transparent}.btn:disabled{color:var(--ink-2);border-style:dashed;background:transparent;cursor:not-allowed}.modes{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:12px}.tab{position:relative;min-height:44px;padding:8px 0;border:0;background:transparent;color:var(--ink-2);font-weight:600;cursor:pointer}.tab-on{color:var(--ink)}.tab-on:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:3px;background:var(--brass)}.level-pick{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin-bottom:16px}.chip{display:flex;align-items:center;justify-content:center;gap:2px;min-width:44px;min-height:44px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--ink);font-weight:600;cursor:pointer}.chip-on{border-color:var(--ink);background:var(--ink);color:var(--surface)}.chip-done:not(.chip-on){color:var(--ok);border-color:var(--ok)}.play{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;grid-template-areas:"head" "board" "tray" "run" "actions" "coach" "rules";background:var(--surface);border-radius:18px;padding:20px;box-shadow:0 4px 24px #192d3b0b}.level-head{grid-area:head}.title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.level-head h2{font-size:var(--fs-4);letter-spacing:-.02em}.level-number{font-size:var(--fs-1);color:var(--ink-2);white-space:nowrap}.goal{color:var(--ink-2);font-size:var(--fs-2);margin-top:4px}.targets{display:flex;flex-wrap:wrap;gap:4px 16px;padding:0;margin-top:10px;list-style:none}.targets li{display:flex;gap:6px;align-items:center;font-size:var(--fs-1)}.badge{display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--line);border-radius:4px;background:var(--paper);font-weight:700}.target-done{color:var(--ok)}.target-done .badge{background:var(--ok-soft);border-color:var(--ok)}.board-wrap{grid-area:board;min-width:0}.board-caption{display:flex;justify-content:space-between;gap:8px;margin-bottom:8px;color:var(--ink-2);font-size:var(--fs-1)}.board-caption span:first-child{color:var(--ink);font-weight:600}.coach-current{margin-bottom:8px;padding:8px 12px;border-inline-start:3px solid var(--brass);background:var(--brass-soft);font-size:var(--fs-1)}.board-frame{max-width:550px;margin:auto;padding:10px;border-radius:16px;background:var(--blueprint);box-shadow:0 3px #a48a64,0 8px 16px #192d3b14}.board{position:relative;display:grid;width:100%;border-radius:6px;overflow:hidden;background:var(--blueprint)}.cell{position:relative;aspect-ratio:1;min-width:0;padding:0;border:0;box-shadow:inset 0 0 0 .5px var(--blueprint-line);background:linear-gradient(var(--blueprint-line),var(--blueprint-line)) center/12% 1px no-repeat,linear-gradient(var(--blueprint-line),var(--blueprint-line)) center/1px 12% no-repeat,var(--floor);cursor:pointer;-webkit-tap-highlight-color:transparent}.cell-wall,.cell-source,.cell-target,.cell-piece{background:var(--floor)}.cell-wall{cursor:not-allowed}.cell:focus-visible{z-index:2;outline:3px solid #fff8e7;outline-offset:-4px;box-shadow:inset 0 0 0 7px var(--focus)}.cell-hint:after{content:"";position:absolute;top:12%;right:12%;bottom:12%;left:12%;border:2px dashed #f4ce83;border-radius:6px;pointer-events:none}.tile-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.tile-svg text,.pulse-layer text{font-family:inherit}.pulse-layer{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.run{grid-area:run;min-width:0}.controls{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:8px}.play-icon{margin-inline-end:8px;font-size:var(--fs-1)}.status{display:flex;align-items:baseline;gap:8px;margin-top:8px;padding:10px 12px;background:var(--paper);border-radius:6px;font-size:var(--fs-1);font-variant-numeric:tabular-nums;min-height:40px}.status-won{color:var(--ok);background:var(--ok-soft);font-weight:600}.status-failed{color:var(--bad);background:var(--bad-soft);font-weight:600}.after{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.after .btn{flex:1}.layout-actions{grid-area:actions;min-width:0}.tray{grid-area:tray;min-width:0}.tray h3{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:var(--fs-3);margin-bottom:10px}.tray h3 span{color:var(--ink-2);font-size:var(--fs-1);font-weight:400}.tools{display:grid;grid-template-columns:repeat(var(--part-count),minmax(0,1fr)) 68px;gap:8px}.tools-1{--part-count:1}.tools-2{--part-count:2}.tools-3{--part-count:3}.tool{position:relative;flex:1;min-width:0;min-height:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer}.tool-on{border:2px solid var(--brass);padding:5px 3px;background:var(--brass-soft)}.tool-on:after{content:"✓";position:absolute;top:2px;inset-inline-end:4px;font-size:var(--fs-1);color:var(--brass)}.tool-icon{position:relative;display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:5px;background:var(--floor);color:var(--surface)}.tool-x{color:var(--bad);background:transparent}.tool-remove{flex:.72;border-style:dashed;margin-inline-start:4px;background:var(--paper)}.tool-remove .tool-icon{width:28px;height:30px}.tool-name{font-size:var(--fs-1);font-weight:600}.tool-count{color:var(--ink-2);font-size:var(--fs-1);font-variant-numeric:tabular-nums;line-height:1.2}.tool-remove .tool-count{display:none}.hint-line{font-size:var(--fs-1);color:var(--ink-2);margin-top:8px}.rotate-next{min-height:44px;padding:6px 0;background:transparent;border:0;color:var(--brass);font-weight:600;font-size:var(--fs-1);cursor:pointer;text-align:start}.tray-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.tray-actions .btn{padding:6px 10px;font-size:var(--fs-1)}.notice{color:var(--ink-2);margin-top:8px;font-size:var(--fs-1)}.notice:empty{display:none}.share-field{display:grid;gap:4px;margin-top:8px;font-size:var(--fs-1)}.share-field input{min-height:44px;width:100%;min-width:0;padding:8px;border:1px solid var(--line);border-radius:6px;font-size:var(--fs-3);color:var(--ink);background:var(--surface)}.coach{grid-area:coach}.rules{grid-area:rules}.coach,.rules{min-width:0;padding-top:16px;border-top:1px solid var(--line);font-size:var(--fs-1)}.coach h3,.rules h3{font-size:var(--fs-3);margin-bottom:12px}.coach ol{display:grid;gap:8px;list-style:none;padding:0}.coach li{display:flex;gap:8px;align-items:flex-start}.coach .tick{display:inline-grid;place-items:center;flex:none;width:24px;height:24px;border:1px solid var(--line);border-radius:50%;font-weight:600}.coach li.done{color:var(--ok)}.coach li.done .tick{border-color:var(--ok);background:var(--ok-soft)}summary{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:600;list-style:none}summary::-webkit-details-marker{display:none}summary:after{content:"⌄";margin-inline-start:auto;font-size:var(--fs-3)}details[open]>summary:after{content:"⌃"}.rules details{margin-top:8px}.rules ul,.log{display:grid;gap:6px;padding-inline-start:20px}.log{max-height:240px;overflow-y:auto}.motion{display:grid;gap:4px;margin-top:8px}.motion select{min-height:44px;width:100%;padding:6px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);font-size:var(--fs-3)}.chain{margin-bottom:12px}.chain-summary{display:flex;align-items:center;gap:8px}.chain-title{font-size:var(--fs-2);line-height:1.4;font-weight:600}.feed-dot{width:8px;height:8px;flex:none;border:1px solid var(--ink-2);border-radius:50%}.feed-good{background:var(--ok);border-color:var(--ok)}.provenance{font-size:var(--fs-1)}.provenance summary{min-height:36px;max-width:240px;font-weight:400;color:var(--ink-2)}.provenance[open]{margin:8px 0;padding:8px 12px;background:var(--surface);border-radius:6px}.provenance p{margin:6px 0;max-width:72ch}dl{margin:8px 0}dl>div{display:grid;grid-template-columns:minmax(100px,130px) minmax(0,1fr);gap:8px;margin-top:4px}dt{color:var(--ink-2)}dd{margin:0}.seed-hash{overflow-wrap:anywhere}.fine{color:var(--ink-2);font-size:var(--fs-1)}.feed-retry{display:flex;align-items:center;justify-content:space-between;gap:12px}.feed-retry .btn{flex:none;font-size:var(--fs-1);padding:6px 10px}.unverified{color:var(--bad);font-size:var(--fs-1);font-weight:600}.banner{padding:10px 12px;margin-bottom:12px;border-radius:6px;font-size:var(--fs-1)}.banner-bad{color:var(--bad);background:var(--bad-soft);border-inline-start:3px solid var(--bad)}.banner-warn{background:var(--brass-soft);border-inline-start:3px solid var(--brass)}.foot{margin:20px auto 0;color:var(--ink-2);font-size:var(--fs-1);max-width:75ch;text-align:center}@media (min-width: 800px){.play{grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:auto auto auto 1fr auto;grid-template-areas:"head head" "board tray" "board run" "board actions" "coach rules";gap:20px 28px;padding:24px}.level-head{padding-bottom:16px;border-bottom:1px solid var(--line)}.level-head .goal{max-width:72ch}.run{align-self:start}}@media (max-width: 799px){.app{max-width:580px;padding:0 12px 20px}.topbar{padding:12px 0}.brand-note{display:none}.brand-name{font-size:var(--fs-4)}.play{padding:12px;gap:10px;border-radius:12px}.level-pick{gap:5px;margin-bottom:10px}.chip{min-width:36px;padding:6px 8px}.targets{gap:4px 10px;margin-top:6px}.goal{font-size:var(--fs-1)}.board-caption{margin-bottom:6px}.board-frame{padding:8px;border-radius:14px}.tray h3{margin-bottom:6px}.tool{min-height:84px}.tool-icon{width:40px;height:40px}.tool-remove .tool-icon{width:24px;height:28px}.tray-actions{margin-top:4px}.tray-actions .btn{min-height:36px}.hint-line{margin-top:6px}.rotate-next{min-height:36px}.chain{margin-bottom:8px}.chain-title{font-size:var(--fs-1)}.feed-retry{gap:8px}.feed-retry .fine{line-height:1.4}.status{padding:8px 10px}}@media (max-width: 420px){.board-frame{max-width:min(100%,36svh)}.board-caption,.play-challenge .goal{display:none}.play-challenge .board-frame{max-width:min(100%,max(280px,33svh))}.tools{gap:5px}.tool-name{overflow-wrap:normal}.tool-name{font-size:var(--fs-1)}.modes{gap:20px;margin-bottom:8px}.topbar .btn{padding-inline:10px;font-size:var(--fs-1)}.level-pick .chip{min-width:34px}}@media (max-width: 350px){.tools-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tools-3 .tool-remove{grid-column:1 / -1;min-height:44px;flex-direction:row;gap:8px;margin:0}.tools-3 .tool-remove .tool-icon{width:24px;height:24px}}@media (hover:hover){.btn:hover:not(:disabled),.chip:hover:not(.chip-on),.tool:hover:not(.tool-on){background:var(--brass-soft)}.btn-primary:hover:not(:disabled){background:var(--brass-hover)}.cell:hover{box-shadow:inset 0 0 0 2px #d5b77e}}@media (prefers-reduced-motion:no-preference){[data-motion=full] .wheel-spin{animation:spin 1.6s linear infinite}[data-motion=full] .btn,[data-motion=full] .tool{transition:background-color .12s,transform .12s}[data-motion=full] .btn:active:not(:disabled),[data-motion=full] .tool:active{transform:scale(.96)}[data-motion=full] .cell-piece .tile-svg{animation:placed .12s ease-out}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes placed{0%{opacity:.6}to{opacity:1}}@media (forced-colors:active){.cell:focus-visible{outline-color:Highlight}.tool-on,.chip-on{border:3px solid Highlight}}
