:root{
  --board:#15130E; --board2:#1B1912; --surface:#23201A; --surface2:#2C2920; --raised:#34301F;
  --line:rgba(215,178,74,.16); --line2:rgba(215,178,74,.32);
  --cream:#ECE4CE; --cream2:#B4AB90; --cream3:#7C765F;
  --red:#E5384F; --red2:#B8243A; --redsoft:rgba(229,56,79,.14);
  --blue:#3FA3E8; --blue2:#2B7BB6; --bluesoft:rgba(63,163,232,.13);
  --gold:#D8B44C; --gold2:#C9A227; --goldsoft:rgba(216,180,76,.16);
  --green:#5DBE7E;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--board);color:var(--cream);font-family:Inter,system-ui,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,.disp{font-family:Oswald,sans-serif;font-weight:600;letter-spacing:.02em;margin:0}
.mono{font-family:'Space Mono',monospace}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
.hidden{display:none!important}
::selection{background:var(--goldsoft)}
a{color:var(--gold)}
input,select{font-family:inherit}

/* ---------- LOGIN ---------- */
#login{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:24px}
#login .bg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:.07;pointer-events:none}
#login .bg svg{width:min(120vh,120vw);height:auto}
.login-card{position:relative;z-index:2;width:100%;max-width:420px;background:linear-gradient(180deg,var(--surface),var(--board2));border:1px solid var(--line);border-radius:18px;padding:38px 34px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.eyebrow{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--gold2)}
.login-card h1{font-size:40px;line-height:1;margin:10px 0 4px;font-weight:700}
.login-card h1 .x{color:var(--red)}
.login-sub{color:var(--cream2);font-size:14px;margin-bottom:26px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2);margin-bottom:6px}
.field input,.field select{width:100%;background:var(--board);border:1px solid var(--line);color:var(--cream);border-radius:10px;padding:11px 13px;font-size:15px}
.field input:focus,.field select:focus{outline:none;border-color:var(--gold2)}
.role-pick{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:6px 0 22px}
.role-pick button{border:1px solid var(--line);background:var(--board);border-radius:10px;padding:10px 6px;font-size:12.5px;color:var(--cream2);transition:.15s;font-weight:500}
.role-pick button .ic{display:block;font-family:Oswald;font-size:18px;color:var(--cream);margin-bottom:3px}
.role-pick button[aria-pressed=true]{border-color:var(--gold2);background:var(--goldsoft);color:var(--cream)}
.role-pick button[aria-pressed=true] .ic{color:var(--gold)}
.btn-primary{width:100%;background:var(--red);color:#fff;font-family:Oswald;font-weight:600;font-size:17px;letter-spacing:.04em;padding:13px;border-radius:11px;text-transform:uppercase;transition:.15s}
.btn-primary:hover{background:var(--red2)}
.login-foot{margin-top:18px;font-size:12px;color:var(--cream3);text-align:center}
.mad-band{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:12px;padding:14px 18px;margin-top:18px;transition:.15s}
.mad-band:hover{box-shadow:0 6px 20px rgba(0,0,0,.35)}
.mad-band img{height:72px;width:auto;display:block}
.mad-fallback{font-family:Oswald,sans-serif;font-weight:700;font-size:24px;color:#15130E}
.login-err{color:var(--red);font-size:13px;margin-top:10px;min-height:18px;text-align:center}
.remember{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--cream2);margin:2px 0 16px;cursor:pointer;user-select:none}
.remember input{accent-color:var(--gold);width:15px;height:15px}

/* classifica pubblica nel login */
.pub-head{font-family:Oswald;font-weight:600;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2);margin-bottom:8px}
.pub-standings{max-height:48vh;overflow:auto;border:1px solid var(--line);border-radius:12px}
.pub-row{display:grid;grid-template-columns:38px 1fr 62px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line);font-size:14px}
.pub-row:last-child{border-bottom:none}
.pub-row.head{position:sticky;top:0;background:var(--surface);font-family:Oswald;font-weight:500;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2)}
.pub-row .pos{font-family:Oswald;font-weight:600;color:var(--cream3)}
.pub-row.r1 .pos{color:var(--gold)}.pub-row.r2 .pos{color:#cdd2d6}.pub-row.r3 .pos{color:#cd8b54}
.pub-row .nm{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pub-row .pts{font-family:'Space Mono',monospace;font-size:13px;color:var(--gold);text-align:right}
.pub-row.head .pts{color:var(--cream2)}
.pub-row.link{cursor:pointer;transition:.12s}
.pub-row.link:hover{background:var(--surface);text-decoration:none}
.pub-row.link:hover .nm{color:var(--gold)}

/* bacheca: notice nel login + anteprime in gestione */
.login-notice{margin-bottom:18px;text-align:left}
.login-notice img{width:100%;border-radius:12px;border:1px solid var(--line2);display:block}
.login-notice .nt{font-family:Oswald;font-weight:600;font-size:18px;color:var(--cream);margin-top:10px;line-height:1.2}
.login-notice .nb{font-size:13.5px;color:var(--cream2);white-space:pre-wrap;margin-top:5px}
.field textarea{width:100%;background:var(--board);border:1px solid var(--line);color:var(--cream);border-radius:10px;padding:11px 13px;font-size:15px;font-family:inherit;resize:vertical}
.field textarea:focus{outline:none;border-color:var(--gold2)}
#bachecaPoster img{max-width:100%;border-radius:12px;border:1px solid var(--line2);display:block}
#bachecaPoster .none{color:var(--cream3);font-size:13px}

/* editor abbinamenti manuali */
.pairrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}
.pairrow .pn{font-family:'Space Mono',monospace;font-size:12px;color:var(--cream3);min-width:82px}
.pairrow select{flex:1;background:var(--surface);border:1px solid var(--line2);color:var(--cream);border-radius:8px;padding:7px 9px;font-size:13px;min-width:0}
.pairrow .vs{color:var(--cream3);font-size:12px}
#pairList{max-height:50vh;overflow:auto;margin-bottom:8px}
.badge.spec{border-color:var(--blue2);color:var(--blue)}

/* ---------- APP SHELL ---------- */
#app{min-height:100vh;display:flex;flex-direction:column}
.appbar{display:flex;align-items:center;gap:14px;padding:5px 14px;border-bottom:1px solid var(--line);background:var(--board2);flex-wrap:wrap;position:sticky;top:0;z-index:30}
.logo{font-family:Oswald;font-weight:700;font-size:18px;letter-spacing:.02em;white-space:nowrap}
.logo .x{color:var(--red)}
.nav{display:flex;gap:3px;margin-left:4px}
.nav button{font-family:Oswald;font-weight:500;font-size:13px;letter-spacing:.03em;text-transform:uppercase;color:var(--cream2);padding:5px 10px;border-radius:7px;transition:.15s}
.nav button[aria-current=true]{color:var(--cream);background:var(--surface)}
.nav button:hover{color:var(--cream)}
.navtoggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:38px;height:34px;border:1px solid var(--line2);border-radius:8px;background:var(--surface);padding:0 9px}
.navtoggle span{display:block;height:2px;border-radius:2px;background:var(--cream);transition:.18s}
.appbar.nav-open .navtoggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.appbar.nav-open .navtoggle span:nth-child(2){opacity:0}
.appbar.nav-open .navtoggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.appbar .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.chip{font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:999px;border:1px solid var(--line2)}
.chip.live{color:var(--red);border-color:var(--red)}
.chip.live.off{color:var(--cream3);border-color:var(--line2)}
.chip.live .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:6px;vertical-align:middle;animation:blink 1.4s infinite}
.chip.live.off .dot{background:var(--cream3);animation:none}
.chip.x2{color:var(--gold);border-color:var(--gold2)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
.who{display:flex;align-items:center;gap:8px}
.who .av{width:26px;height:26px;font-size:12px;border-radius:50%;background:var(--surface2);border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;font-family:Oswald;font-weight:600;color:var(--gold)}
.who .meta{font-size:11.5px;line-height:1.2}
.who .meta b{display:block;font-weight:600}
.who .meta span{color:var(--cream2)}
.logout{font-size:12px;color:var(--cream3);text-decoration:underline;text-underline-offset:2px}

/* serata header (compatto) */
.serata{display:flex;align-items:center;gap:12px;padding:6px 14px 3px;flex-wrap:wrap}
.serata-head{display:flex;align-items:baseline;gap:10px;min-width:0}
.serata .t{font-family:Oswald;font-weight:600;font-size:17px;white-space:nowrap}
.serata .d{color:var(--cream2);font-family:'Space Mono',monospace;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.serata .spacer{flex:1}
.toggle{display:inline-flex;align-items:center;gap:9px;font-size:13px;color:var(--cream2);cursor:pointer;user-select:none}
.switch{width:40px;height:22px;border-radius:999px;background:var(--surface2);border:1px solid var(--line2);position:relative;transition:.18s}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--cream2);transition:.18s}
.toggle[data-on=true] .switch{background:var(--goldsoft);border-color:var(--gold2)}
.toggle[data-on=true] .switch::after{transform:translateX(18px);background:var(--gold)}
.readonly-note{font-size:12.5px;color:var(--blue);border:1px solid var(--blue2);background:var(--bluesoft);padding:5px 11px;border-radius:8px}
.btn{border:1px solid var(--line2);background:var(--surface);color:var(--cream);border-radius:9px;padding:8px 14px;font-size:13px;font-weight:500;transition:.15s}
.btn:hover{border-color:var(--gold2);background:var(--surface2)}
.btn.gold{border-color:var(--gold2);color:var(--gold)}
.btn.red{border-color:var(--red2);color:var(--red)}
.btn:disabled{opacity:.4;cursor:not-allowed}

