:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#edf1ec;background:#102127;font-synthesis:none;--panel:#192e35;--line:#365058;--muted:#afc2c6;--ink:#edf1ec;--accent:#efc371;--puck:#efc371;--well:#102127;color-scheme:dark} :root[data-theme=light]{color:#183139;background:#f4f2ec;--panel:#fffefa;--line:#ccd6d2;--muted:#526a6c;--ink:#183139;--accent:#805509;--puck:#deb158;--well:#ebece4;color-scheme:light} *{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select{min-height:48px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:12px;padding:12px 18px}button{cursor:pointer;font-weight:650;touch-action:manipulation}button:disabled{opacity:.5;cursor:default}button:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button.primary{background:var(--puck);color:#1c2a25;border-color:transparent}button:hover:not(:disabled){filter:brightness(1.12)}main{max-width:1150px;margin:auto;padding:clamp(20px,4vw,56px);padding-bottom:max(32px,env(safe-area-inset-bottom))}header{max-width:700px;margin-bottom:30px}.eyebrow{font-size:11px;letter-spacing:.19em;font-weight:700;color:var(--accent);margin-bottom:18px}h1{font-size:clamp(32px,5vw,58px);letter-spacing:-.045em;line-height:1.06;font-weight:600;margin:0 0 20px}p{color:var(--muted);font-size:14px;line-height:1.65;margin:8px 0}header p{font-size:16px}.session{border-block:1px solid var(--line);padding:20px 0;margin-bottom:26px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px}.status{display:flex;gap:10px;align-items:center;font-size:14px}.dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent)}.dot.live{background:#8ed5b3;box-shadow:0 0 0 4px #8ed5b31a}.session-actions{display:flex;gap:10px}.options{display:flex;gap:24px;align-items:center}.options>label{display:flex;gap:12px;align-items:center;font-size:13px}.options select{min-height:44px;padding:8px}.mode{min-height:44px}.mode input{width:22px;height:22px;accent-color:var(--puck)}small,.hint{font-size:12px;color:var(--muted)}.hint{margin:0}.controls-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.card{border:1px solid var(--line);border-radius:20px;background:var(--panel);padding:24px}.section-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.index{font-family:monospace;font-size:12px;color:var(--accent)}h2{font-size:18px;margin:0;letter-spacing:-.02em}.chip{font-size:9px;letter-spacing:.08em;margin-left:auto;color:var(--muted)}.stick{width:min(100%,210px);aspect-ratio:1;margin:26px auto 18px;background:var(--well);border:1px solid var(--line);border-radius:50%;position:relative;display:grid;place-items:center;touch-action:none;user-select:none}.cross{position:absolute;background:var(--line);opacity:.45}.cross.horizontal{height:1px;left:12%;right:12%}.cross.vertical{width:1px;top:12%;bottom:12%}.puck{width:52px;height:52px;border-radius:50%;background:var(--puck);box-shadow:0 5px 20px #0003;pointer-events:none}.stick-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.antennas{grid-column:1/-1}.antenna-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}.antenna-grid>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.antenna-label{grid-column:1/-1;font-size:11px;letter-spacing:.12em;color:var(--muted)}.antenna-grid button{touch-action:none;user-select:none;display:flex;flex-direction:column;align-items:center;gap:4px}.antenna-grid button.held{background:var(--puck);color:#162b31}.readouts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;border-top:1px solid var(--line);padding-top:20px;margin-top:24px}.readouts div{display:flex;flex-direction:column;gap:6px}.readouts small{font-size:9px;letter-spacing:.1em}.readouts strong{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}footer{margin-top:28px;max-width:790px}footer p{font-size:12px}footer strong{color:var(--ink)}body[data-input=gamepad] .stick{opacity:.55}body[data-input=gamepad] .antenna-grid button{opacity:.55} @media(max-width:650px){main{padding:24px 18px}.session{grid-template-columns:1fr}.options{flex-wrap:wrap;gap:12px}.session-actions button{flex:1}.controls-grid{gap:12px}.card{padding:16px}.controls-grid>.card:not(.antennas){grid-column:1/-1}.stick{width:180px}.chip{font-size:8px}.antenna-grid{gap:12px}.antenna-grid>div{grid-template-columns:1fr}.antenna-grid button{font-size:13px;padding:12px 5px}.readouts strong{font-size:18px}.options>label{gap:8px}} /* Keep both thumb pads reachable together on a phone. */ @media(max-width:650px){.controls-grid>.card:not(.antennas){grid-column:auto}.controls-grid>.card:not(.antennas){padding:12px}.controls-grid>.card:not(.antennas) .section-title{gap:8px}.controls-grid>.card:not(.antennas) h2{font-size:15px}.controls-grid>.card:not(.antennas) .chip{margin-left:0}.controls-grid>.card:not(.antennas) p{font-size:12px;min-height:40px}.stick{width:min(100%,150px);margin-block:16px}.puck{width:44px;height:44px}.stick-labels{font-size:10px;gap:5px}.session{position:sticky;top:0;z-index:5;background:var(--well);padding-inline:8px;margin-inline:-8px}} header{margin-bottom:18px}h1{font-size:clamp(25px,3vw,36px);margin-bottom:12px}.eyebrow{margin-bottom:8px}.controller-check{border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:18px;background:var(--panel)}.controller-check>label{display:flex;gap:12px;align-items:center;font-size:13px}.controller-check select{flex:1;min-width:0;max-width:100%}.controller-check p{font-size:13px}.input-values{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.input-values span{display:flex;gap:8px}.input-values output{color:var(--ink);font-family:monospace;font-variant-numeric:tabular-nums}body[data-input=gamepad] .stick,body[data-input=gamepad] .antenna-grid button{opacity:1}body[data-input=gamepad] .stick{pointer-events:none} @media(max-width:650px){.controller-check>label{flex-direction:column;align-items:stretch}.input-values{gap:8px;flex-direction:column}.session{position:static}}