:root{--accent:#ed9565;--ink:#233b40;--soft:#eef3ec}*{box-sizing:border-box}body{margin:0;background:#f7f5ee;color:var(--ink);font:500 15px 'DM Sans',sans-serif}button,select{font:600 14px 'DM Sans',sans-serif}button{cursor:pointer;border:0;border-radius:12px;background:var(--ink);color:white;padding:12px 17px;transition:transform .15s,background .15s}button:hover{transform:translateY(-2px);background:#365759}button:focus-visible,select:focus-visible{outline:3px solid #e77343;outline-offset:3px}button.secondary{background:#e7eee7;color:var(--ink)}#app{max-width:1160px;max-height:1000px;margin:auto;padding:22px 28px}header{display:flex;justify-content:space-between;align-items:center;gap:10px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#63817b}h1{font:600 clamp(25px,3.1vw,39px) 'Fredoka',sans-serif;margin:5px 0}header p{margin:0;color:#6d807e;font-size:14px}#mute{background:#e6eee7;color:var(--ink);font-size:22px;padding:8px 16px}nav{margin:20px 0 14px;display:flex;gap:15px;align-items:center;font-size:12px}nav label{display:flex;gap:8px;align-items:center}select{border:1px solid #d6dfd6;color:var(--ink);border-radius:8px;background:white;padding:7px}#progress{margin-left:auto;font-size:12px;color:#698078}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px}.world-wrap{position:relative;min-width:0;border-radius:25px;overflow:hidden;background:#dae8e1;box-shadow:inset 0 0 0 1px #cbdcd2}#world{height:470px;touch-action:none;outline:none}canvas{display:block;width:100%;height:100%}#world-badge{position:absolute;bottom:18px;left:22px;font-size:10px;letter-spacing:2px;color:#54736b;pointer-events:none}#loading{position:absolute;inset:0;display:grid;place-items:center;background:#e7eee7}aside{background:white;border:1px solid #e4e7dd;border-radius:22px;padding:22px;display:flex;flex-direction:column}aside h2{font:500 23px 'Fredoka';margin:8px 0 16px}.tools{display:flex;gap:6px;flex-wrap:wrap}.tools button{font-size:12px;padding:9px 12px;background:#eaf0e8;color:var(--ink)}.lesson{font-size:12px;line-height:1.6;border-top:1px solid #e9ece2;margin:17px 0 0;padding-top:14px;color:#6b7f7b}#feedback{font-size:13px;min-height:35px;margin:14px 0;line-height:1.5}footer{display:flex;align-items:center;gap:14px;margin-top:12px;font-size:11px;color:#6d807e}footer button{margin-left:auto;background:transparent;color:#506f69;padding:8px;font-size:11px}#win{position:absolute;inset:0;background:#f6f8efec;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}#win[hidden]{display:none}.big-star{color:#d99635;font-size:70px}#win h2{font:600 32px 'Fredoka';margin:0}#stars{font-size:25px;letter-spacing:5px;color:#c0862f;margin:6px}#win button{min-width:170px}dialog{border:0;border-radius:24px;max-width:460px;padding:28px;color:var(--ink);line-height:1.7}dialog::backdrop{background:#17382d80}.reference{display:grid;gap:4px;align-self:center}.ref-cell{height:38px;border-radius:5px;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;border:2px solid #ddd9cd}.ref-cell span{display:block}.switches{display:flex;gap:7px;flex-wrap:wrap}.switches button{min-width:48px;background:#e8eee7;color:#58736a}.switches button.on{background:var(--accent);color:#152f2d}.gate{padding:9px 10px;border-radius:9px;background:#eff3eb;margin:5px 0;font-size:12px;display:flex;justify-content:space-between;gap:10px}.gate.ok{background:#e0f1e3}.gate b{color:#263f3a}.dpad{display:grid;grid-template-columns:45px 45px 45px;gap:5px;justify-content:center}.dpad button{padding:11px}.track-clue{font-size:11px;line-height:1.8;background:#f2eee2;padding:10px;border-radius:10px}.swatch-note{font-size:11px;color:#78867b;margin-top:10px}.off{color:#889a92}.ontext{color:#39854f}@media(max-width:720px){#app{padding:13px 12px}header p{font-size:12px}.eyebrow{font-size:8px}.play-layout{grid-template-columns:1fr;gap:10px}#world{height:330px}aside{padding:15px}aside h2{font-size:20px;margin:4px 0 9px}nav{margin:14px 0 10px;gap:8px;flex-wrap:wrap}nav label{font-size:10px}select{font-size:12px}#progress{font-size:10px}#clues .reference{max-width:240px}.ref-cell{height:26px}#feedback{margin:9px 0;min-height:20px}.lesson{margin-top:9px;padding-top:9px;font-size:11px}footer{font-size:9px}.gate{padding:6px;margin:3px 0}h1{font-size:27px}.world-wrap{border-radius:18px}}@media(max-height:650px) and (min-width:721px){#world{height:360px}#app{padding-top:10px}nav{margin-top:10px}}

@media(max-width:720px){body[data-mode=code] #world{height:220px}body[data-mode=code] .gate{font-size:10px;line-height:1.15;padding:5px 8px}body[data-mode=code] aside h2{font-size:18px}}

@media(max-width:720px){body[data-mode=track] #world{height:290px}body[data-mode=track] .track-clue{font-size:10px;line-height:1.65}}

.cargo{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:10px}.cargo button{font-size:11px;padding:9px 3px;min-width:0}.cargo button.on{background:#a9d9be}.peg-controls{display:flex;gap:6px}.peg-controls button{flex:1}.digit-controls{display:flex;gap:5px;margin:10px 0}.digit-controls button{flex:1;padding:10px 4px}.cage-list{font-size:11px;line-height:1.5;max-height:115px;overflow:auto}.target-num{font:600 35px 'Fredoka';color:var(--accent)}@media(max-width:720px){#world{height:300px}h1{font-size:25px}.lesson{line-height:1.4}.cargo button{padding:8px 3px}aside{padding:12px}.track-clue{line-height:1.55}}

.cell-controls{display:grid;gap:3px;margin-top:9px}.cell-controls button{font-size:11px;padding:8px 2px;border-radius:6px;background:#e8eee7;color:#233b40}.cell-controls button.active{background:#f3d87a}.cell-controls button.fixed{font-weight:800}.digit-controls{margin:7px 0}.cage-list{max-height:70px}.digit-controls button{padding:8px 3px}@media(max-width:720px){body[data-mode=cages] #world{height:230px}.cell-controls button{padding:6px 2px}.cage-list{font-size:10px}}

.factor-controls{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.factor-controls button{flex:1;font-size:11px;padding:8px 4px;white-space:nowrap}.factor-controls button:disabled{opacity:.35;cursor:default;transform:none}.number-controls{display:grid;gap:3px}.number-controls button{background:#fae4c2;color:#594527;padding:5px 2px;font-size:11px;border-radius:6px}.number-controls button.removed{background:#e7ece7;color:#89978c}.number-controls button.active{outline:2px solid #be925b}@media(max-width:720px){body[data-mode=prime] #world{height:240px}.number-controls button{padding:4px 2px}.factor-controls button{font-size:10px}}

@media(max-width:400px){body[data-mode=prime] #world{height:200px}body[data-mode=prime] .lesson{font-size:10px}body[data-mode=prime] #feedback{font-size:12px}}

.clock-controls{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:8px 0}.clock-controls button{padding:10px 5px;background:#e5eef5;color:#365b78}.clock-readout{display:flex;flex-direction:column;margin:9px 0;gap:3px}.clock-readout b{font:600 29px 'Fredoka';color:#43789c}.clock-readout span{font-size:11px;color:#607d8f}#check-time{width:100%;padding:10px;margin-top:3px}@media(max-width:400px){body[data-mode=clock] #world{height:260px}}

@media(max-width:720px){body[data-mode=clock] .clock-controls{grid-template-columns:repeat(4,1fr)}body[data-mode=clock] .clock-controls button{padding:9px 3px;font-size:11px}body[data-mode=clock] .clock-readout{margin:6px 0}body[data-mode=clock] .clock-readout b{font-size:25px}body[data-mode=clock] .lesson{font-size:10px}body[data-mode=clock] #feedback{font-size:12px}}@media(max-width:400px){body[data-mode=clock] #world{height:220px}}