/* la vista tabellone riempie lo schermo: serve per dare altezza alla tela pan/zoom */
#view-bracket{display:flex;flex-direction:column;flex:1;min-height:0}
.layout{display:flex;gap:0;align-items:stretch;flex:1;min-height:0}
.main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}

/* legend (thin) */
.legend{display:flex;align-items:center;gap:12px;padding:2px 14px 6px;flex-wrap:wrap;font-size:11px;color:var(--cream2)}
.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.legend .lw{background:var(--red)}.legend .ll{background:var(--blue)}.legend .lf{background:var(--gold)}

/* ---------- BRACKET (dimensioni guidate da --bz font + --cw larghezza colonna) ---------- */
.scroll{overflow:auto;padding:2px 12px 18px;flex:1}
.bracket{display:flex;gap:calc(var(--bz,11px)*.8);align-items:stretch;min-height:100%;width:max-content;
  font-size:var(--bz,11px)}
.col{display:flex;flex-direction:column;justify-content:space-around;gap:calc(var(--bz,11px)*.55);min-width:var(--cw,118px)}
.col.center{min-width:calc(var(--cw,118px) + 1.3em)}
.col-head{font-family:Oswald;font-weight:500;font-size:.9em;letter-spacing:.04em;text-transform:uppercase;text-align:center;padding:.4em .5em;border-radius:.55em;color:var(--cream2);background:var(--surface);border:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:2}
.col.side-W .col-head{color:var(--red);border-color:var(--red2);background:var(--redsoft)}
.col.side-L .col-head{color:var(--blue);border-color:var(--blue2);background:var(--bluesoft)}
.col.side-F .col-head{color:var(--gold);border-color:var(--gold2);background:var(--goldsoft)}
.col.center .col-head{color:var(--cream);border-color:var(--line2)}

