:root{--bg: #0b1f12;--bg2: #12301c;--panel: #153a22;--line: #2a5d3a;--text: #e9f5ea;--dim: #9bbba2;--accent: #ffd54f;--accent2: #ff7043;--danger: #e53935;--ok: #43a047;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:Courier New,ui-monospace,Menlo,Consolas,monospace;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}body{overflow:hidden}#app{position:fixed;inset:0}#stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:none;background:#000;overflow:hidden}#game canvas{display:block;image-rendering:pixelated;image-rendering:crisp-edges}#stage.crt-css:after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.18) 0 1px,transparent 1px 3px);box-shadow:inset 0 0 40px #00000080}#hud{position:absolute;inset:0;pointer-events:none;font-size:calc(var(--z, 2) * 6px);line-height:1.1;text-shadow:1px 1px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000;font-weight:700}.hud-top{position:absolute;top:calc(var(--z) * 2px);left:50%;transform:translate(-50%);display:flex;gap:calc(var(--z) * 3px);align-items:center;background:#0000008c;padding:calc(var(--z) * 1px) calc(var(--z) * 4px);border:1px solid rgba(255,255,255,.15);white-space:nowrap}.hud-team{border-bottom:calc(var(--z) * 1.5px) solid #fff;padding:0 calc(var(--z) * 1px)}.hud-score{font-size:calc(var(--z) * 8px);color:var(--accent)}.hud-clock{color:#cfe8d2;min-width:4ch;text-align:right}.hud-ping{color:#8fd;font-size:calc(var(--z) * 4px)}.hud-extra{position:absolute;top:calc(var(--z) * 15px);left:50%;transform:translate(-50%);font-size:calc(var(--z) * 5px);color:#fff;background:#00000073;padding:0 calc(var(--z) * 3px);max-width:90%;text-align:center}.hud-extra:empty{display:none}.hud-name{position:absolute;transform:translate(-50%);font-size:calc(var(--z) * 4.5px);white-space:nowrap;color:#fff;display:none}.hud-msg{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%) scale(.8);font-size:calc(var(--z) * 14px);color:var(--accent);opacity:0;transition:opacity .2s,transform .2s;letter-spacing:2px;text-align:center}.hud-msg.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.hud-mini{position:absolute;right:calc(var(--z) * 3px);bottom:calc(var(--z) * 3px);width:calc(var(--z) * 36px);height:calc(var(--z) * 56px);image-rendering:pixelated;opacity:.9}#stage.portrait .hud-mini{width:calc(var(--z) * 27px);height:calc(var(--z) * 42px);bottom:auto;top:calc(var(--z) * 16px)}#touch{position:fixed;inset:0;display:none;touch-action:none;z-index:5;pointer-events:none}#touch>*{pointer-events:auto;touch-action:none}.t-zone{position:absolute;left:0;top:0;width:55%;height:100%}.t-base{position:absolute;width:80px;height:80px;border-radius:50%;border:2px solid rgba(255,255,255,.4);background:#ffffff14;pointer-events:none!important}.t-knob{position:absolute;left:20px;top:20px;width:40px;height:40px;border-radius:50%;background:#ffffff80}.t-btn{position:absolute;right:24px;width:76px;height:76px;border-radius:50%;border:3px solid rgba(255,255,255,.7);background:#ffffff26;color:#fff;font:700 28px monospace;display:flex;align-items:center;justify-content:center;user-select:none}.t-btn.on{background:#ffd54f8c}.t-a{bottom:36px;right:28px;width:92px;height:92px}.t-b{bottom:150px;right:24px}#ui{position:absolute;inset:0;display:flex;justify-content:center;align-items:flex-start;overflow:auto;background:radial-gradient(ellipse at 50% 0%,#1b4a2b 0%,var(--bg) 70%);padding:env(safe-area-inset-top) 12px 24px}.screen{width:min(720px,100%);padding:16px 0 32px}.logo{text-align:center;padding:18px 0 6px}.logo h1{margin:0;font-size:clamp(34px,9vw,64px);letter-spacing:6px;color:var(--accent);text-shadow:4px 4px 0 #6d4c00,0 0 18px rgba(255,213,79,.3)}.logo h1 span{color:#fff;text-shadow:4px 4px 0 #234}.logo p{margin:6px 0 0;color:var(--dim)}.logo-ball{width:40px;height:40px;margin:0 auto 8px;background:radial-gradient(circle at 35% 30%,#fff 0 55%,#ccd 56% 100%);border:3px solid #1b1d26;border-radius:50%;box-shadow:0 6px #00000059}.title{text-align:center;margin-bottom:8px}.title h1{margin:6px 0;color:var(--accent);font-size:28px;letter-spacing:3px;text-transform:uppercase}.sub,.hint{color:var(--dim)}.center{text-align:center}.big{font-size:22px}.userline{text-align:center;margin:4px 0 10px}.dim{color:var(--dim)}.menu{display:flex;flex-direction:column;gap:10px;margin:14px auto;max-width:420px}.btn,select,input[type=text],input[type=password],input[type=email],input[type=number]{font:inherit;color:var(--text);background:var(--panel);border:2px solid var(--line);border-radius:0;padding:10px 14px;min-height:44px}.btn{cursor:pointer;text-transform:uppercase;letter-spacing:1px;box-shadow:0 4px #0006;transition:transform .05s}.btn:hover{border-color:var(--accent)}.btn:active{transform:translateY(3px);box-shadow:0 1px #0006}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:#2e7d32;border-color:#66bb6a;color:#fff}.btn.danger{background:#5a1b1b;border-color:#b33}.btn.on{background:#4a3b00;border-color:var(--accent);color:var(--accent)}.btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:16px 0}.form{display:flex;flex-direction:column;gap:8px;margin:12px 0}.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:4px 0;border-bottom:1px dashed var(--line)}.row .lbl{flex:1 1 40%}.row small{display:block;color:var(--dim);font-size:12px}.row select,.row input[type=text],.row input[type=password],.row input[type=email]{flex:1 1 50%;min-width:0}.row input[type=range]{flex:1 1 50%;accent-color:var(--accent)}.row input[type=checkbox]{width:26px;height:26px;accent-color:var(--accent)}.inline{display:inline-flex;gap:8px;align-items:center;flex:1 1 50%}.inline select{flex:1}.badge{display:inline-block;width:22px;height:22px;border:3px solid #fff}.tabs{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:8px 0}.cols{display:flex;gap:20px;flex-wrap:wrap}.cols>*{flex:1 1 260px}.col{display:flex;flex-direction:column;gap:6px}.chip{font:inherit;color:var(--text);background:var(--panel);border:2px solid var(--line);padding:8px 10px;text-align:left;cursor:pointer}.chip.on{border-color:var(--accent);background:#3b3200}.chip:disabled{opacity:.4}.keyblock h3,.col h3{margin:8px 0;color:var(--accent)}.overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:20;padding:12px;overflow:auto}.panel{background:var(--bg2);border:3px solid var(--line);padding:18px;min-width:min(360px,100%);max-width:640px;width:100%;display:flex;flex-direction:column;gap:10px;box-shadow:0 8px #00000080}.panel h2{margin:0 0 6px;text-align:center;color:var(--accent)}.result{display:flex;justify-content:center;align-items:center;gap:14px;margin:8px 0;flex-wrap:wrap}.rteam{font-size:18px;flex:1 1 140px;text-align:center}.rscore{font-size:40px;color:var(--accent)}table.stats,table.table{width:100%;border-collapse:collapse;margin:10px 0}table.stats th,table.stats td,table.table th,table.table td{padding:5px 8px;border-bottom:1px solid var(--line)}table.stats th{color:var(--dim);font-weight:400;text-align:center}table.stats td.num{text-align:center;width:28%;font-size:18px}table.table th{text-align:left;color:var(--accent)}table.table td.num,table.table th.num{text-align:right}table.table tr.me td{background:#ffd54f1f}table.table tr.hl td{background:#66bb6a2e}.heats{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}canvas.heat{image-rendering:pixelated;width:153px;border:2px solid var(--line)}.replay-row,.list-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line)}.replay-row span,.list-row span{flex:1;min-width:0;overflow-wrap:anywhere}.list{margin:8px 0}.tactic-layout{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start;justify-content:center}.tactic-canvas{width:min(286px,100%);height:auto;touch-action:none;border:3px solid var(--line);background:#2a8a3b;cursor:pointer}.tactic-layout .form{flex:1 1 260px}.foot{text-align:center;color:var(--dim);margin-top:28px;font-size:13px}.foot a,a{color:var(--accent)}#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#000d;border:2px solid var(--accent);padding:10px 16px;opacity:0;transition:.25s;z-index:50;pointer-events:none;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%)}.err{color:#ff8a80;margin:6px 0;min-height:1.2em}.okmsg{color:#a5d6a7}.warn{background:#3b2a00;border:2px solid var(--accent);padding:8px 10px;margin:6px 0;color:#ffe082}.pill{display:inline-block;padding:1px 8px;border:1px solid var(--line);margin-left:6px;font-size:12px;color:var(--dim)}.prose{line-height:1.5}.prose h3{color:var(--accent);margin:18px 0 4px}.quad{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.club{border:3px solid var(--line);padding:8px;cursor:pointer;background:var(--panel);text-align:center;font:inherit;color:var(--text)}.club.on{border-color:var(--accent)}.club i{display:block;width:100%;height:22px;margin-bottom:6px}.spinner{width:28px;height:28px;border:4px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:12px auto}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:520px){.row{flex-direction:column;align-items:stretch}.btn{padding:10px}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}.btn{transition:none}}
