/* X36 Entrance Test. Dark, quiet, one accent. Three themes, picked with ?theme=phosphor|amber|slate.
   Nothing moves unless the child moved it. Everything above the fold at 1280 by 720. */
:root{
  --bg:#070907; --ink:#d6e2d3; --dim:#66775f; --line:#1b241c; --accent:#3dff7c; --accent-ink:#06110a; --red:#ff4d5a;
  --ring-outer:#0b0f0b; --ring-inner:#111811;
}
body[data-theme="amber"]{
  --bg:#0a0806; --ink:#e8dcc4; --dim:#7a6b52; --line:#241d14; --accent:#ffb454; --accent-ink:#1a1006; --red:#ff5a4d;
  --ring-outer:#0f0c08; --ring-inner:#171208;
}
body[data-theme="slate"]{
  --bg:#0c0f14; --ink:#dbe3ee; --dim:#6b7887; --line:#1c2430; --accent:#7cc7ff; --accent-ink:#06121c; --red:#ff6b7a;
  --ring-outer:#0f131a; --ring-inner:#151b24;
}

*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg);color:var(--ink);
  font-family:"JetBrains Mono",ui-monospace,Menlo,monospace;
  display:grid;place-items:start center;padding:16px 20px;min-height:100%;
}
.scanlines{position:fixed;inset:0;pointer-events:none;z-index:5;
  background:repeating-linear-gradient(transparent 0 2px, rgba(0,0,0,.14) 2px 3px);opacity:.5}
body[data-theme="slate"] .scanlines{display:none}

.shell{width:min(1000px,100%)}

.top{display:flex;align-items:center;justify-content:space-between;padding:0 0 10px;border-bottom:1px solid var(--line)}
.brand{font-weight:700;letter-spacing:.32em;font-size:.85rem;color:var(--accent)}
.brand span{color:var(--dim);font-weight:400;letter-spacing:.22em;font-size:.6rem;text-transform:uppercase;margin-left:12px}
.tabs{display:flex;gap:14px}
.tab{font-size:.62rem;letter-spacing:.08em;color:var(--dim);padding-bottom:3px;border-bottom:1px solid transparent}
.tab.current{color:var(--accent);border-bottom-color:var(--accent)}
.tab.done{color:var(--ink)}

.panel{padding:18px 0 0}