.match{background:var(--surface);border:1px solid var(--line);border-radius:.6em;overflow:hidden;transition:.15s}
.match .mh{display:flex;justify-content:space-between;align-items:center;padding:.18em .55em;font-family:'Space Mono',monospace;font-size:.76em;color:var(--cream3);border-bottom:1px solid var(--line)}
.match .mn{color:var(--gold2)}
.match.playable{box-shadow:0 0 0 1px var(--gold2) inset}
.side-W .match{border-color:rgba(229,56,79,.22)}
.side-L .match{border-color:rgba(63,163,232,.22)}
.slot{display:flex;align-items:center;gap:.5em;padding:.5em .55em;cursor:pointer;transition:.12s;border-bottom:1px solid var(--line);position:relative}
.slot:last-child{border-bottom:none}
.slot:hover{background:var(--surface2)}
.slot .seed{font-family:'Space Mono',monospace;font-size:.78em;color:var(--cream3);min-width:1.6em}
.slot .nm{flex:1;font-size:1em;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.slot.empty{cursor:default}
.slot.empty:hover{background:none}
.slot.empty .nm{color:var(--cream3);font-style:italic;font-weight:400}
.slot.bye .nm{color:var(--cream3);font-style:italic;font-weight:400}
.slot.win{background:var(--goldsoft)}
.slot.win .nm{color:var(--cream)}
.slot.win::after{content:"✓";color:var(--gold);font-size:.9em}
.slot.lose .nm{color:var(--cream3);text-decoration:line-through}
.match.resolved{border-color:var(--line2)}
.match.wo .mh span:last-child{color:var(--blue)}

/* champion */
.champ{position:relative;border-radius:.8em;border:1px solid var(--gold2);background:linear-gradient(180deg,var(--goldsoft),var(--surface));padding:1em .9em;text-align:center;overflow:hidden;animation:pop .4s ease}
.champ .cbg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:.12}
.champ .cbg svg{width:9em}
.champ .lab{position:relative;font-family:'Space Mono',monospace;font-size:.78em;letter-spacing:.18em;color:var(--gold2);text-transform:uppercase}
.champ .cup{position:relative;font-size:1.9em;margin:.1em 0}
.champ .cn{position:relative;font-family:Oswald;font-weight:600;font-size:1.25em;color:var(--cream)}
.champ .podium{display:block;width:100%;border-radius:.5em;margin-top:.6em;border:1px solid var(--line2)}
.podium{max-width:100%;border-radius:10px;border:1px solid var(--line2)}
.champ.placeholder{border-style:dashed;border-color:var(--line);background:none}
.champ.placeholder .lab{color:var(--cream3)}.champ.placeholder .cn{color:var(--cream3);font-weight:400;font-size:1em}
@keyframes pop{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}

