:root{--ink:#173f49;--grass:#d5eadc;--path:#f5efd5;--blue:#426dcb;--pink:#c94c76;--green:#29755b;--yellow:#ffd45b}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#edf5ed;font:16px/1.5 'Avenir Next',Avenir,'Trebuchet MS',sans-serif}button,select,a{touch-action:manipulation}button,select{font:inherit;color:inherit}button{border:1.5px solid #91aaa5;border-radius:9px;background:#fffef7;padding:10px 14px;font-weight:650;cursor:pointer;min-height:44px}button:hover{background:#e1eee5;border-color:var(--ink)}button:disabled{opacity:.48;cursor:default}button.primary{color:white;background:var(--ink);border-color:var(--ink)}button.primary:hover{background:#2c5a63}a{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #a33065;outline-offset:3px}header{max-width:1190px;margin:auto;padding:18px 30px;display:flex;gap:16px;align-items:center;justify-content:space-between;font-size:13px}header a{text-decoration:none;font-weight:700}header button{font-size:13px;padding:6px 12px}main{max-width:1190px;margin:auto;padding:8px 30px 22px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}h1{font-size:clamp(36px,5vw,56px);line-height:1.1;letter-spacing:-2px;margin:0;font-weight:850}h1 .postmark{display:inline-block;font-size:33px;letter-spacing:0;vertical-align:middle;transform:rotate(-12deg);border:2px dashed var(--ink);border-radius:50%;padding:8px 14px;margin-left:18px}h2{font-size:21px;line-height:1.2;margin:0 0 8px;letter-spacing:-.5px}p{margin:6px 0 12px}.heading p{font-size:17px;margin:10px 0 0}.local{font-size:12px}.intro{display:grid;grid-template-columns:1.3fr 1fr;background:var(--grass);border-radius:20px;padding:40px;gap:60px;border-bottom:6px solid #b5d5c2;min-height:340px;align-items:center}.intro p{max-width:480px}.intro label{display:block;font-size:13px;font-weight:700;margin:20px 0 5px}.intro select{background:#fffef7;border:1px solid #91aaa5;padding:10px;border-radius:8px;width:100%;margin-bottom:12px}.intro-note{text-align:center;border:2px dashed #83ab96;border-radius:50%;padding:50px 12px;transform:rotate(-5deg)}.intro-note>span{font-size:40px;letter-spacing:3px}.intro-note p{font-size:22px;font-weight:750}.intro-note small{font-size:15px}.route-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:15px}.route-heading p{font-size:13px;margin:0}.route-heading button{font-size:13px;white-space:nowrap}.workspace{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:28px;align-items:start}.garden{background:#c6e0cd;border:2px solid #a0c5ad;border-radius:20px;overflow:hidden;box-shadow:0 6px 0 #b2cdbb}.map-top{display:flex;justify-content:space-between;padding:12px 18px;font-size:13px;font-weight:750}#map{padding:0 14px}#map svg{width:100%;display:block;overflow:visible}.map-bottom{display:flex;justify-content:center;gap:18px;font-size:11px;margin:10px}.makers{padding:10px 16px;margin:0;background:#e4efe2;display:grid;gap:5px;list-style:none;font-size:12px}.makers li{display:flex;justify-content:space-between;gap:10px}.maker-letter{font-weight:900;margin-right:6px}.planner{padding:0 0 8px}.plan-heading{display:flex;align-items:center;justify-content:space-between}.plan-heading span{font-size:13px;font-weight:700}.editor-help{font-size:13px;margin-bottom:12px}.palette{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.palette button{padding:5px 0;font-size:25px;background:var(--path);line-height:1.1}.palette small{display:block;font-size:10px;line-height:1.8}.palette button:nth-last-child(-n+2){background:#fce0b0}.tape{background:#dce8e2;border:1px solid #b0c7bd;border-radius:12px;padding:10px;margin:14px 0 10px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:5px;min-height:130px;align-content:start;max-height:276px;overflow:auto}.slot{position:relative;min-width:0;padding:17px 1px 3px;line-height:1.2;font-size:24px;border-radius:5px;min-height:48px}.slot small{position:absolute;font-size:9px;top:3px;left:5px;font-weight:500}.slot.selected{outline:2px solid var(--ink);background:#ffe6a1}.slot.executing{background:var(--ink);color:white}.slot.failed{outline:3px solid #a33065;background:#ffd5de}.append{font-size:23px;border-style:dashed;background:transparent;padding:0}.edit-actions{display:flex;gap:7px}.edit-actions button{padding:6px 10px;font-size:12px}.playback{display:flex;gap:8px;margin-top:16px}.playback button{font-size:14px;flex:1;padding:9px 5px}.status{background:#fffef7;border-left:4px solid #7da594;padding:12px;font-size:14px;min-height:67px;margin:14px 0 8px}.status.error{border-color:#b22a62;background:#ffedf0}.small,details{font-size:12px}.small{min-height:36px}details{border-top:1px solid #bed1c3;padding-top:8px}summary{cursor:pointer}footer{text-align:center;font-size:11px;margin-top:30px;color:#49645e}dialog{color:var(--ink);background:#f6faf2;border:2px solid #93b4a2;border-radius:20px;padding:30px;width:min(500px,calc(100% - 30px));box-shadow:0 16px 80px #153f4930}dialog::backdrop{background:#173f4977;backdrop-filter:blur(4px)}dialog p,dialog li{font-size:15px}dialog ol{padding-left:22px}#results{text-align:center}.medal{font-size:65px;line-height:1;background:var(--yellow);border:5px double #8e6a23;border-radius:50%;width:100px;height:100px;margin:0 auto 12px;padding-top:10px}#medal-label{font-weight:750}.result-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.courier{transition:transform .35s ease}#map text{font-family:'Avenir Next',Avenir,sans-serif}#map .tile{stroke:#d4ccae;stroke-width:1.3}@media(max-width:800px){header{padding:12px 16px}main{padding:8px 16px 20px}.workspace{gap:22px;grid-template-columns:1fr}.garden{max-width:560px;width:100%;margin:auto}.local{display:none}.planner{max-width:560px;width:100%;margin:auto}.intro{gap:20px;padding:24px}.intro-note>span{font-size:28px}.heading{margin-bottom:20px}.route-heading{align-items:start}.tape{grid-template-columns:repeat(8,minmax(0,1fr));max-height:none;min-height:122px}.palette small{font-size:11px}}@media(max-width:480px){header>span{display:none}h1 .postmark{font-size:24px;padding:5px 10px;margin-left:12px}.heading p{font-size:15px}.intro{grid-template-columns:1fr}.intro-note{display:none}.intro h2{font-size:21px}.route-heading h2{font-size:19px}.route-heading p{font-size:12px}.route-heading button{font-size:11px;padding:6px 8px}.map-top{padding:10px 12px}#map{padding:0 8px}.map-bottom{gap:12px;font-size:10px}.slot{font-size:21px}.tape{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;padding:7px}.workspace{gap:24px}.makers{font-size:11px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}[hidden]{display:none!important}

/* Small action feedback; the board remains the focus. */
.sound-switch { font: inherit; font-size: 13px; min-height: 40px; padding: 6px 10px; white-space: nowrap; cursor: pointer; }
.sound-switch[aria-pressed=true] { box-shadow: inset 0 0 0 2px currentColor; }
.sound-switch:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }
@media(max-width: 600px) { header { flex-wrap: wrap; gap: 8px; } }
