/* Sala Giochi — "sala giochi di sera": fondo notte, giallo arcade per le azioni, ogni gioco col suo colore */
:root{
  --bg:#0b0d1a; --bg2:#10132a; --panel:#151a36; --panel2:#1b2145; --ink:#eef0ff; --muted:#9aa1c7; --line:rgba(255,255,255,.09);
  --accent:#ffd23f; --accent-ink:#17130a; --accent-dark:#b8900c;
  --hot:#ff3d6e; --cyan:#35d6ff; --green:#22d68a; --red:#ff4d5e; --gold:#ffd23f;
  --felt:#0e5b3c; --on-felt:#effff6; --sea:#4f8fd6; --sea-bg:#132a52;
  --card:#fbf6ea; --card-line:#d9cfb8;
  --display:"Russo One","Arial Black",Impact,sans-serif;
  --body:"Rubik","Segoe UI",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{background:var(--bg)}
body{margin:0;color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;min-height:100vh;padding-bottom:env(safe-area-inset-bottom,0px);
  background:
    radial-gradient(900px 500px at 8% -10%, rgba(255,61,110,.16), transparent 60%),
    radial-gradient(900px 520px at 100% 0%, rgba(53,214,255,.13), transparent 60%),
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px) 0 0/100% 48px,
    var(--bg);
  background-attachment:fixed}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.02;margin:0;text-wrap:balance;letter-spacing:.01em}
h1{font-size:clamp(2.5rem,7.5vw,4.6rem);text-transform:uppercase}
h2{font-size:clamp(1.4rem,3.5vw,1.9rem);text-transform:uppercase}
h3{font-size:1.25rem;text-transform:uppercase}
p{margin:0}
.muted{color:var(--muted)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.eyebrow{font-family:var(--mono);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--cyan)}
.hl{color:var(--accent)}