/* controlli vista tabellone (zoom + pannello) */
.viewctl{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line2);border-radius:8px;padding:2px;background:var(--surface)}
.viewctl button{font-family:'Space Mono',monospace;font-size:12px;color:var(--cream2);padding:4px 9px;border-radius:6px;min-width:26px}
.viewctl button:hover{background:var(--surface2);color:var(--cream)}
.btn.sm{padding:5px 11px;font-size:12px}
.layout.no-panel .panel{display:none}

/* ===== TABELLONE a tela (pan/zoom) — desktop ===== */
#viewport{flex:1;position:relative;overflow:hidden;touch-action:none;cursor:grab;
  background:radial-gradient(circle at 1px 1px, rgba(215,178,74,.10) 1px, transparent 0) 0 0/24px 24px, var(--board)}
#viewport:active{cursor:grabbing}
#stage{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform;font-family:'Space Mono',monospace}
#stage .ch{position:absolute;font-family:Oswald;font-weight:600;font-size:10px;letter-spacing:.06em;text-transform:uppercase;text-align:center;color:var(--cream3);transform:translateX(-50%)}
#stage svg.links{position:absolute;inset:0;pointer-events:none}
#stage .box{position:absolute;background:var(--surface);border:1px solid var(--line2);border-radius:6px;overflow:hidden}
#stage .box .mn{position:absolute;top:-13px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:700;color:var(--gold2)}
#stage .box .sl{height:50%;display:flex;align-items:center;padding:0 7px;font-size:11px;color:var(--cream2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:transparent}
#stage .box .sl+.sl{border-top:1px solid var(--line)}
#stage .box.W{border-color:var(--red2)} #stage .box.W .mn{color:var(--red)}
#stage .box.L{border-color:var(--blue2)} #stage .box.L .mn{color:var(--blue)}
#stage .box.F{border-color:var(--gold2);border-width:1.5px} #stage .box.F .mn{color:var(--gold)}
#stage .box.playable{box-shadow:0 0 0 1.5px var(--gold2) inset}
#stage .box .sl.pl{color:var(--cream);font-weight:500;cursor:pointer}
#stage .box .sl.win{background:var(--goldsoft);color:var(--cream);font-weight:700;cursor:pointer}
#stage .box .sl.win::after{content:"✓";margin-left:auto;color:var(--gold);font-size:10px}
#stage .box .sl.lose{color:var(--cream3);text-decoration:line-through;cursor:pointer}
#stage .box .sl.bye,#stage .box .sl.feed{color:var(--cream3);font-style:italic}
.app[data-role=player] #stage .box .sl.pl,.app[data-role=visualizer] #stage .box .sl{cursor:pointer}
#stage .champ{position:absolute;background:linear-gradient(180deg,var(--goldsoft),var(--surface));border:1.5px solid var(--gold2);border-radius:7px;padding:6px 9px;text-align:center}
#stage .champ .k{font-family:Oswald;font-weight:600;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold2)}
#stage .champ .v{font-family:Oswald;font-weight:600;font-size:13px;color:var(--cream)}