.head{display:flex;align-items:baseline;gap:14px}
.no{font-size:.62rem;letter-spacing:.1em;color:var(--dim)}
.title{font-size:1.1rem;margin:0;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.chip{margin-left:auto;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.chip b{color:var(--accent);font-size:.9rem;letter-spacing:.24em;margin-left:8px}
.band{margin:8px 0 0;color:var(--dim);font-size:.8rem;line-height:1.4;min-height:1.4em}

.body{display:grid;grid-template-columns:1fr 360px;gap:32px;align-items:center;margin-top:6px}

/* the intercept */
.intercept{position:relative;display:flex;flex-direction:column;gap:18px;min-height:360px}
.brief{margin:0;color:var(--dim);font-size:.8rem;line-height:1.5}
.grid{display:flex;flex-wrap:wrap;gap:14px 22px;justify-content:center;align-content:center;flex:1}
.word{display:flex;gap:6px}
.col{display:grid;gap:2px;width:40px}
.keyletter{text-align:center;font-weight:700;color:var(--accent);font-size:.8rem;height:1.3em;line-height:1.3em}
.col input{width:100%;text-align:center;outline:none;font-family:inherit;font-weight:700;color:var(--ink);
  background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0}
.col input:focus{border-bottom-color:var(--accent)}
.col input.good{color:var(--accent);border-bottom-color:var(--accent)}
.col input.bad{color:var(--red);border-bottom-color:var(--red)}
.shift{font-size:.75rem;padding:3px 0;color:var(--dim)}
.shift.given{border-bottom-color:transparent;color:var(--dim)}
.shift:read-only{cursor:default}
.tile{text-align:center;font-weight:700;font-size:1.5rem;line-height:1.4;color:var(--ink);border-bottom:1px solid transparent}
.tile.selected{color:var(--accent)}
.tile.cracked{color:var(--dim)}
.answer{font-size:1.15rem;padding:6px 0 4px;text-transform:lowercase}
.repeat{align-self:flex-end;background:none;border:1px solid var(--line);color:var(--dim);padding:5px 12px;
  cursor:pointer;font-family:inherit;font-size:.68rem;letter-spacing:.14em}
.repeat:hover{border-color:var(--accent);color:var(--accent)}
.stamp-cleared{position:absolute;right:8px;top:-4px;pointer-events:none;font-weight:700;font-size:1rem;
  letter-spacing:.32em;color:var(--red);border:2px solid var(--red);padding:3px 10px;transform:rotate(-10deg);opacity:.9}

/* the wheel */
.bench{display:grid;justify-items:center;align-content:center;gap:2px}
.wheel svg{display:block;touch-action:none;cursor:grab;user-select:none}
.wheel svg.turning{cursor:grabbing}
.wheel .outer-ring{fill:var(--ring-outer);stroke:var(--line);stroke-width:1}
.wheel .inner-ring{fill:var(--ring-inner);stroke:var(--line);stroke-width:1}
.wheel .hub{fill:var(--ring-outer);stroke:var(--line);stroke-width:1}
.wheel .pin{fill:var(--accent)}
.wheel .tick{stroke:var(--line);stroke-width:1}
.wheel text{font-family:"JetBrains Mono",monospace;font-weight:700;text-anchor:middle;dominant-baseline:central}
.wheel .outer-letter{font-size:13px;fill:var(--accent)}
.wheel .inner-letter{font-size:13px;fill:var(--ink)}
.wheel .inner-number{font-size:8px;fill:var(--dim);display:none}
.wheel.numbered .inner-number{display:block}
.wheel .window{fill:none;stroke:var(--red);stroke-width:1.5}
.dial{display:flex;align-items:center;gap:14px}
.dial-no{font-weight:700;font-size:1.5rem;min-width:2.2ch;text-align:center;color:var(--accent)}
.turn{width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);
  font-size:1.1rem;line-height:1;cursor:pointer;font-family:inherit}
.turn:hover{border-color:var(--accent);color:var(--accent)}

.foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.foot-right{display:flex;gap:10px}
.ghost,.primary,.secondary{font-family:inherit;font-weight:700;font-size:.72rem;letter-spacing:.18em;padding:9px 18px;cursor:pointer;border-radius:2px}
.ghost{background:none;border:1px solid transparent;color:var(--dim)}
.ghost:hover{color:var(--ink)}
.primary{background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent)}
.primary:disabled{opacity:.3;cursor:default}
.secondary{background:none;color:var(--accent);border:1px solid var(--accent)}
.secondary:disabled{opacity:.25;cursor:not-allowed}

.dev{position:fixed;bottom:10px;left:10px;z-index:6;display:flex;gap:6px;align-items:center;
  background:var(--bg);border:1px solid var(--line);padding:5px 8px}
.dev span{font-size:.58rem;letter-spacing:.2em;color:var(--red)}
.dev button{background:none;border:1px solid var(--line);color:var(--dim);padding:3px 8px;font-family:inherit;cursor:pointer;font-size:.7rem}
.dev button:hover{color:var(--ink)}

.win{text-align:center;padding:60px 0}
.win h1{font-size:1.3rem;margin:.5em 0;letter-spacing:.14em;text-transform:uppercase}
.win p{color:var(--dim);font-size:.85rem}
.win .stamp{display:inline-block;border:2px solid var(--accent);color:var(--accent);padding:6px 16px;font-weight:700;
  letter-spacing:.32em;transform:rotate(-6deg);font-size:1.1rem;margin-bottom:8px}

@media (max-width:820px){
  .body{grid-template-columns:1fr}
  .intercept{min-height:0}
}