/* intestazione */
.top{position:sticky;top:0;z-index:20;padding-top:env(safe-area-inset-top,0px);background:rgba(11,13,26,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top-in{max-width:1160px;margin:0 auto;padding:10px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 26px}
.brand{white-space:nowrap;display:flex;align-items:center;gap:10px;font-family:var(--display);font-size:1.35rem;text-transform:uppercase;text-decoration:none;letter-spacing:.03em}
.brand::before{content:"";width:30px;height:30px;border-radius:8px;background:
  radial-gradient(circle at 30% 35%, var(--accent-ink) 0 3px, transparent 3.5px),
  radial-gradient(circle at 70% 65%, var(--accent-ink) 0 3px, transparent 3.5px),
  var(--accent);box-shadow:0 3px 0 var(--accent-dark);transform:rotate(-8deg)}
.nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.nav a{text-decoration:none;font-weight:600;padding:.45em .85em;border-radius:10px;color:var(--muted)}
.nav a:hover{color:var(--ink);background:rgba(255,255,255,.06)}
.nav a.on{color:var(--accent);background:rgba(255,210,63,.1)}
.account{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.account a,.account button{text-decoration:none;font:inherit;font-weight:600;padding:.45em .85em;border-radius:10px;border:0;background:none;color:var(--ink);cursor:pointer}
.account a:hover,.account button:hover{background:rgba(255,255,255,.06)}
.account .mute{display:inline-flex;align-items:center;justify-content:center;padding:.4em .5em;color:var(--muted)}
.account .mute:hover{color:var(--ink)}
.account .who{font-family:var(--mono);font-size:.85rem;background:var(--panel2);border:1px solid var(--line)}
.account a[href="#/registrati"]{background:var(--accent);color:var(--accent-ink);box-shadow:0 3px 0 var(--accent-dark)}
@media (max-width:760px){
  .top-in{gap:6px 12px}
  .brand{flex:1;font-size:1.15rem}
  .nav{order:3;flex:0 0 100%}
  .nav a{padding:.35em .7em}
}

.wrap{max-width:1160px;margin:0 auto;padding-inline:16px;padding-block:28px 64px;display:flex;flex-direction:column;gap:32px}
.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:14px;min-width:0;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px;min-width:0}
.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* pulsanti e campi */
.btn{appearance:none;border:1.5px solid rgba(255,255,255,.18);background:rgba(255,255,255,.03);color:var(--ink);padding:.6em 1.15em;border-radius:12px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4em;line-height:1.2;transition:transform .08s,background .15s,border-color .15s}
.btn:hover:not(:disabled){border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.08)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 4px 0 var(--accent-dark)}
.btn.primary:hover:not(:disabled){background:#ffdc66;border-color:#ffdc66}
.btn.primary:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--accent-dark)}
.btn.danger{border-color:rgba(255,77,94,.55);color:#ff8a96}
.btn.danger:hover:not(:disabled){background:var(--red);border-color:var(--red);color:#fff}
.btn.small{padding:.42em .85em;font-size:.88rem;border-radius:10px}
.btn.primary.small{box-shadow:0 3px 0 var(--accent-dark)}
.btn:disabled{opacity:.4;cursor:not-allowed}
:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
label{font-weight:600;font-size:.92rem;display:flex;flex-direction:column;gap:6px}
input[type=text],input[type=password],input[type=search]{font:inherit;padding:.7em .85em;border:1.5px solid rgba(255,255,255,.12);border-radius:12px;background:#0d1028;color:var(--ink);width:100%}
input::placeholder{color:#6d74a0}
input:focus{border-color:var(--accent);outline:none}
.form{max-width:440px;width:100%;margin:0 auto}
.error{color:#ff8a96;font-weight:600}

/* chip */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;padding:.25em .7em;border-radius:99px;border:1px solid rgba(255,255,255,.14);color:var(--muted);white-space:nowrap}
.chip.turn{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.chip.on{border-color:rgba(34,214,138,.5);color:var(--green)}
.chip.on::before,.chip.off::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.chip.live::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(34,214,138,.18)}

/* home */
.hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;align-items:center}
@media (max-width:860px){.hero{grid-template-columns:minmax(0,1fr)}}
.hero-text{display:flex;flex-direction:column;gap:16px}
.hero .lead{max-width:56ch;color:var(--muted);font-size:1.1rem}
.hero-art{position:relative;border-radius:22px;overflow:hidden;min-height:280px;align-items:flex-start!important;background:linear-gradient(140deg,#8a1238,#ff3d6e 45%,#ffb13d);box-shadow:0 20px 50px rgba(255,61,110,.25);display:flex;align-items:flex-end;padding:20px;text-decoration:none}
.hero-art svg{position:absolute;inset:0;width:100%;height:100%}
.hero-art .label{position:relative;max-width:min(78%,340px);display:flex;flex-direction:column;gap:6px;background:rgba(11,13,26,.72);backdrop-filter:blur(6px);padding:12px 14px;border-radius:14px}
.hero-art .label b{font-family:var(--display);font-size:1.4rem;text-transform:uppercase}
.games{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.games.big{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.game-card{border-radius:20px;overflow:hidden;display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);transition:transform .15s,box-shadow .15s}
.game-card:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(0,0,0,.4)}
.game-art{height:150px;display:flex;align-items:center;justify-content:center;color:#fff;position:relative}
.games.big .game-art{height:190px}
.game-art{padding-top:22px}
.game-art svg{height:72%;width:auto;max-width:86%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))}
.g-battaglia{background:linear-gradient(140deg,#0d2f5c,#1f78c2)}
.g-forza4{background:linear-gradient(140deg,#1a238f,#4462ff)}
.g-tris{background:linear-gradient(140deg,#4b1460,#b2338f)}
.g-briscola{background:linear-gradient(140deg,#0a4a31,#1f9a63)}
.g-aerei{background:radial-gradient(circle at 75% 20%,#fff3c4,transparent 40%),linear-gradient(170deg,#5aa0e0,#2f6db5 55%,#1c3350)}
.g-dominion{background:radial-gradient(circle at 70% 15%,#ffe9a8,transparent 40%),linear-gradient(165deg,#2a7bb8,#124a7a 60%,#0a2440)}
.g-navale3d{background:radial-gradient(circle at 25% 20%,#ffe9a8,transparent 45%),linear-gradient(170deg,#4aa3df,#1d5f9a 55%,#0b2a4a)}
.g-guardiehd{background:radial-gradient(circle at 70% 20%,#ffb067,transparent 55%),linear-gradient(160deg,#2d3b8f,#e86a4a 70%,#ffc46b)}
.g-quiz{background:linear-gradient(140deg,#3a1170,#7b2ff7 60%,#ff3d6e)}
.g-serpenti{background:linear-gradient(140deg,#04281d,#0b6b4c 55%,#35d6ff)}
.g-scopa{background:linear-gradient(140deg,#5a1a0e,#b5482a)}
.g-scala40{background:linear-gradient(140deg,#123a5c,#c8102e)}
.g-gara{background:linear-gradient(140deg,#7a0f30,#ff3d6e 60%,#ff9f43)}
.g-citta{background:linear-gradient(140deg,#16205c,#3c4fd8 55%,#f2a33a)}
.game-art .tagline{position:absolute;left:12px;top:12px;display:flex;gap:6px}
.game-art .tagline span{font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:rgba(11,13,26,.6);padding:.25em .55em;border-radius:6px}
.game-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:10px;flex:1}
.game-body h3{font-size:1.35rem}
.game-body .lb{font-size:.82rem;font-weight:600;color:var(--cyan);text-decoration:none;white-space:nowrap}
.game-body .lb:hover{text-decoration:underline}
.game-body p{color:var(--muted);font-size:.95rem;flex:1}
.lists{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}
.mlist{display:flex;flex-direction:column}
.mrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.mrow:first-child{border-top:0}
.mrow .what{display:flex;flex-direction:column;min-width:0}
.mrow .what b{font-weight:700}
.empty{color:var(--muted);font-size:.95rem}

/* tabelle */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:500}
tbody tr:hover td{background:rgba(255,255,255,.03)}
td.num,th.num{text-align:right;font-family:var(--mono)}
td.pos{width:3.2em}
td.pos span{display:inline-flex;width:2em;height:2em;border-radius:50%;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;color:var(--muted);background:rgba(255,255,255,.05)}
tr.p1 td.pos span{background:#ffd23f;color:#17130a}
tr.p2 td.pos span{background:#d6dbef;color:#17130a}
tr.p3 td.pos span{background:#e0905a;color:#17130a}
tr.me td{background:rgba(255,210,63,.08)}
td a{font-weight:700;text-decoration:none}
td a:hover{color:var(--accent)}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs a{text-decoration:none;font-weight:700;padding:.45em 1em;border-radius:99px;border:1.5px solid rgba(255,255,255,.14);color:var(--muted)}
.tabs a:hover{color:var(--ink)}
.tabs a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}

/* profilo */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.stat b{font-family:var(--display);font-weight:400;font-size:2rem;color:var(--accent)}
.res{font-family:var(--mono);font-weight:700;font-size:.8rem;width:1.9em;height:1.9em;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:#0b0d1a}
.res.w{background:var(--green)} .res.l{background:var(--red)} .res.d{background:var(--muted)}

/* partita */
.match-head{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end;justify-content:space-between}
.versus{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:700;font-size:1.1rem}
.versus .vs{font-family:var(--display);font-size:.95rem;color:var(--hot);text-transform:uppercase}
.banner{font-family:var(--display);font-size:clamp(1.5rem,5vw,2.3rem);text-transform:uppercase;padding:.4em .7em;border-radius:14px;border:1.5px solid rgba(255,255,255,.14);line-height:1.1;background:var(--panel)}
.banner.mine{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:0 6px 30px rgba(255,210,63,.25)}
.banner.win{background:var(--green);border-color:var(--green);color:#06140d}
.banner.lose{background:var(--red);border-color:var(--red);color:#fff}
.banner.draw{background:#6d74a0;border-color:#6d74a0;color:#fff}
.invite{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.code-big{font-family:var(--display);font-size:2.6rem;letter-spacing:.18em;color:var(--accent)}
.linkbox{font-family:var(--mono);font-size:.82rem;word-break:break-all;background:#0d1028;border:1px dashed rgba(255,255,255,.18);padding:9px 11px;border-radius:10px;width:100%;color:var(--muted)}

/* tris */
.tris{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:min(100%,380px)}
.tris button,.tris span{aspect-ratio:1;border:0;border-radius:16px;background:#141a3a;box-shadow:inset 0 0 0 2px rgba(255,255,255,.07);font-family:var(--display);font-size:clamp(3rem,15vw,5.2rem);display:flex;align-items:center;justify-content:center;color:var(--ink);padding:0}
.tris button{cursor:pointer}
.tris button:hover{box-shadow:inset 0 0 0 3px var(--accent)}
.tris .X{color:#ff4d6d;text-shadow:0 0 18px rgba(255,77,109,.6)} .tris .O{color:var(--cyan);text-shadow:0 0 18px rgba(53,214,255,.6)}
.tris .win{background:#2b2a12;box-shadow:inset 0 0 0 3px var(--accent)}

/* forza 4 */
.f4{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;background:linear-gradient(160deg,#2140e0,#1729a8);padding:12px;border-radius:18px;width:min(100%,540px);box-shadow:0 14px 40px rgba(33,64,224,.35)}
.f4 .slot{aspect-ratio:1;border-radius:50%;background:#0b0d1a;border:0;padding:0;position:relative;box-shadow:inset 0 3px 6px rgba(0,0,0,.6)}
.f4 button.slot{cursor:pointer}
.f4 .slot.R{background:radial-gradient(circle at 35% 35%,#ff8090,#ff3d55 60%,#c21f36)}
.f4 .slot.G{background:radial-gradient(circle at 35% 35%,#ffe48a,#ffd23f 60%,#c99b10)}
.f4 .slot.hov{box-shadow:inset 0 0 0 3px rgba(255,255,255,.55)}
.f4 .slot.last::after{content:"";position:absolute;inset:38%;border-radius:50%;background:rgba(255,255,255,.75)}
.f4 .slot.line{box-shadow:0 0 0 3px #fff,0 0 18px #fff}
.disc{display:inline-block;width:.95em;height:.95em;border-radius:50%;vertical-align:-.12em}
.disc.R{background:#ff3d55} .disc.G{background:var(--accent)}

/* battaglia */
.boards{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:780px){.boards{grid-template-columns:minmax(0,1fr)}}
.board{display:grid;grid-template-columns:1.5em repeat(10,minmax(0,1fr));gap:3px;width:100%;max-width:470px;user-select:none;touch-action:manipulation}
.board.small{max-width:340px}
.lbl{font-family:var(--mono);font-size:.68rem;color:var(--muted);display:flex;align-items:center;justify-content:center}
.cell{aspect-ratio:1;border:0;padding:0;margin:0;background:var(--sea-bg);border-radius:4px;position:relative;min-width:0;box-shadow:inset 0 0 0 1px rgba(79,143,214,.25)}
button.cell{cursor:crosshair}
button.cell:hover{box-shadow:inset 0 0 0 2px var(--accent)}
.cell.ship{background:var(--sea);box-shadow:none}
.cell.preview{background:rgba(34,214,138,.55)}
.cell.bad{background:rgba(255,77,94,.55)}
.cell.miss::after{content:"";position:absolute;inset:38%;border-radius:50%;background:#7e8bb8}
.cell.hit{background:var(--red);box-shadow:0 0 12px rgba(255,77,94,.5)}
.cell.sunk{background:#7d1c2a;box-shadow:none}
.cell.hit::after,.cell.sunk::after{content:"";position:absolute;inset:22%;background:linear-gradient(45deg,transparent 42%,#fff 42% 58%,transparent 58%),linear-gradient(-45deg,transparent 42%,#fff 42% 58%,transparent 58%)}
.cell.fresh{outline:2px solid var(--accent);outline-offset:-2px}
.place-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,310px);gap:22px;align-items:start}
@media (max-width:780px){.place-grid{grid-template-columns:minmax(0,1fr)}}
.tray{display:flex;flex-wrap:wrap;gap:8px}
.ship-chip{display:flex;align-items:center;gap:8px;padding:.5em .75em;border:1.5px solid rgba(255,255,255,.14);border-radius:10px;background:transparent;color:var(--ink);cursor:pointer;font:inherit;font-size:.9rem}
.ship-chip.sel{border-color:var(--accent);background:rgba(255,210,63,.12)}
.ship-chip.done{opacity:.5}
.pips{display:inline-flex;gap:3px}
.pips i{width:11px;height:11px;background:var(--sea);border-radius:2px;display:block}
.pips.sunk i{background:var(--red)}
.fleet-list{display:grid;gap:5px;font-size:.92rem}
.fleet-list div{display:flex;justify-content:space-between;gap:12px}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.8rem;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend .cell{width:16px;display:inline-block}

/* briscola */
.tavolo{background:radial-gradient(ellipse at 50% 40%,#16804f,#0b4a2e 70%,#083822);border-radius:24px;padding:20px 14px;display:flex;flex-direction:column;gap:18px;align-items:center;color:var(--on-felt);min-width:0;box-shadow:inset 0 0 0 8px #3a2416,inset 0 0 0 10px #5a3a22,0 16px 40px rgba(0,0,0,.4)}
.mano{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;min-height:120px}
.centro{display:flex;gap:22px;align-items:center;justify-content:center;flex-wrap:wrap;width:100%}
.mazzo{display:flex;align-items:center;gap:12px}
.pila{position:relative;width:150px;height:116px;flex:none}
.pila .carta{position:absolute;top:0;left:0}
.pila .dorso{z-index:2}
.pila .briscola{left:52px;transform:rotate(90deg)}
.giocate{display:flex;gap:12px;min-height:116px;align-items:center;justify-content:center;flex:1}
.carta{width:76px;height:116px;border-radius:9px;background:var(--card);border:1.5px solid var(--card-line);color:#1d1a14;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:6px 4px;font-family:var(--display);box-shadow:0 3px 0 rgba(0,0,0,.3),0 8px 16px rgba(0,0,0,.25);flex:none}
.carta .v{font-size:1.2rem;line-height:1;align-self:flex-start;padding-left:4px}
.carta svg{width:38px;height:38px}
.carta .nome{font-family:var(--body);font-weight:700;font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;color:#6d6555}
.carta.d{color:#a8700c} .carta.c{color:#b3261e} .carta.s{color:#24557e} .carta.b{color:#3c6b2a}
.carta.dorso{background:repeating-linear-gradient(45deg,#7a1f17 0 6px,#962a20 6px 12px);border-color:#4a120d}
button.carta{cursor:pointer;transition:transform .12s}
button.carta:hover:not(:disabled){transform:translateY(-10px)}
button.carta:disabled{cursor:default;filter:saturate(.85)}
.carta.presa{opacity:.85}
.small-cards .carta{width:46px;height:70px;padding:3px 2px}
.small-cards .carta svg{width:22px;height:22px}
.small-cards .carta .v{font-size:.9rem}
.small-cards .carta .nome{display:none}
.info-tavolo{font-family:var(--mono);font-size:.82rem;opacity:.9;text-align:center}

/* avvisi */
.toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--accent);color:var(--accent-ink);padding:.75em 1.2em;border-radius:12px;font-weight:700;max-width:calc(100% - 32px);z-index:60;box-shadow:0 10px 30px rgba(0,0,0,.4)}
@media (prefers-reduced-motion:reduce){button.carta,.game-card,.btn{transition:none}}

/* scopa: carte in tavola selezionabili */
button.carta.sel{outline:4px solid var(--accent);outline-offset:2px;transform:translateY(-8px)}
.tavola{flex-wrap:wrap}
/* scala 40: carte francesi */
.fr{width:58px;height:84px;border-radius:8px;background:var(--card);border:1.5px solid var(--card-line);display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-family:var(--display);box-shadow:0 3px 0 rgba(0,0,0,.3);padding:0;flex:none;transition:transform .12s}
.fr .fr-r{font-size:1.35rem;line-height:1}
.fr .fr-s{font-size:1.25rem;line-height:1}
.fr.red{color:#c8102e}.fr.black{color:#1b1b24}
.fr.jolly{color:#6a2cc9;background:linear-gradient(160deg,#fffdf8,#f1e6ff)}
.fr.jolly .fr-s{font-size:.6rem;letter-spacing:.08em}
.fr.dorso{background:repeating-linear-gradient(45deg,#1b3a8a 0 6px,#244aa8 6px 12px);border-color:#0f2354;color:#fff}
.fr.small{width:36px;height:52px;border-radius:6px}
.fr.small .fr-r{font-size:.95rem}.fr.small .fr-s{font-size:.85rem}.fr.small.jolly .fr-s{font-size:.42rem}
button.fr{cursor:pointer}
button.fr:hover:not(:disabled){transform:translateY(-6px)}
button.fr:disabled{cursor:default}
.fr.sel{transform:translateY(-12px);outline:3px solid var(--accent);outline-offset:2px}
.fr-hand{gap:6px}
.melds{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;width:100%}
.meld{display:inline-flex;gap:3px;padding:6px;border-radius:10px;background:rgba(0,0,0,.18);border:1.5px dashed rgba(255,255,255,.25);cursor:pointer}
.meld.mine{background:rgba(255,210,63,.12)}
.meld:disabled{cursor:default;border-style:solid;border-color:rgba(255,255,255,.08)}
.meld:not(:disabled):hover{border-color:var(--accent)}
.staged{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center}
.staged .group{display:inline-flex;gap:3px;align-items:center;padding:6px 8px;border-radius:10px;background:rgba(255,210,63,.18);border:1.5px solid var(--accent)}
.staged .group b{margin-left:6px;font-family:var(--mono);font-size:.8rem}
@media (max-width:560px){.fr{width:44px;height:64px}.fr .fr-r{font-size:1.05rem}.fr .fr-s{font-size:1rem}}

/* EVENTME CITY: amministrazione */
.game-art.g-eventme{background:linear-gradient(160deg,#5a1048,#1b1030 70%)}
.ec-admin h1{font-size:1.6rem;margin:0}
.ec-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.ec-stats div{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column}
.ec-stats b{font-size:1.4rem;color:#ffd23f}.ec-stats span{color:var(--muted);font-size:.85rem}
.ec-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.ec-form label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;color:var(--muted)}
.ec-form .wide{grid-column:1/-1}
.ec-admin input[type=number],.ec-admin input[type=datetime-local],.ec-admin select,.ec-admin textarea,.ec-admin input[type=file]{font:inherit;padding:.6em .75em;border:1.5px solid rgba(255,255,255,.12);border-radius:12px;background:#0d1028;color:var(--ink);width:100%;box-sizing:border-box}
.ec-admin input[type=number]{max-width:160px}
.ec-table{width:100%;border-collapse:collapse;font-size:.92rem}
.ec-table th,.ec-table td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.ec-table td.num{text-align:right}
.ec-thumb{width:64px;height:64px;object-fit:cover;border-radius:10px;display:block}
.ec-empty{display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--muted);background:rgba(255,255,255,.05);text-align:center}
.ec-ads{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.ec-ad{display:flex;flex-direction:column;gap:8px;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:14px;padding:12px}
.ec-adimg{width:100%;aspect-ratio:2/1;object-fit:cover;border-radius:10px;display:flex}
.ec-packs .row{gap:8px;align-items:center;flex-wrap:nowrap}
.table-wrap{overflow-x:auto}
.ec-sign{aspect-ratio:4/1}
.ec-prices{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-bottom:10px}
.ec-prices label{display:flex;flex-direction:column;gap:4px;font-size:.88rem}
.ec-admin input[type=text]{font:inherit}
.ec-admin select{font:inherit;padding:.4em .6em;border-radius:10px;background:#0d1028;color:var(--ink);border:1.5px solid rgba(255,255,255,.12)}

.ec-maptools{flex-wrap:wrap;gap:8px}
.ec-maptools input[type=text]{max-width:260px}
.ec-mapwrap{max-height:620px;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#265c96}
.ec-map{position:relative;cursor:crosshair;min-width:300px}
.ec-map img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.ec-mk{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid rgba(0,0,0,.6);padding:0;cursor:pointer}
.ec-mk.added{border-color:#fff}
.ec-mk.removed{opacity:.35;outline:2px solid #ff5a6e}
.ec-mk.sel{width:20px;height:20px;margin:-10px 0 0 -10px;border:3px solid #35d6ff;box-shadow:0 0 0 3px rgba(53,214,255,.35)}
.ec-hint{font-weight:600}
.ec-dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.game-art .art-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.game-art.g-eventme{padding-top:0;overflow:hidden}
.hero-photo{background:#0e1020}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* gadget, carcere e lavori (admin città) */
.ec-gadgets{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin:12px 0}
.ec-gadget{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.03)}
.ec-gadget .ec-adimg{max-height:90px;object-fit:contain;background:#2a2e44;border-radius:8px}
.ec-swatch{height:60px;border-radius:8px;border:1px solid var(--line)}
.ec-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;align-items:end}
.ec-form label{display:flex;flex-direction:column;gap:4px;font-size:.9rem}
.ec-form .row,#ecGPrev{grid-column:1/-1}
.ec-cj{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:12px;margin:8px 0}
.ec-cj label{display:flex;flex-direction:column;font-size:.85rem;gap:3px}
.ec-table input[type=number]{width:90px}

.ec-check{display:flex;flex-direction:row;align-items:flex-start;gap:10px;font-weight:600}
.ec-check input{width:auto;margin-top:3px;flex:0 0 auto}