/* ===== TABELLONE per turni — mobile ===== */
#mbracket{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}
#mtabs{flex:none;display:flex;gap:6px;overflow-x:auto;padding:8px 10px;border-bottom:1px solid var(--line)}
#mtabs button{flex:none;font-family:Oswald;font-weight:600;font-size:11px;letter-spacing:.03em;text-transform:uppercase;padding:6px 11px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--cream2);white-space:nowrap}
#mtabs button.on{color:#15130e;background:var(--cream);border-color:var(--cream)}
#mtabs button.on.W{background:var(--red);border-color:var(--red);color:#fff} #mtabs button.on.L{background:var(--blue);border-color:var(--blue);color:#fff} #mtabs button.on.F{background:var(--gold);border-color:var(--gold);color:#15130e}
#mlist{flex:1;overflow-y:auto;padding:10px 10px 40px}
.msec{margin-bottom:18px}
.msec h3{position:sticky;top:0;background:var(--board);font-family:Oswald;font-weight:600;font-size:13px;letter-spacing:.04em;text-transform:uppercase;padding:7px 0;margin:0;border-bottom:2px solid var(--line2);z-index:1}
.msec.W h3{border-color:var(--red);color:var(--red)} .msec.L h3{border-color:var(--blue);color:var(--blue)} .msec.F h3{border-color:var(--gold);color:var(--gold)}
.mm{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid var(--line)}
.mm .n{font-family:'Space Mono',monospace;font-weight:700;font-size:12px;color:var(--cream3);min-width:28px}
.mm.W .n{color:var(--red)} .mm.L .n{color:var(--blue)} .mm.F .n{color:var(--gold)}
.mm .pair{flex:1;display:flex;align-items:center;gap:8px;font-size:14px}
.mm .pair .p{flex:1;padding:9px 10px;background:var(--surface);border:1px solid var(--line);border-radius:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mm .pair .p.win{background:var(--goldsoft);border-color:var(--gold2);color:var(--cream);font-weight:700}
.mm .pair .p.lose{color:var(--cream3);text-decoration:line-through}
.mm .pair .p.bye,.mm .pair .p.feed{color:var(--cream3);font-style:italic}
.mm .pair .vs{font-size:11px;color:var(--cream3)}
.podium-pan{padding:0 16px 12px}
.podium-pan img{width:100%;border-radius:8px;border:1px solid var(--line2)}

/* ---------- STANDINGS PANEL ---------- */
.panel{width:300px;border-left:1px solid var(--line);background:var(--board2);display:flex;flex-direction:column;flex-shrink:0}
.panel h3{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream2);padding:14px 16px 8px;display:flex;justify-content:space-between;align-items:center}
.panel .sub{font-size:11px;color:var(--cream3);padding:0 16px 10px;font-family:'Space Mono',monospace}
.rank{display:flex;align-items:center;gap:11px;padding:9px 16px;border-top:1px solid var(--line);transition:.12s;cursor:pointer}
.rank:hover{background:var(--surface)}
.rank .pos{font-family:Oswald;font-weight:600;font-size:15px;min-width:30px;color:var(--cream3)}
.rank.p1 .pos{color:var(--gold)}.rank.p2 .pos{color:#cdd2d6}.rank.p3 .pos{color:#cd8b54}
.rank .nm{flex:1;font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank .pts{font-family:'Space Mono',monospace;font-size:13px;color:var(--gold)}
.rank .pts small{color:var(--cream3)}
.feed{padding:10px 16px;border-top:1px solid var(--line);max-height:30vh;overflow:auto}
.feed .ev{font-size:12px;color:var(--cream2);padding:4px 0;border-bottom:1px dashed var(--line)}
.feed .ev b{color:var(--cream)}
.feed .ev .mn{font-family:'Space Mono',monospace;color:var(--gold2);font-size:10px}

/* ---------- TABLE / CLASSIFICA VIEW ---------- */
.view{padding:22px;max-width:1040px;margin:0 auto;width:100%}
.view h2{font-size:28px;margin-bottom:4px}
.view .lead{color:var(--cream2);margin-bottom:18px;font-size:14px}
.tabs{display:flex;gap:6px;margin-bottom:16px}
.tabs button{font-family:Oswald;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--cream2);border:1px solid var(--line);padding:8px 16px;border-radius:8px}
.tabs button[aria-current=true]{color:var(--cream);background:var(--surface);border-color:var(--line2)}
.records{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.rec-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--board2)}
.rec-card .k{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--cream2)}
.rec-card .v{font-family:Oswald;font-weight:600;font-size:17px;margin-top:6px}
.rec-card .x{font-family:'Space Mono',monospace;color:var(--gold);font-size:13px}
.table{width:100%;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.table .tr{display:grid;grid-template-columns:50px 1fr 90px 80px 80px 90px 90px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.table .tr.head{background:var(--surface);font-family:Oswald;font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--cream2)}
.table .tr:last-child{border-bottom:none}
.table .tr:not(.head):hover{background:var(--surface)}
.table .tr .pos{font-family:Oswald;font-weight:600;font-size:18px}
.table .tr.r1 .pos{color:var(--gold)}.table .tr.r2 .pos{color:#cdd2d6}.table .tr.r3 .pos{color:#cd8b54}
.table .tr .who2{display:flex;align-items:center;gap:11px;cursor:pointer}
.table .tr .who2 .av{width:30px;height:30px;border-radius:50%;background:var(--surface2);border:1px solid var(--line2);display:flex;align-items:center;justify-content:center;font-family:Oswald;color:var(--gold);font-size:13px}
.table .tr .who2 b{font-weight:600;font-size:14px}
.table .tr .num{font-family:'Space Mono',monospace;font-size:13px}
.table .tr .num.g{color:var(--gold)}
.empty-state{padding:40px;text-align:center;color:var(--cream3)}

/* ---------- MODAL ---------- */
.overlay{position:fixed;inset:0;background:rgba(8,7,5,.7);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:60}
.modal{width:100%;max-width:480px;background:linear-gradient(180deg,var(--surface),var(--board2));border:1px solid var(--line2);border-radius:16px;overflow:hidden;animation:pop .25s ease;max-height:90vh;overflow-y:auto}
.modal.wide{max-width:580px}
.modal.xl{max-width:860px}
.modal.full{max-width:100%}
.modal.full .pickgrid.wide{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));max-height:52vh}
.ne-top{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.ne-top .field{margin-bottom:10px}
#neSearch{background:var(--board);border:1px solid var(--line);color:var(--cream);border-radius:10px;padding:10px 12px;font-size:15px;min-width:0}
#neSearch:focus{outline:none;border-color:var(--gold2)}
.modal.xl .pickgrid{grid-template-columns:repeat(3,1fr);max-height:230px}
@media(max-width:680px){.modal.xl .pickgrid{grid-template-columns:1fr 1fr}}
.modal .top{display:flex;align-items:center;gap:11px;padding:13px 16px;border-bottom:1px solid var(--line);position:relative}
.modal .top .av{width:40px;height:40px;border-radius:50%;background:var(--surface2);border:1px solid var(--gold2);display:flex;align-items:center;justify-content:center;font-family:Oswald;font-weight:600;font-size:16px;color:var(--gold)}
.modal .top h3{font-family:Oswald;font-size:18px;font-weight:600}
.modal .top .sb{font-size:11.5px;color:var(--cream2);font-family:'Space Mono',monospace}
.modal .close{position:absolute;top:10px;right:13px;font-size:20px;color:var(--cream3);line-height:1}
.modal .close:hover{color:var(--cream)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line)}
.stats .s{background:var(--board2);padding:11px 8px;text-align:center}
.stats .s .v{font-family:Oswald;font-weight:600;font-size:20px}
.stats .s .v.g{color:var(--gold)}
.stats .s .k{font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--cream2);margin-top:2px}
.mbody{padding:14px 16px}
.mbody .blk{margin-bottom:13px}
.mbody .blk h4{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream2);margin-bottom:7px}
.ring-wrap{display:flex;align-items:center;gap:18px}
.form-dots{display:flex;gap:5px;flex-wrap:wrap}
.form-dots span{width:22px;height:22px;border-radius:6px;font-size:11px;font-family:'Space Mono',monospace;display:flex;align-items:center;justify-content:center;color:#0d0c0a;font-weight:700}
.form-dots .w{background:var(--green)}.form-dots .l{background:var(--cream3)}
.spark{width:100%;height:48px}
.h2h{display:flex;flex-direction:column;gap:7px;max-height:200px;overflow:auto}
.h2h .row{display:flex;align-items:center;gap:10px;font-size:13px}
.h2h .row .nm{flex:1;color:var(--cream2)}
.h2h .bar{width:120px;height:8px;border-radius:4px;background:var(--surface2);overflow:hidden;display:flex}
.h2h .bar .w{background:var(--green)}.h2h .bar .l{background:var(--red2)}
.h2h .rec{font-family:'Space Mono',monospace;font-size:12px;min-width:42px;text-align:right}
.dist{display:flex;gap:6px;flex-wrap:wrap}
.dist .d{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--cream2)}
.dist .d b{color:var(--gold);font-family:'Space Mono',monospace}

/* new event modal */
.pickgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px;margin-top:6px}
.pickgrid label{display:flex;align-items:center;gap:8px;font-size:13px;padding:5px 6px;border-radius:6px;cursor:pointer}
.pickgrid label:hover{background:var(--surface)}
.pickgrid input{accent-color:var(--gold)}
.pickbar{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:10px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--surface2);border:1px solid var(--line2);color:var(--cream);padding:11px 18px;border-radius:10px;z-index:80;font-size:13px;box-shadow:0 12px 30px rgba(0,0,0,.5);animation:pop .2s ease}
.toast.err{border-color:var(--red2);color:var(--red)}

/* filters / dashboard / storico */
.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:flex-end}
.filters .f{display:flex;flex-direction:column;gap:4px}
.filters label{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2)}
.filters select,.filters input{background:var(--surface);border:1px solid var(--line2);color:var(--cream);border-radius:8px;padding:7px 10px;font-size:13px}
.filters .btn{padding:7px 12px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.kpi{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--board2)}
.kpi .v{font-family:Oswald;font-weight:600;font-size:28px;color:var(--gold)}
.kpi .k{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2);margin-top:4px}
.charts{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.chart-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px 18px;background:var(--board2)}
.chart-card h4{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--cream2);margin:0 0 12px}
.chart-card canvas{max-height:240px}
.hist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.hist .row{display:grid;grid-template-columns:1fr 110px 90px 80px 70px;gap:8px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.hist .row:last-child{border-bottom:none}
.hist .row:hover{background:var(--surface)}
.hist .row.head{background:var(--surface);cursor:default;font-family:Oswald;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cream2)}
.hist .row b{font-weight:600}
.hist .row .mono{font-size:12px;color:var(--cream2)}
.hist .row .win{color:var(--gold)}
.badge{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;padding:2px 7px;border-radius:999px;border:1px solid var(--gold2);color:var(--gold)}
.link{cursor:pointer}
.link:hover{color:var(--gold);text-decoration:underline;text-underline-offset:2px}
.h2h-big{display:flex;align-items:center;justify-content:center;gap:24px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--board2);margin-bottom:16px}
.h2h-big .side{text-align:center}
.h2h-big .side .nm{font-family:Oswald;font-size:18px}
.h2h-big .score{font-family:Oswald;font-weight:700;font-size:44px}
.h2h-big .score .a{color:var(--green)}.h2h-big .score .b{color:var(--red)}
.h2h-big .vs{color:var(--cream3);font-family:'Space Mono',monospace}

@media(max-width:860px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .charts{grid-template-columns:1fr}
  .hist .row{grid-template-columns:1fr 70px;font-size:13px}
  .hist .row .col-hide{display:none}
  .panel{display:none}
  .table .tr{grid-template-columns:40px 1fr 70px 70px;font-size:13px}
  .table .tr .col-hide{display:none}
  .records{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .row2{grid-template-columns:1fr}
  .pickgrid{grid-template-columns:1fr}

  /* ---- menu a tendina (hamburger) ---- */
  .navtoggle{display:flex;order:2;margin-left:auto}
  .appbar{gap:8px;padding:8px 12px}
  .appbar .nav,.appbar .right{display:none;width:100%;order:3}
  .appbar.nav-open .nav{display:flex;flex-direction:column;gap:2px;margin:6px 0 0}
  .appbar.nav-open .nav button{text-align:left;font-size:15px;padding:11px 12px;border-radius:8px}
  .appbar.nav-open .right{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-left:0;padding-top:8px;border-top:1px solid var(--line)}
  .who .meta{font-size:13px}

  /* ---- tabelle admin con colonne inline: scroll orizzontale invece del taglio ---- */
  #userTable,#anaTable,#anaDelTable{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}
  #userTable .tr{min-width:560px}
  #anaTable .tr{min-width:900px}
  #anaDelTable .tr{min-width:560px}

  /* ---- modale adattata al piccolo schermo ---- */
  .overlay{padding:10px;align-items:flex-start}
  .modal,.modal.wide,.modal.xl{max-width:100%;max-height:calc(100vh - 20px)}
  .ring-wrap{flex-wrap:wrap;gap:12px}
  .h2h .bar{width:84px}
  .modal .stats .s .v{font-size:18px}

  /* ---- viste e selezione player ---- */
  .view{padding:16px 14px}
  .view h2{font-size:22px}
  .pickbar{flex-wrap:wrap}
  .pickbar>div{flex:1}
}
