:root{
  --bg:#0f1320; --side:#171c2e; --side2:#1f2740; --card:#ffffff; --ink:#1c2230;
  --muted:#6b7280; --line:#e6e9f0; --accent:#5b6cff; --accent2:#3f4ce0; --rosso:#e3350d;
  --soft:#f3f5fb;
}
*{box-sizing:border-box}
body{margin:0;display:flex;min-height:100vh;font-family:"Segoe UI",system-ui,Roboto,Arial,sans-serif;background:var(--soft);color:var(--ink)}

/* SIDEBAR */
.side{width:230px;flex:none;background:var(--side);color:#cfd6ea;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:11px;padding:18px 18px 14px}
.brand .logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#5b6cff,#9b5bff);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;letter-spacing:.5px}
/* logo = immagine (il drago AnimeX) invece del testo "AX": copre il riquadro, niente gradiente */
.brand img.logo{object-fit:cover;background:none;padding:0}
.brand b{font-size:17px;color:#fff;display:block;line-height:1.1}
.brand small{font-size:11px;color:#8b93b3}
nav{flex:1;padding:6px 10px;overflow:auto}
.navitem{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;border-radius:9px;cursor:pointer;color:#c2c9e2;font-size:14px;font-weight:600;margin-bottom:2px}
.navitem:hover{background:var(--side2);color:#fff}
.navitem.on{background:linear-gradient(90deg,var(--accent),var(--accent2));color:#fff}
.navitem .cnt{font-size:11px;background:rgba(255,255,255,.16);padding:1px 7px;border-radius:9px;font-weight:700}
.nav-sep{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#646c8c;padding:12px 14px 4px}
.side-foot{padding:12px 16px;font-size:11px;color:#7b83a3;border-top:1px solid #232b45}

/* MAIN */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:8}
.topbar h1{margin:0;font-size:21px}
.top-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.view{padding:22px 24px}

/* BOTTONI */
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 15px;border-radius:10px;font-weight:700;font-size:13px;cursor:pointer}
.btn:hover{border-color:#c7ccda}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent2)}
.btn.red{background:#fff;color:#d12;border-color:#f1c4c0}
.btn.sm{padding:6px 10px;font-size:12px;border-radius:8px}
.search{padding:9px 13px;border:1px solid var(--line);border-radius:10px;font-size:14px;min-width:220px;outline:none}
.search:focus{border-color:var(--accent)}
.hint{color:var(--muted);font-size:13px}
.badge-proc{background:#fff7e6;color:#9a6b00;border:1px solid #ffe2a8;padding:6px 11px;border-radius:9px;font-size:12px;font-weight:700}

/* GRID ANIMEI */
.grid{display:grid;gap:15px;grid-template-columns:repeat(auto-fill,minmax(165px,1fr))}
.ccard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;transition:transform .12s,box-shadow .12s;position:relative}
.ccard:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(20,30,60,.13)}
.ccard .num{position:absolute;top:7px;left:9px;background:rgba(15,19,32,.62);color:#fff;font-weight:800;font-size:11px;padding:2px 8px;border-radius:9px;z-index:2}
.ccard .thumb{height:148px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 38%,#fbfcff,#eef1f8);padding:8px}
.ccard .thumb img{max-width:100%;max-height:100%;object-fit:contain}
.ccard .thumb.empty{color:#aab;font-size:12px;text-align:center}
.ccard .b{padding:9px 11px 11px}
.ccard .nm{font-weight:800;font-size:15px;margin:0 0 6px}
.tbadge{display:inline-block;color:#fff;font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:10px;margin-right:4px}
.stars{color:#f5b50a;font-size:13px;letter-spacing:1px;margin-top:5px}
/* riga stelle + RUOLO sulla card: si vede a colpo d'occhio come combatte */
.ccard .crow{display:flex;align-items:center;gap:8px;margin-top:5px}
.ccard .crow .stars{margin-top:0;flex:none}
.ruo-chip{display:inline-flex;align-items:center;gap:5px;margin-left:auto;
  font-size:10.5px;font-weight:800;letter-spacing:.2px;padding:2px 8px;border-radius:10px;
  color:var(--rc,#868E96);background:color-mix(in srgb,var(--rc,#868E96) 12%,#fff);
  border:1px solid color-mix(in srgb,var(--rc,#868E96) 30%,#fff);white-space:nowrap}
.ruo-chip i{width:7px;height:7px;border-radius:50%;flex:none;
  border:1.5px solid var(--rc,#868E96);background:transparent}
.ruo-chip.fisso i{background:var(--rc,#868E96)}   /* pieno = ruolo scelto a mano */

/* TABELLE LIBRERIA */
.tbl{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tbl th{background:var(--soft);text-align:left;font-size:12px;color:#67708a;padding:10px 12px;border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.3px}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:top}
.tbl tr:last-child td{border-bottom:none}
.tbl tr.row:hover{background:#fafbff;cursor:pointer}
.tbl .clip{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4b5365}

/* FORM */
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.field label{font-size:13px;font-weight:700;color:#4b5365}
.field input,.field select,.field textarea{padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:15px;font-family:inherit;outline:none}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field textarea{resize:vertical;min-height:64px}
.frow{display:flex;gap:10px}.frow .field{flex:1}

/* MODAL */
.modal{position:fixed;inset:0;background:rgba(12,16,28,.55);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}
.modal[hidden]{display:none}
/* scheda larga: su schermi grandi usa lo spazio, senza diventare illeggibile */
.modal-card{background:#fff;border-radius:16px;width:100%;max-width:1500px;max-height:94vh;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.4);font-size:15px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--line)}
.modal-head h2{margin:0;font-size:22px}
.x{border:none;background:#eef1f6;width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer;line-height:1}
.modal-body{padding:18px 20px;overflow:auto}
.modal-foot{display:flex;gap:10px;align-items:center;padding:14px 20px;border-top:1px solid var(--line)}
.modal-foot .sp{flex:1}

/* RAMI */
.rami-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.rcard{border:1px solid var(--line);border-left-width:5px;border-radius:0 12px 12px 0;background:#fff;padding:14px;cursor:pointer}
.rcard h3{margin:0 0 3px;font-size:16px}
.rcard p{margin:0;font-size:12.5px;color:var(--muted)}
.rcard .meta{margin-top:9px;font-size:11px;color:#8b93a8}
.node{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:#fff}
.node .lv{font-size:11px;font-weight:800;color:#fff;border-radius:8px;padding:3px 8px;flex:none}
.node .cat{font-size:10px;text-transform:uppercase;letter-spacing:.4px;font-weight:800;padding:2px 7px;border-radius:7px;flex:none}
.node .nm{font-weight:700;font-size:13.5px}
.node .ef{font-size:12px;color:var(--muted)}
.cat-statistica{background:#eef0ff;color:#3a44b8}
.cat-abilita{background:#fff0e6;color:#b5611c}
.cat-passiva{background:#e9f7ee;color:#1f8a4c}
.cat-natura{background:#fdeaf3;color:#a8336a}
.cat-evoluzione{background:#fde9e7;color:#c0341c}

/* LIVELLI */
.lv-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:8px;margin-top:16px}
.lv-cell{border:1px solid var(--line);border-radius:10px;padding:8px 9px;background:#fff;text-align:center}
.lv-cell .l{font-size:11px;color:var(--muted);font-weight:700}
.lv-cell .s{font-size:13px;font-weight:800;margin-top:3px}
.lv-cell.ab{background:#fff7e6;border-color:#ffe2a8}
.lv-cell.ab .s{color:#9a6b00}
.lv-cell.scelta{border-color:#5b6cff;box-shadow:0 0 0 2px rgba(91,108,255,.18)}
.lv-cell.scelta .s{color:#3f4ce0;font-weight:800}

/* SOPRA A TUTTO. Stava a z-index 80, cioè sotto agli editor a schermo intero
   (mappe, eventi, uscite: 99998 in su): là dentro nessun avviso si è mai visto —
   salvavi e non ti diceva niente, sembrava che non funzionasse. */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#1c2230;color:#fff;padding:11px 18px;border-radius:11px;font-size:14px;font-weight:600;z-index:100500;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.toast[hidden]{display:none}
.empty-state{text-align:center;color:var(--muted);padding:50px 20px}

/* ALBERO PROGRESSIONE */
.tree-canvas{background:radial-gradient(circle at 50% -10%,#222a4d,#0f1320);border:1px solid #232b45;border-radius:14px;overflow:auto;padding:10px}
.tree-svg{position:absolute;left:0;top:0;pointer-events:none;z-index:1}
.tnode{position:absolute;z-index:2;width:212px;background:#1b2138;border:1.5px solid #3a4366;border-radius:12px;padding:9px 11px;display:flex;gap:9px;align-items:center;cursor:pointer;color:#e7ebf6;box-shadow:0 5px 16px rgba(0,0,0,.35);transition:transform .1s,box-shadow .1s;box-sizing:border-box}
.tnode:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(0,0,0,.5)}
.tnode-base{background:#222a4d;border-color:#5b6cff}
.tnode-base img{width:54px;height:54px;object-fit:contain;flex:none}
.tb-nm{font-weight:800;font-size:16px}
.tb-sub{font-size:11px;color:#8b93b3;margin-top:4px}
.tnode-evo{background:#2a1d28;border-width:2px;box-shadow:0 0 0 3px rgba(232,72,43,.13),0 6px 18px rgba(0,0,0,.45)}
.tnode-cat{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff;flex:none}
.tnode-main{min-width:0}
.tnode-lv{font-size:10px;color:#9aa3c8;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.tnode-nm{font-size:13px;font-weight:700;line-height:1.2}
.tcolhead{position:absolute;z-index:2;width:212px;text-align:center;font-weight:800;font-size:14px;padding:8px 0;border-radius:10px;border:1.5px solid;background:#171c2e;box-sizing:border-box}
.tnode-empty,.tnode-add{justify-content:center;color:#9aa3c8;font-weight:700;font-size:13px;border-style:dashed;background:#161b2e}
.tnode-add{height:46px}
.tnode .tbadge{font-size:9.5px;padding:1px 7px}

/* ALBERO A GRAFO (talent tree) */
.graph-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.graph-hint{margin-left:6px;color:var(--muted);font-size:12.5px}
.graph-viewport{position:relative;height:70vh;min-height:440px;overflow:hidden;border:1px solid #232b45;border-radius:14px;background:radial-gradient(circle at 50% -25%,#232b4f,#0d1018);cursor:grab}
.graph-viewport.connecting{cursor:crosshair}
.graph-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.graph-edges{position:absolute;left:0;top:0;overflow:visible}
.gedge{cursor:pointer;pointer-events:stroke;transition:stroke-width .1s}
.gedge:hover{stroke-width:4.5}
.gnode{position:absolute;width:220px;height:64px;background:#1b2138;border:1.6px solid #3a4366;border-radius:12px;padding:0 11px;display:flex;gap:9px;align-items:center;cursor:grab;color:#e7ebf6;box-shadow:0 5px 16px rgba(0,0,0,.4);user-select:none}
.gnode:hover{box-shadow:0 9px 26px rgba(0,0,0,.55)}
.gnode.armed{outline:2px solid #9db0ff;outline-offset:2px}
.gnode-evo{background:#2a1d28}
.gnode-cat{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:#fff;flex:none}
.gnode-main{min-width:0}
.gnode-nm{font-size:13.5px;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.gnode-cost{font-size:11px;color:#9aa3c8;font-weight:700;margin-top:2px}

/* ---- pannello statistiche (scheda creatura) ---- */
.stat-panel{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.st-head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;flex-wrap:wrap}
.st-head h3{margin:0 0 4px;font-size:15px}
.st-tag{font-size:11px;font-weight:700;color:#3f4ce0;background:#eef0ff;border:1px solid #d7dbff;padding:2px 8px;border-radius:20px;margin-left:6px;vertical-align:middle}
.st-meta{font-size:12.5px;color:var(--muted)}
.st-meta b{color:var(--ink)}
.st-lvl{display:flex;flex-direction:column;gap:4px;min-width:230px}
.st-lvl label{font-size:12px;font-weight:700;color:#4b5365}
.st-lvl input[type=range]{accent-color:var(--accent);width:100%}
.st-pool{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0 10px;font-size:13px;color:var(--muted)}
.st-pool b{color:var(--ink)}
.st-pool .sp{flex:1}
.st-rows{display:flex;flex-direction:column;gap:7px}
.st-row{display:grid;grid-template-columns:1.05fr 74px 62px 1.25fr 76px;gap:9px;align-items:center}
.st-row3{display:grid;grid-template-columns:1.1fr 74px 1.25fr 78px;gap:10px;align-items:center}
.st-bstbox{display:flex;flex-direction:column;gap:2px;min-width:210px}
.st-bstbox>label{font-size:12px;font-weight:700;color:#4b5365}
.st-bstbox input{width:120px;padding:6px 8px;border:1px solid #cdd3ff;background:#fbfcff;border-radius:8px;font-size:15px;font-weight:800;font-family:inherit;outline:none}
/* menu Allenamento (in gioco, tema scuro) */
.tr-rows{display:flex;flex-direction:column;gap:7px}
.tr-row{display:grid;grid-template-columns:1.3fr auto 1fr;gap:12px;align-items:center;background:#0f1526;border:1px solid #2b3450;border-radius:10px;padding:8px 11px}
.tr-name{font-size:13px;color:#e7ebf6}
.tr-ctl{display:flex;align-items:center;gap:8px}
.tr-b{width:28px;height:28px;border-radius:8px;border:1px solid #3a4468;background:#1b2138;color:#e7ebf6;font-size:16px;font-weight:800;cursor:pointer;line-height:1}
.tr-b:hover{background:#242c48}
.tr-v{min-width:22px;text-align:center;font-size:16px;color:#fff}
.tr-proj{font-size:12px;color:#9fb0d0;text-align:right}
.st-name{font-size:13px}
.st-name .st-sub{display:block;font-size:11px;color:var(--muted)}
.st-base label,.st-max label{display:block;font-size:10px;font-weight:700;color:#8a92a4;margin-bottom:2px}
.st-base input,.st-max input{width:100%;padding:6px 7px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;outline:none}
.st-max input{border-color:#e2e5ef;background:#fafbfe;font-weight:600;color:#7a828f}
.st-max label{color:#9aa0ac}
.st-base input{border-color:#cdd3ff;background:#fbfcff}
.st-base input:focus,.st-max input:focus{border-color:var(--accent)}
/* abilita / passive / natura, nella scheda Animei */
.ab-grid{display:grid;grid-template-columns:1.4fr 1.2fr 1.1fr;gap:10px;margin-top:8px}
.ab-grid select{width:100%;padding:6px 7px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;background:#fbfcff}
.ab-eff{margin-top:8px;font-size:12.5px;color:#555;line-height:1.5;background:#f7f8fc;border-radius:9px;padding:8px 10px}
.ab-passrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.ab-pass{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:20px;font-size:12px;cursor:pointer;background:#fff}
.ab-pass.on{border-color:#5b6cff;background:#eef0ff;color:#3f4ce0;font-weight:700}
/* i tre riquadri (statistiche · abilità · mosse): affiancati sugli schermi larghi */
.panelli{display:grid;gap:14px;grid-template-columns:1fr}
@media (min-width:1150px){
  .panelli{grid-template-columns:1fr 1fr}
  .panelli #movePanel{grid-column:1 / -1}   /* il learnset e' lungo: tutta la riga */
}
@media (min-width:1150px){
  .mv-rows{max-height:none}
  .mv-row{padding:5px 10px}
}
/* selettore mosse con filtri (dentro la scheda) */
.mvp-box{margin-top:8px;border:1px solid var(--line);border-radius:10px;background:#f7f8fc;padding:8px}
.mvp-filtri{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.mvp-filtri label{display:flex;flex-direction:column;gap:3px;font-size:10px;font-weight:700;color:#8a92a4}
.mvp-filtri select,.mvp-filtri input{padding:5px 7px;border:1px solid var(--line);border-radius:7px;font-size:12.5px;font-family:inherit;background:#fff}
.mvp-lista{display:flex;flex-direction:column;gap:3px;margin-top:8px;max-height:280px;overflow-y:auto}
.mvp-row{display:flex;align-items:center;gap:8px;padding:3px 7px;border-radius:7px;background:#fff;border:1px solid var(--line)}
.mvp-row.dentro{opacity:.5;background:#eef0f6}
/* learnset: mosse imparate per livello, nella scheda Animei */
.mv-rows{display:flex;flex-direction:column;gap:4px;margin-top:8px;max-height:320px;overflow-y:auto}
.mv-row{display:flex;align-items:center;gap:8px;padding:4px 8px;border:1px solid var(--line);border-radius:9px;background:#fbfcff}
.mv-lv{width:52px;padding:3px 5px;border:1px solid var(--line);border-radius:7px;font-size:12px;font-weight:800;text-align:center;color:#3f4ce0;font-family:inherit}
.mv-nm{font-size:13px}
.mv-in{flex:1;font-size:11.5px}
.mv-x{border:none;background:transparent;color:#c0c5d2;cursor:pointer;font-size:14px;line-height:1;padding:2px 4px}
.mv-x:hover{color:#e8482b}
.st-legend{display:flex;flex-wrap:wrap;gap:11px;align-items:center;font-size:11.5px;color:var(--muted);margin-top:10px}
.st-pool-btns{display:inline-flex;gap:8px;flex-wrap:wrap}
.st-final{display:flex;align-items:center;gap:8px}
.st-bar{flex:1;height:9px;background:#eef0f5;border-radius:6px;overflow:hidden}
.st-bar span{display:block;height:100%;border-radius:6px}
.st-val{font-size:15px;font-weight:800;min-width:60px;text-align:right}
.st-val small{display:block;font-size:10px;font-weight:600;color:var(--muted)}
.st-tier{font-size:10.5px;line-height:1.15;min-width:82px;text-align:right}
/* confronto / bilanciamento Animei */
.cmp-filters{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center;margin-bottom:14px}
.cmp-filters label{font-size:12px;color:var(--muted);font-weight:700}
.cmp-filters select{margin-left:6px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit}
.cmp-scroll{overflow-x:auto}
.cmp-table{min-width:820px;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cmp-row{display:grid;grid-template-columns:1.7fr repeat(6,1fr) 68px 68px;gap:8px;align-items:center;padding:7px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.cmp-row:last-child{border-bottom:none}
.cmp-row:not(.cmp-head):hover{background:#f5f7fd}
.cmp-head{background:#eef1f8;font-size:11px;font-weight:800;color:#6b7280;cursor:default}
.cmp-name{display:flex;align-items:center;gap:9px;font-size:12px;line-height:1.25}
.cmp-thumb{width:36px;height:36px;flex:0 0 36px;border-radius:8px;background:#eef0f5;overflow:hidden;display:flex;align-items:center;justify-content:center}
.cmp-thumb img{width:100%;height:100%;object-fit:contain}
.cmp-col{text-align:center;font-size:12px}
.cmp-col .cmp-bar{height:6px;background:#eceef4;border-radius:4px;overflow:hidden;margin-bottom:2px}
.cmp-col .cmp-bar i{display:block;height:100%;border-radius:4px}
.cmp-col b{font-size:12px;font-weight:800}
.cmp-legend{width:100%;border-collapse:collapse;font-size:12.5px}
.cmp-legend th,.cmp-legend td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:middle}
.cmp-legend th{background:#eef1f8;font-size:11.5px;font-weight:800}

/* ---- albero progressione segmentato per livello ---- */
.lv-cols{position:absolute;inset:0;z-index:0}
.lv-col{position:absolute;top:0;bottom:0;border-left:1px solid rgba(255,255,255,.06);box-sizing:border-box}
.lv-col.alt{background:rgba(255,255,255,.022)}
.lv-col.scelta{background:rgba(91,108,255,.13)}
.lv-col-h{text-align:center;font-size:11px;color:#7e88a8;font-weight:700;padding:6px 2px;white-space:nowrap;line-height:1.25}
.lv-col-h.big{color:#aeb8e6;font-size:12px}
.lv-col-h small{color:#5fd08a;font-weight:800}
.lv-col-h em{font-size:9px;color:#9db0ff;font-style:normal}
.graph-edges{z-index:1}
.gnode{z-index:2}

/* ---- evoluzioni derivate dalla progressione (scheda creatura) ---- */
.evo-box{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fafbfd;min-height:20px}
.evo-line{font-size:13px;color:var(--muted);margin:2px 0}
.evo-pill{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:2px 9px;margin:3px 5px 3px 0;font-size:13px;color:var(--ink)}
.evo-pill small{color:var(--muted);font-weight:600}

/* ---- matrice tipi ---- */
.mx{border-collapse:collapse;font-size:11px}
.mx-h{padding:3px 5px;font-weight:800;font-size:11px;color:var(--muted);position:sticky}
.mx-c{width:26px;height:24px;text-align:center;border:1px solid var(--line);font-weight:800;color:#444}
.mx-c.eff2{background:#d8f3e0;color:#1c7a43}
.mx-c.eff05{background:#fde2d8;color:#c0492b}
.mx-c.eff0{background:#3a3f4d;color:#fff}
.mx-c.eff1{background:#fff}

/* ---- arena ---- */
.ar-board{display:flex;align-items:center;gap:18px;margin:14px 0;max-width:780px}
.ar-side{flex:1;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.ar-side b{font-size:16px}.ar-side small{color:var(--muted);display:block;margin:2px 0}
.ar-vs{font-weight:900;color:var(--muted)}
.hpbar{height:12px;background:#eef0f5;border-radius:6px;overflow:hidden;margin:6px 0}
.hpbar span{display:block;height:100%;border-radius:6px;transition:width .2s}
.ar-win{font-size:16px;margin:6px 0 12px}
.ar-log{max-width:780px;max-height:340px;overflow:auto;background:#0d1018;color:#cfd6ee;border-radius:12px;padding:12px 16px;font-size:13px;line-height:1.7}
.ar-log b{color:#fff}.ar-log i{color:#9aa3c8}
.eff2t{color:#5fd08a;font-weight:800}.eff05t{color:#e8a07b;font-weight:800}.eff0t{color:#9aa3c8;font-weight:800}

/* ---- battaglia grafica ---- */
.bt-stage{position:relative;background:linear-gradient(#bfe3f5,#dff3df 55%,#cfeccd);border-radius:16px;padding:18px;margin:6px 0 14px;min-height:300px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.bt-row{display:flex;align-items:center;gap:14px}
.bt-foe{justify-content:flex-start}
.bt-you{justify-content:flex-end}
.bt-sprite{width:150px;height:150px;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(0,0,0,.25))}
.bt-noimg{display:flex;align-items:center;justify-content:center;background:#0002;border-radius:12px;font-size:40px;color:#0006}
.bt-panel{background:rgba(255,255,255,.92);border:1px solid #0001;border-radius:12px;padding:9px 13px;min-width:230px;box-shadow:0 3px 10px rgba(0,0,0,.12)}
.bt-name{font-size:16px;font-weight:800;color:#1c2230;display:flex;align-items:center;gap:7px}
.bt-name small{color:#6b7280;font-weight:700}
.bt-types{margin:4px 0}
.bt-hpwrap{display:flex;align-items:center;gap:7px}
.bt-hpwrap>span{font-size:11px;font-weight:800;color:#caa42a}
.bt-hp{flex:1;height:10px;margin:0}
.bt-hpn{color:#4b5365;font-weight:700;font-size:12px}
.ail-badge{background:#7d3c98;color:#fff;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px}
.bt-msgbox{background:#0d1018;color:#eef0f6;border-radius:12px;padding:14px 18px;font-size:15px;min-height:24px;line-height:1.5}
.bt-msgbox b{color:#fff}
/* il ▸ che dice «tocca a te»: compare quando la battaglia aspetta la barra
   spaziatrice prima di far partire l'attacco avversario */
.bt-avanti{display:inline-block;margin-left:10px;color:#ffd23f;font-weight:900;
  animation:btAvanti .8s ease-in-out infinite}
@keyframes btAvanti{0%,100%{opacity:.25;transform:translateX(0)}50%{opacity:1;transform:translateX(4px)}}
/* ===== L'ALLENATORE CHE SI PRESENTA =====
   Sta in piedi al posto dell'Animei, dice la sua, poi esce di scena e al suo
   posto compare la sfera che si apre — come in Pokémon. */
/* L'allenatore sta ESATTAMENTE dove starebbe il suo Animei — in alto a destra —
   e la sua battuta gli esce di fianco, verso il centro. Prima era ancorato in
   basso a destra e finiva sopra le statistiche e i comandi tuoi. */
.bt-intro{position:absolute;inset:0;z-index:9;pointer-events:auto;cursor:pointer;
  transition:transform .5s ease-in,opacity .5s}
.bt-intro.via{transform:translateX(38%);opacity:0}
.bt-intro-fig{position:absolute;right:6%;top:4%;height:46%;max-width:34%;object-fit:contain;
  object-position:top right;filter:drop-shadow(0 10px 24px rgba(0,0,0,.45));
  animation:btIntroEntra .5s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes btIntroEntra{from{transform:translateX(60%);opacity:0}to{transform:none;opacity:1}}
.bt-intro-dice{position:absolute;right:42%;top:14%;max-width:40%;min-width:220px;
  background:rgba(13,16,24,.94);color:#eef0f6;border-radius:14px;
  padding:13px 17px;font-size:15px;line-height:1.5;box-shadow:0 10px 30px rgba(0,0,0,.5)}
.bt-intro-dice b{display:block;color:#ffd23f;font-size:13px;margin-bottom:4px}
.bt-sfera{position:absolute;right:16%;top:26%;z-index:8;font-size:44px;color:#f87171;
  text-shadow:0 4px 14px rgba(0,0,0,.5);animation:btSferaCade .5s cubic-bezier(.3,1.4,.5,1) both}
@keyframes btSferaCade{from{transform:translateY(-90px) rotate(-90deg);opacity:0}to{transform:none;opacity:1}}
.bt-sfera.apre{animation:btSferaApre .42s ease-out forwards}
/* la TUA sfera arriva dalla tua parte: in basso a sinistra, dove sta il tuo Animei */
.bt-sfera-tua{right:auto;left:18%;bottom:16%;color:#60a5fa}
@keyframes btSferaApre{0%{transform:scale(1)}40%{transform:scale(1.5);filter:brightness(2.5)}100%{transform:scale(2.6);opacity:0;filter:brightness(3)}}
.bt-entra{animation:btMonEntra .55s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes btMonEntra{from{transform:scale(.2);opacity:0}to{transform:none;opacity:1}}
.bt-menu{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;max-width:780px}
.bt-menu1{margin-top:10px}
.bt-move{text-align:left;background:#fff;border:1px solid var(--line);border-left:4px solid #888;border-radius:10px;padding:9px 13px;cursor:pointer;display:flex;flex-direction:column;gap:3px;font-family:inherit}
.bt-move:hover{background:#f3f5fb;box-shadow:0 3px 10px rgba(0,0,0,.1)}
.bt-move b{font-size:14px;color:var(--ink)}
.bt-move span{font-size:11.5px;color:var(--muted)}
.xpgain{display:inline-block;color:#7ee2a8;font-size:13.5px;font-weight:600;letter-spacing:.01em}
.xpgain b{color:#b9f6cf;font-weight:800;font-variant-numeric:tabular-nums}
.bt-move-pp{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;color:#6b7280}
.bt-move-pp.low{color:#e0a32a}
.bt-move-sub{display:flex;align-items:center;gap:6px}
.bt-move-out{opacity:.42;cursor:not-allowed;filter:grayscale(.4)}
.bt-move-out .bt-move-pp{color:#e3350d}
.critt{color:#e0a32a;font-weight:800}

/* ---- parata reattiva ---- */
.parry-wrap{display:flex;align-items:center;gap:14px;margin-top:10px;max-width:820px}
.parry-track{position:relative;flex:1;height:30px;background:#0d1018;border-radius:15px;overflow:hidden}
.parry-good{position:absolute;left:32%;width:36%;top:0;bottom:0;background:rgba(224,163,42,.22)}
.parry-zone{position:absolute;left:43%;width:14%;top:0;bottom:0;background:rgba(95,208,138,.42);border-left:2px solid #5fd08a;border-right:2px solid #5fd08a}
.parry-marker{position:absolute;top:-2px;bottom:-2px;width:5px;background:#fff;border-radius:3px;box-shadow:0 0 10px #fff,0 0 4px #fff;animation:parryrun linear forwards}
@keyframes parryrun{from{left:0}to{left:calc(100% - 5px)}}
.parry-btn{height:46px;font-size:15px;min-width:130px}
.bt-parrymsg{background:#1a1030}

/* ---- animazioni battaglia ---- */
.bt-hp span{transition:width .55s ease, background .55s ease}
@keyframes atkYou{0%{transform:translate(0,0)}45%{transform:translate(46px,-34px)}100%{transform:translate(0,0)}}
@keyframes atkFoe{0%{transform:translate(0,0)}45%{transform:translate(-46px,34px)}100%{transform:translate(0,0)}}
.atk-you{animation:atkYou .34s ease}
.atk-foe{animation:atkFoe .34s ease}
@keyframes btHit{0%,100%{transform:translate(0,0)}15%{transform:translate(-7px,0);filter:brightness(2.2)}30%{transform:translate(7px,0);filter:brightness(.4) sepia(1) saturate(4) hue-rotate(-35deg)}45%{transform:translate(-6px,0);filter:brightness(2.2)}60%{transform:translate(6px,0);filter:none}80%{transform:translate(-3px,0)}}
.bt-hit{animation:btHit .5s ease}
@keyframes btFaint{from{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(70px) scale(.85);opacity:0}}
.bt-faint{animation:btFaint .6s ease forwards}

/* ---- battaglia v2: tu a SINISTRA, avversario a DESTRA + UI da gioco ---- */
.bt-foe{justify-content:space-between}
.bt-you{justify-content:space-between}
.bt-stage{position:relative}
.bt-bar{display:flex;gap:12px;align-items:stretch;margin-top:10px}
.bt-bar .bt-msgbox{flex:1;display:flex;align-items:center;min-height:54px}
.bt-bar .bt-menu{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:440px;margin:0;max-width:none}
.bt-bar .bt-menu1{display:flex;align-items:center}
@media(max-width:920px){.bt-bar{flex-direction:column}.bt-bar .bt-menu{width:auto}}
.bt-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.parry-box{pointer-events:auto;background:rgba(13,16,24,.93);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:16px 22px;display:flex;flex-direction:column;gap:12px;align-items:center;box-shadow:0 14px 44px rgba(0,0,0,.55)}
.parry-count{color:#fff;font-weight:800;font-size:15px;letter-spacing:2px}
.parry-count b{color:#5fd08a;letter-spacing:3px}
.parry-box .parry-track{position:relative;width:420px;height:30px;background:#1a1f2e;border-radius:15px;overflow:hidden;transition:box-shadow .1s}
.parry-box .parry-zone{position:absolute;top:0;bottom:0;background:rgba(95,208,138,.5);border-left:2px solid #5fd08a;border-right:2px solid #5fd08a}
.parry-box .parry-marker{position:absolute;top:-2px;bottom:-2px;width:6px;background:#fff;border-radius:3px;box-shadow:0 0 12px #fff,0 0 5px #fff;animation:none;left:0}
.parry-track.pk-ok{box-shadow:0 0 0 3px #5fd08a inset}
.parry-track.pk-bad{box-shadow:0 0 0 3px #e3350d inset}
.parry-btn{height:44px;font-size:15px;min-width:170px}

/* ---- difesa reattiva stile Expedition 33 (anello che si stringe) ---- */
.def-box{pointer-events:auto;background:rgba(13,16,24,.94);border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:16px 24px 22px;display:flex;flex-direction:column;gap:10px;align-items:center;box-shadow:0 16px 50px rgba(0,0,0,.6)}
.def-count{color:#fff;font-weight:800;font-size:14px;letter-spacing:1px}
.def-count b{color:#5fd08a}
.def-arena{position:relative;width:170px;height:170px;display:flex;align-items:center;justify-content:center;border-radius:16px;transition:box-shadow .1s}
.def-arena.def-ok{box-shadow:0 0 0 3px #5fd08a inset}
.def-arena.def-mid{box-shadow:0 0 0 3px #e0a32a inset}
.def-arena.def-bad{box-shadow:0 0 0 3px #e3350d inset}
.def-target{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:86px;height:86px;border-radius:50%;border:3px dashed rgba(95,208,138,.95);background:rgba(95,208,138,.14)}
.def-ring{position:absolute;left:50%;top:50%;width:86px;height:86px;border-radius:50%;border:4px solid #fff;box-shadow:0 0 16px #fff,0 0 6px #fff;transform:translate(-50%,-50%) scale(3.4);animation:defShrink linear forwards}
@keyframes defShrink{from{transform:translate(-50%,-50%) scale(3.4);opacity:.1}70%{opacity:.85}to{transform:translate(-50%,-50%) scale(1);opacity:1}}
.def-feedback{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);font-weight:800;font-size:14px;white-space:nowrap;text-shadow:0 1px 3px #000}
.def-feedback.def-ok{color:#5fd08a}.def-feedback.def-mid{color:#e7b34a}.def-feedback.def-bad{color:#ff6a5a}

/* ---- v3: banner messaggi + bersaglio "sul bordo" + menu senza barra nera ---- */
.bt-banner{position:absolute;top:10px;left:50%;transform:translateX(-50%);max-width:78%;background:rgba(13,16,24,.9);color:#fff;padding:9px 18px;border-radius:12px;font-size:15px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.45);z-index:4;text-align:center}
.bt-banner b{color:#fff}
.bt-bar-menu{justify-content:flex-end}
.bt-bar-menu .bt-menu{width:580px;max-width:none}
/* bersaglio = anello sottile: l'anello bianco va centrato ESATTAMENTE sul bordo verde */
.def-target{background:transparent;border:3px solid #5fd08a;box-shadow:0 0 12px rgba(95,208,138,.55)}
.def-arena{width:180px;height:180px}
.def-box .parry-btn{margin-top:2px}

/* ============ STATISTICHE CHE SALGONO O SCENDONO (stile Pokémon) ============
   Frecce colorate per statistica + colonna di luce + etichetta di cosa è cambiato. */
.stfx-colonna{position:absolute;z-index:7;pointer-events:none;border-radius:50% 50% 46% 46%/60% 60% 40% 40%}
.stfx-colonna.stfx-su{background:linear-gradient(0deg,var(--c),transparent 72%);animation:stColonnaSu 1.15s ease-out forwards}
.stfx-colonna.stfx-giu{background:linear-gradient(180deg,var(--c),transparent 72%);animation:stColonnaGiu 1.15s ease-out forwards}
@keyframes stColonnaSu{0%{opacity:0;transform:scaleY(.55)}25%{opacity:.75}100%{opacity:0;transform:scaleY(1.2) translateY(-16px)}}
@keyframes stColonnaGiu{0%{opacity:0;transform:scaleY(.55)}25%{opacity:.7}100%{opacity:0;transform:scaleY(1.2) translateY(16px)}}
.stfx-freccia{position:absolute;z-index:8;pointer-events:none;font-style:normal;line-height:1;
  color:var(--c);text-shadow:0 0 10px var(--c),0 0 20px var(--c2),0 1px 2px rgba(0,0,0,.7);transform:translate(-50%,-50%)}
.stfx-freccia.stfx-su{animation:stFrecciaSu 1.05s cubic-bezier(.25,.8,.3,1) forwards}
.stfx-freccia.stfx-giu{animation:stFrecciaGiu 1.05s cubic-bezier(.25,.8,.3,1) forwards}
@keyframes stFrecciaSu{0%{opacity:0;transform:translate(-50%,10px) scale(.5)}
  18%{opacity:1;transform:translate(-50%,-6px) scale(1.15)}
  100%{opacity:0;transform:translate(-50%,-120px) scale(.85)}}
@keyframes stFrecciaGiu{0%{opacity:0;transform:translate(-50%,-10px) scale(.5)}
  18%{opacity:1;transform:translate(-50%,6px) scale(1.15)}
  100%{opacity:0;transform:translate(-50%,120px) scale(.85)}}
.stfx-eti{position:absolute;z-index:9;pointer-events:none;transform:translate(-50%,-50%);
  font-weight:900;font-size:14px;letter-spacing:.3px;color:#fff;padding:4px 12px;border-radius:999px;
  background:rgba(10,14,26,.82);border:1.5px solid var(--c);box-shadow:0 0 18px var(--c),0 4px 14px rgba(0,0,0,.5);
  text-shadow:0 0 8px var(--c);animation:stEti 1.25s ease-out forwards;white-space:nowrap}
@keyframes stEti{0%{opacity:0;transform:translate(-50%,-30%) scale(.7)}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}
  70%{opacity:1;transform:translate(-50%,-62%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-85%) scale(.96)}}

/* ============ MOSSE D'ATTACCO: atmosfera di scena (stesso stile del clima) ============
   Sopra le particelle: un velo del colore del tipo che tinge tutta la scena, un lampo,
   un'onda d'urto che si espande e una scossa della scena per i colpi più forti.      */
.mfx-scena{position:absolute;inset:0;pointer-events:none;z-index:5;border-radius:20px;overflow:hidden}
.mfx-tinta{position:absolute;inset:0;animation:mfxTinta .62s ease-out forwards}
@keyframes mfxTinta{0%{opacity:0}22%{opacity:.55}100%{opacity:0}}
.mfx-lampo{position:absolute;inset:0;background:#fff;animation:mfxLampo .3s ease-out forwards}
@keyframes mfxLampo{0%{opacity:0}12%{opacity:.72}100%{opacity:0}}
.mfx-vignetta{position:absolute;inset:0;animation:mfxTinta .7s ease-out forwards}
.mfx-onda{position:absolute;border-radius:50%;border:3px solid var(--c);box-shadow:0 0 24px var(--c),0 0 60px var(--c) inset;
  transform:translate(-50%,-50%);animation:mfxOnda .62s cubic-bezier(.15,.7,.3,1) forwards}
@keyframes mfxOnda{0%{width:20px;height:20px;opacity:.95}100%{width:520px;height:520px;opacity:0}}
.mfx-raggiera{position:absolute;transform:translate(-50%,-50%);pointer-events:none;
  background:conic-gradient(from 0deg,var(--c) 0 4deg,transparent 4deg 26deg,var(--c) 26deg 30deg,transparent 30deg 52deg);
  animation:mfxRaggiera .55s ease-out forwards;mix-blend-mode:screen}
@keyframes mfxRaggiera{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}
  30%{opacity:.85}100%{opacity:0;transform:translate(-50%,-50%) scale(1.9) rotate(70deg)}}
.bt-scossa{animation:btScossa .42s cubic-bezier(.36,.07,.19,.97)}
@keyframes btScossa{10%,90%{transform:translate(-2px,1px)}20%,80%{transform:translate(4px,-2px)}
  30%,50%,70%{transform:translate(-7px,3px)}40%,60%{transform:translate(7px,-3px)}}
.bt-scossa-forte{animation:btScossaForte .55s cubic-bezier(.36,.07,.19,.97)}
@keyframes btScossaForte{10%,90%{transform:translate(-4px,2px)}20%,80%{transform:translate(8px,-4px)}
  30%,50%,70%{transform:translate(-13px,6px)}40%,60%{transform:translate(13px,-6px)}}

/* ================== CLIMA IN SCENA (pioggia, neve, sole, sabbia…) ==================
   Tutto disegnato in CSS: nessuna immagine di terzi. Il livello sta sopra lo sfondo ma
   sotto le creature, così non copre il combattimento.                                */
.bt-clima{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1;border-radius:20px}
.clima-velo{position:absolute;inset:0}
.bt-clima .cp{position:absolute;display:block;pointer-events:none}

/* PIOGGIA: gocce allungate che cadono di sbieco */
.cp-goccia{top:-14%;width:2px;height:26px;border-radius:2px;
  background:linear-gradient(180deg,rgba(180,220,255,0),rgba(190,225,255,.95));
  animation:cadeObliquo linear infinite}
.cp-goccia.forte{width:3px;height:40px;background:linear-gradient(180deg,rgba(200,230,255,0),rgba(220,240,255,1))}
@keyframes cadeObliquo{from{transform:translate3d(0,-40px,0)}to{transform:translate3d(-70px,660px,0)}}

/* GRANDINE: chicchi duri, veloci, quasi verticali */
.cp-chicco{top:-8%;width:7px;height:7px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff,#bfe6ff 60%,#7cc0e8);
  box-shadow:0 0 6px rgba(190,235,255,.9);animation:cadeChicco linear infinite}
@keyframes cadeChicco{from{transform:translate3d(0,-40px,0)}to{transform:translate3d(-22px,660px,0)}}

/* NEVE: fiocchi lenti che ondeggiano scendendo */
.cp-fiocco{top:-6%;border-radius:50%;background:radial-gradient(circle,#fff,rgba(230,245,255,.75));
  box-shadow:0 0 7px rgba(255,255,255,.85);animation:cadeFiocco linear infinite}
@keyframes cadeFiocco{
  0%{transform:translate3d(0,-30px,0) rotate(0)}
  25%{transform:translate3d(26px,160px,0) rotate(90deg)}
  50%{transform:translate3d(-18px,330px,0) rotate(180deg)}
  75%{transform:translate3d(22px,500px,0) rotate(270deg)}
  100%{transform:translate3d(-10px,660px,0) rotate(360deg)}}

/* SABBIA: granelli che sfrecciano in orizzontale + folate */
.cp-granello{left:-4%;width:14px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,rgba(230,200,130,0),rgba(240,215,150,.95));
  animation:sfrecciaSabbia linear infinite}
@keyframes sfrecciaSabbia{from{transform:translate3d(-40px,0,0)}to{transform:translate3d(1100px,-40px,0)}}
.clima-folata{position:absolute;inset:0;background:repeating-linear-gradient(74deg,transparent 0 46px,rgba(220,185,110,.13) 46px 58px);
  animation:folata 2.6s linear infinite}
@keyframes folata{from{transform:translateX(0)}to{transform:translateX(58px)}}

/* FANGO: schizzi che saltano dal basso */
.cp-schizzo{width:9px;height:9px;border-radius:50%;background:radial-gradient(circle,#8a6336,#5b4022);
  opacity:.85;animation:schizza ease-out infinite}
@keyframes schizza{0%{transform:translateY(14px) scale(.5);opacity:0}
  30%{transform:translateY(-26px) scale(1);opacity:.9}
  100%{transform:translateY(16px) scale(.6);opacity:0}}

/* SOLE: disco caldo, raggi che ruotano, aria che tremola */
.clima-sole{position:absolute;top:-70px;right:-60px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,246,200,.95),rgba(255,208,90,.55) 38%,rgba(255,170,50,.12) 62%,transparent 72%);
  animation:pulsaSole 4.2s ease-in-out infinite}
@keyframes pulsaSole{0%,100%{transform:scale(1);opacity:.92}50%{transform:scale(1.07);opacity:1}}
.clima-raggi{position:absolute;top:-190px;right:-180px;width:520px;height:520px;
  background:conic-gradient(from 0deg,rgba(255,225,140,.20) 0 8deg,transparent 8deg 30deg,
    rgba(255,225,140,.14) 30deg 36deg,transparent 36deg 60deg);
  animation:giraRaggi 26s linear infinite;mix-blend-mode:screen}
@keyframes giraRaggi{to{transform:rotate(360deg)}}
.clima-calore{position:absolute;left:0;right:0;bottom:0;height:46%;
  background:linear-gradient(0deg,rgba(255,190,90,.20),transparent);animation:tremolio 3.4s ease-in-out infinite}
@keyframes tremolio{0%,100%{opacity:.55;transform:translateY(0)}50%{opacity:.9;transform:translateY(-5px)}}

/* TERRENI: il campo si illumina dal basso e sprigiona particelle */
.clima-suolo{position:absolute;left:0;right:0;bottom:0;height:34%;animation:suoloPulsa 3.6s ease-in-out infinite}
@keyframes suoloPulsa{0%,100%{opacity:.75}50%{opacity:1}}
.bt-clima .tp{position:absolute;bottom:2%;display:block;pointer-events:none}
.tp-spora{width:7px;height:7px;border-radius:50%;background:var(--c);box-shadow:0 0 9px var(--c);animation:saleLento linear infinite}
.tp-scintilla{width:3px;height:13px;border-radius:2px;background:var(--c);box-shadow:0 0 11px var(--c);animation:saleLento linear infinite}
.tp-rombo{width:9px;height:9px;background:var(--c);transform:rotate(45deg);box-shadow:0 0 11px var(--c);animation:saleLento linear infinite}
.tp-bolla{width:11px;height:11px;border-radius:50%;border:2px solid var(--c);animation:saleLento linear infinite}
@keyframes saleLento{0%{transform:translateY(0) scale(.7);opacity:0}
  15%{opacity:.95}
  100%{transform:translateY(-320px) scale(1.15);opacity:0}}

/* ---- SCELTA ANIMEI con lo sprite (sostituisce la tendina normale) ---- */
.cpk{position:relative;min-width:210px}
.cpk-btn{display:flex;align-items:center;gap:9px;width:100%;height:42px;padding:4px 10px;cursor:pointer;
  background:var(--card,#fff);border:1px solid rgba(120,140,180,.35);border-radius:10px;color:inherit;font-size:14px;text-align:left}
.cpk-btn:hover{border-color:#5b8cff}
.cpk-btn img{width:32px;height:32px;object-fit:contain;flex:none;image-rendering:auto}
.cpk-nome{flex:1;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cpk-freccia{opacity:.55;font-size:12px;flex:none}
.cpk-noimg{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:7px;background:rgba(130,150,190,.18);font-size:14px;opacity:.6}
.cpk-menu{position:absolute;z-index:50;top:calc(100% + 6px);left:0;width:330px;max-width:88vw;
  background:var(--card,#fff);border:1px solid rgba(120,140,180,.35);border-radius:12px;box-shadow:0 18px 48px rgba(10,20,40,.28);overflow:hidden}
.cpk-menu[hidden]{display:none}
.cpk-cerca{width:100%;border:0;border-bottom:1px solid rgba(120,140,180,.25);padding:11px 13px;font-size:14px;background:transparent;color:inherit}
.cpk-cerca:focus{outline:none;background:rgba(91,140,255,.06)}
.cpk-lista{max-height:340px;overflow:auto}
.cpk-riga{display:flex;align-items:center;gap:10px;padding:6px 11px;cursor:pointer;border-bottom:1px solid rgba(120,140,180,.12)}
.cpk-riga:hover{background:rgba(91,140,255,.12)}
.cpk-riga.on{background:rgba(91,140,255,.2)}
.cpk-riga img{width:42px;height:42px;object-fit:contain;flex:none}
.cpk-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.cpk-txt b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cpk-sub{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.cpk-tipo{font-size:10px;font-weight:800;padding:1px 7px;border-radius:999px;letter-spacing:.2px}
.cpk-st{color:#e0a32a;font-size:10.5px;font-style:normal;letter-spacing:1px}
.cpk-vuoto{padding:18px;text-align:center;opacity:.6;font-size:13.5px}

/* ---- BANCO DI PROVA dell'Arena (personalizza abilità/natura/mosse/affezione) ---- */
.ar-banco-ov{position:fixed;inset:0;z-index:60;background:rgba(6,9,16,.72);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px}
.ar-banco{width:min(620px,96vw);max-height:88vh;overflow:auto;background:#111826;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:20px;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.ar-banco-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.ar-banco-top h3{margin:0;font-size:18px}
.ar-banco .field{margin-top:14px}
.ar-banco .field>label{display:block;font-size:12px;color:#9fb0d0;margin-bottom:6px;text-transform:uppercase;letter-spacing:.07em}
.ar-banco select,.ar-banco input[type=text],.ar-banco .ar-mossa{width:100%;background:#0b1220;border:1px solid rgba(255,255,255,.14);border-radius:9px;color:#e8eefc;padding:9px 11px;font-size:14px}
.ar-banco .ar-mossa:focus,.ar-banco select:focus{outline:none;border-color:#5b8cff}
.ar-mosse{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ar-aff{display:flex;align-items:center;gap:12px}
.ar-aff input[type=range]{flex:1}
.ar-aff span{font-size:13px;color:#cfe0ff;white-space:nowrap}
.ar-banco-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
@media(max-width:620px){.ar-mosse{grid-template-columns:1fr}}

/* ---- ABILITÀ: cartellino che compare quando scatta (come in Pokémon) ---- */
.ab-popup{position:absolute;z-index:8;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:12px;
  background:linear-gradient(135deg,rgba(18,24,40,.97),rgba(30,40,66,.97));border:1px solid rgba(140,180,255,.45);
  color:#eaf1ff;font-weight:800;font-size:13.5px;box-shadow:0 10px 28px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.06) inset;
  animation:abPop 2.1s cubic-bezier(.2,.9,.3,1) forwards;white-space:nowrap;pointer-events:none}
.ab-popup .ab-ico{font-size:15px;filter:drop-shadow(0 0 6px currentColor)}
.ab-popup small{display:block;font-weight:600;font-size:11px;color:#9fb6dd;letter-spacing:.2px}
/* col racconto di cosa è successo il cartellino è più largo e va a capo */
.ab-popup.ab-lunga{max-width:300px;white-space:normal;align-items:flex-start}
.ab-popup.ab-lunga small{margin-top:2px;line-height:1.35;color:#cfe0ff;font-weight:500}
.ab-popup.ab-lunga{animation-duration:3s}
.ab-popup.ab-you{left:14px;bottom:120px}
.ab-popup.ab-foe{right:14px;top:110px}
/* MENTRE L'ALLENATORE SI PRESENTA il campo è vuoto: la tua metà (Animei,
   barra e comandi) entra dopo, dalla sfera, e il cartellino dell'abilità
   avversaria si sposta a sinistra — a destra ci sta in piedi lui e prima ci
   finiva dietro, illeggibile. */
.bt-stage.bt-presenta .ab-popup.ab-foe{right:auto;left:14px;top:24px;animation-name:abPop}
.bt-stage.bt-presenta .bt-spr-you,
.bt-stage.bt-presenta .bt-actionbox,
.bt-stage.bt-presenta .bt-dialogo{visibility:hidden}
@keyframes abPop{
  0%{opacity:0;transform:translateX(-14px) scale(.9)}
  12%{opacity:1;transform:translateX(0) scale(1)}
  85%{opacity:1;transform:translateX(0) scale(1)}
  100%{opacity:0;transform:translateX(0) scale(.96)}}
.ab-popup.ab-foe{animation-name:abPopR}
@keyframes abPopR{
  0%{opacity:0;transform:translateX(14px) scale(.9)}
  12%{opacity:1;transform:translateX(0) scale(1)}
  85%{opacity:1;transform:translateX(0) scale(1)}
  100%{opacity:0;transform:translateX(0) scale(.96)}}
/* alone che avvolge la creatura quando la sua abilità si attiva */
@keyframes abAura{0%{opacity:0;transform:scale(.6)}35%{opacity:.95;transform:scale(1.12)}100%{opacity:0;transform:scale(1.45)}}
.ab-aura{position:absolute;border-radius:50%;pointer-events:none;z-index:6;animation:abAura 1.05s ease-out forwards}

/* abilità + natura sotto il nome, per vedere cosa sta agendo in lotta */
.bt-info{font-size:11.5px;color:#9fb0d0;margin:2px 0 3px;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---- MOSSE A DUE TURNI: la creatura sparisce e al turno dopo piomba ---- */
/* vola in alto e sparisce (Volo, Picchiata) */
@keyframes btSu{from{transform:translateY(0) scale(1);opacity:1}60%{opacity:.5}to{transform:translateY(-150px) scale(.5);opacity:0}}
.bt-carica-su{animation:btSu .62s cubic-bezier(.4,0,.6,1) forwards}
/* si scava sottoterra e sparisce (Fossa, Sottoterra) */
@keyframes btGiu{from{transform:translateY(0) scale(1);opacity:1}60%{opacity:.5}to{transform:translateY(60px) scaleY(.15) scaleX(1.25);opacity:0}}
.bt-carica-giu{animation:btGiu .62s cubic-bezier(.4,0,.6,1) forwards}
/* si carica di energia restando in campo (Solarraggio, Raggiometeora, Rocciroboante) */
@keyframes btCarica{0%,100%{filter:none;transform:scale(1)}
  35%{filter:brightness(1.9) drop-shadow(0 0 26px #ffd76a) saturate(1.4);transform:scale(1.07)}
  70%{filter:brightness(1.5) drop-shadow(0 0 18px #ffd76a);transform:scale(1.03)}}
.bt-carica-luce{animation:btCarica 1.1s ease-in-out infinite}
/* il rientro in scena: ricompare e piomba */
@keyframes btRientro{from{transform:translateY(-130px) scale(.55);opacity:0}70%{opacity:1}to{transform:translateY(0) scale(1);opacity:1}}
.bt-rientro{animation:btRientro .5s cubic-bezier(.3,1.4,.5,1)}
/* alone di attesa sotto il posto lasciato vuoto */
.bt-ombra-carica{position:absolute;width:120px;height:22px;border-radius:50%;background:radial-gradient(ellipse,rgba(120,170,255,.45),transparent 70%);animation:btOmbra 1.2s ease-in-out infinite}
@keyframes btOmbra{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.18);opacity:.85}}

/* parata dell'avversario (computer) */
@keyframes btBlock{0%,100%{filter:none;transform:scale(1)}30%{filter:brightness(1.7) drop-shadow(0 0 14px #6fd0ff);transform:scale(1.06)}}
.bt-block{animation:btBlock .45s ease}

/* ---- v4: scena GRANDE, sprite grandi, mosse INGLOBATE nella scena ---- */
.bt-stage{position:relative;min-height:610px;display:flex;flex-direction:column;padding:20px;border-radius:20px;overflow:hidden}
.bt-field{flex:1;display:flex;flex-direction:column;justify-content:space-between;position:relative;min-height:470px}
.bt-sprite{width:210px;height:210px}
.bt-panel{min-width:250px}
.bt-name{font-size:18px}
.bt-banner{font-size:16px;padding:10px 22px}
/* pannello mosse integrato in basso, dentro la scena */
/* ===== LA VIGNETTA DEL TESTO, come nei Pokémon =====
   Fascia bassa, fondo bianco, scritta nera grande: è dove uno guarda per
   capire cosa sta succedendo. Prima il testo stava in un cartellino scuro in
   alto e si perdeva sopra le creature. */
/* Nell'ARENA la scena è impilata (creature, poi vignetta, poi comandi): qui la
   vignetta sta nel flusso e si sistema da sola. Nella battaglia del MONDO tutto
   è posizionato a mano sopra la scena, e allora anche lei va messa in assoluto,
   sopra i comandi — vedi #owBattle più sotto. */
.bt-dialogo{position:absolute;left:2%;right:2%;bottom:10px;z-index:5;
  background:#fff;color:#141821;border:3px solid #2b3450;border-radius:14px;
  padding:14px 22px;min-height:62px;display:flex;align-items:center;
  font-size:19px;line-height:1.45;font-weight:600;letter-spacing:.1px;
  box-shadow:0 6px 20px rgba(0,0,0,.28)}
.bt-dialogo.vuota{visibility:hidden}

/* DUE MISURE, come nei Pokémon:
   • mentre SCEGLI («Cosa fa Croco?») sta piccola in un angolo, e i comandi le
     stanno di fianco;
   • quando partono gli ATTACCHI prende tutta la larghezza, perché lì c'è da
     leggere — e allora la barra PS si alza per farle posto. */
.bt-dialogo.stretta{right:auto;width:min(43%,470px);min-height:56px;font-size:17px}

.bt-dialogo.vuota{visibility:hidden}
.bt-dialogo b{color:#141821;font-weight:900}
/* il riassunto della mossa: sta sotto al nome, più piccolo e grigio, così la
   frase principale resta grande e leggibile */
.bt-riass{display:block;margin-top:5px;font-size:14px;font-weight:600;color:#4a5570;line-height:1.4}
.bt-riass .tbadge{font-size:11px;vertical-align:1px}
.bt-riass b{color:#141821}
.bt-dialogo{flex-direction:column;align-items:flex-start;justify-content:center}
.bt-fetta{color:#4a5570;font-weight:600}
.bt-dialogo .bt-avanti{position:absolute;right:16px;bottom:8px;color:#2b3450;font-size:20px}
@media (max-width:760px){ .bt-dialogo{font-size:16px;padding:12px 16px;min-height:54px} }
.bt-actionbox{margin-top:auto;transform:translateY(calc(-1 * var(--vignetta, 0px)));display:flex;justify-content:center;align-items:center}
.bt-actionbox:empty{display:none}
.bt-actionbox .bt-menu{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;max-width:none;margin:0}
.bt-actionbox .bt-move{background:rgba(255,255,255,.94);border:1px solid rgba(0,0,0,.08);border-left-width:5px;border-radius:13px;padding:11px 15px;box-shadow:0 3px 12px rgba(0,0,0,.14)}
.bt-actionbox .bt-move:hover{background:#fff;transform:translateY(-1px)}
.bt-actionbox .bt-move b{font-size:15px}
.bt-actionbox .bt-move span{font-size:12px}
.bt-actionbox .btn.primary{height:48px;font-size:15px}
@media(max-width:980px){.bt-actionbox .bt-menu{grid-template-columns:1fr 1fr}}

/* ---- menu di lotta stile Pokémon (Lotta/Zaino/Animei/Fuga) ---- */
.bt-mainmenu{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:540px}
.bt-cmd{font-size:18px;font-weight:800;padding:16px 12px;border-radius:14px;cursor:pointer;color:#fff;border:3px solid rgba(255,255,255,.55);box-shadow:0 4px 0 rgba(0,0,0,.28),0 7px 16px rgba(0,0,0,.25);font-family:inherit;letter-spacing:.5px;transition:transform .08s,filter .08s}
.bt-cmd:hover{filter:brightness(1.08)}
.bt-cmd:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.28)}
.bt-cmd-fight{background:#d8453a}
.bt-cmd-bag{background:#e0902a}
.bt-cmd-team{background:#36a857}
.bt-cmd-run{background:#3a7ad8}
.bt-movewrap{display:flex;flex-direction:column;gap:8px;width:100%;align-items:center}
.bt-movewrap .bt-menu{width:100%}
.bt-back{align-self:flex-start;background:rgba(255,255,255,.92);border:1px solid rgba(0,0,0,.1);border-radius:10px;padding:7px 14px;font-weight:700;cursor:pointer;font-family:inherit;color:#1c2230}
.bt-back:hover{background:#fff}

/* ---- v5: layout Pokémon (assoluto) — tuo personaggio grande in basso-sx, menu sotto la vita ---- */
.bt-stage{min-height:540px;position:relative;border-radius:20px;overflow:hidden;padding:0}
.bt-field{display:none}
.bt-pos{position:absolute;z-index:3}
.bt-foe-panel{top:22px;left:22px}
.bt-you-panel{right:22px;bottom:208px}
.bt-spr-foe{position:absolute;top:42px;right:80px;width:185px;height:185px;z-index:2}
.bt-spr-you{position:absolute;left:24px;bottom:-120px;width:350px;height:350px;z-index:2}
.bt-banner{z-index:5}
.bt-overlay{z-index:6}
.bt-actionbox{position:absolute;right:22px;bottom:20px;width:520px;max-width:48%;margin:0;display:block;z-index:4}
.bt-actionbox:empty{display:none}
.bt-actionbox .bt-mainmenu{width:100%;max-width:none}
.bt-actionbox .bt-menu{grid-template-columns:1fr 1fr;width:100%;max-width:none}
.bt-cmd{font-size:17px;padding:15px 10px}

/* ---- v6: avversario più grande + pannello/barra del giocatore più compatti ---- */
.bt-spr-foe{width:300px;height:300px;top:24px;right:40px}
/* pannello del giocatore compatto, barra PS più fina (ottimizza lo spazio per l'avversario) */
.bt-you-panel .bt-panel{min-width:0;width:280px;padding:6px 12px}
.bt-you-panel .bt-name{font-size:14px}
.bt-you-panel .bt-types{margin:2px 0}
.bt-you-panel .bt-hpwrap{gap:5px}
.bt-you-panel .bt-hpwrap>span{font-size:10px}
.bt-you-panel .bt-hp{height:6px}
.bt-you-panel .bt-hpn{font-size:11px}
.bt-you-panel{bottom:200px}
/* anche il pannello avversario un filo più compatto */
.bt-foe-panel .bt-panel{padding:7px 12px}
.bt-foe-panel .bt-hp{height:7px}

/* ---- v7: pannelli MINIMAL e piccoli (solo nome+Lv · barra PS · numeri) ---- */
.bt-foe-panel .bt-panel, .bt-you-panel .bt-panel{width:auto;max-width:230px;min-width:0;padding:7px 12px}
.bt-foe-panel .bt-name, .bt-you-panel .bt-name{font-size:14px;margin-bottom:4px;gap:6px;align-items:center}
.bt-foe-panel .bt-name small, .bt-you-panel .bt-name small{font-size:12px;font-weight:800}
.bt-foe-panel .bt-hpwrap, .bt-you-panel .bt-hpwrap{gap:6px;margin:0}
.bt-foe-panel .bt-hpwrap>span, .bt-you-panel .bt-hpwrap>span{font-size:10px}
.bt-foe-panel .bt-hp, .bt-you-panel .bt-hp{height:7px;flex:1;min-width:80px;margin:0}
.bt-foe-panel .bt-hpn, .bt-you-panel .bt-hpn{font-size:11px;white-space:nowrap;color:#4b5365;font-weight:700;margin:0}

/* ---- v8: mosse più piccole + Indietro in alto + ⓘ info ---- */
.bt-movewrap{display:flex;flex-direction:column;gap:6px;width:100%}
.bt-backrow{display:flex;justify-content:flex-end}
.bt-back{padding:4px 12px;font-size:13px}
.bt-actionbox .bt-menu{gap:8px}
.bt-actionbox .bt-move{position:relative;padding:7px 12px 7px 14px;border-radius:11px}
.bt-actionbox .bt-move b{font-size:13px}
.bt-actionbox .bt-move .bt-move-sub{font-size:11px}
.bt-move-i{position:absolute;top:4px;right:7px;font-size:16px;font-style:normal;color:#9aa0b0;cursor:help;line-height:1}
.bt-move-i:hover{color:#5b6cff}

/* ---- v9: barra PS di Croco nell'area mosse (a fianco di Indietro), più lunga; avversario più grande ---- */
.bt-playerbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;width:100%}
.bt-playerbar .bt-panel{flex:1;min-width:0;max-width:none;padding:8px 14px}
.bt-playerbar .bt-name{font-size:14px;margin-bottom:5px;gap:6px;align-items:center}
.bt-playerbar .bt-name small{font-size:12px;font-weight:800}
.bt-playerbar .bt-hpwrap{gap:7px;margin:0}
.bt-playerbar .bt-hpwrap>span{font-size:10px}
.bt-playerbar .bt-hp{flex:1;height:8px;min-width:175px;margin:0}
.bt-playerbar .bt-hpn{font-size:12px;color:#4b5365;font-weight:700;white-space:nowrap;margin:0}
.bt-playerbar .bt-back{flex:none;white-space:nowrap}
/* avversario un po' più grande e barra più lunga */
.bt-foe-panel .bt-panel{max-width:300px;padding:9px 15px}
.bt-foe-panel .bt-name{font-size:15px}
.bt-foe-panel .bt-name small{font-size:13px}
.bt-foe-panel .bt-hp{min-width:180px;height:8px}
.bt-foe-panel .bt-hpn{font-size:12px}

/* ===== AI BUILDER ===== */
/* ===== AI Builder ===== */
.bx-wrap{max-width:980px}
.bx-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:0 2px 14px rgba(20,30,60,.05)}
.bx-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:14px}
.bx-name{font-size:22px;font-weight:800;color:var(--ink);line-height:1.1}
.bx-stars{color:#f59e0b;font-size:16px;letter-spacing:2px;margin-top:4px}
.bx-role{text-align:right;font-size:13px;color:#4b5365}
.bx-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
@media (max-width:760px){.bx-grid{grid-template-columns:1fr}}
.bx-col h4{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:#6b7280}
.bx-stat{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:13px}
.bx-stat-l{width:84px;flex:none;color:#4b5365;font-weight:600}
.bx-stat-bar{flex:1;height:9px;background:#eef0f5;border-radius:5px;overflow:hidden}
.bx-stat-bar i{display:block;height:100%;border-radius:5px;transition:width .25s}
.bx-stat-v{width:34px;flex:none;text-align:right;font-weight:700;color:var(--ink)}
.bx-move{padding:7px 0;border-bottom:1px dashed var(--line);font-size:14px}
.bx-move:last-child{border-bottom:none}
.bx-abil{background:var(--soft);border-radius:10px;padding:10px 12px}
.bx-abil b{font-size:14px}
.bx-actions{display:flex;gap:10px;margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
/* ===== AI Builder — prompt immagine ===== */
.bx-prompt-card{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.bx-prompt-card h4{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:#6b7280}
.bx-prompt{width:100%;box-sizing:border-box;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.5;color:#1c2230;background:#f7f8fc;border:1px solid var(--line);border-radius:10px;padding:12px 14px;resize:vertical}

/* ===== AI Builder — immagine fronte/retro ===== */
.bx-art-card{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.bx-art-card h4{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:#6b7280}
.bx-art-card input[type=file]{font-size:13px}
.bx-art-pair{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap}
.bx-art-pair figure{margin:0;text-align:center}
.bx-art-pair img{width:240px;height:240px;object-fit:contain;background:repeating-conic-gradient(#eceef4 0% 25%,#fbfcff 0% 50%) 50%/18px 18px;border:1px solid var(--line);border-radius:10px;display:block}
.bx-art-pair figcaption{font-size:12px;color:#6b7280;margin-top:4px;font-weight:700}

/* ===== AI Builder — linea evolutiva multi-stadio ===== */
.bx-stage{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fbfcff}
.bx-stage-h{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:14px}
.bx-stage-h b{font-size:14px}
.bx-line-head{font-weight:800;color:var(--ink);margin-bottom:12px;font-size:15px}
.bx-card{margin-bottom:14px}

/* ===== AI Builder — statistiche editabili + lore ===== */
.bx-stat-in{width:56px;flex:none;font-size:13px;font-weight:700;text-align:right;border:1px solid var(--line);border-radius:6px;padding:2px 6px;background:#fff;color:var(--ink)}
.bx-lore{width:100%;box-sizing:border-box;font-size:13px;line-height:1.5;border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical;background:#fff;color:var(--ink);font-family:inherit}

/* ===== AI Builder — selettore "stat migliori" ===== */
.bx-statpick{display:flex;flex-wrap:wrap;gap:6px}
.bx-chip{font-size:12px;font-weight:700;padding:4px 11px;border-radius:14px;border:1px solid var(--line);background:#fff;color:#6b7280;cursor:pointer;transition:all .12s}
.bx-chip:hover{border-color:var(--accent)}
.bx-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}

/* riordino Animei (drag & drop) */
.ccard[draggable="true"]{cursor:grab}
.ccard.dragging{opacity:.4;transform:none;cursor:grabbing}
/* indicatore drop come box-shadow INSET: non viene tagliato da overflow:hidden */
.ccard.drop-before{box-shadow:inset 5px 0 0 0 #5b6cff,0 0 10px rgba(91,108,255,.55)}
.ccard.drop-after{box-shadow:inset -5px 0 0 0 #5b6cff,0 0 10px rgba(91,108,255,.55)}

/* ===== MONDO: editor mappe + esplorazione ===== */
.mondo{display:flex;flex-direction:column;gap:10px}
.w-intro{background:#141a28;border:1px solid #232c40;border-radius:10px;padding:12px 14px;line-height:1.7;font-size:14px;color:#c7cde0}
.mondo-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#10131d;border:1px solid #232c40;border-radius:10px;padding:8px 10px}
.mondo-bar .w-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#aeb4c6}
.mondo-bar select,.mondo-bar input{background:#1a2030;border:1px solid #2c3650;color:#e8ebf4;border-radius:7px;padding:5px 8px;font-size:13px}
.w-file{display:inline-flex;align-items:center;gap:6px;background:#2f3ce0;color:#fff;font-weight:600;font-size:13px;padding:7px 12px;border-radius:8px;cursor:pointer}
.w-file:hover{background:#3a47f0}
.w-div{width:1px;height:22px;background:#2c3650;margin:0 2px}
.w-chip{display:inline-flex;align-items:center;gap:6px;background:#1d2740;border:1px solid #2c3650;color:#9fb0e0;font-size:12px;font-weight:600;padding:6px 10px;border-radius:8px}
.mondo-tools{display:flex;flex-wrap:wrap;gap:6px}
.w-tool{background:#1a2030;border:1px solid #2c3650;color:#cfd4e4;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:600;cursor:pointer}
.w-tool:hover{border-color:#4654c0}
.w-tool.on{background:#2f3ce0;border-color:#2f3ce0;color:#fff}
.mondo-main{display:flex;gap:10px;align-items:flex-start}
.mondo-pal{flex:0 0 auto;width:260px;max-height:620px;overflow:auto;background:#0d1119;border:1px solid #232c40;border-radius:10px;padding:6px}
.mondo-pal #wPal{display:block;cursor:pointer;image-rendering:pixelated}
.w-palempty{color:#69708a;font-size:13px;text-align:center;padding:40px 10px;line-height:1.6}
.w-prefabs{display:flex;flex-direction:column;gap:8px;padding:4px}
.w-prefab{display:flex;flex-direction:column;align-items:center;gap:5px;background:#141a28;border:1px solid #2c3650;border-radius:10px;padding:8px 6px;cursor:pointer}
.w-prefab:hover{border-color:#4654c0}
.w-prefab.on{border-color:#2f3ce0;box-shadow:0 0 0 2px rgba(47,60,224,.4)}
.w-prefab canvas{image-rendering:pixelated;max-width:100%}
.w-prefab span{font-size:12px;color:#cfd4e4;font-weight:600}
.mondo-canvaswrap{flex:1;max-height:620px;overflow:auto;background:#0a0d14;border:1px solid #232c40;border-radius:10px;padding:6px}
.mondo-canvaswrap #wCanvas{display:block;cursor:crosshair;image-rendering:pixelated}

/* NB: il blur va su ::before (non su .wplay-ov) altrimenti un backdrop-filter sull'antenato
   impedisce alle tendine native dei <select> di aprirsi in Chrome (il click mette a fuoco ma non apre). */
.wplay-ov{position:fixed;inset:0;z-index:99998;display:flex;align-items:center;justify-content:center}
.wplay-ov::before{content:"";position:absolute;inset:0;background:rgba(8,10,18,.92);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:none;z-index:-1}

/* ===== ZAINO stile Pokémon (tasche a schede) ===== */
.bag-tabs{display:flex;gap:6px;padding:12px 16px 0;flex-wrap:wrap}
.bag-tab{flex:1 1 0;min-width:68px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 6px;border:1px solid #2b3450;border-bottom:none;border-radius:12px 12px 0 0;background:#141a2b;color:#8b93b3;cursor:pointer;position:relative;transition:background .12s,color .12s}
.bag-tab:hover{background:#1a2136;color:#cfd4e4}
.bag-tab-ic{font-size:21px;line-height:1}
.bag-tab-lb{font-size:10.5px;font-weight:700;white-space:nowrap}
.bag-tab.on{background:linear-gradient(#1d2643,#141a2b);color:#fff;border-color:var(--pc);box-shadow:inset 0 3px 0 var(--pc)}
.bag-tab-n{position:absolute;top:4px;right:7px;background:var(--pc);color:#0b0e17;font-size:10px;font-weight:800;border-radius:9px;padding:0 5px;min-width:16px;text-align:center}
.bag-items{max-height:60vh;overflow:auto;padding:14px 16px 16px;border-top:1px solid #2b3450;display:flex;flex-direction:column;gap:8px}
.bag-item{display:flex;align-items:center;gap:12px;background:#141a2b;border:1px solid #242c44;border-radius:12px;padding:9px 12px}
.bag-item:hover{border-color:#33406a}
.bag-ic{flex:none;width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:21px;border:1px solid}
.bag-item-main{flex:1;min-width:0}
.bag-item-h{color:#e9ecf5;font-size:14.5px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.bag-mv{background:#7c3aed;color:#fff;font-size:10.5px;font-weight:700;border-radius:6px;padding:1px 7px}
.bag-item-d{color:#8b93b3;font-size:12px;line-height:1.4;margin-top:2px}
.bag-qty{flex:none;color:#e6e9f0;font-weight:800;font-size:14px;background:#0f1320;border-radius:8px;padding:3px 10px}
.bag-teach{flex:none;background:#2a2150;border:1px solid #7c3aed;color:#c4b5fd;font-weight:700;font-size:12px;border-radius:8px;padding:7px 11px;cursor:pointer}
.bag-teach:hover{background:#37275f}
.bag-empty{text-align:center;padding:36px 10px;font-size:40px;color:#39415f}
.bag-empty span{display:block;font-size:13px;color:#8b93b3;margin-top:10px;font-weight:600}
/* ===== MENU DI GIOCO moderno (stile Pokémon, si apre con Z/M/Invio) — lista con cursore ▶ ===== */
.gmenu{width:300px;max-width:90vw;margin-right:min(6vw,70px);background:linear-gradient(165deg,#1c2544,#111629);border:1px solid #313d63;border-radius:20px;box-shadow:0 26px 64px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06);padding:14px 12px;display:flex;flex-direction:column;gap:4px}
.gmenu-title{font-size:12px;font-weight:800;letter-spacing:4px;color:#7f88a8;padding:4px 12px 10px;text-align:center}
.gmenu-item{display:flex;align-items:center;gap:11px;width:100%;border:none;background:transparent;color:#cdd3e6;font-size:16px;font-weight:700;padding:12px 14px;border-radius:13px;cursor:pointer;text-align:left;position:relative;transition:background .12s,color .12s}
.gmenu-cur{position:absolute;left:0;opacity:0;color:#6aa1ff;font-size:12px;transition:opacity .12s,left .12s}
.gmenu-ic{font-size:21px;width:28px;text-align:center;flex:none;transition:transform .12s}
.gmenu-lb{flex:1}
.gmenu-item:hover{background:#212c4d;color:#fff}
.gmenu-item.on{background:linear-gradient(90deg,rgba(90,140,255,.30),rgba(90,140,255,.05));color:#fff;box-shadow:inset 0 0 0 1px rgba(120,160,255,.55)}
.gmenu-item.on .gmenu-cur{opacity:1;left:5px}
.gmenu-item.on .gmenu-ic{transform:scale(1.14)}
.gmenu-hint{color:#6b7398;font-size:11px;text-align:center;padding:9px 8px 3px}
.gmenu-money{text-align:center;color:#fbbf24;font-weight:800;font-size:14px;padding:0 12px 8px;margin-top:-4px}

/* ===== SCHEDA ANIMEI (riassunto stile Pokémon): grafica | statistiche + mosse + ricordamosse ===== */
.asum-card{display:flex;width:800px;max-width:96vw;max-height:88vh;background:#0f1524;border:1px solid #2b3450;border-radius:20px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.6);position:relative}
.asum-close{position:absolute;top:12px;right:12px;z-index:2}
.asum-side{flex:0 0 268px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:26px 18px;text-align:center;position:relative}
.asum-side::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(10,14,24,.5));pointer-events:none}
.asum-num{color:rgba(255,255,255,.9);font-weight:800;font-size:13px;letter-spacing:1px;z-index:1}
.asum-art{width:190px;height:190px;display:flex;align-items:center;justify-content:center;z-index:1;filter:drop-shadow(0 8px 14px rgba(0,0,0,.35))}
.asum-art img,.asum-art canvas{max-width:100%;max-height:100%}
.asum-nm{font-size:23px;font-weight:800;color:#fff;z-index:1;text-shadow:0 2px 6px rgba(0,0,0,.45)}
.asum-types{display:flex;gap:6px;z-index:1}
.asum-body{flex:1;min-width:0;overflow:auto;padding:20px 22px 22px}
.asum-sec{font-size:13px;font-weight:800;color:#c4b5fd;letter-spacing:.4px;text-transform:uppercase;margin:16px 0 9px}
.asum-sec:first-child{margin-top:2px}
.asum-sec small{font-weight:600;color:#8b93b3;text-transform:none;letter-spacing:0}
.asum-stat{display:grid;grid-template-columns:96px 42px 1fr;align-items:center;gap:10px;margin-bottom:7px}
.asum-stat-l{color:#9fb0d0;font-size:13px;font-weight:700}
.asum-stat-v{color:#e6e9f0;font-size:14px;font-weight:800;text-align:right}
.asum-bar{height:9px;background:#0b0e17;border-radius:6px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.5)}
.asum-bar i{display:block;height:100%;border-radius:6px;transition:width .35s}
.asum-total{color:#8b93b3;font-size:13px;text-align:right;margin-top:4px}
.asum-total b{color:#e6e9f0;font-size:15px}
.asum-moves{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.asum-move{background:#151b2c;border:1px solid #242c44;border-left:4px solid #666;border-radius:10px;padding:8px 11px}
.asum-move-empty{color:#5a6485;display:flex;align-items:center;justify-content:center;font-size:13px;border-left-color:#242c44}
.asum-move-h{display:flex;align-items:center;justify-content:space-between;color:#e9ecf5;font-size:14px}
.asum-move-s{color:#8b93b3;font-size:11.5px;margin-top:3px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.asum-x{background:none;border:none;color:#f87171;cursor:pointer;font-size:12px;padding:0 2px}
.asum-lrns{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow:auto;padding-right:4px}
.asum-lrn{display:flex;align-items:center;gap:10px;background:#141a2b;border:1px solid #242c44;border-radius:10px;padding:7px 11px}
.asum-lv{flex:none;background:#0f1320;color:#9fb0d0;font-size:11px;font-weight:800;border-radius:7px;padding:3px 7px;min-width:40px;text-align:center}
.asum-lrn-m{flex:1;min-width:0}
.asum-lrn-m>b{color:#e9ecf5;font-size:14px}
.asum-lrn-s{color:#8b93b3;font-size:11.5px;margin-top:2px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.asum-learn{flex:none;background:#173a2a;border:1px solid #34d399;color:#6ee7b7;font-weight:700;font-size:12px;border-radius:8px;padding:6px 11px;cursor:pointer}
.asum-learn:hover{background:#1c4d37}
.asum-known{flex:none;color:#34d399;font-weight:800;font-size:15px;padding:0 8px}
.asum-empty{color:#8b93b3;padding:14px;text-align:center;font-size:13px}
@media(max-width:640px){.asum-card{flex-direction:column;max-height:92vh}.asum-side{flex:none;padding:16px}.asum-art{width:130px;height:130px}.asum-nm{font-size:20px}.asum-moves{grid-template-columns:1fr}.asum-stat{grid-template-columns:84px 38px 1fr}}

/* ===== ANIMAZIONE CATTURA (la sfera vola, risucchia, oscilla) ===== */
.catch-ball{position:absolute;border-radius:50%;z-index:60;transform-origin:50% 50%;background:linear-gradient(180deg,var(--bc,#e23b34) 0 43%,#141414 43% 57%,#f2f2f2 57% 100%);box-shadow:0 3px 7px rgba(0,0,0,.45),inset 0 0 0 2px rgba(0,0,0,.22)}
.catch-ball::after{content:"";position:absolute;left:50%;top:50%;width:36%;height:36%;border-radius:50%;background:#fff;border:2px solid #141414;transform:translate(-50%,-50%)}
.catch-ball.wobble{animation:catchWob .52s ease-in-out}
@keyframes catchWob{0%,100%{transform:rotate(0)}22%{transform:rotate(-17deg)}66%{transform:rotate(17deg)}}
.catch-ball.caught{filter:drop-shadow(0 0 9px #34d399);transition:filter .3s}
.catch-ball.burst{animation:catchBurst .3s ease-out forwards}
@keyframes catchBurst{to{transform:scale(2);opacity:0}}
.bt-suck{transition:opacity .28s ease-in!important;opacity:0!important}

/* ===== NEGOZIO / MARKET ===== */
.shop-money{background:#0f1320;border:1px solid #2f3a5e;border-radius:10px;padding:6px 12px;font-weight:800;color:#fbbf24;font-size:15px}
.shop-item{display:flex;align-items:center;gap:12px;background:#141a2b;border:1px solid #242c44;border-radius:12px;padding:9px 12px;margin-bottom:7px}
.shop-item-ic{flex:none;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;background:#1b2236;border:1px solid #2f3a5e}
.shop-item-m{flex:1;min-width:0}
.shop-item-m>b{color:#e9ecf5;font-size:14.5px}
.shop-item-m>div{color:#8b93b3;font-size:11.5px;margin-top:2px}
.shop-price{flex:none;color:#fbbf24;font-weight:800;font-size:14px;min-width:64px;text-align:right}
.shop-tabs{display:flex;gap:8px;margin-bottom:12px}
.shop-tab{flex:1;background:#1b2236;border:1px solid #2f3a5e;color:#c7cfe6;border-radius:10px;padding:9px 12px;font-size:14px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s}
.shop-tab:hover{background:#26304a}
.shop-tab.on{background:linear-gradient(90deg,#5b6cff,#7c5cff);color:#fff;border-color:transparent}
.shop-buy.sell{background:#3a2f14;border-color:#fbbf24;color:#fcd669}
.shop-buy.sell:hover{background:#4a3c1a}
.shop-buy{flex:none;background:#173a2a;border:1px solid #34d399;color:#6ee7b7;font-weight:700;font-size:12px;border-radius:8px;padding:7px 12px;cursor:pointer}
.shop-buy:hover{background:#1c4d37}
.shop-buy:disabled{opacity:.4;cursor:not-allowed;background:#141a2b;border-color:#333;color:#666}

/* ===== BOX / DEPOSITO ===== */
.box-wrap{display:flex;gap:12px;padding:14px 16px 16px}
.box-col{flex:1;min-width:0;background:#0d1119;border:1px solid #242c44;border-radius:12px;padding:10px;display:flex;flex-direction:column}
.box-h{font-weight:800;color:#cfd4e4;font-size:13px;padding:2px 4px 10px;letter-spacing:.3px}
.box-list{display:flex;flex-direction:column;gap:7px;max-height:56vh;overflow:auto;padding-right:2px}
.box-mon{display:flex;align-items:center;gap:8px;background:#141a2b;border:1px solid #242c44;border-radius:10px;padding:6px 8px}
.box-acts{flex:none;display:flex;flex-direction:column;gap:4px}
.box-acts .btn.sm{padding:4px 9px;font-size:11.5px;white-space:nowrap}
@media(max-width:680px){.box-wrap{flex-direction:column}}
.wplay-card{display:flex;flex-direction:column;align-items:center;gap:12px;position:relative}
.wplay-top{color:#cfd4e4;font-size:14px;text-align:center}

/* Editor Mondo 3D (stile PDSMS) */
.m3-wrap{display:flex;flex-direction:column;gap:10px;background:#141a2b;border:1px solid #263154;border-radius:16px;padding:14px;box-shadow:0 30px 80px rgba(0,0,0,.6);max-width:96vw}
.m3-top{color:#cfd4e4;font-size:13px;text-align:center;max-width:920px}
.m3-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.m3-tools{display:inline-flex;gap:6px;flex-wrap:wrap}
.m3-tool{background:#1f2740;color:#c7cfe6;border:1px solid #2f3a5e;border-radius:9px;padding:7px 12px;font-size:13px;font-weight:700;cursor:pointer}
.m3-tool:hover{background:#273350}
.m3-tool.on{background:linear-gradient(90deg,#7c5cff,#5b6cff);color:#fff;border-color:transparent}
.m3-main{display:flex;gap:10px;align-items:flex-start}
.m3-pal{display:flex;flex-direction:column;gap:6px;max-height:560px;overflow:auto;padding-right:2px}
.m3-tile{display:flex;flex-direction:column;align-items:center;gap:2px;background:#1b2236;border:2px solid #2f3a5e;border-radius:10px;padding:5px;cursor:pointer;width:68px}
.m3-tile canvas{image-rendering:pixelated;border-radius:4px}
.m3-tile span{font-size:10px;color:#aab3d0}
.m3-tile.on{border-color:#7c5cff;background:#26203f}
#m3canvas{border-radius:12px;background:#8ec7ff;box-shadow:0 12px 40px rgba(0,0,0,.5);cursor:crosshair;touch-action:none}
.m3-bar .btn.sm{padding:6px 12px;font-size:13px}

/* ===== Menù "nice": card modale curata + picker Animei coi colori-tipo ===== */
.nice-card{background:#141a2b;border:1px solid #2b3450;border-radius:16px;box-shadow:0 30px 90px rgba(0,0,0,.6);overflow:hidden;display:flex;flex-direction:column;max-height:90vh}
.nice-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;font-weight:800;font-size:16px;color:#fff;background:linear-gradient(90deg,rgba(91,108,255,.18),rgba(192,38,211,.18));border-bottom:1px solid #2b3450;flex:none}
.nice-x{width:30px;height:30px;border-radius:8px;border:1px solid #3a425e;background:#1f2740;color:#cfd4e4;cursor:pointer;font-size:14px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.nice-x:hover{background:#2a3350;color:#fff}
.nice-x.sm{width:26px;height:26px;font-size:12px}
.nice-input{padding:10px 13px;border-radius:10px;border:1px solid #2f3a5e;background:#0f1320;color:#e6e9f0;font-size:14px;outline:none}
.nice-input:focus{border-color:#5b6cff}
.nice-sel{padding:8px 10px;border-radius:9px;border:1px solid #2f3a5e;background:#1f2740;color:#e6e9f0;font-size:13px;font-weight:600;cursor:pointer}
.nice-empty{color:#8b93b3;font-size:14px;text-align:center;padding:26px;line-height:1.6}
.an-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:10px;padding:0 16px 16px;flex:1 1 auto;min-height:0;overflow-y:auto}
.an-card{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:12px;border:2px solid #ccc;cursor:pointer;text-align:left;color:#1c2230;transition:transform .08s,box-shadow .08s;min-height:66px}
.an-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.4)}
.an-card-txt{font-size:14px;font-weight:800;line-height:1.25;min-width:0;flex:1}
.an-card-txt small{display:block;font-weight:600;color:rgba(0,0,0,.5);font-size:11px;margin-top:1px}
/* Scelta multipla: si spegne tutto un po' e si accende solo quello che hai
   scelto, così a colpo d'occhio vedi cosa stai portando via. */
.an-grid.multi .an-card{opacity:.5;filter:saturate(.6) brightness(.86);transition:opacity .12s,filter .12s,transform .08s,box-shadow .08s}
.an-grid.multi .an-card:hover{opacity:.9;filter:none}
.an-grid.multi .an-card.scelto{opacity:1;filter:none}
.an-card.scelto{box-shadow:0 0 0 3px rgba(18,184,134,.45),0 8px 26px rgba(18,184,134,.22);transform:translateY(-2px)}
.an-card.gia,.an-grid.multi .an-card.gia{opacity:.3;cursor:not-allowed;filter:grayscale(.75)}
.an-card.gia:hover{transform:none;box-shadow:none}
.an-ok{flex:none;width:26px;height:26px;border-radius:50%;background:#12b886;color:#fff;font-size:15px;font-weight:900;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.an-chip{display:flex;align-items:center;gap:9px;padding:4px 12px 4px 5px;border-radius:11px;border:2px solid #ccc;cursor:pointer;color:#1c2230;flex:1;min-width:0;min-height:54px}
.an-chip:hover{filter:brightness(1.05)}
.an-chip-txt{font-size:14px;font-weight:800;line-height:1.15;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.an-chip-txt b{display:block;font-size:11px;color:rgba(0,0,0,.55);font-weight:800}
.wmap-row{display:flex;gap:9px;align-items:center;background:#1b2236;border:1px solid #2f3a5e;border-radius:12px;padding:7px}
.wmap-lv{color:#9fb0d0;font-size:12px;display:flex;align-items:center;gap:5px;white-space:nowrap}
.wmap-lv input{width:48px;padding:6px;border-radius:7px;border:1px solid #2f3a5e;background:#0f1320;color:#e6e9f0;text-align:center;font-size:13px}
/* righe che arrivano dalla cartella: rarità e livelli si leggono, non si toccano */
.wmap-eredit{color:#9fb0d0;font-size:12px;padding:6px 10px;border:1px dashed #2f3a5e;border-radius:8px;white-space:nowrap}
.wmap-row.spento{opacity:.4;filter:grayscale(.7)}
.wmap-row.spento .an-chip-txt{text-decoration:line-through}
#wPlayCanvas{image-rendering:pixelated;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.6);background:#0a0d14;max-width:min(720px,92vw);height:auto}
.wplay-pad{display:flex;align-items:center;gap:24px}
.wpad-grid{display:flex;flex-direction:column;align-items:center;gap:4px}
.wpad-mid{display:flex;gap:34px}
.wpad-grid button{width:46px;height:40px;font-size:18px;background:#1a2030;border:1px solid #2c3650;color:#e8ebf4;border-radius:8px;cursor:pointer}
.wpad-grid button:hover{background:#26304a}
.wplay-enc{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(6,8,14,.6)}
/* ⚠ QUESTA RIGA E' IL MOTIVO PER CUI IL GIOCO SI VEDEVA GIUSTO.
   Andrea: «si vede come se su RPG Maker metti il filtro terzo livello» — la
   mappa era sempre spenta, verde militare invece che verde prato. Non era la
   mappa e non era il ciclo giorno/notte: era QUESTA scatola. E' il riquadro
   dell'incontro (e dei dialoghi), nasce con l'attributo `hidden`, ma un
   `display:flex` scritto nel foglio di stile BATTE il `display:none` che il
   browser da' da solo agli elementi hidden. Risultato: la scatola era li',
   vuota e invisibile, ma il suo fondo `rgba(6,8,14,.6)` restava steso su tutta
   l'area di gioco per sempre — un velo nero al 60% su ogni fotogramma.
   Misurato: l'erba, che nel PNG della mappa e' (135,200,131), arrivava allo
   schermo come (58,85,60). Meno della meta'.
   Vale per QUALUNQUE classe che dichiari un `display` e poi venga nascosta con
   `hidden`: qui accanto `.wplay-run[hidden]` ha la stessa riga per lo stesso
   motivo. Se aggiungi una scatola cosi', aggiungi anche la sua riga. */
.wplay-enc[hidden]{display:none}
.wenc-card{background:#141a28;border:1px solid #2c3650;border-radius:14px;padding:20px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 24px 70px rgba(0,0,0,.7);max-width:360px}
.wenc-card img{width:140px;height:140px;object-fit:contain;image-rendering:auto}
.wenc-txt{color:#e8ebf4;font-size:16px;text-align:center;line-height:1.5}
.wenc-btns{display:flex;gap:10px}
/* fumetto di dialogo NPC (persone negli interni) — stile "dialog box" in basso */
.wtalk-card{align-self:flex-end;margin-bottom:16px;display:flex;align-items:center;gap:14px;background:#141a28;border:2px solid #3a4668;border-radius:14px;padding:14px 16px;width:min(88%,520px);box-shadow:0 18px 50px rgba(0,0,0,.7)}
.wtalk-emoji{font-size:44px;line-height:1;flex:0 0 auto;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}
.wtalk-body{flex:1;min-width:0}
.wtalk-name{color:#ffd23f;font-weight:800;font-size:14px;margin-bottom:3px}
.wtalk-line{color:#eef1f7;font-size:16px;line-height:1.45}
.wtalk-ok{flex:0 0 auto;align-self:flex-end}
/* risposte a scelta multipla del giocatore (dialoghi scriptati: Professore ecc.) */
.wtalk-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.wtalk-choice{background:#1b2236;border:1px solid #3a4668;color:#eef1f7;border-radius:11px;padding:9px 15px;font-weight:700;font-size:14.5px;cursor:pointer;transition:background .12s,transform .08s,border-color .12s}
.wtalk-choice:hover{background:#28324f;transform:translateY(-1px);border-color:#6a86ff}
.wtalk-card.wtalk-ask{align-items:flex-start}
.wtalk-card{cursor:pointer}
.wtalk-line{min-height:1.45em}
/* CHI PARLA STA IN PIEDI A SINISTRA, grande quanto mezzo schermo — come nei
   giochi in cui i personaggi ti parlano guardandoti in faccia. Non e' dentro la
   vignetta: e' agganciato allo schermo (`position:absolute` dentro
   `.wplay-enc`, che copre tutta l'area di gioco), quindi non tocca il fumetto e
   il fumetto non lo stringe. Si esce dal flusso apposta: dentro la vignetta,
   per quanto lo si allargasse, restava alto quanto la riga di testo.
   La larghezza dell'immagine e' 116% del riquadro: si taglia appena ai lati e
   si vede dalla testa a sotto la vita, qualunque proporzione abbia il disegno. */
.wtalk-busto{position:absolute;left:1.5%;bottom:0;width:30%;min-width:180px;max-width:380px;
  height:68%;overflow:hidden;pointer-events:none;
  border:2px solid #3a4668;border-bottom:0;border-radius:20px 20px 0 0;
  background:linear-gradient(180deg,rgba(120,142,205,.18),rgba(10,14,26,.46));
  box-shadow:0 -8px 44px rgba(0,0,0,.55)}
.wtalk-busto img{position:absolute;left:50%;top:-2%;width:116%;height:auto;max-width:none;
  transform:translateX(-50%);image-rendering:auto;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.5))}
/* ⚠ IL FUMETTO SI SPOSTA DI LATO QUANDO C'E' LA FIGURA. Il busto e' agganciato
   allo schermo e sta a sinistra; la vignetta, larga fino a 520px e centrata,
   ci finiva sotto — con la faccia di chi parla stesa sopra il nome e le prime
   parole della riga, illeggibili (e sopra il primo pulsante, nelle domande a
   scelta). Il busto non ruba i clic (`pointer-events:none`), quindi era un
   danno di sola lettura: adesso la vignetta gli lascia il posto e si legge
   tutto. */
.wtalk-card:has(.wtalk-busto){margin-left:auto;margin-right:2%;width:min(66%,520px)}
/* schermo stretto: la figura si fa piu' bassa, se no copre tutto il gioco */
@media (max-width:760px){
  .wtalk-busto{width:36%;min-width:120px;height:48%;border-radius:14px 14px 0 0}
  .wtalk-card:has(.wtalk-busto){width:min(60%,420px);margin-right:1.5%}
}
.wtalk-face{position:relative;overflow:hidden;flex:0 0 auto;border-radius:8px;background:rgba(0,0,0,.18);image-rendering:pixelated;align-self:center}
.wtalk-face img{position:absolute;max-width:none;image-rendering:pixelated}
/* il ritratto di chi parla: lo si guarda in faccia (zoom sulla testa) */
.wtalk-rit{position:relative;flex:0 0 auto;border-radius:10px;overflow:hidden;align-self:center;background:rgba(0,0,0,.22);
  border:1px solid rgba(255,255,255,.14);box-shadow:0 3px 10px rgba(0,0,0,.4)}
/* picker oggetti: riga + «?» che spiega */
.item-row{border-bottom:1px solid #212840}
.item-row-top{display:flex;gap:8px;align-items:center;padding:2px 0}
.item-pick{flex:1;min-width:0;text-align:left;background:transparent;border:0;color:#e8ebf2;padding:7px 9px;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:1px;font:inherit}
.item-pick:hover{background:#1b2236}
.item-pick .hint{font-size:11px;color:#8b93b3}
.item-q{flex:0 0 auto;width:28px;height:28px;border-radius:50%;border:1px solid #3a4668;background:#141a28;color:#c4b5fd;font-weight:800;font-size:15px;cursor:pointer;line-height:1}
.item-q:hover{background:#2a3350;color:#fff}
.item-desc{font-size:12.5px;color:#c2cbe4;background:#12172a;border-left:3px solid #7c3aed;margin:0 4px 7px;padding:7px 10px;border-radius:0 8px 8px 0;line-height:1.45}
/* schede-tasca del selettore oggetti (filtro per tipo, stile tasche Pokémon) */
.item-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 16px 12px}
.item-tab{flex:0 0 auto;background:#1b2236;border:1px solid #2f3a5e;color:#c7cfe6;border-radius:9px;padding:6px 12px;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}
.item-tab:hover{background:#26304a}
.item-tab.on{background:linear-gradient(90deg,#5b6cff,#7c5cff);color:#fff;border-color:transparent}

/* selettore mappe del Mondo */
/* i SELETTORI (figurine, mappe) devono stare sopra a chi li apre: la scheda
   di un personaggio sta a 100060, e con z-index 9000 il selettore si apriva
   DIETRO — sembrava che il pulsante non funzionasse. */
.wmp-ov{position:fixed;inset:0;z-index:100080;background:rgba(10,12,20,.72);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.wmp-panel{background:var(--card,#fff);border-radius:16px;width:min(1040px,94vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.5);overflow:hidden}
.wmp-top{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line,#e4e7ee);font-weight:800;font-size:16px}
.wmp-top small{font-weight:500;color:#8a90a0}
.wmp-body{padding:8px 18px 18px;overflow:auto}
.wmp-cat{margin:16px 2px 8px;font-size:14px;color:#3f4ce0}
.wmp-cat small{color:#9aa0ac;font-weight:500}
.wmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.wmp-card{display:flex;flex-direction:column;gap:6px;padding:6px;border:1px solid var(--line,#e4e7ee);border-radius:12px;background:#f6f8fc;cursor:pointer;transition:transform .1s,box-shadow .1s,border-color .1s;text-align:center}
.wmp-card:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(20,30,60,.16);border-color:#5b6cff}
.wmp-thumb{height:90px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(#7fae7f 0% 25%,#74a474 0% 50%) 50%/14px 14px;image-rendering:pixelated}
.wmp-thumb img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
/* selettore personaggio */
.wchar-grid{display:grid;grid-template-columns:repeat(auto-fill,58px);gap:8px}
.wchar-card{background:#0d1119;border:2px solid #232c40;border-radius:8px;padding:4px 8px;cursor:pointer;transition:transform .1s,border-color .1s}
.wchar-card:hover{transform:translateY(-2px);border-color:#5b6cff}
/* MONDO su due colonne: i pulsanti a sinistra, il cast a fianco (non sotto) */
.mondo-due{display:grid;grid-template-columns:minmax(0,470px) minmax(280px,1fr);gap:20px;align-items:start}
@media (max-width:1200px){
  .bt-stage .bt-sprite.bt-spr-you0,#owBattle .bt-sprite.bt-spr-you0{left:9%;bottom:22%;width:clamp(110px,17%,220px)}
  .bt-stage .bt-sprite.bt-spr-you1,#owBattle .bt-sprite.bt-spr-you1{left:27%;bottom:41%;width:clamp(88px,13%,170px)}
  .bt-stage .bt-sprite.bt-spr-foe0,#owBattle .bt-sprite.bt-spr-foe0{right:7%;top:29%;width:clamp(92px,14%,180px)}
  .bt-stage .bt-sprite.bt-spr-foe1,#owBattle .bt-sprite.bt-spr-foe1{right:29%;top:17%;width:clamp(78px,11%,145px)}
}
@media (max-width:900px){ .mondo-due{grid-template-columns:1fr} }
.cast-panel{margin-top:20px;border:1px solid #2b3450;border-radius:14px;background:#12172a;padding:14px}
.cast-panel-t{font-weight:800;color:#cfe3ff;font-size:16px}
.cast-panel-s{color:#8b93b3;font-size:12px;line-height:1.45;margin:3px 0 10px}
.cast-riga{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid #232c40;border-radius:11px;background:#0d1119;margin-bottom:7px}
.cast-riga.vuoto{border-style:dashed}
.cast-riga canvas{image-rendering:pixelated;flex:none}
/* la tendina «spostalo in un'altra cartella»: sta in fondo alla riga e non deve
   rubare spazio al nome, quindi resta stretta e non si allarga col testo dentro */
.cast-sposta{flex:none;max-width:150px;padding:4px 6px;font-size:12px;cursor:pointer}
.cast-vuoto{width:34px;height:52px;display:flex;align-items:center;justify-content:center;font-size:22px;opacity:.5;flex:none}
/* IL MEZZO BUSTO SENZA UNA SECONDA IMMAGINE: si prende la figura intera e le si
   va addosso alla testa. Il taglio si misura sull'ALTEZZA, non sulla larghezza:
   `height:460%` vuol dire che nel riquadro ci sta poco più di un quinto della
   figura — la testa e le spalle — e resta uguale per tutti, che il personaggio
   sia magro o largo. Legandolo alla larghezza (cover + scale) chi era stretto
   veniva tagliato al mento. Vale ovunque serva la faccia: elenco, fumetto,
   anteprima della scheda. Il contenitore fa `position:relative;overflow:hidden`. */
/* ⚠️ SI CENTRA SULLA TESTA, non sulla meta' dell'immagine.
   `left:50%` porta il BORDO SINISTRO dell'immagine in mezzo al riquadro, e lo
   spostamento all'indietro decide quale punto dell'immagine finisce li'. Con
   -50% ci finisce la meta' geometrica — che quasi mai e' la faccia: basta una
   sciarpa che vola, un mantello o un braccio teso e il disegno pesa da un lato.
   Misurato su Eleonora: la testa stava al 29% della larghezza, il taglio la
   cercava al 50%, e in card la faccia usciva di lato di un quinto.
   Adesso lo spostamento e' `--vx`, cioe' dove sta DAVVERO la testa in quel
   ritratto — lo misura scripts/centra-volti.py e lo scrive sulla scheda. Chi
   non ce l'ha ricade sul 50% di prima, quindi niente si rompe. */
.rit-volto{position:absolute;left:50%;top:0;height:340%;width:auto;max-width:none;
  transform:translateX(calc(-1 * var(--vx, 50%)));display:block}
/* il ritratto nella riga: la faccia, con la figurina del gioco appoggiata
   nell'angolo — chi è + come cammina, in un colpo d'occhio */
.cast-faccia{position:relative;width:52px;height:52px;flex:none;cursor:zoom-in;
  border-radius:11px;overflow:hidden;background:#151b2c;border:1px solid #2b3450}
.cast-faccia:hover{border-color:#6ea8ff}
.cast-mini{position:absolute;right:1px;bottom:0;width:14px;height:21px;filter:drop-shadow(0 1px 3px #000d);z-index:2}
.cast-rit-big{max-width:76vw;max-height:86vh;border-radius:16px;box-shadow:0 24px 70px #000b;cursor:zoom-out}
/* ===== PAGINA PERSONAGGI: cartelle a fisarmonica con dentro le card =====
   Le card sono quelle degli Animei applicate alla gente: faccia grande, nome,
   che cosa fa, quanto è bravo. Il colore del bordo lo dà il mestiere (e a un
   capopalestra il tipo della sua palestra), come i tipi colorano le creature. */
.pgpag{max-width:1400px}
.pgsec{border:1px solid var(--line);border-radius:16px;background:var(--card);margin-bottom:14px;overflow:hidden}
.pgsec-h{display:flex;align-items:center;gap:9px;padding:13px 16px;cursor:pointer;user-select:none}
.pgsec-h:hover{background:rgba(125,140,190,.07)}
.pgsec-h h3{margin:0;font-size:16px;font-weight:800}
.pgsec-fr{color:#98a1bb;font-size:12px;transition:transform .16s;display:inline-block}
.pgsec.aperta .pgsec-fr{transform:rotate(90deg)}
.pgsec-e{font-size:17px}
.pgsec-q{background:rgba(125,140,190,.16);color:#68718c;font-size:11.5px;font-weight:800;
  padding:1px 9px;border-radius:20px}
.pgsec-b{display:none;padding:2px 16px 16px}
.pgsec.aperta .pgsec-b{display:block}
.pg-grid{grid-template-columns:repeat(auto-fill,minmax(178px,1fr))}
.pgcard{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;
  cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s;position:relative}
.pgcard:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(20,30,60,.13);border-color:var(--pc)}
.pgcard-t{position:relative;height:150px;overflow:hidden;
  background:radial-gradient(circle at 50% 34%,#fbfcff,#eef1f8)}
.pgcard-no{height:100%;display:flex;align-items:center;justify-content:center;font-size:40px;opacity:.3}
.pgcard-fig{position:absolute;right:6px;bottom:5px;width:26px;height:40px;image-rendering:pixelated;
  filter:drop-shadow(0 1px 3px rgba(0,0,0,.35))}
.pgcard .b{padding:9px 11px 11px;border-top:3px solid var(--pc)}
.pgcard .nm{font-weight:800;font-size:14.5px;margin:0 0 3px;line-height:1.2}
.pgcard-d{color:#7b8397;font-size:11px;line-height:1.35;height:30px;overflow:hidden}
.pgcard-r{display:flex;align-items:center;gap:6px;margin-top:6px;min-height:20px}
.pgcard-tag{background:var(--pc);color:#fff;font-size:10px;font-weight:800;padding:2px 8px;
  border-radius:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:118px}
.pgcard-team{margin-left:auto;font-size:11px;font-weight:800;color:#68718c;white-space:nowrap}
.pgcard-br{display:flex;gap:3px;margin-top:7px}
.pgcard-br i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--pc);opacity:.4}
.pgcard-br i.on{background:var(--pc);opacity:1}
.pgcard-add{grid-column:span 1;min-height:150px;border:2px dashed var(--line);border-radius:14px;
  background:transparent;color:#8a93ab;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;transition:.14s}
.pgcard-add span{font-size:26px;line-height:1}
.pgcard-add:hover{border-color:#8aa8ff;color:#5b7cff;background:rgba(138,168,255,.06)}
/* ===== SCHEDA DI UN PERSONAGGIO =====
   Fatta come quella di un Animei: fascia colorata in cima col nome grande, la
   figura a sinistra, tutto il resto a destra in sezioni. Il colore lo dà il
   mestiere (e per i capipalestra il tipo della loro palestra), così si riconosce
   chi è prima ancora di leggere. Qui si scrive direttamente: niente «modifica». */
.pgs-card{width:1080px;max-width:96vw;max-height:93vh;overflow:auto;background:#fff;
  border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.55)}
.pgs-testa{position:relative;display:flex;justify-content:space-between;align-items:flex-start;
  gap:16px;padding:18px 56px 18px 22px}
.pgs-testa-sx{flex:1;min-width:0}
.pgs-nome{width:100%;background:transparent;border:0;border-bottom:2px dashed rgba(255,255,255,.28);
  color:inherit;font-size:30px;font-weight:900;line-height:1.1;padding:0 0 3px;outline:none}
.pgs-nome:focus{border-bottom-color:rgba(255,255,255,.8)}
.pgs-sotto{width:100%;background:transparent;border:0;color:inherit;opacity:.9;font-size:13.5px;
  margin-top:6px;padding:2px 0;outline:none}
.pgs-nome::placeholder,.pgs-sotto::placeholder{color:currentColor;opacity:.5}
.pgs-badges{margin-top:9px;display:flex;gap:6px;flex-wrap:wrap}
.pgs-badge{display:inline-block;padding:3px 11px;border-radius:20px;font-size:12px;font-weight:800}
.pgs-testa-dx{text-align:right;flex:0 0 auto}
.pgs-brav-t{font-size:11.5px;opacity:.85;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.pgs-pallini{display:flex;gap:5px;justify-content:flex-end;margin:6px 0 3px}
.pgs-pall{width:17px;height:17px;border-radius:50%;border:2px solid currentColor;background:transparent;
  cursor:pointer;padding:0;opacity:.55;transition:.12s}
.pgs-pall.on{background:currentColor;opacity:1}
.pgs-pall:hover{transform:scale(1.15);opacity:1}
.pgs-brav-d{font-size:11.5px;opacity:.85;font-style:italic}
.pgs-x{position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:50%;border:0;
  background:rgba(0,0,0,.18);color:inherit;font-size:15px;cursor:pointer;line-height:1}
.pgs-x:hover{background:rgba(0,0,0,.32)}
.pgs-corpo{display:grid;grid-template-columns:minmax(260px,32%) 1fr;gap:22px;padding:18px 22px 4px}
.pgs-figura{background:#f3f5fb;border-radius:16px;padding:12px;height:330px;display:flex;
  align-items:center;justify-content:center}
.pgs-figura img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.pgs-vuoto{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:34px;opacity:.35}
.pgs-vuoto span{font-size:12px;color:#666}
.pgs-viste{display:flex;gap:10px;margin-top:10px}
.pgs-vista{flex:1;text-align:center}
.pgs-vista-b{position:relative;height:78px;background:#f7f8fc;border-radius:12px;overflow:hidden;
  display:flex;align-items:center;justify-content:center}
.pgs-vista-b canvas{image-rendering:pixelated}
.pgs-vista-no{color:#aab;font-size:18px}
.pgs-vista small{display:block;font-size:11px;color:#777;margin-top:4px}
.pgs-imgbt{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.pgs-imgnota{font-size:11.5px;color:#777;line-height:1.5;margin-top:8px}
.pgs-dx{min-width:0}
.pgs-sez{margin-bottom:18px}
.pgs-tit{font-weight:800;font-size:14px;letter-spacing:.02em;margin-bottom:7px}
.pgs-tit small{font-weight:600;color:#8a8f9a}
.pgs-nota{font-size:12px;color:#6b7280;line-height:1.5;margin:-2px 0 8px}
.pgs-area,.pgs-inp,.pgs-sel{width:100%;border:1px solid #dfe3ee;border-radius:11px;padding:9px 11px;
  font:inherit;font-size:13.5px;color:#222;background:#fbfcff;outline:none}
.pgs-area{resize:vertical;line-height:1.55}
.pgs-area:focus,.pgs-inp:focus,.pgs-sel:focus{border-color:#8aa8ff;background:#fff}
.pgs-dial{display:block;margin-bottom:7px}
.pgs-dial span{display:block;font-size:11.5px;color:#6b7280;font-weight:700;margin-bottom:3px}
.pgs-rosa{display:flex;flex-direction:column;gap:7px}
.pgs-rosa-r{display:flex;align-items:center;gap:8px}
.pgs-rosa-v{color:#8a8f9a;font-size:13px;padding:10px;background:#f7f8fc;border-radius:11px;text-align:center}
.pgs-lv{font-size:12px;color:#555;white-space:nowrap}
.pgs-lv input{width:52px;border:1px solid #dfe3ee;border-radius:8px;padding:5px 6px;font:inherit;font-size:12.5px}
.pgs-piede{display:flex;align-items:center;gap:12px;justify-content:flex-end;padding:12px 22px 18px;
  border-top:1px solid #eef0f6;margin-top:6px}
.pgs-auto{color:#8a8f9a;font-size:12px;font-style:italic;margin-right:auto}
.pgs-elimina{border:1px solid #f0cfc9;background:#fff5f4;color:#c0392b;border-radius:10px;
  padding:9px 15px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:.13s}
.pgs-elimina:hover{background:#c0392b;border-color:#c0392b;color:#fff}
@media (max-width:820px){ .pgs-corpo{grid-template-columns:1fr} .pgs-figura{height:260px} }
/* le TRE immagini della scheda, in fila: figurina · mezzo busto · figura intera */
.cast-sch-imgs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cast-sch-uno{display:flex;flex-direction:column;align-items:center;gap:5px;
  border:1px solid #232c40;border-radius:12px;background:#0d1119;padding:9px 7px}
.cast-sch-uno img{width:100%;height:104px;border-radius:9px;object-fit:contain;background:#151b2c;cursor:zoom-in}
.cast-sch-uno .cast-fig{height:70px;image-rendering:pixelated;margin:17px 0}
.cast-sch-et{color:#e6e9f0;font-weight:800;font-size:12px}
.cast-sch-d{color:#8b93b3;font-size:10.5px;line-height:1.3;text-align:center;min-height:26px}
.cast-sch-bt{display:flex;gap:4px;align-items:center;min-height:26px}
.cast-sch-volto{position:relative;width:100%;height:104px;border-radius:9px;overflow:hidden;background:#151b2c}
.cast-sch-auto{color:#8b93b3;font-size:10.5px;font-style:italic}
.cast-sch-nota{color:#8b93b3;font-size:11.5px;line-height:1.45;margin-top:8px}
.cast-sch-norit{width:100%;height:104px;border-radius:9px;border:1px dashed #2b3450;background:#0d1119;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:22px;opacity:.6}
.cast-sch-norit span{font-size:10.5px;color:#8b93b3}
/* IL TELEFONO: la rubrica di chi ti ha lasciato il numero */
.tel-riga{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid #232c40;border-radius:12px;
  background:#0d1119;margin-bottom:8px}
.tel-riga.pronto{border-color:#3f8f5a;background:#0e1a14}
.tel-faccia{position:relative;width:46px;height:46px;flex:none;border-radius:10px;overflow:hidden;
  background:#151b2c;border:1px solid #2b3450}
.tel-vuota{display:flex;align-items:center;justify-content:center;font-size:20px;opacity:.5}
.tel-info{flex:1;min-width:0}
.tel-nome{color:#e6e9f0;font-weight:800;font-size:14px}
.tel-dove{color:#8b93b3;font-size:11.5px;margin-top:2px}
.tel-stato{flex:none;font-size:11px;font-weight:700;color:#8b93b3;text-align:right;max-width:130px;line-height:1.35}
.tel-stato.ok{color:#4ade80}
/* livello della zona (pannello mappa) e pesca dalla rosa (editor eventi) */
.wmap-zona{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;padding:9px 11px;
  border:1px solid #2f3a5e;border-radius:10px;background:#141a2b;color:#cfd4e4;font-size:12.5px}
.wmap-zona small{color:#8b93b3;font-size:11px}
.ev-pesca{border:1px solid #2f3a5e;border-radius:10px;background:#141a2b;padding:9px 11px;margin-bottom:10px}
.ev-pesca-r{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;color:#cfd4e4;font-size:12.5px}
.ev-pesca-n{color:#8b93b3;font-size:11px;line-height:1.45;margin-top:6px}
.cast-riga-n{color:#e6e9f0;font-weight:800;font-size:13.5px}
.cast-riga-d{color:#8b93b3;font-size:11.5px;line-height:1.35}
.cast-riga-w{color:#f0a020;font-size:11px;font-weight:700;margin-top:2px}
/* cartelle a tendina: chiuse stanno in una riga, aperte mostrano i loro */
.cast-cart{border:1px solid #232c40;border-radius:11px;background:#0d1119;margin-bottom:7px;overflow:hidden}
.cast-cart-h{display:flex;align-items:center;gap:7px;padding:9px 10px;cursor:pointer;user-select:none}
.cast-cart-h:hover{background:#141a2b}
.cast-cart-fr{color:#8b93b3;font-size:11px;transition:transform .15s;display:inline-block}
.cast-cart.aperta .cast-cart-fr{transform:rotate(90deg)}
.cast-cart-e{font-size:15px}
.cast-cart-n{color:#e6e9f0;font-weight:800;font-size:13.5px}
.cast-cart-q{background:#232c40;color:#9fb0d0;font-size:11px;font-weight:800;border-radius:999px;padding:1px 8px}
.cast-cart-b{display:none;padding:0 8px 8px}
.cast-cart.aperta .cast-cart-b{display:block}
.cast-cart .cast-riga{background:#12172a}
.cast-vuota{color:#8b93b3;font-size:12px;padding:8px 4px}
.cast-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;font-size:10.5px;font-weight:800;color:#0d1119;vertical-align:middle}
/* i cinque della storia, in una fascia in cima al selettore */
.wchar-cast{grid-column:1/-1;background:#10152a;border:1px solid #2b3450;border-radius:12px;padding:10px 12px 12px;margin-bottom:6px}
.wchar-cast-t{color:#cfd4e4;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.wchar-cast-t b{color:#ffd479;text-transform:none;letter-spacing:0}
.wchar-cast-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.wchar-card.cast{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;text-align:center;border-color:#3a4670}
.wchar-card.cast{border-color:#3a4670}
.wchar-card.cast.vuoto{opacity:.55;cursor:default}
.wchar-card.cast .cast-nm{color:#e6e9f0;font-size:12.5px;font-weight:800;margin-top:2px}
.wchar-card.cast .cast-d{color:#8b93b3;font-size:10.5px;line-height:1.3}
.wchar-card.on{border-color:#ffd23f;box-shadow:0 0 0 2px rgba(255,210,63,.35)}
.wchar-card canvas{image-rendering:pixelated;display:block;margin:auto}
.wmp-lbl{font-weight:700;font-size:12.5px;color:#2a3142;line-height:1.2}

/* barra EXP (solo il tuo Animei) — sottilissima sotto il Lv, non ruba spazio */
.bt-exp{height:4px;border-radius:3px;background:#22304a;overflow:hidden;margin:2px 0 3px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.25)}
.bt-exp>span{display:block;height:100%;background:linear-gradient(90deg,#2f8fff,#5ad1ff);border-radius:3px;transition:width .5s ease}

/* motore VFX su canvas — glow additivo, scie, onde d'urto (sopra gli sprite, sotto i testi) */
/* ⚠ width/height AL 100% E NON SOLO inset:0. Un <canvas> e' un elemento
   RIMPIAZZATO, come un'immagine: ha una misura sua (quella del suo buffer di
   pixel) e il CSS gliela lascia — l'inset:0 gli dice solo dove appoggiare
   l'angolo. Siccome il buffer si fa apposta piu' fitto dello schermo
   (larghezza x devicePixelRatio), la tela finiva grande una volta e mezza il
   palco, ancorata in alto a sinistra: TUTTE le grafiche delle mosse cadevano
   lontano dal loro bersaglio, tanto piu' quanto piu' il bersaglio era lontano
   dall'angolo. Su uno schermo a dpr 1 veniva giusta per caso, ed e' per questo
   che il difetto non si riproduceva. */
.bt-vfx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
/* effetti visivi delle mosse (vecchie particelle CSS, non più usate — tenute per compatibilità) */
.mfx{position:absolute;transform:translate(-50%,-50%);pointer-events:none;z-index:45;width:0;height:0}
.mfx-core{position:absolute;left:0;top:0;border-radius:50%;transform:scale(.3);opacity:.9;animation:mfxCore .52s ease-out forwards}
@keyframes mfxCore{0%{transform:scale(.3);opacity:.9}100%{transform:scale(2);opacity:0}}
.mfx-p{position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%);opacity:0;animation:mfxFly var(--d,600ms) cubic-bezier(.25,.7,.4,1) var(--delay,0ms) forwards}
@keyframes mfxFly{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}14%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.4)}}
.mfx-flash{position:absolute;left:0;top:0;border-radius:50%;opacity:0;animation:mfxFlash .4s ease-out forwards}
@keyframes mfxFlash{0%{opacity:0}25%{opacity:.62}100%{opacity:0}}

/* --- ANIMAZIONI PER MOSSA: 16 comportamenti distinti (intensità in scala sulla potenza) --- */
.bt-stage.mfx-shake{animation:mfxShake .42s cubic-bezier(.36,.07,.19,.97)}
@keyframes mfxShake{10%,90%{transform:translateX(calc(var(--shk,4px)*-1))}20%,80%{transform:translateX(var(--shk,4px))}30%,50%,70%{transform:translateX(calc(var(--shk,4px)*-1.3))}40%,60%{transform:translateX(calc(var(--shk,4px)*1.3))}100%{transform:none}}

.mfx-slash{position:absolute;left:0;top:0;border-radius:4px;transform-origin:50% 50%;opacity:0;animation:mfxSlash .36s cubic-bezier(.2,.85,.3,1) forwards}
@keyframes mfxSlash{0%{opacity:0;transform:rotate(var(--r,0deg)) scaleX(.05)}20%{opacity:1}100%{opacity:0;transform:rotate(var(--r,0deg)) scaleX(1.05)}}

.mfx-jaw{position:absolute;left:0;top:0;border:solid 0 transparent;opacity:0}
.mfx-jaw-top{border-top-width:7px;border-radius:50%/100% 100% 0 0;margin-top:-14%;animation:mfxJawT .5s cubic-bezier(.3,1.35,.5,1) forwards}
.mfx-jaw-bottom{border-bottom-width:7px;border-radius:50%/0 0 100% 100%;margin-top:-6%;animation:mfxJawB .5s cubic-bezier(.3,1.35,.5,1) forwards}
@keyframes mfxJawT{0%{opacity:0;transform:translateY(-70%)}30%{opacity:1}100%{opacity:0;transform:translateY(6%)}}
@keyframes mfxJawB{0%{opacity:0;transform:translateY(70%)}30%{opacity:1}100%{opacity:0;transform:translateY(-6%)}}

.mfx-beam{position:absolute;left:0;top:0;border-radius:99px;transform-origin:0 50%;opacity:0;animation:mfxBeam .5s ease-out forwards}
@keyframes mfxBeam{0%{opacity:0;transform:rotate(var(--r,0deg)) scaleX(0)}18%{opacity:1;transform:rotate(var(--r,0deg)) scaleX(1)}72%{opacity:1}100%{opacity:0;transform:rotate(var(--r,0deg)) scaleX(1)}}

.mfx-proj{position:absolute;left:0;top:0;border-radius:50%;animation:mfxProj .34s cubic-bezier(.4,0,.7,1) forwards}
@keyframes mfxProj{0%{transform:translate(var(--fx,0),var(--fy,0)) scale(.5);opacity:1}85%{opacity:1}100%{transform:translate(0,0) scale(1.15);opacity:0}}

.mfx-ring{position:absolute;left:0;top:0;border-radius:50%;border-style:solid;border-width:4px;opacity:.9;animation:mfxRing .5s cubic-bezier(.2,.8,.3,1) forwards}
@keyframes mfxRing{0%{transform:scale(.15);opacity:1}100%{transform:scale(1.3);opacity:0}}

.mfx-star{position:absolute;left:0;top:0;border-radius:50%;animation:mfxStar .38s ease-out forwards}
@keyframes mfxStar{0%{transform:scale(.2);opacity:1}100%{transform:scale(1.5);opacity:0}}

.mfx-wave{position:absolute;left:0;top:0;border-radius:50%;border-style:solid;border-width:5px;border-top-color:transparent!important;border-left-color:transparent!important;opacity:0;animation:mfxWave .6s ease-out forwards}
@keyframes mfxWave{0%{opacity:0;transform:scale(.3) rotate(-20deg)}25%{opacity:1}100%{opacity:0;transform:scale(1.35) rotate(10deg)}}

.mfx-spin{position:absolute;left:0;top:0;border-radius:50%;border-style:solid;border-width:3px;border-right-color:transparent!important;opacity:0;animation:mfxSpin .78s linear forwards}
@keyframes mfxSpin{0%{opacity:0;transform:rotate(0) scale(.4)}20%{opacity:1}100%{opacity:0;transform:rotate(540deg) scale(1.25)}}

.mfx-bolt{position:absolute;left:0;top:0;transform-origin:50% 50%;opacity:0;animation:mfxBolt .3s steps(2,end) forwards}
@keyframes mfxBolt{0%{opacity:0;transform:rotate(var(--r,0deg)) scaleY(.2)}30%{opacity:1;transform:rotate(var(--r,0deg)) scaleY(1)}100%{opacity:0;transform:rotate(var(--r,0deg)) scaleY(1)}}

.mfx-cloud{position:absolute;left:0;top:0;border-radius:50%;opacity:0;filter:blur(2px);animation:mfxCloud .8s ease-out forwards}
@keyframes mfxCloud{0%{opacity:0;transform:translate(0,0) scale(.3)}30%{opacity:.85}100%{opacity:0;transform:translate(var(--dx,0),var(--dy,0)) scale(1.25)}}

.mfx-ringup{position:absolute;left:0;top:0;border-radius:50%;border-style:solid;border-width:3px;opacity:0;animation:mfxRingUp .7s ease-out forwards}
@keyframes mfxRingUp{0%{opacity:0;transform:translateY(30%) scale(1.1)}25%{opacity:1}100%{opacity:0;transform:translateY(-35%) scale(.7)}}
.mfx-ringdown{position:absolute;left:0;top:0;border-radius:50%;border-style:solid;border-width:3px;opacity:0;animation:mfxRingDown .7s ease-out forwards}
@keyframes mfxRingDown{0%{opacity:0;transform:translateY(-30%) scale(.7)}25%{opacity:1}100%{opacity:0;transform:translateY(35%) scale(1.15)}}

/* GIOCO A SCHERMO INTERO: la mappa riempie la finestra, niente pad/pulsanti sotto */
.wplay-card.full{position:fixed;inset:0;gap:0;overflow:hidden;background:#0a0d14;align-items:center;justify-content:center}
.wplay-card.full #wPlayCanvas{border-radius:0;box-shadow:none;max-width:none;max-height:none}
.wplay-hint{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:5;background:rgba(10,14,24,.6);color:#cfd6e8;font-size:12px;font-weight:600;padding:5px 13px;border-radius:20px;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;max-width:94vw;overflow:hidden;text-overflow:ellipsis;opacity:.85}
/* SCARPE DA CORSA ACCESE. Adesso che si indossano invece di tenere premuto SHIFT,
   niente ti dice piu' che le hai addosso: il dito sul tasto era la prova, ora non c'e'.
   Stessa pillola della striscia dei comandi ma in ambra e messa a destra, perche' quella
   in mezzo e' lunga e su schermo stretto le due si accavallavano. */
.wplay-run{position:fixed;top:8px;right:10px;z-index:5;background:rgba(10,14,24,.6);color:#fbbf24;font-size:12px;font-weight:700;padding:5px 12px;border-radius:20px;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;opacity:.9}
.wplay-run[hidden]{display:none}
/* sul telefono la striscia dei comandi si prende tutta la larghezza e le due
   pillole finivano una sopra l'altra: qui la corsa scende di una riga */
@media (max-width:700px){ .wplay-run{top:38px;right:8px;font-size:11px;padding:4px 10px} }
/* MENU di gioco: si apre di lato SENZA oscurare — si continua a vedere tutta la mappa dietro */
.wplay-ov.clear::before{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}

/* SCELTA STARTER (professore) */
.starter-grid{display:flex;gap:16px;justify-content:center;padding:22px 18px 6px;flex-wrap:wrap}
.starter-card{display:flex;flex-direction:column;align-items:center;gap:9px;background:#141a2b;border:2px solid #2f3a5e;border-radius:18px;padding:16px 14px;cursor:pointer;width:200px;transition:transform .1s,box-shadow .1s}
.starter-card:hover{transform:translateY(-5px);box-shadow:0 16px 38px rgba(0,0,0,.55)}
.starter-art{width:150px;height:150px;border-radius:14px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.starter-art img{image-rendering:auto;max-width:100%;max-height:100%}
.starter-nm{font-weight:800;color:#e9ecf5;font-size:15px;text-align:center}
.starter-tp{display:flex;gap:5px;flex-wrap:wrap;justify-content:center}
.starter-hint{text-align:center;color:#8b93b3;font-size:13px;padding:6px 18px 20px}

/* ANTEPRIMA ANIMEI dalla Sfera (vedi + scegli/passa) */
.stprev-body{display:flex;gap:16px;padding:16px 18px 6px;align-items:flex-start}
.stprev-art{flex:0 0 160px;width:160px;height:160px;border-radius:16px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.stprev-art img{image-rendering:auto;max-width:100%;max-height:100%}
.stprev-info{flex:1;min-width:0}
.stprev-nm{font-weight:800;color:#e9ecf5;font-size:17px;margin-bottom:6px}
.stprev-tp{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.stprev-desc{color:#c2cbe4;font-size:13px;line-height:1.5;margin:0 0 12px}
.stprev-stats{display:flex;flex-direction:column;gap:5px}
.stprev-strow{display:flex;align-items:center;gap:8px;font-size:12px}
.stprev-sl{flex:0 0 68px;color:#9fb0d0;text-align:right}
.stprev-sbar{flex:1;height:8px;background:#22304a;border-radius:5px;overflow:hidden}
.stprev-sbar>span{display:block;height:100%;border-radius:5px;transition:width .4s}
.stprev-sv{flex:0 0 32px;color:#cfd6e8;font-weight:700;text-align:right}
.stprev-acts{display:flex;gap:10px;justify-content:space-between;padding:12px 18px 18px}
.stprev-acts .btn{flex:1}

/* schermata Squadra: barra PS + riordino */
.party-mon{background:#1b2236;border:1px solid #2f3a5e;border-radius:12px;padding:10px 12px;margin-bottom:8px}
.party-mon.lead{border-color:#5b6cff;box-shadow:inset 0 0 0 1px rgba(91,108,255,.35)}
.party-lead-hdr{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8aa0ff;margin-bottom:6px}
.party-ord-col{display:flex;flex-direction:column;gap:3px;flex:none}
.party-ord{width:26px;height:20px;line-height:1;border:1px solid #2f3a5e;background:#141a28;color:#c7cfe6;border-radius:6px;cursor:pointer;font-size:10px;padding:0}
.party-ord:hover:not(:disabled){background:#26304a}
.party-ord:disabled{opacity:.28;cursor:default}
.party-hp{display:flex;align-items:center;gap:8px;margin-top:8px}
.party-hp-l{font-size:11px;font-weight:800;color:#f0a500}
.party-hp .hpbar{background:#0f1320;border-radius:6px;overflow:hidden}
.party-hp .hpbar>span{display:block;height:100%;border-radius:6px}
.party-hp-n{font-size:12px;color:#cfd6e8;font-weight:700;font-variant-numeric:tabular-nums;flex:none}
.party-held{display:flex;align-items:center;gap:7px;margin-top:8px;padding-top:8px;border-top:1px solid #2a3350;font-size:12.5px;flex-wrap:wrap}
.party-held-l{color:#8b93b3;font-weight:700}
.party-held-nm{color:#fcd669}
.party-held-x{background:#3a2f14;border:1px solid #6b5320;color:#fcd669;border-radius:6px;width:20px;height:20px;font-size:11px;cursor:pointer;padding:0;line-height:1}
.party-held-btn{margin-left:auto;background:#1f2740;border:1px solid #3a4668;color:#c7cfe6;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}
.party-held-btn:hover{background:#2a3350}

/* MEDAGLIE (Box medaglie, grafiche SVG originali) */
.badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:560px){.badge-grid{grid-template-columns:repeat(2,1fr)}}
.badge-cell{background:#141a2b;border:1px solid #242c44;border-radius:14px;padding:12px 8px;text-align:center;opacity:.5;transition:opacity .2s,border-color .2s,box-shadow .2s}
.badge-cell.got{opacity:1;border-color:#3a4668;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.badge-emb{height:62px;display:flex;align-items:center;justify-content:center}
.badge-svg{filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}
.badge-cell.got .badge-svg{filter:drop-shadow(0 0 8px rgba(255,255,255,.22)) drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.badge-nm{font-weight:800;font-size:13px;color:#e9ecf5;margin-top:6px}
.badge-st{font-size:11px;color:#8b93b3;margin-top:2px}
.badge-cell.got .badge-st{color:#34d399}
.badge-foot{margin-top:16px;text-align:center;color:#cfd6e8;font-size:13.5px;line-height:1.5}

/* MAPPE IMPORTATE: gruppi (sottomappe) + drag-and-drop fluido */
.impgroup{border:1px solid #2b3450;border-radius:12px;background:#0f1524;padding:8px 10px 10px}
.impgroup-h{font-weight:800;color:#cfe3ff;font-size:14px;padding:2px 2px 8px;display:flex;align-items:center;gap:6px}
.impgroup-h small{color:#8b93b3;font-weight:600}
.impgroup-h .nice-x{margin-left:auto}
.impgroup-drop{min-height:64px;border-radius:10px;transition:background .16s ease,box-shadow .16s ease;padding:4px}
.impgroup-drop.over{background:rgba(90,140,255,.16);box-shadow:inset 0 0 0 2px rgba(120,160,255,.65)}
.impmap{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;transition:transform .12s ease,box-shadow .12s ease,opacity .15s ease}
.impmap:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(20,30,60,.28)}
.impmap.dragging{opacity:.3}
.impmap{position:relative}
.imp-del{position:absolute;top:5px;right:5px;z-index:3;width:22px;height:22px;border-radius:7px;border:1px solid rgba(220,38,38,.55);background:rgba(18,10,12,.72);color:#ff9b9b;font-size:11px;line-height:1;cursor:pointer;padding:0;opacity:.62;transition:opacity .15s,background .15s,color .15s}
.impmap:hover .imp-del{opacity:1}
.imp-del:hover{background:#7f1d1d;color:#fff;border-color:#dc2626}
/* IL SECONDO BOTTONE DELLA SCHEDA MAPPA: passi e coperture.
   Sta a sinistra di quello dell'archivio e si accende passandoci sopra, come
   l'altro: le schede sono piccole e due bottoni sempre visibili le
   soffocherebbero. */
.imp-edit{position:absolute;top:5px;right:31px;z-index:3;width:22px;height:22px;border-radius:7px;
  border:1px solid rgba(99,102,241,.55);background:rgba(12,14,26,.72);color:#c7d2fe;font-size:11px;
  line-height:1;cursor:pointer;padding:0;opacity:.62;transition:opacity .15s,background .15s,color .15s}
.impmap:hover .imp-edit{opacity:1}
.imp-edit:hover{background:#3730a3;color:#fff;border-color:#6366f1}
.impmap img{pointer-events:none}
.mapdrag-ghost{position:fixed;z-index:100090;pointer-events:none;margin:0;opacity:.94;transform:rotate(-3deg) scale(1.04);box-shadow:0 20px 50px rgba(0,0,0,.6)}


/* ============ LEGGENDA DEI RUOLI ============
   Una scheda per ruolo: colore della famiglia sul bordo, apribile a fisarmonica. */
.ruo-intro{background:linear-gradient(135deg,#f5f7ff,#fdf4ff);border:1px solid var(--line);
  border-radius:14px;padding:14px 18px;margin:0 0 16px;font-size:14.5px;line-height:1.6}
.ruo-intro p{margin:0 0 8px}
.ruo-intro p:last-child{margin:0}
.ruo-nota{font-size:13.5px;color:#4a5165;background:#fff;border-left:4px solid var(--accent);
  border-radius:0 9px 9px 0;padding:10px 14px}

.ruo-wrap{display:grid;gap:9px}
.ruo-fam-head{font-size:12px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;
  color:var(--muted);margin:14px 0 2px;padding-bottom:6px;border-bottom:2px solid var(--line)}
.ruo-fam-head:first-child{margin-top:0}

.ruo-card{border:1px solid var(--line);border-left:6px solid var(--rc,#868E96);
  border-radius:12px;background:#fff;overflow:hidden;transition:box-shadow .15s}
.ruo-card:hover{box-shadow:0 3px 14px rgba(20,26,45,.09)}
.ruo-card[open]{box-shadow:0 4px 20px rgba(20,26,45,.11)}
.ruo-card>summary{display:flex;align-items:center;gap:11px;cursor:pointer;list-style:none;
  padding:13px 18px;font-size:17px;user-select:none}
.ruo-card>summary::-webkit-details-marker{display:none}
.ruo-card>summary::after{content:'\25B8';margin-left:auto;color:var(--muted);font-size:15px;
  transition:transform .18s}
.ruo-card[open]>summary::after{transform:rotate(90deg)}
.ruo-card>summary:hover{background:#fafbff}
.ruo-dot{width:15px;height:15px;border-radius:50%;background:var(--rc,#868E96);flex:none;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--rc,#868E96) 22%,transparent)}
.ruo-nome{font-size:18px;font-weight:800;color:var(--rc,#1c2230)}
.ruo-fam{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  color:var(--muted);background:var(--soft);border-radius:20px;padding:3px 11px}

.ruo-body{padding:2px 18px 18px 18px;border-top:1px dashed var(--line)}
.ruo-desc{margin:13px 0 15px;font-size:15.5px;line-height:1.65;color:#2b3245;font-weight:500}
.ruo-sec{margin:0 0 14px}
.ruo-sec:last-child{margin:0}
.ruo-sec h5{margin:0 0 7px;font-size:11px;font-weight:800;letter-spacing:1.2px;
  text-transform:uppercase;color:var(--muted)}
.ruo-sec p{margin:0;font-size:14px;line-height:1.6;color:#3a4256}

.ruo-stats{display:flex;flex-wrap:wrap;gap:7px}
.ruo-stat{font-size:13px;font-weight:700;border-radius:9px;padding:6px 12px}
.ruo-stat.up{background:#e7f7ee;color:#0f7a4d;border:1px solid #b9e6cf}
.ruo-stat.dn{background:#fdeeee;color:#a83232;border:1px solid #f3cccc}

.ruo-tipi{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.ruo-tipi .tbadge{font-size:11.5px;padding:4px 11px;margin:0}
.ruo-tipi.warn{margin-top:10px;background:#fffaf0;border:1px solid #f2e2c2;
  border-radius:10px;padding:10px 12px;font-size:13px}
.ruo-tipi.warn .hint{width:100%;margin-top:6px;font-size:12.5px}
.tbadge.off{background:#eceef4;color:#7b8299;border:1px dashed #c8cede}

/* il punto interrogativo che apre la scheda del ruolo */
.ruo-q{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;
  margin-left:6px;padding:0;border:none;border-radius:50%;background:var(--accent);color:#fff;
  font-size:12px;font-weight:800;cursor:pointer;vertical-align:middle;line-height:1}
.ruo-q:hover{background:var(--accent2)}
.ruo-eff{border-left:5px solid var(--rc,#868E96);display:flex;align-items:center;gap:8px;
  flex-wrap:wrap;background:#fbfcff}

/* ---- salvataggio automatico: la spunta in basso nella scheda ---- */
.sv{font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:20px;margin-right:8px;
  transition:opacity .2s;white-space:nowrap}
.sv:empty{padding:0}
.sv.wait{color:#8a6d1f;background:#fff6e0}
.sv.ok{color:#0b7a58;background:#e6f8f1}
.sv.ko{color:#a61e2b;background:#fdecee}

/* ---- playset delle mosse ---- */
.mvp-play{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 6px;padding:7px 10px;
  border-radius:10px;border-left:5px solid var(--rc,#868E96);
  background:color-mix(in srgb,var(--rc,#868E96) 7%,#fff)}
.mvp-play b{color:var(--rc,#1c2230)}
.pl-card{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;
  border-left:5px solid var(--rc,#868E96)}
.pl-card.on{background:color-mix(in srgb,var(--rc,#868E96) 8%,#fff)}
.pl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pl-head b{font-size:16px;color:var(--rc,#1c2230)}
.pl-desc{font-size:13px;color:#555;margin-top:5px;line-height:1.5}
.pl-tag{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:10px;
  margin:2px 4px 2px 0;color:var(--rc,#868E96);
  background:color-mix(in srgb,var(--rc,#868E96) 12%,#fff);
  border:1px solid color-mix(in srgb,var(--rc,#868E96) 30%,#fff)}

/* ---- ventaglio delle abilità nella scheda + scheda dell'esemplare in gioco ---- */
.ab-sec{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 6px;font-size:13.5px}
.ab-conta{margin-left:auto;font-size:11.5px;font-weight:800;padding:2px 9px;border-radius:10px;
  background:#e6f8f1;color:#0b7a58}
.ab-conta.vuoto{background:#fdecee;color:#a61e2b}
.ab-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;align-items:center}
.ab-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px 5px 12px;border-radius:999px;
  background:linear-gradient(180deg,#fff,#f6f8ff);border:1px solid #d7dcf0;
  box-shadow:0 1px 2px rgba(20,30,60,.05);font-size:12.5px}
.ab-chip b{font-weight:800;color:#2b3350}
.ab-chip-i,.ab-chip-x{width:19px;height:19px;padding:0;border-radius:50%;border:none;cursor:pointer;
  font-size:11px;font-weight:800;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.ab-chip-i{background:#e7ebff;color:#4553d6}
.ab-chip-i:hover{background:#d7ddff}
.ab-chip-x{background:#feeaec;color:#c0392b}
.ab-chip-x:hover{background:#fbd5d9}
.asum-ind{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px}
.asum-ind-r{display:flex;gap:10px;align-items:flex-start;background:#141a29;border:1px solid #26304a;
  border-radius:10px;padding:8px 11px}
.asum-ind-r>span{color:#8b93b3;font-size:12px;min-width:56px;padding-top:2px}
.asum-ind-r b{color:#e8ecff;font-size:13.5px;display:block}
.asum-ind-r small{color:#9aa3c4;font-size:11.5px;display:block;line-height:1.45;margin-top:2px}

/* ---- lucchetto sulla card: chiuso = i ribilanciamenti non lo toccano ---- */
.ccard{position:relative}
.lockbtn{position:absolute;top:6px;right:6px;z-index:3;width:26px;height:26px;padding:0;
  border:1px solid rgba(0,0,0,.10);border-radius:8px;background:rgba(255,255,255,.86);
  font-size:13px;line-height:1;cursor:pointer;opacity:.35;transition:opacity .15s,background .15s}
.ccard:hover .lockbtn{opacity:.85}
.lockbtn:hover{opacity:1;background:#fff}
.lockbtn.on{opacity:1;background:#fff4d6;border-color:#f0c36d}
.ccard.bloccato{box-shadow:inset 0 0 0 2px #f0c36d}

/* ---- «Passa alla linea»: cosa ereditano le evoluzioni ---- */
.er-box{margin-top:10px}
.er-r{display:flex;align-items:flex-start;gap:10px;padding:9px 11px;border:1px solid var(--line);
  border-radius:10px;margin-bottom:7px;cursor:pointer;background:#fff}
.er-r:hover{background:#fafbff}
.er-r input{margin-top:3px;flex:none}
.er-r b{display:block;font-size:13.5px;color:#1c2230}
.er-r small{display:block;font-size:12px;color:#6b7280;line-height:1.45;margin-top:2px}

/* ---- scheda di una singola mossa (il «?») ---- */
.mi-box{font-size:13.5px}
.mi-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.mi-cat{font-size:12px;font-weight:700;color:#666}
.mi-eff{background:#f7f8fc;border-radius:10px;padding:9px 11px;line-height:1.55;color:#333;margin-bottom:10px}
.mi-r{display:flex;justify-content:space-between;gap:12px;padding:4px 2px;border-bottom:1px dashed #e7e9f0}
.mi-r span{color:#777}
.mi-note{margin-top:9px;font-size:12.5px;color:#666;font-style:italic}
.mi-play{margin-top:10px}
.ruo-eff .ruo-dot{width:12px;height:12px;box-shadow:none}

@media(max-width:760px){
  .ruo-card>summary{padding:11px 13px;font-size:15px}
  .ruo-nome{font-size:16px}
  .ruo-body{padding:2px 13px 15px}
  .ruo-desc{font-size:14.5px}
}

/* la leggenda dei ruoli sta SOPRA la scheda dell'Animei, che resta aperta sotto */
.ruo-overlay{z-index:60;background:rgba(12,16,28,.62)}
.ruo-overlay .modal-card{max-width:1080px}
.ruo-overlay .modal-body{padding:20px 24px}

/* ISPIRAZIONE: elenco dei Pokemon da cui copiare il learnset */
.isp-row .isp-num{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;font-weight:700;
  color:#8a92a4;background:var(--soft);border-radius:6px;padding:2px 7px;flex:none}
.isp-row .mv-nm{min-width:150px}
.isp-nota{margin-top:8px;padding:8px 11px;background:#f7f8fc;border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;line-height:1.55}

/* ============================================================================
   RESTYLE — richiesta di Andrea (23/07/2026): «una grafica più bella, carina,
   avvincente, senza alterare il funzionamento di nulla».
   È tutto e SOLO aspetto: nessuna regola qui cambia cosa fa un pulsante, quali
   elementi esistono o come sono agganciati. Vive in fondo al foglio così
   sovrascrive per cascata quello che c'era, e si può togliere in blocco.
   ========================================================================== */

:root{
  --ombra-1:0 1px 2px rgba(18,25,45,.06), 0 1px 3px rgba(18,25,45,.05);
  --ombra-2:0 4px 12px rgba(18,25,45,.08), 0 2px 4px rgba(18,25,45,.04);
  --ombra-3:0 14px 34px rgba(18,25,45,.14), 0 4px 10px rgba(18,25,45,.06);
  --r-s:10px; --r-m:14px; --r-l:20px;
  --grad-acc:linear-gradient(135deg,#6371ff,#8b5cf6);
}

body{background:
  radial-gradient(1100px 520px at 12% -8%, #eef1ff 0%, transparent 60%),
  radial-gradient(900px 460px at 96% 4%, #f3ecff 0%, transparent 58%),
  var(--soft);
  -webkit-font-smoothing:antialiased}

/* ---------------- SIDEBAR: più profonda, voce attiva più netta -------------- */
.side{width:242px;background:linear-gradient(180deg,#191f34 0%,#141a2c 55%,#111626 100%);
  border-right:1px solid rgba(255,255,255,.05);box-shadow:2px 0 18px rgba(8,12,24,.18)}
.brand{padding:20px 18px 16px}
.brand .logo{width:42px;height:42px;border-radius:13px;background:var(--grad-acc);
  box-shadow:0 6px 16px rgba(99,113,255,.42);font-size:15px}
.brand b{font-size:18px;letter-spacing:.2px}
.navitem{padding:10px 13px;border-radius:11px;margin-bottom:3px;transition:background .14s,color .14s,transform .1s}
.navitem:hover{background:rgba(255,255,255,.07);color:#fff;transform:translateX(2px)}
.navitem.on{background:var(--grad-acc);box-shadow:0 6px 16px rgba(99,113,255,.35)}
.navitem .cnt{background:rgba(255,255,255,.18)}
.navitem.on .cnt{background:rgba(255,255,255,.26)}
.nav-sep{padding:15px 14px 5px;color:#5f6788;font-weight:700}

/* ---------------- TOPBAR: vetro, titolo con più peso ----------------------- */
.topbar{padding:14px 26px;background:rgba(255,255,255,.86);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(20,30,60,.07);box-shadow:0 1px 0 rgba(255,255,255,.6);
  flex-wrap:wrap;row-gap:10px;align-items:center}
.topbar h1{font-size:24px;font-weight:800;letter-spacing:-.2px;flex:none;margin-right:auto}
.top-actions{justify-content:flex-end;gap:8px;flex:1;min-width:0}
.top-actions .search{flex:0 1 240px;min-width:170px}
.view{padding:24px 26px 40px}

/* ---------------- BOTTONI: più massicci, gerarchia chiara ------------------ */
.btn{padding:10px 17px;border-radius:12px;font-size:13.5px;font-weight:750;
  background:linear-gradient(180deg,#fff,#f7f9fd);border:1px solid #dde2ee;
  box-shadow:var(--ombra-1);transition:transform .1s,box-shadow .14s,border-color .14s,background .14s}
.btn:hover{border-color:#c3cbe0;box-shadow:var(--ombra-2);transform:translateY(-1px)}
.btn:active{transform:translateY(0);box-shadow:var(--ombra-1)}
.btn.primary{background:var(--grad-acc);border-color:transparent;color:#fff;
  box-shadow:0 6px 16px rgba(99,113,255,.34)}
.btn.primary:hover{filter:brightness(1.06);box-shadow:0 9px 22px rgba(99,113,255,.42)}
.btn.red{background:linear-gradient(180deg,#fff,#fff5f5);color:#d1361f;border-color:#f3ccc6}
.btn.red:hover{background:#fff0ef;border-color:#e9b3ab}
.btn.sm{padding:7px 12px;font-size:12.5px;border-radius:10px}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
.search{padding:11px 15px;border-radius:12px;min-width:250px;background:#fff;
  border:1px solid #dde2ee;box-shadow:var(--ombra-1);transition:box-shadow .14s,border-color .14s}
.search:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(99,113,255,.14)}

/* ---------------- CARD ANIMEI: presenza, non francobolli ------------------- */
.grid{gap:18px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.ccard{border-radius:var(--r-m);border:1px solid rgba(20,30,60,.08);box-shadow:var(--ombra-1);
  transition:transform .16s cubic-bezier(.2,.8,.3,1),box-shadow .16s}
.ccard:hover{transform:translateY(-5px);box-shadow:var(--ombra-3)}
.ccard .thumb{height:168px;background:
  radial-gradient(circle at 50% 34%,#fff 0%,#f2f5fd 62%,#e9edf9 100%);padding:10px}
.ccard .thumb img{transition:transform .18s}
.ccard:hover .thumb img{transform:scale(1.055)}
.ccard .num{background:rgba(16,21,36,.72);backdrop-filter:blur(4px);padding:3px 9px;border-radius:10px;
  font-size:11px;letter-spacing:.3px}
.ccard .b{padding:11px 13px 13px}
.ccard .nm{font-size:15.5px;letter-spacing:-.1px;margin-bottom:7px}
.tbadge{padding:3px 10px;border-radius:11px;font-size:10.5px;letter-spacing:.2px;
  box-shadow:0 1px 3px rgba(20,30,60,.16)}
.ccard.bloccato{box-shadow:inset 0 0 0 2px #f0c36d, var(--ombra-2)}

/* ---------------- FINESTRA: intestazione con colore, corpo più arioso ------ */
.modal{background:rgba(10,14,26,.62);backdrop-filter:blur(3px);padding:22px}
.modal-card{border-radius:var(--r-l);box-shadow:0 30px 90px rgba(6,10,22,.5);overflow:hidden}
.modal-head{padding:17px 26px;background:linear-gradient(180deg,#fbfcff,#f4f6fd);
  border-bottom:1px solid rgba(20,30,60,.08)}
.modal-head h2{font-size:22px;font-weight:800;letter-spacing:-.2px}
.modal-body{padding:22px 26px}
.modal-foot{padding:14px 22px;background:linear-gradient(180deg,#fbfcff,#f5f7fd);
  border-top:1px solid rgba(20,30,60,.08)}

/* ---------------- CAMPI: più alti, focus visibile -------------------------- */
.field label{font-size:12.5px;font-weight:750;color:#5a6480;letter-spacing:.1px}
.field input,.field select,.field textarea{padding:11px 13px;border-radius:11px;
  border:1px solid #dde2ee;background:#fff;box-shadow:var(--ombra-1);
  transition:border-color .14s,box-shadow .14s}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--accent);box-shadow:0 0 0 4px rgba(99,113,255,.13)}
.frow{gap:12px}

/* ---------------- RIQUADRI della scheda (statistiche/abilità/mosse) -------- */
.stat-panel{margin-top:18px;padding:16px 18px;border:1px solid rgba(20,30,60,.08);
  border-top:1px solid rgba(20,30,60,.08);border-radius:var(--r-m);background:#fff;
  box-shadow:var(--ombra-1)}
.st-bstbox{padding-bottom:2px}
.st-bstbox>b{font-size:15px;letter-spacing:-.1px}
.panelli{gap:16px}

/* ---------------- TABELLE della libreria ---------------------------------- */
.tbl{border-radius:var(--r-m);box-shadow:var(--ombra-1);border-color:rgba(20,30,60,.08)}
.tbl th{background:linear-gradient(180deg,#f8f9fe,#f2f4fb);font-weight:750;letter-spacing:.4px}
.tbl tr.row:hover{background:#f7f9ff}

/* ---------------- dettagli ------------------------------------------------- */
.ruo-q{box-shadow:var(--ombra-1)}
.sv.ok{box-shadow:inset 0 0 0 1px rgba(18,184,134,.25)}
.mvp-box,.er-box{border-radius:var(--r-m)}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-thumb{background:#c9d0e4;border-radius:9px;border:3px solid transparent;
  background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#b3bcd6;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

@media(max-width:900px){
  .side{width:210px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
  .view{padding:18px 16px 32px}
  .topbar{padding:13px 16px}
}


/* ============================================================================
   RESTYLE 2 — la spinta forte (23/07/2026). Andrea: «non vedo differenze, fai
   una grafica bellissima». Qui si vede: sidebar premium, header con banda
   colorata, e soprattutto le CARD tinte del colore del loro TIPO.
   Sempre e solo aspetto: nessun cambiamento di funzionamento.
   ========================================================================== */

/* ---------------- SIDEBAR: pannello scuro premium con bagliore ------------- */
.side{width:250px;
  background:
    radial-gradient(420px 300px at 30% -6%, rgba(123,97,255,.20), transparent 70%),
    linear-gradient(180deg,#1b2138 0%,#151a2c 60%,#101422 100%)}
.brand{padding:22px 18px 18px;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:6px}
.brand .logo{width:44px;height:44px;border-radius:14px;
  background:linear-gradient(135deg,#6d7bff,#a855f7);
  box-shadow:0 8px 20px rgba(120,100,255,.5), inset 0 1px 0 rgba(255,255,255,.35)}
.brand b{font-size:19px}
.navitem{font-size:14.5px;padding:11px 14px}
.navitem.on{box-shadow:0 8px 20px rgba(99,113,255,.4), inset 0 1px 0 rgba(255,255,255,.2)}
.nav-sep{font-size:10.5px;letter-spacing:.9px;color:#616a92}
.side-foot{color:#7079a0;border-top:1px solid rgba(255,255,255,.05)}

/* ---------------- HEADER: titolo grande su banda con gradiente ------------- */
.topbar{padding:16px 28px;
  background:
    linear-gradient(120deg, rgba(109,123,255,.12), rgba(168,85,247,.08) 60%, rgba(255,255,255,0)),
    rgba(255,255,255,.9);
  backdrop-filter:blur(12px);border-bottom:1px solid rgba(20,30,60,.08)}
.topbar h1{font-size:27px;font-weight:850;letter-spacing:-.4px;
  background:linear-gradient(120deg,#2b3350,#5b52d6);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
/* i tasti stanno su una riga sola: leggermente più compatti + ricerca elastica */
.top-actions{gap:7px}
.top-actions .btn{padding:9px 13px;font-size:12.5px}
.top-actions .search{flex:1 1 180px;min-width:150px;padding:10px 13px}
@media(max-width:1150px){ .top-actions .btn{padding:8px 11px} }

/* ---------------- CARD ANIMEI: vestite del colore del loro TIPO ------------ */
.grid{gap:20px;grid-template-columns:repeat(auto-fill,minmax(196px,1fr))}
.ccard{
  border:1px solid color-mix(in srgb, var(--tc,#8a93ad) 32%, #e7eaf2);
  background:linear-gradient(180deg,#fff, color-mix(in srgb, var(--tc,#8a93ad) 7%, #fff));
  box-shadow:0 2px 6px rgba(20,30,60,.07);
  transition:transform .18s cubic-bezier(.2,.8,.3,1), box-shadow .18s, border-color .18s}
.ccard::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;z-index:2;
  background:linear-gradient(90deg, var(--tc,#8a93ad), var(--tc2, var(--tc,#8a93ad)))}
.ccard:hover{transform:translateY(-6px);
  border-color:color-mix(in srgb, var(--tc,#8a93ad) 55%, #fff);
  box-shadow:0 18px 40px color-mix(in srgb, var(--tc,#8a93ad) 30%, rgba(20,30,60,.14))}
.ccard .thumb{height:172px;padding:10px;
  background:
    radial-gradient(circle at 50% 32%, #fff 0%, color-mix(in srgb, var(--tc,#8a93ad) 8%, #fff) 55%,
    color-mix(in srgb, var(--tc,#8a93ad) 18%, #eef1f8) 100%)}
.ccard .b{background:#fff;position:relative;z-index:1}
.ccard .nm{font-size:16px;font-weight:850}
.tbadge{box-shadow:0 1px 4px rgba(20,30,60,.22);border:1px solid rgba(255,255,255,.28)}

/* firma-tipo anche sulla card BLOCCATA, senza perdere la cornice ambra */
.ccard.bloccato{box-shadow:inset 0 0 0 2px #f0c36d, 0 4px 12px rgba(20,30,60,.1)}

/* ---------------- BOTTONI: un filo più decisi ------------------------------ */
.btn{font-weight:780}
.btn.primary{background:linear-gradient(135deg,#6d7bff,#8b5cf6)}

/* ---------------- SEZIONI non-Animei: un po' d'aria in più ------------------ */
.empty-state{background:#fff;border:1px dashed #d2d8ea;border-radius:16px;padding:34px;
  text-align:center;color:#6b7280;box-shadow:var(--ombra-1)}


/* ============================================================================
   RESTYLE 3 — la SCHEDA di personalizzazione dell'Animei (23/07/2026).
   Andrea: «cambia la grafica del menu dentro ogni Animei, come i ruoli, più
   funzionale e bello, senza alterare la funzionalità».
   Tutto sotto `.modal-card.is-sheet` così tocca SOLO questa finestra. Solo
   aspetto: nessun id, onclick o campo è stato spostato di ruolo.
   ========================================================================== */

/* header vestito del colore del tipo */
.modal-card.is-sheet .modal-head{
  background:linear-gradient(120deg, var(--tc,#5b6cff), var(--tc2, var(--tc,#5b6cff)));
  border-bottom:none}
.modal-card.is-sheet .modal-head h2{color:var(--tc-ink,#fff);
  text-shadow:0 1px 2px rgba(0,0,0,.18)}
.modal-card.is-sheet .modal-head .x,
.modal-card.is-sheet .modal-head .btn{background:rgba(255,255,255,.22);border-color:transparent;
  color:var(--tc-ink,#fff);backdrop-filter:blur(3px)}
.modal-card.is-sheet .modal-head .x:hover,
.modal-card.is-sheet .modal-head .btn:hover{background:rgba(255,255,255,.34)}

/* impianto a due colonne: immagine a sinistra (resta ferma), campi a destra */
.sheet-top{display:grid;grid-template-columns:236px 1fr;gap:20px;align-items:start}
.sheet-media{position:sticky;top:0;display:flex;flex-direction:column;gap:9px}
.sheet-poster{border-radius:14px;padding:10px;text-align:center;min-height:70px;
  background:
    radial-gradient(circle at 50% 34%, #fff 0%, color-mix(in srgb, var(--tc,#8a93ad) 9%,#fff) 60%,
    color-mix(in srgb, var(--tc,#8a93ad) 20%,#eef1f8) 100%);
  border:1px solid color-mix(in srgb, var(--tc,#8a93ad) 26%,#e7eaf2);
  box-shadow:0 4px 14px color-mix(in srgb, var(--tc,#8a93ad) 16%, rgba(20,30,60,.06))}
.sheet-poster.back{min-height:56px;padding:8px;opacity:.96}
.sheet-poster img{transition:transform .18s}
.sheet-poster:hover img{transform:scale(1.04)}
.sheet-wbtn{width:100%;display:block;text-align:center}

/* i campi raggruppati in schede-riquadro, non un flusso unico */
.sheet-fields{display:flex;flex-direction:column;gap:14px;min-width:0}
.sheet-card{background:#fff;border:1px solid rgba(20,30,60,.09);border-radius:14px;
  padding:14px 16px 4px;box-shadow:0 1px 3px rgba(20,30,60,.05)}
.sheet-card-h{font-size:12px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;
  color:color-mix(in srgb, var(--tc,#5a6480) 55%, #5a6480);margin-bottom:11px;
  display:flex;align-items:center;gap:8px}
.sheet-card-h::before{content:"";width:9px;height:9px;border-radius:3px;
  background:linear-gradient(135deg, var(--tc,#5b6cff), var(--tc2, var(--tc,#5b6cff)))}
.sheet-card-h .hint{text-transform:none;letter-spacing:normal;font-weight:400;color:#9aa0ac}

/* i tre pannelli (statistiche / abilità / mosse): titolo con accento del tipo */
.modal-card.is-sheet .stat-panel{border:1px solid rgba(20,30,60,.09);border-radius:14px;
  padding:15px 17px;box-shadow:0 1px 3px rgba(20,30,60,.05);margin-top:0}
.modal-card.is-sheet .st-bstbox>b{position:relative;padding-left:13px}
.modal-card.is-sheet .st-bstbox>b::before{content:"";position:absolute;left:0;top:2px;bottom:2px;
  width:4px;border-radius:3px;background:linear-gradient(180deg, var(--tc,#5b6cff), var(--tc2, var(--tc,#5b6cff)))}
.modal-card.is-sheet .panelli{margin-top:18px}

/* footer: i gruppi di pulsanti si leggono a blocchi, Salvato+Chiudi a destra */
.modal-card.is-sheet .modal-foot{gap:8px}
.modal-card.is-sheet .modal-foot #salvaStato{margin-left:auto}

/* su schermo stretto l'immagine torna sopra, in fila */
@media(max-width:820px){
  .sheet-top{grid-template-columns:1fr}
  .sheet-media{position:static;flex-direction:row;flex-wrap:wrap;align-items:flex-start}
  .sheet-poster{flex:1 1 180px}
  .sheet-wbtn{width:auto}
}


/* ============================================================================
   RESTYLE 4 — rifinitura professionale (23/07/2026). Menu a tendina curati,
   barra-strumenti delle mosse col PLAYSET in evidenza, filtri per famiglia nella
   legenda abilità. Solo aspetto.
   ========================================================================== */

/* ---------------- MENU A TENDINA curati (dentro la scheda) ----------------- */
.modal-card.is-sheet select{
  -webkit-appearance:none;appearance:none;
  padding:10px 34px 10px 13px;border-radius:11px;border:1px solid #d7dcec;
  background-color:#fff;background-repeat:no-repeat;background-position:right 11px center;
  background-size:15px;box-shadow:0 1px 2px rgba(20,30,60,.06);cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b6480' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");
  transition:border-color .14s,box-shadow .14s}
.modal-card.is-sheet select:hover{border-color:#bcc4dd}
.modal-card.is-sheet select:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(99,113,255,.13);outline:none}
/* i due select del TIPO restano colorati: freccia bianca per stare sul colore */
.modal-card.is-sheet select.f-type{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>")}

/* ---------------- MOSSE: intestazione + barra strumenti -------------------- */
.mv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mv-head b{font-size:15px;font-weight:800;display:block}
.mv-head .hint{display:block;margin-top:2px}
.mv-tools{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.mtool{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:11px;
  font-size:13px;font-weight:750;cursor:pointer;color:#3a4258;
  background:linear-gradient(180deg,#fff,#f6f8fd);border:1px solid #dbe0ee;
  box-shadow:0 1px 2px rgba(20,30,60,.05);transition:transform .1s,box-shadow .14s,border-color .14s}
.mtool span{font-size:15px;line-height:1}
.mtool:hover{border-color:#c2cae0;box-shadow:0 4px 12px rgba(20,30,60,.09);transform:translateY(-1px)}
.mtool.on{background:#eef0ff;border-color:#c3caff;color:#4553d6}
/* il PLAYSET spicca: è la funzione che Andrea voleva evidente */
.mtool.play{background:linear-gradient(135deg,#6d7bff,#8b5cf6);border-color:transparent;color:#fff;
  box-shadow:0 6px 15px rgba(109,123,255,.34)}
.mtool.play:hover{filter:brightness(1.06);box-shadow:0 9px 20px rgba(109,123,255,.42)}

/* ---------------- LEGENDA ABILITÀ: filtri per famiglia --------------------- */
.ableg-filtri{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 14px}
.ableg-f{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:999px;
  font-size:13px;font-weight:750;cursor:pointer;color:var(--rc,#5a6480);
  background:color-mix(in srgb,var(--rc,#5a6480) 8%,#fff);
  border:1.5px solid color-mix(in srgb,var(--rc,#5a6480) 26%,#fff);
  transition:transform .1s,box-shadow .14s}
.ableg-f i{font-style:normal;font-size:11px;font-weight:800;padding:1px 7px;border-radius:9px;
  background:color-mix(in srgb,var(--rc,#5a6480) 16%,#fff)}
.ableg-f:hover{transform:translateY(-1px);box-shadow:0 4px 10px color-mix(in srgb,var(--rc,#5a6480) 22%,transparent)}
.ableg-f.on{color:#fff;background:var(--rc,#5b6cff);border-color:var(--rc,#5b6cff)}
.ableg-f.on i{background:rgba(255,255,255,.26)}
.ableg-tag{font-size:10.5px;font-weight:800;padding:2px 9px;border-radius:9px;
  color:var(--rc,#868E96);background:color-mix(in srgb,var(--rc,#868E96) 13%,#fff);
  border:1px solid color-mix(in srgb,var(--rc,#868E96) 28%,#fff)}
.pl-note{font-size:12px;color:#7b8399;font-style:italic;margin-top:6px;line-height:1.5}

/* il playset picker: barra scelto un po' più curata */
.mvp-play{box-shadow:0 1px 3px rgba(20,30,60,.06)}


/* ============================================================================
   RESTYLE 5 — il selettore mosse riprogettato da zero (23/07/2026).
   Playset mescolabili (chip), filtri allineati, livello con stepper. Grafica
   nuova; la logica (mvAdd, mvAddPlayset, filtri) e' quella di prima.
   ========================================================================== */

.mvp2{margin-top:12px;border:1px solid rgba(20,30,60,.10);border-radius:14px;background:#fff;
  box-shadow:0 2px 8px rgba(20,30,60,.06);overflow:hidden}

/* --- riga PLAYSET: chip mescolabili + aggiungi --- */
.mvp2-plays{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;
  background:linear-gradient(180deg,#f7f9ff,#eef1fb);border-bottom:1px solid rgba(20,30,60,.08)}
.mvp2-plays-lbl{font-size:12px;font-weight:800;color:#4b5480;letter-spacing:.2px}
.mvp2-plays-lbl .hint{font-weight:400}
.mvp2-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 11px;border-radius:999px;
  font-size:12.5px;font-weight:750;color:var(--rc,#4553d6);background:#fff;
  border:1.5px solid color-mix(in srgb,var(--rc,#4553d6) 40%,#fff);box-shadow:0 1px 2px rgba(20,30,60,.06)}
.mvp2-chip i{width:8px;height:8px;border-radius:50%;background:var(--rc,#4553d6)}
.mvp2-chip button{width:18px;height:18px;border:none;border-radius:50%;cursor:pointer;font-size:10px;
  font-weight:800;color:#c0392b;background:#feeaec;line-height:1}
.mvp2-chip button:hover{background:#fbd5d9}
.mvp2-add{padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:750;cursor:pointer;
  color:#fff;background:linear-gradient(135deg,#6d7bff,#8b5cf6);border:none;
  box-shadow:0 4px 11px rgba(109,123,255,.32)}
.mvp2-add:hover{filter:brightness(1.06)}
.mvp2-clear{padding:6px 11px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;
  color:#6b7280;background:#fff;border:1px solid #dbe0ee}
.mvp2-clear:hover{background:#f3f4f8}

/* --- FILTRI allineati --- */
.mvp2-filtri{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:13px 14px 4px}
.mvp2-filtri .fx{display:flex;flex-direction:column;gap:5px;min-width:120px}
.mvp2-filtri .fx.grow{flex:1;min-width:150px}
/* Il pulsante «Filtri» e il «togli tutti i filtri» servono solo sul telefono,
   dove i filtri fini stanno chiusi per lasciare spazio ai risultati. Sul
   computer sono sempre aperti, e Tipo/Categoria restano davanti alla ricerca
   come sono sempre stati (l'ordine nel codice cambia per comodita' del telefono). */
.mvp2-fbtn,.mvp2-azzera{display:none}
.mvp2-av{display:block}
.mvp2-filtri .fx.av{order:-1}
.mvp2-filtri label{font-size:11px;font-weight:800;color:#8a92a4;letter-spacing:.3px;text-transform:uppercase}
.mvp2-filtri select,.mvp2-filtri input{padding:9px 12px;border:1px solid #d7dcec;border-radius:10px;
  font-size:13px;font-family:inherit;background:#fff;box-shadow:0 1px 2px rgba(20,30,60,.05);outline:none;
  transition:border-color .14s,box-shadow .14s}
.mvp2-filtri select{-webkit-appearance:none;appearance:none;padding-right:30px;cursor:pointer;
  background-repeat:no-repeat;background-position:right 10px center;background-size:14px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b6480' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>")}
.mvp2-filtri select:focus,.mvp2-filtri input:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(99,113,255,.13)}
/* stepper del LIVELLO: −  N  + */
.mvp2-lv{display:inline-flex;align-items:center;border:1px solid #d7dcec;border-radius:10px;overflow:hidden;
  background:#fff;box-shadow:0 1px 2px rgba(20,30,60,.05)}
.mvp2-lv button{width:34px;height:38px;border:none;background:#f4f6fd;color:#4553d6;font-size:17px;
  font-weight:800;cursor:pointer;line-height:1}
.mvp2-lv button:hover{background:#e9edfb}
.mvp2-lv input{width:46px;height:38px;border:none;border-left:1px solid #e5e9f4;border-right:1px solid #e5e9f4;
  text-align:center;font-size:14px;font-weight:800;color:#2b3350;font-family:inherit;outline:none;
  -webkit-appearance:none;appearance:none;margin:0}
.mvp2-lv input::-webkit-outer-spin-button,.mvp2-lv input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* --- riga meta: conteggio + aggiungi tutte --- */
.mvp2-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:10px 14px;color:#6b7280;font-size:12.5px;font-weight:600}

/* --- ELENCO delle mosse --- */
.mvp2-lista{display:flex;flex-direction:column;max-height:340px;overflow-y:auto;
  border-top:1px solid rgba(20,30,60,.07)}
.mvp2-row{display:flex;align-items:center;gap:9px;padding:9px 14px;border-bottom:1px solid #f0f2f8;
  transition:background .12s}
.mvp2-row:hover{background:#f7f9ff}
.mvp2-row.dentro{opacity:.55}
.mvp2-nm{font-size:13.5px;font-weight:750;color:#2b3350}
.mvp2-meta2{font-size:12px;color:#9198ac;margin-left:auto;white-space:nowrap}
.mvp2-in{font-size:12px;font-weight:700;color:#0b7a58;margin-left:8px;white-space:nowrap}
.mvp2-plus{margin-left:8px;padding:7px 13px;border-radius:9px;font-size:12.5px;font-weight:750;cursor:pointer;
  color:#fff;background:linear-gradient(135deg,#6d7bff,#8b5cf6);border:none;white-space:nowrap;
  box-shadow:0 3px 9px rgba(109,123,255,.28)}
.mvp2-plus:hover{filter:brightness(1.06)}
.mvp2-vuoto{padding:22px 14px;text-align:center;color:#9198ac;font-size:13px}


/* ============================================================================
   RESTYLE 6 — LA SCHEDA DELL'ANIMEI, RIFATTA DA ZERO (23/07/2026).
   Andrea: «sconvolgimi l'intera grafica di quella dashboard», con lo stile
   dell'immagine di riferimento: fondo scuro, riquadri arrotondati grandi,
   NUMERONI, etichette piccole in maiuscolo, pulsanti generosi.
   Niente qui cambia la logica: stessi campi, stessi id, stessi pulsanti.
   Tutto è chiuso in `.modal-card.is-sheet`, quindi le altre finestre
   dell'app restano chiare come sempre.
   ========================================================================== */

.modal-card.is-sheet{
  --bg:#0c0f16; --pan:#151a25; --pan2:#1c2231; --ln:rgba(255,255,255,.085);
  --ink:#e9eefb; --mut:#8e97ac; --teal:#2fe6b7;
  width:min(1280px,97vw);max-width:97vw;background:var(--bg);color:var(--ink);
  border:1px solid rgba(255,255,255,.10);border-radius:20px;
  box-shadow:0 34px 100px rgba(0,0,0,.62)}
.modal-card.is-sheet .modal-head{display:none}          /* il nome vive nella colonna */
.modal-card.is-sheet .modal-body{background:var(--bg);padding:0;border-radius:20px 20px 0 0}
.modal-card.is-sheet .hint{color:var(--mut)}
.modal-card.is-sheet b,.modal-card.is-sheet h3{color:var(--ink)}

/* ------------------------------- LINGUETTE -------------------------------- */
.modal-card.is-sheet .s2tabs{position:sticky;top:0;z-index:6;display:flex;gap:4px;
  align-items:stretch;overflow-x:auto;padding:8px 16px 0;background:#0c0f16;
  border-bottom:1px solid var(--ln);box-shadow:0 6px 18px rgba(0,0,0,.5)}
.modal-card.is-sheet .s2tab{display:flex;align-items:center;gap:8px;white-space:nowrap;
  padding:13px 16px;border:none;background:none;cursor:pointer;color:var(--mut);
  font-size:12px;font-weight:800;letter-spacing:.6px;border-radius:12px 12px 0 0;
  border-bottom:2.5px solid transparent;transition:color .14s,background .14s}
.modal-card.is-sheet .s2tab i{font-style:normal;font-size:16px;opacity:.85}
.modal-card.is-sheet .s2tab:hover{color:var(--ink);background:rgba(255,255,255,.045)}
.modal-card.is-sheet .s2tab.on{color:var(--teal);border-bottom-color:var(--teal)}
.modal-card.is-sheet .s2tab.on i{opacity:1}
.modal-card.is-sheet .s2x{margin-left:auto;color:var(--mut);font-size:17px;padding:11px 14px;
  background:none;border:none;cursor:pointer;border-radius:10px}
.modal-card.is-sheet .s2x:hover{color:#ff8f8f;background:rgba(255,80,80,.12)}

/* ---------------------------- IMPIANTO A DUE COLONNE ---------------------- */
.modal-card.is-sheet .s2wrap{display:grid;grid-template-columns:296px 1fr;gap:18px;
  align-items:start;padding:18px 18px 24px}
.modal-card.is-sheet .s2side{position:sticky;top:66px;display:flex;flex-direction:column;gap:12px;
  max-height:calc(100vh - 190px);overflow:auto;scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.18) transparent;padding-right:2px}
.modal-card.is-sheet .s2side::-webkit-scrollbar{width:6px}
.modal-card.is-sheet .s2side::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:99px}
.modal-card.is-sheet .s2main{display:flex;flex-direction:column;gap:16px;min-width:0}

/* ------------------------------ LA CREATURA ------------------------------- */
.modal-card.is-sheet .s2stage{background:var(--pan);border:1px solid var(--ln);
  border-radius:22px;padding:18px 16px 16px;text-align:center;
  box-shadow:0 10px 30px rgba(0,0,0,.35)}
.modal-card.is-sheet .s2halo{position:relative;height:176px;display:flex;align-items:center;
  justify-content:center;border-radius:18px;margin-bottom:12px;
  background:
    radial-gradient(circle at 50% 52%, color-mix(in srgb,var(--tc,#5b6cff) 34%,transparent) 0%,
    color-mix(in srgb,var(--tc,#5b6cff) 12%,transparent) 42%, transparent 70%),
    linear-gradient(180deg,#0f131c,#0b0e15)}
.modal-card.is-sheet .s2halo img{max-width:94%;max-height:162px;object-fit:contain;cursor:zoom-in;
  filter:drop-shadow(0 12px 22px rgba(0,0,0,.55));transition:transform .2s}
.modal-card.is-sheet .s2halo img:hover{transform:scale(1.05)}
.modal-card.is-sheet .s2halo #modal_front_ph{color:var(--mut);font-size:13px}
.modal-card.is-sheet .s2num{font-size:11px;font-weight:800;letter-spacing:1.4px;color:var(--mut)}
.modal-card.is-sheet .s2name{font-size:27px;font-weight:850;line-height:1.1;margin:2px 0 9px;
  background:linear-gradient(100deg,#fff,color-mix(in srgb,var(--tc,#5b6cff) 62%,#fff));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.modal-card.is-sheet .s2gems{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.modal-card.is-sheet .s2gem{padding:5px 13px;border-radius:999px;font-size:11.5px;font-weight:800;
  letter-spacing:.4px;box-shadow:0 3px 10px rgba(0,0,0,.4)}
.modal-card.is-sheet .s2gem.vuoto{background:#232a3a;color:var(--mut);box-shadow:none}
.modal-card.is-sheet .s2role{display:flex;align-items:center;justify-content:center;gap:9px;
  margin-top:11px;padding-top:11px;border-top:1px solid var(--ln)}
.modal-card.is-sheet .s2role .st{color:#f0b429;font-size:14px;letter-spacing:1px}
.modal-card.is-sheet .s2role .rl{font-size:12px;font-weight:800;letter-spacing:.5px;
  text-transform:uppercase;color:var(--teal)}
.modal-card.is-sheet .s2back{position:relative;margin:10px 0 8px;border-radius:14px;padding:6px;
  background:#0f131c;border:1px solid var(--ln);min-height:44px;display:flex;
  align-items:center;justify-content:center}
.modal-card.is-sheet .s2back img{max-height:96px;max-width:80%;object-fit:contain;cursor:zoom-in}
.modal-card.is-sheet .s2back .et{position:absolute;left:9px;top:7px;font-size:9.5px;font-weight:800;
  letter-spacing:1px;text-transform:uppercase;color:var(--mut)}
/* i due comandi dell'immagine stanno in fila, per non allungare la colonna */
.modal-card.is-sheet .s2imgbtns{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.modal-card.is-sheet .s2btn{display:block;padding:10px 6px;
  border-radius:12px;background:var(--pan2);border:1px solid var(--ln);color:var(--ink);
  font-size:11.5px;font-weight:750;cursor:pointer;text-align:center;transition:.14s;white-space:nowrap}
.modal-card.is-sheet .s2btn:hover{background:#242c3e;border-color:rgba(255,255,255,.18)}
.modal-card.is-sheet .s2btn.zoom{grid-column:1/-1;background:var(--accent);border-color:var(--accent);color:#fff;font-weight:800}
.modal-card.is-sheet .s2btn.zoom:hover{background:var(--accent2);border-color:var(--accent2)}
.modal-card.is-sheet #modal_art_note{margin-top:7px;text-align:center;font-size:12px}

/* ------------------------------ LE TARGHETTE ------------------------------ */
.modal-card.is-sheet .s2kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.modal-card.is-sheet .s2kpi{background:var(--pan);border:1px solid var(--ln);border-radius:18px;
  padding:14px 14px 13px;box-shadow:0 6px 20px rgba(0,0,0,.28)}
.modal-card.is-sheet .s2kpi .et{display:block;font-size:9.5px;font-weight:800;letter-spacing:1.1px;
  text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.modal-card.is-sheet .s2kpi .val{font-size:30px;font-weight:850;line-height:1;color:var(--teal)}
.modal-card.is-sheet .s2kpi .sub{font-size:12px;font-weight:700;color:var(--mut);margin-left:4px}
.modal-card.is-sheet .s2kpi.ok .val{color:var(--teal)}
.modal-card.is-sheet .s2kpi.ko .val{color:#ff7a7a}
.modal-card.is-sheet .s2kpi.ko{border-color:rgba(255,122,122,.35)}
/* SOPRA il budget = Animei più forte del suo grado (voluto): oro, non rosso-errore */
.modal-card.is-sheet .s2kpi.forte .val{color:#e0a020}
.modal-card.is-sheet .s2kpi.forte{border-color:rgba(224,160,32,.4);background:rgba(224,160,32,.06)}

/* ------------------------------- I RIQUADRI ------------------------------- */
.modal-card.is-sheet .s2card,
.modal-card.is-sheet .stat-panel{background:var(--pan);border:1px solid var(--ln);
  border-radius:20px;padding:20px 22px;margin:0;box-shadow:0 8px 26px rgba(0,0,0,.3)}
.modal-card.is-sheet .s2h,
.modal-card.is-sheet .st-head h3,
.modal-card.is-sheet .st-bstbox>b,
.modal-card.is-sheet .mv-head b{font-size:16px;font-weight:850;letter-spacing:.2px;
  display:flex;align-items:center;gap:10px;margin:0 0 16px}
.modal-card.is-sheet .s2h::before,
.modal-card.is-sheet .st-head h3::before,
.modal-card.is-sheet .st-bstbox>b::before,
.modal-card.is-sheet .mv-head b::before{content:"";width:10px;height:10px;border-radius:50%;
  flex:none;position:static;background:var(--tc,#5b6cff);
  box-shadow:0 0 12px color-mix(in srgb,var(--tc,#5b6cff) 75%,transparent)}
.modal-card.is-sheet .s2h small{font-size:12px;font-weight:500;color:var(--mut);letter-spacing:0}

/* --------------------------------- I CAMPI -------------------------------- */
.modal-card.is-sheet .frow{display:flex;gap:14px;flex-wrap:wrap}
.modal-card.is-sheet .field{flex:1;min-width:130px;margin-bottom:14px}
.modal-card.is-sheet .field>label{display:block;font-size:10px;font-weight:800;letter-spacing:1px;
  text-transform:uppercase;color:var(--mut);margin-bottom:7px}
.modal-card.is-sheet input,
.modal-card.is-sheet textarea,
.modal-card.is-sheet select{background:#0f131c;border:1px solid var(--ln);
  border-radius:13px;padding:12px 14px;color:var(--ink);font-size:14px;font-weight:600;
  font-family:inherit;box-shadow:none;transition:border-color .14s,box-shadow .14s}
/* larghezza piena SOLO ai campi delle schede: i campini in riga (livello di una
   mossa, filtri) devono restare piccoli */
.modal-card.is-sheet .field>input,
.modal-card.is-sheet .field>select,
.modal-card.is-sheet .field>textarea,
.modal-card.is-sheet .st-max input,
.modal-card.is-sheet .st-base input,
.modal-card.is-sheet .st-bstbox>input{width:100%}
.modal-card.is-sheet textarea{line-height:1.55;font-weight:500;resize:vertical}
.modal-card.is-sheet input:focus,
.modal-card.is-sheet textarea:focus,
.modal-card.is-sheet select:focus{border-color:var(--teal);outline:none;
  box-shadow:0 0 0 3px rgba(47,230,183,.16)}
.modal-card.is-sheet select{padding-right:36px;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238e97ac' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;background-size:15px}
.modal-card.is-sheet select:hover{border-color:rgba(255,255,255,.2)}
.modal-card.is-sheet select option{background:#151a25;color:var(--ink)}
.modal-card.is-sheet .evo-box{background:#0f131c;border:1px solid var(--ln);border-radius:16px;padding:14px}
/* il selettore delle evoluzioni (nome + immagine): stessa veste scura */
.evodrop-trig,.evodrop-pan{background:#fff}
.modal-card.is-sheet .evodrop-trig{background:#151a25;border-color:var(--ln)!important;color:var(--ink)}
.modal-card.is-sheet .evodrop-trig:hover{border-color:rgba(255,255,255,.2)!important}
.modal-card.is-sheet .evodrop-trig b,.modal-card.is-sheet .evodrop-trig span{color:var(--ink)}
.modal-card.is-sheet .evodrop-pan{background:#151a25;border-color:var(--ln)!important;
  box-shadow:0 18px 44px rgba(0,0,0,.65)!important}
.modal-card.is-sheet .evodrop-find{background:#0b0e15;border-color:var(--ln)!important;color:var(--ink)}
.modal-card.is-sheet .evodrop-row:hover{background:rgba(255,255,255,.07)}
.modal-card.is-sheet .evodrop-pan b{color:var(--ink)}
.modal-card.is-sheet #bx_evo_lv{width:78px;font-size:19px;font-weight:850;color:var(--teal);
  background:#0b0e15;border-color:var(--ln)!important;padding:9px 8px!important;border-radius:11px!important}

/* -------------------------------- PULSANTI -------------------------------- */
.modal-card.is-sheet .btn{background:var(--pan2);border:1px solid var(--ln);color:var(--ink);
  border-radius:13px;padding:12px 18px;font-size:13.5px;font-weight:750;box-shadow:none;
  transition:.14s}
.modal-card.is-sheet .btn:hover{background:#252d40;border-color:rgba(255,255,255,.2);transform:translateY(-1px)}
.modal-card.is-sheet .btn.sm{padding:10px 15px;font-size:13px}
.modal-card.is-sheet .btn.primary{background:linear-gradient(135deg,var(--tc,#5b6cff),var(--tc2,var(--tc,#5b6cff)));
  border-color:transparent;color:var(--tc-ink,#fff);font-weight:850;
  box-shadow:0 8px 22px color-mix(in srgb,var(--tc,#5b6cff) 40%,transparent)}
.modal-card.is-sheet .btn.red{background:rgba(255,90,90,.1);border-color:rgba(255,90,90,.32);color:#ff8f8f}
.modal-card.is-sheet .btn.red:hover{background:rgba(255,90,90,.2)}
.modal-card.is-sheet .b-bil{width:100%;margin-top:8px;background:rgba(91,108,255,.14);
  border-color:rgba(120,140,255,.4);color:#a9b6ff;font-weight:800}
.modal-card.is-sheet .b-sag{width:100%;margin-top:8px;background:rgba(47,230,183,.14);
  border-color:rgba(47,230,183,.42);color:var(--teal);font-weight:800}
.modal-card.is-sheet .b-sag:hover{background:rgba(47,230,183,.24)}

/* ------------------------------- STATISTICHE ------------------------------ */
.modal-card.is-sheet .st-head{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.modal-card.is-sheet .st-meta{font-size:12.5px;color:var(--mut);margin-top:-8px}
.modal-card.is-sheet .st-bstbox{background:#0f131c;border:1px solid var(--ln);border-radius:16px;
  padding:14px;min-width:230px;display:block}
.modal-card.is-sheet .st-bstbox>label{display:block;font-size:10px;font-weight:800;letter-spacing:.9px;
  text-transform:uppercase;color:var(--mut);margin-bottom:7px}
.modal-card.is-sheet .st-bstbox>label .hint{text-transform:none;letter-spacing:0}
.modal-card.is-sheet .st-bstbox input{font-size:22px;font-weight:850;color:var(--teal);text-align:center}
.modal-card.is-sheet .st-rows{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.modal-card.is-sheet .st-row3{display:grid;grid-template-columns:1fr 108px minmax(90px,1fr) 108px;
  gap:14px;align-items:center;background:#0f131c;border:1px solid var(--ln);
  border-radius:16px;padding:12px 15px}
.modal-card.is-sheet .st-row3:hover{border-color:rgba(255,255,255,.16)}
.modal-card.is-sheet .st-name b{font-size:12px;letter-spacing:.6px}
.modal-card.is-sheet .st-name span{font-size:13.5px;font-weight:750}
.modal-card.is-sheet .st-sub{display:block;font-size:11px;color:var(--mut);font-weight:500;margin-top:2px}
.modal-card.is-sheet .st-max label,
.modal-card.is-sheet .st-base label{display:block;font-size:9px;font-weight:800;letter-spacing:.9px;
  text-transform:uppercase;color:var(--mut);margin-bottom:4px}
.modal-card.is-sheet .st-max input{padding:9px 10px;font-size:13px;text-align:center;background:#0b0e15}
.modal-card.is-sheet .st-base input{padding:8px 10px;font-size:24px;font-weight:850;text-align:center;
  background:#0b0e15;letter-spacing:-.5px}
.modal-card.is-sheet .st-bar{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
.modal-card.is-sheet .st-bar span{display:block;height:100%;border-radius:999px;
  box-shadow:0 0 14px currentColor;transition:width .25s}
.modal-card.is-sheet .st-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;padding:12px 14px;
  background:#0f131c;border:1px solid var(--ln);border-radius:14px;font-size:11.5px;color:var(--mut)}

/* --------------------------- ABILITÀ · RUOLO ------------------------------ */
/* nel pannello abilità lo stesso riquadro fa da INTESTAZIONE: torna una riga sola */
.modal-card.is-sheet #abilPanel .st-bstbox{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:none;border:none;padding:0;min-width:0;margin-bottom:14px}
.modal-card.is-sheet #abilPanel .st-bstbox>b{margin:0}
.modal-card.is-sheet #abilPanel .st-bstbox .btn{margin-left:auto}
.modal-card.is-sheet .ab-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.modal-card.is-sheet .ab-eff{background:#0f131c;border:1px solid var(--ln);border-left:4px solid var(--rc,#868E96);
  border-radius:14px;padding:13px 15px;font-size:13px;color:#c8d0e2;margin:4px 0 14px;line-height:1.55}
.modal-card.is-sheet .ab-sec{display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  font-size:12px;letter-spacing:.7px;text-transform:uppercase;color:var(--mut);margin:14px 0 9px}
.modal-card.is-sheet .ab-sec b{font-size:12px;letter-spacing:.7px}
.modal-card.is-sheet .ab-conta{margin-left:auto;padding:4px 11px;border-radius:999px;font-weight:800;
  background:rgba(47,230,183,.14);color:var(--teal);letter-spacing:.4px}
.modal-card.is-sheet .ab-conta.vuoto{background:rgba(255,255,255,.07);color:var(--mut)}
.modal-card.is-sheet .ab-chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:10px}
.modal-card.is-sheet .ab-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;
  border-radius:13px;background:rgba(47,230,183,.1);border:1px solid rgba(47,230,183,.3);
  color:var(--teal);font-size:13px;font-weight:750}
.modal-card.is-sheet .ab-chip b{color:var(--teal);font-weight:800}
.modal-card.is-sheet .ab-chip-i,.modal-card.is-sheet .ruo-q{width:20px;height:20px;border-radius:50%;
  border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:var(--ink);
  font-size:11px;font-weight:800;cursor:pointer;line-height:1;padding:0}
.modal-card.is-sheet .ab-chip-i:hover,.modal-card.is-sheet .ruo-q:hover{background:var(--teal);color:#062018;border-color:transparent}
.modal-card.is-sheet .ab-chip-x{background:none;border:none;color:#ff8f8f;cursor:pointer;font-size:12px;padding:0}
.modal-card.is-sheet .ab-passrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.modal-card.is-sheet .ab-pass{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;
  border-radius:11px;background:#0f131c;border:1px solid var(--ln);color:#c2cadd;
  font-size:12.5px;font-weight:650;cursor:pointer}
.modal-card.is-sheet .ab-pass.on{background:rgba(47,230,183,.12);border-color:rgba(47,230,183,.4);color:var(--teal)}
.modal-card.is-sheet .ab-pass input{width:auto;padding:0;margin:0}

/* --------------------------------- MOSSE ---------------------------------- */
.modal-card.is-sheet .mv-head{margin-bottom:4px}
.modal-card.is-sheet .mtool{background:var(--pan2);border:1px solid var(--ln);color:var(--ink);
  padding:12px 17px;border-radius:13px;font-size:13.5px;font-weight:750;box-shadow:none}
.modal-card.is-sheet .mtool:hover{background:#252d40;border-color:rgba(255,255,255,.2)}
.modal-card.is-sheet .mtool.on{background:linear-gradient(135deg,#6d7bff,#8b5cf6);border-color:transparent;
  color:#fff;box-shadow:0 8px 20px rgba(109,123,255,.35)}
.modal-card.is-sheet .mv-row{background:#0f131c;border:1px solid var(--ln);border-radius:14px;
  padding:11px 14px;margin-top:8px;color:var(--ink)}
.modal-card.is-sheet .mv-row:hover{border-color:rgba(255,255,255,.18)}
.modal-card.is-sheet .mv-lv{width:54px;padding:6px 4px;background:rgba(47,230,183,.13);
  color:var(--teal);border-radius:10px;font-size:14px;font-weight:850;
  border:1px solid rgba(47,230,183,.28)}
.modal-card.is-sheet .mv-nm,.modal-card.is-sheet .mvp2-nm{color:var(--ink)}
.modal-card.is-sheet .mv-meta,.modal-card.is-sheet .mvp2-meta2{color:var(--mut)}
/* il selettore delle mosse (playset + filtri + elenco) */
.modal-card.is-sheet .mvp2{background:#0f131c;border:1px solid var(--ln);border-radius:16px;
  color:var(--ink);box-shadow:none}
.modal-card.is-sheet .mvp2-plays{background:rgba(255,255,255,.035);
  border-bottom:1px solid var(--ln)}
.modal-card.is-sheet .mvp2-plays-lbl{color:var(--ink)}
.modal-card.is-sheet .mvp2-chip{background:#1c2231;color:var(--rc,#a9b6ff)}
.modal-card.is-sheet .mvp2-chip button{background:rgba(255,90,90,.16);color:#ff8f8f}
.modal-card.is-sheet .mvp2-clear{background:#1c2231;border-color:var(--ln);color:var(--mut)}
.modal-card.is-sheet .mvp2-clear:hover{background:#252d40}
.modal-card.is-sheet .mvp2-filtri label{color:var(--mut)}
.modal-card.is-sheet .mvp2-filtri select,
.modal-card.is-sheet .mvp2-filtri input,
.modal-card.is-sheet .mvp2-lv{background-color:#0b0e15;border-color:var(--ln);color:var(--ink);
  box-shadow:none}
.modal-card.is-sheet .mvp2-lv button{background:#1c2231;color:var(--teal)}
.modal-card.is-sheet .mvp2-lv button:hover{background:#252d40}
.modal-card.is-sheet .mvp2-lv input{background:#0b0e15;color:var(--teal);
  border-left-color:var(--ln);border-right-color:var(--ln)}
.modal-card.is-sheet .mvp2-meta{color:var(--mut)}
.modal-card.is-sheet .mvp2-lista{border-top-color:var(--ln)}
.modal-card.is-sheet .mvp2-row{border-bottom:1px solid rgba(255,255,255,.06)}
.modal-card.is-sheet .mvp2-row:hover{background:rgba(255,255,255,.05)}
.modal-card.is-sheet .mvp2-nm{color:var(--ink)}
.modal-card.is-sheet .mvp2-in{color:var(--teal)}
.modal-card.is-sheet .mvp2-vuoto{color:var(--mut)}
/* le famiglie delle mosse di Stato («per cosa fanno») */
.mvp2-fam{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:2px 14px 12px}
.modal-card.is-sheet .mvp2-fam{padding:2px 14px 12px}
.mvp2-fam-lbl{font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:#8a92a4;margin-right:2px}
.modal-card.is-sheet .mvp2-fam-lbl{color:var(--mut)}
.famchip{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:11px;
  font-size:12.5px;font-weight:750;cursor:pointer;color:#3a4258;
  background:linear-gradient(180deg,#fff,#f6f8fd);border:1px solid #dbe0ee;transition:.14s}
.famchip i{font-style:normal;font-size:13px;line-height:1}
.famchip b{font-weight:850;font-size:11px;opacity:.6}
.famchip:hover{border-color:#c2cae0;transform:translateY(-1px)}
.famchip.on{color:#fff;border-color:transparent}
.famchip.on b{opacity:.85}
.famchip.on.all{background:#5b6cff}
.famchip.on.alza{background:#12b886}
.famchip.on.abbassa{background:#e8590c}
.famchip.on.altera{background:#9c36b5}
.famchip.on.cura{background:#0ca678}
.famchip.on.protegge{background:#4263eb}
.famchip.on.campo{background:#f08c00}
/* dentro la scheda scura: fondo scuro anche per le chip a riposo */
.modal-card.is-sheet .famchip{background:var(--pan2);border-color:var(--ln);color:var(--ink)}
.modal-card.is-sheet .famchip:hover{background:#252d40;border-color:rgba(255,255,255,.2)}
.modal-card.is-sheet .famchip.on{border-color:transparent}

/* -------------------------------- IL PIEDE -------------------------------- */
.modal-card.is-sheet .modal-foot{background:#0a0d13;border-top:1px solid var(--ln);
  padding:14px 18px;gap:10px;border-radius:0 0 20px 20px;flex-wrap:wrap}
.modal-card.is-sheet .modal-foot .btn{padding:13px 20px;font-size:13.5px}
.modal-card.is-sheet .s2f-scheda{background:rgba(47,230,183,.12);border-color:rgba(47,230,183,.4);
  color:var(--teal);font-weight:850}
.modal-card.is-sheet .s2f-eredita{background:rgba(139,92,246,.14);border-color:rgba(139,92,246,.42);
  color:#c4b0ff;font-weight:850}
/* la spunta «salvato» in fondo: stessi tre stati, vestiti di scuro */
.modal-card.is-sheet .modal-foot .sv{font-weight:800;font-size:13px;padding:7px 14px;border-radius:999px}
.modal-card.is-sheet .sv.wait{background:rgba(240,180,41,.14);color:#f0b429;box-shadow:none}
.modal-card.is-sheet .sv.ok{background:rgba(47,230,183,.14);color:var(--teal);
  box-shadow:inset 0 0 0 1px rgba(47,230,183,.32)}
.modal-card.is-sheet .sv.ko{background:rgba(255,90,90,.14);color:#ff8f8f;box-shadow:none}

/* ---- le finestrelle che si aprono DALLA scheda (legende, playset, eredita) ----
   usano tutte `.ruo-overlay`: le vesto di scuro anche loro, così passando dalla
   scheda a una legenda non si prende un lampo bianco in faccia. Le altre
   finestre dell'app non hanno questa classe e restano chiare. */
.ruo-overlay{background:rgba(4,6,11,.72)}
.ruo-overlay .modal-card{background:#0c0f16;color:#e9eefb;border:1px solid rgba(255,255,255,.1);
  border-radius:20px;box-shadow:0 34px 100px rgba(0,0,0,.62)}
.ruo-overlay .modal-head{background:#0c0f16;border-bottom:1px solid rgba(255,255,255,.085)}
.ruo-overlay .modal-head h2{color:#e9eefb}
.ruo-overlay .modal-head .x{background:rgba(255,255,255,.07);border-color:transparent;color:#e9eefb}
.ruo-overlay .modal-head .x:hover{background:rgba(255,90,90,.22);color:#ffb3b3}
.ruo-overlay .modal-body,.ruo-overlay .modal-foot{background:#0c0f16;color:#e9eefb}
.ruo-overlay .modal-foot{border-top:1px solid rgba(255,255,255,.085)}
.ruo-overlay .hint,.ruo-overlay .ruo-fam-head,.ruo-overlay .ruo-sec h5{color:#8e97ac}
.ruo-overlay .ruo-card,.ruo-overlay .ruo-intro,.ruo-overlay .ruo-nota,
.ruo-overlay .nice-card,.ruo-overlay .mi-box,.ruo-overlay .mi-eff,.ruo-overlay .mi-note,
.ruo-overlay .ableg-card,.ruo-overlay .ableg-box{background:#151a25;color:#e9eefb;
  border-color:rgba(255,255,255,.09)}
.ruo-overlay .ruo-card>summary:hover{background:rgba(255,255,255,.05)}
/* i nomi dei ruoli tengono il loro colore, ma schiarito quanto basta per
   leggersi sul fondo scuro (alcuni sono bordeaux o blu molto cupi) */
.ruo-overlay .ruo-nome{color:color-mix(in srgb, var(--rc,#e9eefb) 62%, #ffffff)}
.ruo-overlay .pl-desc,.ruo-overlay .an-desc,.ruo-overlay .ableg-desc{color:#c8d0e2}
.ruo-overlay .ruo-desc,.ruo-overlay .ruo-sec p,.ruo-overlay b{color:#c8d0e2}
.ruo-overlay .ruo-fam{background:rgba(255,255,255,.07);color:#8e97ac}
.ruo-overlay .ruo-body{border-top-color:rgba(255,255,255,.1)}
.ruo-overlay .ruo-stat.up{background:rgba(47,230,183,.13);color:#3ddc84;border-color:rgba(47,230,183,.3)}
.ruo-overlay .ruo-stat.dn{background:rgba(255,90,90,.12);color:#ff8f8f;border-color:rgba(255,90,90,.3)}
.ruo-overlay .ruo-tipi.warn{background:rgba(240,180,41,.1);border-color:rgba(240,180,41,.3);color:#f0b429}
.ruo-overlay input,.ruo-overlay select,.ruo-overlay textarea{background:#0f131c;color:#e9eefb;
  border:1px solid rgba(255,255,255,.09);border-radius:11px}
.ruo-overlay .btn{background:#1c2231;border:1px solid rgba(255,255,255,.09);color:#e9eefb}
.ruo-overlay .btn:hover{background:#252d40}
.ruo-overlay .nice-head,.ruo-overlay .nice-empty{color:#8e97ac}
/* «Passa le modifiche alla linea»: le righe da spuntare */
.ruo-overlay .er-r{background:#151a25;border-color:rgba(255,255,255,.09)}
.ruo-overlay .er-r:hover{background:#1c2231}
.ruo-overlay .er-r b{color:#e9eefb}
.ruo-overlay .er-r small{color:#8e97ac}
/* le due scelte sulle mosse: tali e quali, oppure aggiunte alle sue */
.ruo-overlay .er-sub{margin:-2px 0 7px 26px;padding-left:12px;
  border-left:2px solid rgba(47,230,183,.35);display:grid;gap:6px;transition:opacity .15s}
.ruo-overlay .er-sub.spento{opacity:.35;pointer-events:none}
.ruo-overlay .er-opt{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-radius:11px;
  background:#0f131c;border:1px solid rgba(255,255,255,.07);cursor:pointer}
.ruo-overlay .er-opt:hover{border-color:rgba(255,255,255,.16)}
.ruo-overlay .er-opt input{margin-top:3px;flex:none;accent-color:#2fe6b7}
.ruo-overlay .er-opt b{display:block;font-size:13px;color:#e9eefb}
.ruo-overlay .er-opt small{display:block;font-size:12px;line-height:1.45;color:#8e97ac;margin-top:2px}
/* A QUALI forme passare le modifiche: la linea come pulsanti-nome accendibili.
   Il corrente è la sorgente (.er-src, tratteggiato); le altre forme sono .er-tgt
   (spente = grigie, accese = verde). Le frecce mostrano l'ordine della linea. */
.ruo-overlay .er-sel{margin:2px 0 6px}
.ruo-overlay .er-sel-cap{display:flex;justify-content:space-between;align-items:center;
  font-size:12.5px;font-weight:700;color:#c8d0e2;padding:0 2px;margin-bottom:8px}
.ruo-overlay .er-selall{font-size:12px;font-weight:600}
.ruo-overlay .er-selall a{color:#8ff0d4;cursor:pointer;text-decoration:none}
.ruo-overlay .er-selall a:hover{text-decoration:underline}
.ruo-overlay .er-chips{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.ruo-overlay .er-tgt{background:#151a25;border:1px solid rgba(255,255,255,.12);border-radius:999px;
  padding:6px 13px;font-size:13px;color:#8e97ac;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.ruo-overlay .er-tgt:hover{border-color:rgba(255,255,255,.3)}
.ruo-overlay .er-tgt.on{background:rgba(47,230,183,.18);border-color:rgba(47,230,183,.6);color:#8ff0d4}
.ruo-overlay .er-tgt.on::before{content:"✓ "}
.ruo-overlay .er-src{display:inline-flex;align-items:baseline;gap:6px;background:transparent;
  border:1px dashed rgba(255,255,255,.24);border-radius:999px;padding:6px 12px;font-size:13px;
  color:#e9eefb;font-weight:700}
.ruo-overlay .er-src small{font-size:10px;color:#8e97ac;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.ruo-overlay .er-arr{color:#5b6478;font-size:12px}

/* ---- TUTTE LE MOSSE IN GRANDE (pulsante «Vedile tutte») ------------------
   Le stesse mosse dell'elenco, ma tutte sott'occhio e raggruppate per livello.
   Vive dentro `.ruo-overlay`, quindi eredita già il fondo scuro. */
#mosseGrandiOverlay .modal-card{width:min(1180px,96vw);max-width:96vw}
#mosseGrandiOverlay .modal-body{padding:0 22px 20px}
.mvg-barra{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:14px 0 12px;background:#0c0f16}
.mvg-cerca{flex:1;min-width:190px;max-width:300px;padding:11px 14px;border-radius:12px;
  background:#0f131c;border:1px solid rgba(255,255,255,.09);color:#e9eefb;font-size:14px;
  font-family:inherit;outline:none}
.mvg-cerca:focus{border-color:#2fe6b7;box-shadow:0 0 0 3px rgba(47,230,183,.16)}
.mvg-sel{padding:11px 32px 11px 13px;border-radius:12px;background-color:#0f131c;color:#e9eefb;
  border:1px solid rgba(255,255,255,.09);font-size:13.5px;font-family:inherit;cursor:pointer;outline:none;
  -webkit-appearance:none;appearance:none;background-repeat:no-repeat;background-position:right 11px center;
  background-size:15px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238e97ac' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>")}
.mvg-sel:focus{border-color:#2fe6b7}
.mvg-sel option{background:#151a25;color:#e9eefb}
.mvg-pills{display:flex;gap:6px;flex-wrap:wrap}
.mvg-pill{padding:10px 14px;border-radius:12px;font-size:12.5px;font-weight:750;cursor:pointer;
  background:#151a25;border:1px solid rgba(255,255,255,.09);color:#c8d0e2;transition:.14s}
.mvg-pill b{font-weight:850;opacity:.65;margin-left:2px}
.mvg-pill:hover{border-color:rgba(255,255,255,.2)}
.mvg-pill.on.all{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.3)}
.mvg-pill.on.fis{background:rgba(232,89,12,.18);color:#ff9a5c;border-color:rgba(232,89,12,.5)}
.mvg-pill.on.mag{background:rgba(139,92,246,.2);color:#c4b0ff;border-color:rgba(139,92,246,.55)}
.mvg-pill.on.sta{background:rgba(47,230,183,.15);color:#2fe6b7;border-color:rgba(47,230,183,.45)}
.mvg-conta{margin-left:auto;white-space:nowrap}

/* la famiglia della mossa: FISICA · MAGICA · STATO, sempre in chiaro */
.mvg-cat,.mv-cat,.mi-cat{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;
  border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.3px;white-space:nowrap}
.mvg-cat.fis,.mv-cat.fis,.mi-cat.fis{background:rgba(232,89,12,.16);color:#ff9a5c}
.mvg-cat.mag,.mv-cat.mag,.mi-cat.mag{background:rgba(139,92,246,.2);color:#c4b0ff}
.mvg-cat.sta,.mv-cat.sta,.mi-cat.sta{background:rgba(47,230,183,.14);color:#2fe6b7}
.mvg-dett{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mvg-gruppo{margin-bottom:18px;padding:10px 12px 6px;border-radius:16px;
  border:1.5px dashed transparent;transition:border-color .16s,background .16s}
.mvg-gruppo.vuota{opacity:.6}
.mvg-gruppo.vuota:hover{opacity:1}
.mvg-gruppo.mira{border-color:rgba(47,230,183,.55);background:rgba(47,230,183,.06);opacity:1}
.mvg-lvh{display:flex;align-items:center;gap:12px;margin:0 0 11px;
  font-size:11px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:#8e97ac}
.mvg-lvh span{flex:none;padding:5px 12px;border-radius:999px;
  background:rgba(47,230,183,.13);color:#2fe6b7;letter-spacing:.8px}
.mvg-lvh i{flex:1;height:1px;background:rgba(255,255,255,.09)}
.mvg-lvh em{font-style:normal;font-size:10px;color:#8e97ac;min-width:14px;text-align:right}
.mvg-posto{grid-column:1/-1;padding:16px;border-radius:14px;text-align:center;
  border:1.5px dashed rgba(255,255,255,.12);color:#8e97ac;font-size:12.5px}
.mvg-gruppo.mira .mvg-posto{border-color:rgba(47,230,183,.5);color:#2fe6b7}
.mvg-griglia{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:12px}
.mvg-card{display:flex;flex-direction:column;gap:7px;padding:14px;border-radius:16px;
  background:#151a25;border:1px solid rgba(255,255,255,.08);
  border-left:4px solid var(--tc,#5b6cff);transition:transform .1s,box-shadow .14s}
.mvg-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.45)}
/* mentre la tieni in mano, e quando atterra nel livello nuovo */
.mvg-card.in-mano{opacity:.35;transform:scale(.97);box-shadow:none}
.mvg-card.atterrata{animation:mvgAtterra .9s ease-out}
@keyframes mvgAtterra{
  0%{box-shadow:0 0 0 0 rgba(47,230,183,.55);border-color:rgba(47,230,183,.75)}
  100%{box-shadow:0 0 0 16px rgba(47,230,183,0);border-color:rgba(255,255,255,.08)}
}
.mvg-presa{cursor:grab;color:#6f7890;font-size:14px;letter-spacing:-1px;line-height:1;
  user-select:none;transition:color .14s}
.mvg-card:hover .mvg-presa{color:#c8d0e2}
.mvg-card:active .mvg-presa{cursor:grabbing}
.mvg-top{display:flex;align-items:center;gap:8px}
.mvg-top .tbadge{margin:0}
.mvg-lv{margin-left:auto;width:58px;padding:7px 4px;text-align:center;border-radius:10px;
  background:#0b0e15;border:1px solid rgba(47,230,183,.28);color:#2fe6b7;
  font-size:15px;font-weight:850;font-family:inherit;outline:none}
.mvg-lv:focus{border-color:#2fe6b7;box-shadow:0 0 0 3px rgba(47,230,183,.16)}
.mvg-nome{font-size:16px;font-weight:800;color:#e9eefb;line-height:1.2}
.mvg-dett{font-size:12px;font-weight:700;color:#8e97ac}
.mvg-eff{font-size:12.5px;line-height:1.5;color:#c8d0e2;flex:1}
.mvg-azioni{display:flex;align-items:center;gap:8px;margin-top:2px}
.mvg-x{margin-left:auto;padding:6px 11px;border-radius:9px;font-size:11.5px;font-weight:700;
  cursor:pointer;color:#ff8f8f;background:rgba(255,90,90,.1);border:1px solid rgba(255,90,90,.28)}
.mvg-x:hover{background:rgba(255,90,90,.2)}

/* la riga che si è appena spostata resta illuminata un istante */
.modal-card.is-sheet .mv-row.mv-spost{border-color:rgba(47,230,183,.55);
  background:rgba(47,230,183,.08);transition:background .3s,border-color .3s}

/* ============================================================================
   RESTYLE 7 — ANIMEX DAL TELEFONO E DAL TABLET (24/07/2026).
   Andrea apre l'app dal tablet in casa (http://<ip-del-pc>:4500) e chiede che
   sia comoda anche da schermo piccolo. Qui NON si tocca niente di come
   funziona: solo come si dispone. Niente JavaScript, nessun id cambiato —
   soltanto regole di layout che entrano in gioco sotto una certa larghezza.
   ========================================================================== */

/* la scheda a una colonna quando lo schermo si stringe (vale anche sul tablet
   in verticale). Sta qui, PRIMA delle regole del telefono, perché quelle
   possano rifinirla senza essere sovrascritte. */
@media(max-width:900px){
  .modal-card.is-sheet .s2wrap{grid-template-columns:1fr;padding:14px}
  .modal-card.is-sheet .s2side{position:static;max-height:none;overflow:visible}
  .modal-card.is-sheet .ab-grid{grid-template-columns:1fr}
  .modal-card.is-sheet .st-row3{grid-template-columns:1fr 92px;grid-auto-rows:auto;row-gap:10px}
  .modal-card.is-sheet .st-final{grid-column:1/-1}
}

/* ---------------------------- TABLET (≤ 1100px) --------------------------- */
@media(max-width:1100px){
  .side{width:196px}
  .brand b{font-size:16px}
  .view{padding:18px 16px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .modal{padding:10px}
  .modal-card{max-height:96vh}
}

/* ------------------ TELEFONO E TABLET IN VERTICALE (≤ 860px) --------------
   860 e non 760: un iPad in verticale sta sui 768-834px, e anche lì la barra
   laterale rubava spazio agli Animei. */
@media(max-width:860px){
  /* la pagina va in colonna: il menu laterale diventa una barra in cima */
  body{flex-direction:column}
  .side{width:auto;height:auto;position:sticky;top:0;z-index:20;flex-direction:column;
    border-right:none;border-bottom:1px solid rgba(255,255,255,.07);box-shadow:0 4px 16px rgba(8,12,24,.35)}
  .brand{padding:10px 14px 8px;gap:9px}
  .brand .logo{width:32px;height:32px;border-radius:10px;font-size:13px}
  .brand b{font-size:15px}
  .brand small{display:none}
  /* le voci scorrono in orizzontale, come le linguette di un'app */
  .side nav{display:flex;gap:6px;overflow-x:auto;padding:0 10px 10px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .side nav::-webkit-scrollbar{display:none}
  .side nav a,.side nav button,.side nav .navitem{white-space:nowrap;flex:none}
  .side nav>div,.side nav>span{white-space:nowrap;flex:none}
  .side-foot{display:none}

  .topbar{padding:10px 12px;gap:8px;position:static}
  /* il titolo della sezione lo dice già la voce accesa nella barra in cima:
     su un telefono quella riga è spazio che serve agli Animei */
  .topbar h1{display:none}
  /* i comandi in una riga sola che scorre di lato: altrimenti su un telefono
     occupano quattro righe e gli Animei finiscono sotto la piega */
  .top-actions{width:100%;gap:7px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .top-actions::-webkit-scrollbar{display:none}
  .top-actions>*{flex:none}
  .top-actions input[type="search"],.top-actions input:not([type]),.top-actions input[type="text"]{
    min-width:160px}
  .view{padding:14px 12px}

  /* TRE Animei per riga: immagini più piccole, così se ne vedono molti di più
     scorrendo (chiesto da Andrea dopo la prova dal telefono). Sul tablet in
     verticale, che ha più larghezza, se ne mettono quattro. */
  .grid{grid-template-columns:repeat(3,1fr);gap:8px}
  .ccard{border-radius:12px}
  .ccard .thumb{height:88px;padding:5px}
  .ccard .num{top:5px;left:6px;font-size:9.5px;padding:1px 6px;border-radius:7px}
  .ccard .b{padding:6px 7px 8px}
  .ccard .nm{font-size:12.5px;margin:0 0 4px;line-height:1.15;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ccard .crow{gap:5px;margin-top:3px;flex-wrap:wrap}
  .ccard .tbadge{font-size:9.5px;padding:2px 7px;margin:0}
  .ccard .stars{font-size:10px;letter-spacing:-.5px}
  .ccard .ruolo,.ccard .crow .ruo-chip{font-size:9px;padding:1px 6px}
  .ccard .lockbtn{transform:scale(.82);transform-origin:top right}
  @media(min-width:660px){
    .grid{grid-template-columns:repeat(4,1fr);gap:10px}
    .ccard .thumb{height:108px}
    .ccard .nm{font-size:13.5px}
  }

  /* tutto ciò che si tocca deve essere abbastanza grande */
  .btn,.mtool,.mvg-pill{min-height:42px;font-size:13.5px}
  .btn.sm{min-height:38px}

  /* i campi a 16px: sotto questa misura il telefono ingrandisce da solo la
     pagina appena ci scrivi dentro, ed è fastidiosissimo */
  input,select,textarea{font-size:16px}

  /* le tabelle del catalogo scorrono di lato invece di schiacciarsi */
  .view .tbl{display:block;overflow-x:auto;white-space:nowrap}
  .tbl .clip{max-width:200px}

  /* le finestre prendono tutto lo schermo. Uso dvh (dynamic viewport height):
     su iPhone tiene conto delle barre di sistema, così la scheda entra tutta e
     il footer NON finisce sotto la barra in basso (coperto). */
  .modal{padding:0;align-items:stretch;height:100vh;height:100dvh}
  .modal-card{max-width:100%;width:100%;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;border-radius:0}
  .modal-head{padding:12px 14px;position:sticky;top:0;z-index:5}
  .modal-head h2{font-size:18px}
  .modal-body{padding:14px}
  .modal-foot{padding:10px 12px;gap:7px;flex-wrap:wrap}

  /* LA SCHEDA DELL'ANIMEI */
  .modal-card.is-sheet{width:100%;max-width:100%;border-radius:0;border:none}
  .modal-card.is-sheet .s2tabs{padding:6px 10px 0}
  .modal-card.is-sheet .s2tab{padding:11px 12px;font-size:11px;gap:6px}
  .modal-card.is-sheet .s2tab i{font-size:15px}
  .modal-card.is-sheet .s2wrap{padding:12px 10px 18px;gap:12px}
  .modal-card.is-sheet .s2halo{height:200px}
  .modal-card.is-sheet .s2halo img{max-height:186px}
  .modal-card.is-sheet .s2name{font-size:24px}
  .modal-card.is-sheet .s2card,.modal-card.is-sheet .stat-panel{padding:15px 14px;border-radius:16px}
  .modal-card.is-sheet .frow{gap:10px}
  .modal-card.is-sheet .field{min-width:100%}          /* un campo per riga */
  .modal-card.is-sheet .frow .field[style*="max-width"]{max-width:none!important}
  .modal-card.is-sheet .st-head{flex-direction:column}
  .modal-card.is-sheet .st-bstbox{min-width:0;width:100%}
  /* IL PIEDE su iPhone/Android: FISSO in fondo allo schermo (non si muove più
     col contenuto), UNA sola linea che scorre a destra/sinistra con tutti i
     pulsanti. Rispetta la barra in basso dell'iPhone (safe-area). */
  .modal-card.is-sheet .modal-foot{position:fixed;left:0;right:0;bottom:0;z-index:40;
    display:flex;flex-wrap:nowrap;overflow-x:auto;gap:8px;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
    background:#0a0d13;border-top:1px solid var(--ln);
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .modal-card.is-sheet .modal-foot::-webkit-scrollbar{display:none}
  .modal-card.is-sheet .modal-foot .btn{flex:none;min-width:max-content;white-space:nowrap;
    padding:13px 18px;font-size:13.5px}
  .modal-card.is-sheet .modal-foot .btn.primary{padding:13px 22px}
  .modal-card.is-sheet .modal-foot .sp{display:none}
  /* il contenuto scorre DIETRO al footer fisso: gli lascio spazio in fondo */
  .modal-card.is-sheet .modal-body{padding-bottom:calc(82px + env(safe-area-inset-bottom, 0px))}
  /* «✓ Salvato»: pillola verde ben visibile, galleggia CENTRATA sopra il footer,
     compare solo quando c'è qualcosa da dire */
  .modal-card.is-sheet .modal-foot #salvaStato{position:fixed;left:50%;transform:translateX(-50%);
    bottom:calc(74px + env(safe-area-inset-bottom, 0px));right:auto;z-index:61;
    width:auto;flex:none;padding:10px 20px;font-size:14px;font-weight:800;
    box-shadow:0 10px 28px rgba(0,0,0,.6)}
  .modal-card.is-sheet .sv:empty{display:none}
  /* le linguette in cima: sotto il notch/dynamic island dell'iPhone */
  .modal-card.is-sheet .s2tabs{padding-top:calc(8px + env(safe-area-inset-top, 0px))}
  /* anche le finestrelle (legende, «passa alla linea», «vedile tutte») rispettano
     la barra in basso dell'iPhone, così il loro «Chiudi» non finisce tagliato */
  .ruo-overlay .modal-foot,#mosseGrandiOverlay .modal-foot{
    padding-bottom:calc(12px + env(safe-area-inset-bottom, 0px));flex-wrap:wrap;gap:8px}

  /* le mosse: livello, tipo e nome su una riga, il resto sotto */
  .modal-card.is-sheet .mv-row{flex-wrap:wrap;row-gap:6px}
  .modal-card.is-sheet .mv-in{width:100%;order:9}

  /* ======================= PERSONALIZZAZIONE SUL TELEFONO ==================
     Qui si sceglie tutto quello che rende un Animei quello che è: abilità,
     mosse, statistiche. Su uno schermo da 390 px i pezzi pensati per il
     computer diventano ingombranti: sei linguette larghe che scorrono di lato
     (se ne vedevano due e mezzo), cinque pulsantoni per le mosse alti 142 px,
     e sopra la lista delle mosse una colonna di filtri che lasciava tre righe
     di risultati. Da qui in giù è tutto rimpicciolito e riordinato — SOLO sul
     telefono, sul computer non cambia niente. */

  /* LE SEI LINGUETTE tutte in vista: due file da tre invece di una fila che
     scorre. Si vede subito dove si può andare, senza trascinare. */
  .modal-card.is-sheet .s2tabs{display:grid;grid-template-columns:repeat(3,1fr);
    gap:2px;overflow:visible;padding:calc(6px + env(safe-area-inset-top,0px)) 8px 0}
  .modal-card.is-sheet .s2tab{justify-content:center;padding:9px 4px;font-size:10px;
    letter-spacing:.2px;gap:4px;border-radius:10px 10px 0 0;min-width:0}
  .modal-card.is-sheet .s2tab i{font-size:13px}
  .modal-card.is-sheet .s2x{position:absolute;top:calc(4px + env(safe-area-inset-top,0px));right:6px;
    padding:6px 9px;font-size:15px;z-index:2}
  .modal-card.is-sheet .s2tabs{position:sticky;padding-right:44px}

  /* I PULSANTI DEL PANNELLO MOSSE: più bassi e su due file ordinate, invece di
     cinque blocchi che si accavallano. «Aggiungi mossa» prende tutta la riga:
     è quello che si preme sempre. */
  .modal-card.is-sheet .mv-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 4px}
  .modal-card.is-sheet .mtool{padding:9px 8px;font-size:11.5px;gap:5px;justify-content:center;
    border-radius:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .modal-card.is-sheet .mtool span{font-size:13px}
  .modal-card.is-sheet .mtool:first-child{grid-column:1/-1;padding:11px 8px;font-size:13px}

  /* LA LISTA DELLE MOSSE IMPARATE: prima era alta 320 px fissi dentro una
     pagina già lunga, cioè due scorrimenti uno dentro l'altro. Ora scorre con
     la pagina e basta. */
  .modal-card.is-sheet .mv-rows{max-height:none;overflow:visible}

  /* ---- IL SELETTORE DELLE MOSSE ---- */
  /* Ricerca e livello in cima e SEMPRE VISIBILI mentre si scorre l'elenco:
     si aggiunge una mossa dopo l'altra senza tornare su ogni volta. */
  .mvp2-filtri{position:sticky;top:var(--tabs-h,86px);z-index:3;background:#fff;gap:8px;padding:10px 10px 8px;
    border-bottom:1px solid rgba(20,30,60,.08);align-items:flex-end;
    box-shadow:0 6px 14px rgba(20,30,60,.10)}
  .mvp2-filtri .fx.grow{flex:1 1 100%;min-width:0}
  .mvp2-filtri label{font-size:10px}
  .mvp2-filtri select,.mvp2-filtri input{padding:10px 12px;font-size:16px}  /* 16px: se no il telefono zooma da solo */
  .mvp2-lv button{width:40px;height:42px;font-size:19px}
  .mvp2-lv input{width:52px;height:42px;font-size:16px}

  /* i filtri fini stanno CHIUSI: aperti si mangiavano mezzo schermo */
  .mvp2-av{display:none}
  .mvp2.filtri-aperti .mvp2-av{display:block}
  .mvp2-fbtn{display:inline-flex;align-items:center;gap:6px;padding:11px 13px;border-radius:10px;
    border:1px solid #d7dcec;background:#fff;color:#4b5480;font-family:inherit;font-size:12.5px;
    font-weight:800;cursor:pointer;line-height:1;flex:none}
  .mvp2-fbtn i{font-style:normal;font-size:9px;opacity:.6}
  .mvp2-fbtn b{background:#4553d6;color:#fff;border-radius:999px;padding:1px 6px;font-size:11px}
  .mvp2-fbtn.on{border-color:#c3caff;background:#eef0ff;color:#4553d6}
  /* Tipo e Categoria si vedono solo a filtri aperti, mezza riga ciascuno */
  .mvp2-filtri .fx.av{order:0;display:none}
  .mvp2.filtri-aperti .mvp2-filtri .fx.av{display:flex;flex:1 1 45%;min-width:0}
  .mvp2-azzera{display:block;padding:0 12px 12px}
  .mvp2-azzera button{width:100%;padding:10px;border-radius:10px;border:1px solid #dbe0ee;
    background:#fff;color:#6b7280;font-family:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
  .mvp2-fam{gap:5px;padding:8px 10px}
  .famchip{padding:7px 9px;font-size:11.5px}

  /* La barra che resta in cima: senza l'etichetta «Cerca» (lo dice già il
     campo) e con le scritte piccole, così ruba meno schermo ai risultati. */
  .mvp2-filtri .fx.grow label{display:none}
  .mvp2-filtri label{font-size:9px;letter-spacing:.4px}

  /* LE RIGHE DEI RISULTATI SEMPRE UGUALI: prima erano a capo libero e il «＋»
     finiva ora in fondo alla riga, ora sotto al nome, ora su una riga tutta
     sua — tre altezze diverse e il pulsante mai dove te l'aspetti. Adesso è
     una griglia fissa: tipo · nome · ? · ＋ sopra, e sotto i dati della mossa.
     Due righe secche, il ＋ sempre nello stesso posto sulla destra. */
  .mvp2-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;
    align-items:center;gap:3px 7px;padding:8px 10px}
  .mvp2-row>*{grid-row:1}
  .mvp2-nm{font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mvp2-meta2{grid-row:2;grid-column:1/-1;font-size:11px;width:auto}
  .mvp2-plus{padding:8px 12px;font-size:12.5px;white-space:nowrap}
  .mvp2-in{grid-row:1;font-size:11px;white-space:nowrap}
  .mvp2-lista{max-height:none}

  /* QUANDO SI APRE LA TASTIERA: la finestra si accorcia fino a dove si vede
     davvero (--vvh), e il piede coi pulsanti sparisce — tanto in quel momento
     stai scrivendo, e senza di lui ci stanno quattro o cinque risultati in più
     invece di uno. */
  html.tastiera-aperta .modal,
  html.tastiera-aperta .modal-card{height:var(--vvh,100dvh);max-height:var(--vvh,100dvh)}
  html.tastiera-aperta .modal-card.is-sheet .modal-foot{display:none}
  html.tastiera-aperta .modal-card.is-sheet .modal-body{padding-bottom:12px}
  html.tastiera-aperta .modal-card.is-sheet .s2tabs{display:none}   /* spazio alla lista */
  /* mentre scrivi la barra si stringe a una riga sola — campo e livello
     affiancati, via le etichette e il pulsante dei filtri: sono ~75 px in meno,
     cioè un paio di risultati in più sotto le dita */
  html.tastiera-aperta .mvp2-filtri{padding:8px 10px;gap:7px}
  html.tastiera-aperta .mvp2-filtri .fx.grow{flex:1 1 110px;min-width:110px}
  html.tastiera-aperta .mvp2-filtri label,
  html.tastiera-aperta .mvp2-fbtn{display:none}

  /* TUTTE LE MOSSE IN GRANDE */
  #mosseGrandiOverlay .modal-card{width:100%;max-width:100%;border-radius:0}
  #mosseGrandiOverlay .modal-body{padding:0 12px 16px}
  .mvg-griglia{grid-template-columns:1fr}
  .mvg-barra{gap:8px}
  .mvg-cerca{max-width:none;flex:1 1 100%}
  .mvg-sel{flex:1 1 auto}
  .mvg-conta{margin-left:0}
  /* i quattro filtri in una riga sola che scorre, invece di due righe */
  .mvg-pills{flex-wrap:nowrap;overflow-x:auto;flex:1 1 100%;padding-bottom:2px;
    scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .mvg-pills::-webkit-scrollbar{display:none}
  .mvg-pill{flex:none}
  .mvg-gruppo{padding:8px 6px 4px}

  /* le legende e le finestrelle */
  .ruo-overlay .modal-card{width:100%;max-width:100%;border-radius:0}
  .ruo-card>summary{padding:12px 14px;font-size:15px}
  .ruo-body{padding:2px 14px 14px}
  .an-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));padding:0 12px 12px}
}

/* --------------------- TELEFONO PICCOLO (≤ 430px) ------------------------- */
@media(max-width:430px){
  .grid{gap:7px}
  .ccard .thumb{height:80px}
  .ccard .nm{font-size:11.5px}
  .topbar h1{font-size:17px}
  .modal-card.is-sheet .s2halo{height:176px}
  .modal-card.is-sheet .s2kpis{grid-template-columns:1fr 1fr;gap:8px}
  .modal-card.is-sheet .s2kpi{padding:11px 12px}
  .modal-card.is-sheet .s2kpi .val{font-size:25px}
  .modal-card.is-sheet .st-row3{grid-template-columns:1fr 74px}
  .modal-card.is-sheet .st-base input{font-size:20px}
}



/* ---- filtri per tipo sopra la griglia degli Animei ---- */
.ftipi{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin:0 0 12px}
.ftipo{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--fc,#9aa0a6);
  background:transparent;color:var(--fc,#9aa0a6);font-size:12px;font-weight:700;
  padding:5px 6px 5px 11px;border-radius:999px;cursor:pointer;transition:.14s;line-height:1}
.ftipo:hover{background:color-mix(in srgb,var(--fc,#9aa0a6) 14%,transparent)}
.ftipo i{font-style:normal;font-size:11px;font-weight:800;background:color-mix(in srgb,var(--fc,#9aa0a6) 16%,transparent);
  border-radius:999px;padding:2px 7px;min-width:20px;text-align:center}
.ftipo.on{background:var(--fc,#9aa0a6);color:#fff;border-color:var(--fc,#9aa0a6)}
.ftipo.on i{background:rgba(255,255,255,.28);color:#fff}
.ftipo.tutti{--fc:#6b7280}
.fnota{font-size:12px;color:#6b7280;margin-left:4px}
.fnota a{color:#7c5cff;font-weight:700;text-decoration:none}
.fnota a:hover{text-decoration:underline}

/* ===== SCHEDA (dex) — impaginazione a tutta finestra =========================
   Prima il contenuto era chiuso in 720px dentro una finestra da 1500: metà
   schermo restava vuoto e la creatura si vedeva piccola. Ora: colonna sinistra
   larga con l'immagine GRANDE, colonna destra che si prende tutto il resto.  */
.sch{width:100%}
.sch-testa{border-radius:14px;padding:14px 20px;display:flex;justify-content:space-between;
  align-items:center;box-shadow:inset 0 -30px 40px rgba(0,0,0,.12)}
.sch-num{font-size:13px;opacity:.85;font-weight:700}
.sch-nome{font-size:30px;font-weight:900;line-height:1.05}
.sch-tipi{margin-top:7px}
.sch-linea{font-size:12px;opacity:.85;margin-top:4px}

.sch-corpo{display:grid;grid-template-columns:minmax(320px,38%) 1fr;gap:24px;margin-top:16px;align-items:start}

/* l'immagine riempie la sua colonna: niente più francobollo.
   Due trappole trovate sul campo, entrambe fanno sfondare lo sprite fuori dal riquadro:
   1) niente «aspect-ratio + max-height»: l'height:100% dell'immagine si calcola
      sull'altezza del rapporto PRIMA del limite. Ci vuole un'altezza VERA.
   2) niente grid: in una griglia la riga si dimensiona sul contenuto, quindi
      l'height:100% non ha un riferimento certo e ricade su «auto». Ci vuole FLEX,
      dove l'altezza del contenitore è definita e la percentuale si risolve. */
.sch-img{background:#f3f5fb;border-radius:16px;padding:14px;display:flex;
  align-items:center;justify-content:center;height:min(56vh,520px);overflow:hidden}
.sch-img img{width:100%;height:100%;max-height:100%;object-fit:contain;display:block}
.sch-misure{display:flex;gap:10px;margin-top:10px}
.sch-misure>div{flex:1;background:#f7f8fc;border-radius:12px;padding:10px;text-align:center}
.sch-misure b{font-size:17px}

.sch-tit{font-weight:700;font-size:13px;letter-spacing:.02em}
.sch-desc{font-size:15px;line-height:1.65;color:#333;margin:6px 0 16px;max-width:78ch}
.sch-stat{margin:6px 0 16px;max-width:760px}
.sch-evo{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.sch-evo-c{cursor:pointer;text-align:center;border:2px solid transparent;border-radius:14px;padding:6px 10px;transition:.14s}
.sch-evo-c:hover{background:#f2f4fb!important}
.sch-evo-c img{width:104px;height:104px;object-fit:contain;display:block}
.sch-evo-c div{font-size:12.5px;font-weight:700;color:#444;margin-top:2px}

/* schermi stretti: una colonna sola, immagine comunque grande */
@media(max-width:1000px){
  .sch-corpo{grid-template-columns:1fr;gap:16px}
  .sch-img{height:min(46vh,380px)}
  .sch-nome{font-size:25px}
}

/* ---- barra dei LIVELLI LIBERI (pannello mosse) --------------------------
   Sta incollata in alto insieme ai filtri: i due pezzi sono dentro un unico
   contenitore appiccicato, così restano fermi mentre si scorre l'elenco.  */
.mvg-testa{position:sticky;top:0;z-index:4;background:#0c0f16}
.mvg-testa .mvg-barra{position:static}
.mvg-liberi{display:flex;align-items:flex-start;gap:12px;padding:0 0 12px;
  border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:14px}
.mvg-lib-tit{flex:none;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:#7d8598;padding-top:5px}
.mvg-lib-tit b{color:#2fe6b7;font-size:12px;margin-left:3px}
.mvg-lib-lista{display:flex;flex-wrap:wrap;gap:4px;flex:1;max-height:76px;overflow-y:auto}
.mvg-lib{min-width:28px;padding:3px 7px;border-radius:8px;font-size:11.5px;font-weight:700;
  cursor:pointer;background:rgba(47,230,183,.08);color:#8fe8cf;
  border:1px solid rgba(47,230,183,.22);transition:.12s;line-height:1.35;font-family:inherit}
.mvg-lib:hover{background:rgba(47,230,183,.22);color:#0c0f16;border-color:#2fe6b7}
.mvg-lib-pieno{font-size:12px;color:#6b7280;padding-top:5px}
/* lampeggio breve sulla corsia appena aperta, per ritrovarla con l'occhio.
   Niente transizione sul colore: il bordo partirebbe dal colore del testo (bianco)
   e ci metterebbe mezzo secondo a diventare verde. Deve nascere già verde. */
.mvg-gruppo.appena-aperta{outline:2px solid #2fe6b7;outline-offset:3px;border-radius:14px}
@media(max-width:760px){
  .mvg-liberi{flex-direction:column;gap:6px}
  .mvg-lib-lista{max-height:64px}
}

/* ---- ordina per danno (pannello mosse) ---- */
.mvg-ord{display:inline-flex;gap:0;border:1px solid rgba(255,255,255,.10);border-radius:12px;overflow:hidden}
.mvg-ordb{padding:10px 13px;border:0;background:transparent;color:#8b93a7;font-size:12.5px;
  font-weight:700;cursor:pointer;font-family:inherit;transition:.13s;white-space:nowrap}
.mvg-ordb+.mvg-ordb{border-left:1px solid rgba(255,255,255,.08)}
.mvg-ordb:hover{color:#e9eefb;background:rgba(255,255,255,.05)}
.mvg-ordb.on{background:#2fe6b7;color:#0c0f16}
@media(max-width:760px){ .mvg-ordb{padding:9px 10px;font-size:12px} }

/* ---- v9: la scena SEGUE la finestra ---------------------------------------
   Prima era tutto in pixel fissi: scena alta 540, avversario 300, tuo Animei 350.
   Ingrandendo l'app restava una striscia in alto con sotto mezzo schermo vuoto,
   e le creature sembravano francobolli in mezzo al verde.
   Ora le due misure che contano stanno in due variabili legate all'altezza della
   finestra, e TUTTE le posizioni si ricavano da quelle: così ingrandendo cresce
   ogni cosa insieme, senza che i pannelli finiscano sopra le creature.
   Gli sprite sono 512px di lato in originale, quindi arrivare a ~500 non sgrana. */
/* La misura si prende dal lato PIÙ generoso fra altezza e larghezza: la scena è
   molto più larga che alta, e legandola alla sola altezza le creature restavano
   piccole in mezzo a tutto quello spazio orizzontale. */
.bt-stage{
  /* L'avversario un filo piu' piccolo: parte gia' da meta' scena, ed e' quello
     che con le ali aperte andava a finire addosso all'altro. */
  --spr-foe: clamp(300px, max(35vh, 23vw), 560px);
  --spr-you: clamp(390px, max(51vh, 35vw), 830px);
  min-height: clamp(540px, 80vh, 1100px);
}
/* NIENTE RIQUADRO QUADRATO.
   Con un riquadro quadrato e «object-fit: contain», una creatura LARGA (ali
   spiegate) tocca i due lati e lascia due fasce vuote sopra e sotto: risultato,
   si vede piccola. Misurato: una figura 512x436 riempiva l'85% del riquadro,
   una verticale il 96%.
   Il riquadro ora è più LARGO che alto: così è sempre l'ALTEZZA a comandare e
   tutte le creature risultano alte uguale, che siano larghe o strette.
   (Con «max-height» non funzionava: quello limita soltanto, non ingrandisce, e
   le immagini più piccole restavano piccole.)
   «object-position» tiene la creatura attaccata al suo bordo, se no il riquadro
   più largo la spostava verso il centro. */
/* il riquadro è più largo della creatura e su schermi stretti arriva a sovrapporsi
   ai pulsanti: è trasparente e sta sotto, ma così non può rubare nemmeno un clic */
.bt-spr-foe, .bt-spr-you{pointer-events:none}
.bt-spr-foe{width:calc(var(--spr-foe) * 1.6 * var(--taglia,1));height:calc(var(--spr-foe) * var(--taglia,1));object-position:right center;
  /* IL TETTO ALLA LARGHEZZA — e' questo che toglie la sovrapposizione.
     Misurato a schermo intero: un drago alato veniva disegnato largo 792 px in
     alto a destra mentre l'altro ne occupava 1150 in basso a sinistra, su un
     campo di 1677. Due figure larghe non possono starci, comunque le sposti.
     Il rimedio non e' rimpicciolire tutti — le creature strette non c'entrano
     niente — ma dire quanto campo puo' prendersi UNA figura. Con
     «object-fit: contain» il tetto morde solo chi e' davvero largo: chi e'
     alto e stretto e' gia' sotto la soglia e non se ne accorge nemmeno. */
  max-width:36%;
  top:clamp(18px, 2vh, 44px); right:clamp(30px, 3.5vw, 120px)}
/* il tuo Animei è tagliato in basso apposta, come nei Pokémon, ma poco: il taglio
   è in proporzione alla sua dimensione (prima era fisso a -120px) e adesso è più
   leggero, così la creatura sale e si vede quasi tutta */
/* il tuo Animei non deve mai finire sotto i pulsanti: si prende tutto lo spazio
   che resta a sinistra della barra dei comandi, e non un pixel di più. Su schermi
   larghi il limite non tocca nemmeno, su quelli stretti stringe quel tanto che
   basta invece di sovrapporsi. */
/* AL CENTRO DEL SUO SPAZIO, non incollato al bordo.
   Prima stava attaccato a sinistra e per giunta un filo OLTRE il bordo
   (left negativo): la scena gli tagliava una fetta e sembrava spinto fuori.
   Misurato prima del cambio: il riquadro partiva 18 px fuori dallo schermo.
   Andrea: «perche' gli animei del giocatore stanno cosi' spostati a sinistra?
   cerca di prendere sempre il centro!». Adesso il riquadro parte dal bordo
   (left:0) e la creatura si mette in mezzo allo spazio che resta a sinistra
   della barra dei comandi. Niente piu' tagli, e la meta' di sinistra e' sua. */
.bt-spr-you{width:calc(var(--spr-you) * 1.6 * var(--taglia,1));height:calc(var(--spr-you) * var(--taglia,1));object-position:center center;
  /* Due trappole in questo conto, entrambe prese in faccia:
     1) la barra dei comandi ha ANCHE un tetto al 48% della scena, quindi spesso è
        più stretta della sua larghezza nominale. Sottraendo solo quella nominale
        si buttavano via un centinaio di pixel e il tuo Animei restava più piccolo
        dell'avversario. Va sottratta la più piccola fra le due.
     2) vanno contati TUTTI i pezzi, non solo la barra: il margine da cui parte la
        creatura a sinistra e il margine della barra a destra. Dimenticando quello
        di sinistra sbordava esattamente di quei pixel. */
  /* stesso tetto sulla larghezza dell'avversario (vedi li' il perche'), qui
     accanto al limite che gia' c'era: vale il piu' stretto dei due. Al
     giocatore si concede meta' campo, all'avversario un po' meno. */
  max-width:min(50%, calc(100% - min(clamp(520px, 34vw, 760px), 48%) - clamp(22px, 2vw, 70px) - 10px));
  /* IN MEZZO ALLO SPAZIO LIBERO. Mettendo left E right insieme alla larghezza e
     ai margini automatici, la scatola si centra da sola nella fascia che va dal
     bordo sinistro alla barra dei comandi — e la creatura non cambia di un
     pixel, cambia solo dove sta. Con il solo left:0 restava appoggiata a
     sinistra: misurato, il suo centro cadeva a 310 invece che a 385. */
  left:0; right:calc(min(clamp(520px, 34vw, 760px), 48%) + clamp(22px, 2vw, 70px) + 10px);
  margin-left:auto; margin-right:auto;
  bottom:calc(var(--spr-you) * -0.03)}
/* il pannello sta sopra la testa del tuo Animei: segue la sua altezza */
.bt-you-panel{bottom:calc(var(--spr-you) * 0.57); right:clamp(22px, 2vw, 70px)}
.bt-foe-panel{top:clamp(22px, 2.2vh, 48px); left:clamp(22px, 2vw, 70px)}
.bt-actionbox{right:clamp(22px, 2vw, 70px); bottom:clamp(20px, 2.2vh, 48px);
  width:clamp(520px, 34vw, 760px)}

/* ---- v10: ogni FORMA di immagine ha il suo trattamento ---------------------
   Le tre forme non si possono trattare uguale: una creatura ad ali spiegate
   (ORIZZONTALE) vuole larghezza, una slanciata (VERTICALE) vuole altezza. Con
   una regola sola le orizzontali restavano sempre le più piccole della scena.
   La classe la mette il codice quando l'immagine è caricata (bxFormaSprite).

   L'AVVERSARIO va già bene com'è: qui si tocca soprattutto il GIOCATORE. */

/* ORIZZONTALI del giocatore: le più penalizzate. Si allargano molto di più,
   si appoggiano in BASSO invece che stare centrate, e possono passare un po'
   dietro al pannello e ai pulsanti — stanno sotto come livello (z-index 2
   contro 4), quindi non coprono niente e non rubano clic. */
.bt-spr-you.spr-oriz{
  width:calc(var(--spr-you) * 2);
  /* ...ma non fino a invadere l'altra meta' del campo. Il permesso di sbordare
     («+150px») serviva a non farle sfigurare, pero' a schermo intero le portava
     al 69% della scena: li' l'avversario ce l'ha gia' il piede, e due alati si
     toccavano. Il 58% e' la larghezza massima oltre la quale l'incontro e'
     matematico, visto che dall'altra parte ne serve il 36% piu' il margine. */
  max-width:min(58%, calc(100% - min(clamp(520px, 34vw, 760px), 48%) + 150px));
  object-position:center bottom;
  bottom:0;
}
/* VERTICALI: vanno bene come sono, solo appoggiate in basso per non lasciare
   un vuoto sotto ai piedi */
.bt-spr-you.spr-vert{object-position:center bottom}
/* QUADRATE: nessun ritocco, erano già giuste */

/* ---- v11: le mosse in battaglia si devono LEGGERE ---------------------------
   Erano cards bianche su verde chiaro con testo grigio piccolo: nome poco
   staccato, riga dei dettagli quasi invisibile, PP smorti. E la ⓘ era un
   carattere nudo appoggiato in un angolo. */
.bt-actionbox .bt-move{
  background:#fff; border:1px solid rgba(15,20,35,.10); border-left-width:6px;
  padding:9px 14px 9px 15px; gap:5px;
  box-shadow:0 2px 4px rgba(15,20,35,.06), 0 6px 18px rgba(15,20,35,.13);
}
.bt-actionbox .bt-move:hover{box-shadow:0 3px 6px rgba(15,20,35,.10), 0 10px 26px rgba(15,20,35,.20)}
/* nome della mossa: più grande e più scuro, è la cosa che si legge per prima */
.bt-actionbox .bt-move b{font-size:15.5px;font-weight:800;color:#141a2a;letter-spacing:.1px;padding-right:26px}
/* riga dei dettagli: era grigio chiaro, ora si legge */
.bt-actionbox .bt-move .bt-move-sub{font-size:12.5px;color:#3f4759;gap:8px}
.bt-actionbox .bt-move .tbadge{font-size:11px;padding:3px 10px;letter-spacing:.2px}
.bt-actionbox .bt-move-pp{color:#2b3244;font-weight:800;font-size:12.5px}
.bt-actionbox .bt-move-pp.low{color:#c47f00}
/* mossa finita: si capisce che non si può usare, senza sparire del tutto */
.bt-actionbox .bt-move-out{opacity:.5}

/* la ⓘ diventa un pulsantino tondo vero */
.bt-move-i{
  position:absolute; top:7px; right:8px; width:22px; height:22px;
  display:flex; align-items:center; justify-content:center;
  font-size:13px; font-weight:800; font-style:normal; line-height:1;
  color:#6b7488; background:rgba(15,20,35,.06);
  border:1px solid rgba(15,20,35,.08); border-radius:50%;
  cursor:pointer; transition:.14s;
}
.bt-move-i:hover{background:#5b6cff;border-color:#5b6cff;color:#fff;transform:scale(1.12)}

/* ---- filtri fini del selettore mosse: statistica e stato ---- */
.famchip.st{border-color:rgba(90,140,255,.35);color:#9fc0ff}
.famchip.st.on{background:#3a6fd8;border-color:#3a6fd8;color:#fff}
.famchip.st b{background:rgba(90,140,255,.18)}
.famchip.al{border-color:rgba(180,110,220,.35);color:#d5a8ee}
.famchip.al.on{background:#8a4fb5;border-color:#8a4fb5;color:#fff}
.famchip.al b{background:rgba(180,110,220,.18)}

/* pastiglia «Basi» nella barra dei filtri: colore a parte, non è un tipo */
.ftipo.basi{--fc:#c07bd8}

/* ===================== LA LOTTA NEL MONDO: SCENA CHE SI ADATTA =====================
   Il difetto: la scheda della lotta era larga 980 px fissi, ma le dimensioni
   degli Animei erano calcolate sulla FINESTRA (35vw). Su un monitor da 2000 px
   il proprio Animei veniva 1120 px dentro una scatola da 980: sbordava, copriva
   l'avversario e finiva sotto i pulsanti. Due misure che parlavano di due cose
   diverse.
   La cura: la scheda si prende quasi tutto lo schermo, e da qui in giù ogni
   misura si calcola sulla SCENA (unità `cq*`) invece che sulla finestra. Così
   creature, pannelli e pulsanti crescono e calano insieme, e la proporzione
   resta quella su qualsiasi monitor. */
#owBattle .bt-card{
  width: min(1720px, 96vw);
  height: min(940px, 92vh);
  display: flex; flex-direction: column;
}
#owBattle #ar_stage{flex:1; min-height:0; display:flex; flex-direction:column}
#owBattle .bt-stage{
  flex:1; min-height:0; margin:0; border-radius:0;
  container-type: size;                /* d'ora in poi 1cqw/1cqh = 1% della SCENA */
}
/* Le creature si misurano sull'ALTEZZA della scena: è quella che comanda, perché
   la scena è molto più larga che alta. Il tuo Animei è più grande dell'avversario
   perché è in primo piano, come nei Pokémon. */
/* La misura si prende dal lato PIU' generoso della scena, altezza o larghezza:
   su una finestra bassa e larga legarsi alla sola altezza lasciava le creature
   piccole in mezzo a un mare di vuoto. */
#owBattle .bt-stage{
  --spr-foe: clamp(180px, max(42cqh, 22cqw), 560px);
  --spr-you: clamp(230px, max(60cqh, 30cqw), 820px);
}
/* L'avversario in alto a destra, il tuo in basso a sinistra: le due diagonali
   non si incontrano più perché ognuno sta dentro la sua metà. */
/* L'avversario sta in alto e stretto alla sua destra, il tuo in basso a sinistra:
   fra i due resta una fascia d'aria, se no la testa del tuo Animei finisce dentro
   la nuvola dell'altro. */
#owBattle .bt-spr-foe{
  width: calc(var(--spr-foe) * 1.6 * var(--taglia,1)); height: calc(var(--spr-foe) * var(--taglia,1));
  top: 1.5cqh; right: 2.5cqw; max-width: 52cqw;
}
#owBattle .bt-spr-you{
  width: calc(var(--spr-you) * 1.6 * var(--taglia,1)); height: calc(var(--spr-you) * var(--taglia,1));
  bottom: calc(var(--spr-you) * -0.07);
  /* in mezzo alla fascia libera (vedi la regola generale): dal bordo sinistro
     fino a dove comincia la barra dei comandi, mai sotto di lei */
  left: 0; right: calc(3cqw + clamp(420px, 34cqw, 720px));
  margin-left: auto; margin-right: auto;
  max-width: calc(96cqw - 36cqw);
}
/* pannelli e comandi anche loro in proporzione alla scena */
#owBattle .bt-foe-panel{top:3cqh; left:3cqw; max-width:44cqw}
#owBattle .bt-you-panel{bottom:calc(var(--spr-you) * 0.57); right:3cqw; max-width:44cqw}
#owBattle .bt-actionbox{right:3cqw; bottom:3cqh; width:clamp(420px, 34cqw, 720px)}

/* Sul telefono la scena diventa alta invece che larga: le creature si rimpiccioliscono
   e i comandi si prendono tutta la riga in fondo, se no si sovrappongono. */
/* Sul telefono lo schermo si divide in tre fasce che non si toccano mai:
   pannello + avversario in alto, il tuo Animei in mezzo, i comandi in fondo.
   Con la barra alta 265 px su 736 di scena restano ~470 px per le creature,
   quindi qui sono per forza piu' piccole: meglio piccole che una sopra l'altra. */
@media(max-width:760px){
  #owBattle .bt-card{width:100vw; height:100dvh; border-radius:0; max-width:none}
  #owBattle .bt-stage{
    --spr-foe: clamp(110px, 22cqh, 260px);
    --spr-you: clamp(130px, 27cqh, 320px);
  }
  #owBattle .bt-spr-foe{top:9cqh; right:0; max-width:96cqw}
  #owBattle .bt-spr-you{bottom:calc(var(--basso, 265px) + 2cqh); left:0; max-width:100cqw}
  #owBattle .bt-foe-panel{top:1cqh; left:2cqw; max-width:82cqw}
  #owBattle .bt-you-panel{bottom:calc(var(--basso, 265px) + 2cqh + var(--spr-you) * 0.5); right:2cqw; max-width:82cqw}
  #owBattle .bt-actionbox{left:2cqw; right:2cqw; width:auto; bottom:1.5cqh}
}

/* ---- LOTTA SU SCHERMI STRETTI (telefono e finestre piccole) ----------------
   Qui non c'e' spazio per mettere le creature di lato ai comandi: la barra si
   prende tutta la riga in fondo e il proprio Animei si ferma appena sopra di
   lei. L'altezza della barra la misura il programma (--comandi) perche' cambia
   da sola: una riga di bottoni o due, l'elenco delle mosse aperto o chiuso. */
/* da 761 a 1100 px: schermo stretto ma non telefono. La fascia va chiusa a 761,
   se no questa regola arriva DOPO quella del telefono e la sovrascrive — ci sono
   cascato: sul telefono restavano attive queste misure, troppo grandi, e le due
   creature finivano una sull'altra. */
@media(min-width:761px) and (max-width:1100px){
  /* La barra dei comandi resta a DESTRA anche qui: e' il posto suo, sul computer
     non si sposta mai. Quello che si stringe e' il proprio Animei, che si prende
     tutto lo spazio a sinistra della barra e non un pixel di piu'. */
  #owBattle .bt-actionbox{margin-bottom:var(--vignetta,0px);right:2cqw; left:auto; bottom:2cqh; width:clamp(340px, 44cqw, 620px)}
  #owBattle .bt-stage{
    --spr-foe: clamp(140px, 32cqh, 380px);
    --spr-you: clamp(150px, 40cqh, 440px);
  }
  #owBattle .bt-spr-foe{top:2cqh; right:1cqw; max-width:60cqw}
  #owBattle .bt-spr-you{bottom:calc(var(--spr-you) * -0.06); left:0;
    max-width:calc(98cqw - clamp(340px, 44cqw, 620px) - 2cqw)}
  #owBattle .bt-you-panel{bottom:calc(var(--basso, 220px) + 3cqh); right:2cqw; max-width:44cqw}
  #owBattle .bt-foe-panel{top:1.5cqh; left:2cqw; max-width:52cqw}
}
}

/* ===== IL PREFERITO E LO STARTER nella rosa di un personaggio =====
   La stella si accende su UNO solo: e' l'Animei che lo rappresenta. La riga
   dello starter e' diversa da tutte — bordo tratteggiato, punto interrogativo —
   perche' non e' una scelta che hai fatto tu: dipende dallo starter che prendi
   all'inizio, e finche' non lo scegli non si sa. */
.pgs-stella{flex:0 0 auto;width:30px;height:30px;border-radius:9px;border:1px solid var(--bordo,#d6dbe8);
  background:#fff;color:#c6cede;font-size:16px;line-height:1;cursor:pointer;
  transition:color .12s,border-color .12s,transform .08s}
.pgs-stella:hover{color:#f0b429;border-color:#f0b429;transform:scale(1.08)}
.pgs-stella.on{color:#f0b429;border-color:#f0b429;background:#fffaf0;cursor:default}
.pgs-rosa-r.preferito .an-chip{box-shadow:0 0 0 2px rgba(240,180,41,.55)}
.pgs-rosa-r.starter{border:1px dashed #6a86ff;border-radius:13px;padding:5px;margin-bottom:7px;
  background:linear-gradient(90deg,rgba(106,134,255,.09),transparent)}
.pgs-rosa-r.starter .pgs-stella{cursor:default}
.pgs-boh{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;
  font-size:20px;flex:0 0 auto}

/* IL PREFERITO SULLA TESSERA: piccolo, in basso a sinistra, dalla parte opposta
   alla figurina che cammina, cosi' non si accavallano mai. */
.pgcard-pref{position:absolute;left:7px;bottom:7px;width:38px;height:38px;border-radius:10px;
  border:2px solid #c6cede;overflow:hidden;display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(16,22,40,.28);z-index:3}
.pgcard-pref img{width:100%;height:100%;object-fit:contain;padding:2px}

/* IL TABELLINO nella riga della rubrica: quante gliene hai vinte e quante ne
   hai perse. Prima non esisteva proprio, perche' le sconfitte non venivano
   nemmeno contate. */
.tel-score{display:inline-flex;align-items:center;gap:4px;font-size:11px;margin-right:8px;
  padding:2px 7px;border-radius:8px;background:rgba(120,140,205,.14);border:1px solid #2c3650}
.tel-score .v{color:#4ade80}
.tel-score .s{color:#f87171}
.tel-score small{color:#9fb6dd;font-weight:700}

/* ═══ IL QUADRO — lo stato del progetto, per argomenti ═══ */
.quadro{padding:4px 2px 40px;max-width:1100px}
.qtesta{display:flex;align-items:flex-start;gap:16px;margin:2px 0 16px}
.qtesta h2{margin:0 0 2px;font-size:20px}
.qtesta p{margin:0;font-size:13px;opacity:.7}
.qtot{margin-left:auto;flex:0 0 auto;background:#ef4444;color:#fff;font-weight:800;font-size:12px;
  padding:5px 12px;border-radius:999px;box-shadow:0 3px 10px rgba(239,68,68,.35)}
.qtot.letto{background:rgba(120,140,205,.18);color:inherit;opacity:.6;box-shadow:none}
.qkpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px;margin-bottom:22px}
.qkpi{background:var(--card,#fff);border:1px solid var(--bordo,#e3e7f0);border-radius:14px;padding:12px 14px}
.qkpi b{display:block;font-size:22px;line-height:1.1;font-weight:800}
.qkpi span{font-size:11.5px;opacity:.68}
.qkpi i{font-style:normal;opacity:.55}

.qsec{background:var(--card,#fff);border:1px solid var(--bordo,#e3e7f0);border-radius:16px;margin-bottom:12px;overflow:hidden}
.qsec>header{display:flex;align-items:center;gap:9px;padding:13px 16px;cursor:pointer;user-select:none}
.qsec>header:hover{background:rgba(120,140,205,.06)}
.qsec>header h3{margin:0;font-size:15.5px}
.qs-fr{display:inline-block;transition:transform .16s;opacity:.5}
.qsec.aperta .qs-fr{transform:rotate(90deg)}
.qs-e{font-size:17px}
.qs-avanz{font-size:11px;font-weight:800;opacity:.5;background:rgba(120,140,205,.14);padding:2px 8px;border-radius:8px}
.qs-nuove{font-size:11px;font-weight:800;color:#fff;background:#ef4444;padding:2px 9px;border-radius:999px}
.qs-somm{margin:0;padding:0 16px 13px 46px;font-size:12.5px;opacity:.62;line-height:1.45}
.qs-corpo{display:none;padding:0 16px 8px}
.qsec.aperta .qs-corpo{display:block}

.qvoce{display:flex;gap:11px;padding:12px 0;border-top:1px solid var(--bordo,#eceff6)}
.qvoce.nuova{background:linear-gradient(90deg,rgba(239,68,68,.06),transparent 60%);
  margin:0 -16px;padding-left:16px;padding-right:16px}
.qbang{flex:0 0 auto;width:24px;height:24px;margin-top:2px;border-radius:50%;border:0;cursor:pointer;
  background:#ef4444;color:#fff;font-weight:900;font-size:14px;line-height:1;
  box-shadow:0 2px 8px rgba(239,68,68,.4);transition:transform .1s}
.qbang:hover{transform:scale(1.15)}
.qbang.spento{background:transparent;box-shadow:none;cursor:default}
.qv-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.qv-t b{font-size:14.5px}
.qv-t small{opacity:.4;font-size:11px}
.qvoce p{margin:0;font-size:13px;line-height:1.55;opacity:.85}
.qvoce code{background:rgba(120,140,205,.16);padding:1px 5px;border-radius:5px;font-size:12px}
.qstato{flex:0 0 auto;font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:999px;
  background:rgba(120,140,205,.16);letter-spacing:.2px}
.qstato.ok{background:rgba(74,222,128,.2);color:#15803d}
.qstato.mezzo{background:rgba(240,180,41,.22);color:#a16207}
.qstato.todo{background:rgba(120,140,205,.16);opacity:.75}
.qstato.warn{background:rgba(239,68,68,.18);color:#b91c1c}
.qstato.info{background:rgba(106,134,255,.18);color:#4338ca}
@media (prefers-color-scheme:dark){
  .qstato.ok{color:#4ade80}.qstato.mezzo{color:#fbbf24}.qstato.warn{color:#f87171}.qstato.info{color:#a5b4fc}
}

/* il pallino rosso del Quadro sul menu: si deve vedere da qualunque pagina */
.navitem .cnt.nuovo{background:#ef4444;color:#fff;font-weight:800;
  box-shadow:0 0 0 3px rgba(239,68,68,.22);animation:qpulsa 2.4s ease-in-out infinite}
@keyframes qpulsa{0%,100%{box-shadow:0 0 0 3px rgba(239,68,68,.22)}50%{box-shadow:0 0 0 6px rgba(239,68,68,.05)}}

/* ═══ LA SCHEDA DI UN CONTATTO nel telefono ═══
   Due colonne: a sinistra chi e' (figura, anello del tasso di vittoria, le
   barrette degli scontri), a destra cosa sai di lui e cosa porta in campo.
   Su schermo stretto diventa una colonna sola, con la figura piu' bassa. */
.telsc{max-height:92vh;display:flex;flex-direction:column}
.telsc-mest{margin-left:10px;font-size:11px;font-weight:800;opacity:.6;
  background:rgba(120,140,205,.2);padding:2px 9px;border-radius:999px}
/* IL COLORE VA DETTO. La finestra e' scura, ma dentro il testo ereditava il
   colore della pagina — che qui e' scuro anche lui: scritte quasi nere su
   fondo quasi nero, cioe' illeggibili. */
.telsc, .telsc-corpo{color:#e6e9f0}
.telsc-corpo{display:flex;gap:18px;padding:16px;overflow:auto}
.telsc-sx{flex:0 0 190px;display:flex;flex-direction:column;align-items:center;gap:12px}
.telsc-fig{width:180px;height:250px;border-radius:14px;overflow:hidden;display:flex;
  align-items:flex-end;justify-content:center;border:2px solid #3a4668;
  background:linear-gradient(180deg,rgba(120,142,205,.18),rgba(10,14,26,.4))}
.telsc-fig img{width:100%;height:100%;object-fit:contain}
.telsc-fig.vuota{align-items:center;font-size:64px;opacity:.4}
.telsc-anello{display:flex;justify-content:center}
.tel-anello{color:#e6e9f0}
.tel-barre{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;max-width:180px}
.tel-barre i{display:block;width:9px;height:16px;border-radius:3px}
.tel-barre i.v{background:#4ade80}
.tel-barre i.s{background:#f87171}
.tel-barre.vuoto{font-size:11px;color:#93a3c9;font-style:italic}
.telsc-dx{flex:1;min-width:0}
.telsc-righe{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-bottom:12px}
.telsc-r{display:flex;flex-direction:column;gap:1px}
.telsc-r span{font-size:10.5px;color:#93a3c9;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.telsc-r b{font-size:13px;font-weight:600}
.telsc-pall{display:inline-flex;gap:3px}
.telsc-pall i{width:9px;height:9px;border-radius:50%;background:rgba(120,140,205,.3)}
.telsc-pall i.on{background:#f0b429}
/* la storia si legge, ma non si mangia la finestra: quattro righe e poi
   sfuma, il resto sta nella scheda del personaggio */
.telsc-storia{margin:0 0 14px;font-size:12.5px;line-height:1.55;color:#c3cce0;
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;
  border-left:3px solid rgba(120,140,205,.35);padding-left:11px}
.telsc-tit{font-size:12px;font-weight:800;color:#93a3c9;margin-bottom:8px}
.telsc-tit small{font-weight:600;opacity:.7;font-style:italic}
.telsc-sq{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:7px}
.telsq{position:relative;display:flex;align-items:center;gap:7px;padding:6px 8px;
  border-radius:11px;border:1px solid}
.telsq.preferito{box-shadow:0 0 0 2px rgba(240,180,41,.5)}
.telsq-t{min-width:0;display:flex;flex-direction:column;line-height:1.2}
.telsq-t b{color:#1b2233;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.telsq-t small{font-size:10px;color:#5b6478}
.telsq-st{position:absolute;top:3px;right:5px;color:#f0b429;font-size:12px}
.telsc-piede{display:flex;align-items:center;gap:9px;padding:12px 16px;border-top:1px solid #2b3450}
@media (max-width:700px){
  .telsc-corpo{flex-direction:column}
  .telsc-sx{flex:none;flex-direction:row;align-items:flex-start;gap:14px}
  .telsc-fig{width:120px;height:165px}
  .telsc-righe{grid-template-columns:1fr}
}

/* la vita dei contatti: lo stato in rubrica e il racconto nella scheda */
.tel-vita{font-size:10px;font-weight:800;padding:2px 8px;border-radius:999px;margin-right:6px;
  background:rgba(120,140,205,.18);color:#9fb6dd;white-space:nowrap}
.tel-vita.pausa{background:rgba(240,180,41,.2);color:#fbbf24}
.tel-vita.ritirato{background:rgba(120,140,205,.14);color:#6b7280}
.tel-vita.derubato{background:rgba(239,68,68,.2);color:#f87171}
.tel-vita.lega{background:rgba(106,134,255,.22);color:#a5b4fc}
.tel-vita.campione{background:rgba(240,180,41,.28);color:#f0b429}
.tel-nov{color:#4ade80;font-size:13px;margin-right:6px;animation:qpulsa 2s ease-in-out infinite}
.telsc-vita{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.telsc-nv{display:flex;gap:9px;font-size:12px;line-height:1.45;padding:6px 9px;border-radius:9px;
  background:rgba(120,140,205,.1);border-left:3px solid rgba(120,140,205,.4)}
.telsc-nv b{flex:0 0 auto;color:#93a3c9;font-size:10.5px;padding-top:1px;white-space:nowrap}
.telsc-nv span{color:#c3cce0}
.telsc-nv.medaglia{border-left-color:#f0b429;background:rgba(240,180,41,.1)}
.telsc-nv.sconfitta,.telsc-nv.legapersa{border-left-color:#f87171}
.telsc-nv.furto{border-left-color:#ef4444;background:rgba(239,68,68,.1)}
.telsc-nv.ritirato{border-left-color:#6b7280;opacity:.75}
.telsc-nv.campione{border-left-color:#f0b429;background:rgba(240,180,41,.16)}

/* le due fasi sulle cartelle delle mappe */
.imp-fasi{display:inline-flex;gap:3px;margin-left:10px}
.imp-fasi .btn.sm{padding:2px 9px;font-size:11px}
.imp-fase{font-size:10.5px;font-weight:800;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}
.imp-fase.f1{background:rgba(74,222,128,.2);color:#15803d}
.imp-fase.f2{background:rgba(106,134,255,.22);color:#4338ca}
@media (prefers-color-scheme:dark){ .imp-fase.f1{color:#4ade80} .imp-fase.f2{color:#a5b4fc} }

/* ═══ IL CAMMINO: le 18 palestre ═══
   Tre stati, tre filtri sulla stessa foto: a colori quella battuta, in bianco
   e nero quella che hai visto, silhouette nera quella che non sai chi sia. */
.cammino{padding:4px 2px 40px;max-width:1150px}
.cam-testa{display:flex;align-items:baseline;gap:9px;margin-bottom:18px}
.cam-testa b{font-size:32px;font-weight:800;line-height:1}
.cam-testa span{opacity:.6;font-size:13px}
.cam-barra{flex:1;height:8px;border-radius:999px;background:rgba(120,140,205,.2);overflow:hidden;margin-left:10px}
.cam-barra i{display:block;height:100%;background:linear-gradient(90deg,#f0b429,#fbbf24);border-radius:999px;transition:width .4s}
.cam-sez{margin-bottom:26px}
.cam-sez>header{display:flex;align-items:baseline;gap:10px;margin-bottom:11px}
.cam-sez h3{margin:0;font-size:16px}
.cam-conta{font-size:11px;font-weight:800;background:rgba(240,180,41,.2);color:#a16207;padding:2px 9px;border-radius:999px}
.cam-sez small{opacity:.55;font-size:12px}
.cam-griglia{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px}
.cam-c{position:relative;display:flex;align-items:center;gap:10px;padding:9px 11px 9px 9px;
  border-radius:15px;border:1px solid var(--bordo,#e3e7f0);background:var(--card,#fff);overflow:hidden}
.cam-c::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tc)}
.cam-n{position:absolute;top:5px;left:9px;font-size:10px;font-weight:800;opacity:.35}
.cam-f{flex:0 0 auto;width:54px;height:70px;border-radius:10px;overflow:hidden;display:flex;
  align-items:flex-end;justify-content:center;background:rgba(120,140,205,.12)}
.cam-f img{width:100%;height:100%;object-fit:contain}
.cam-f img.ombra{filter:brightness(0) opacity(.55)}
.cam-noimg{font-size:26px;opacity:.3;align-self:center}
.cam-b{flex:1;min-width:0}
.cam-tipo{font-size:10.5px;font-weight:800;color:var(--tc);text-transform:uppercase;letter-spacing:.3px}
.cam-nome{font-weight:800;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cam-citta{font-size:11px;opacity:.55}
.cam-m{flex:0 0 auto;width:38px;height:38px}
.cam-med{width:100%;height:100%;opacity:.22;filter:grayscale(1)}
.cam-med.on{opacity:1;filter:none;filter:drop-shadow(0 2px 6px rgba(240,180,41,.45))}
.cam-med-no{opacity:.2}
/* CONOSCIUTA: l'hai vista, non l'hai vinta */
.cam-c.conosciuta .cam-f img{filter:grayscale(1) contrast(.9);opacity:.8}
.cam-c.conosciuta{opacity:.92}
/* MAI VISTA: sai che c'è, non sai chi c'è */
.cam-c.ignota{opacity:.6}
.cam-c.ignota .cam-nome{letter-spacing:2px;opacity:.5}
.cam-c.battuta{box-shadow:0 0 0 2px rgba(240,180,41,.4)}

/* LA MEDAGLIA sulla tessera: in alto a SINISTRA, dalla parte opposta alla
   figurina che cammina e sopra al preferito, che sta in basso. Tre cose in tre
   angoli diversi, cosi' non si accavallano mai. */
.pgcard-med{position:absolute;left:7px;top:7px;width:42px;height:42px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;z-index:3;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.9),rgba(255,255,255,.35));
  border:2px solid rgba(255,255,255,.85);box-shadow:0 3px 12px rgba(16,22,40,.35)}
.pgcard-med img{width:100%;height:100%;object-fit:contain;padding:2px;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.3))}
/* nel Cammino: la medaglia vera al posto del simbolo */
.cam-medimg{width:100%;height:100%;object-fit:contain;filter:grayscale(1) opacity(.3)}
.cam-medimg.on{filter:none;filter:drop-shadow(0 2px 7px rgba(240,180,41,.5))}

/* ═══ LA DEMO: il banco di prova ═══ */
.demo{padding:4px 2px 40px;max-width:960px}
.demo-t h2{margin:0 0 4px;font-size:20px}
.demo-t p{margin:0 0 20px;font-size:13px;opacity:.72;line-height:1.55;max-width:640px}
.demo-s{background:var(--card,#fff);border:1px solid var(--bordo,#e3e7f0);border-radius:16px;
  padding:15px 17px;margin-bottom:12px}
.demo-s h3{margin:0 0 10px;font-size:15px}
.demo-s h3 small{font-weight:500;opacity:.5;margin-left:6px}
.demo-n{margin:0 0 11px;font-size:12.5px;opacity:.68;line-height:1.5}
.demo-miei{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:11px}
.demo-mio{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:12px;border:1px solid}
.demo-mio b{display:block;font-size:13px}
.demo-mio small{font-size:11px;opacity:.65}
.demo-lv{margin-left:10px;font-size:12px;opacity:.7}
.demo-lv input{width:58px;margin-left:5px}
.demo-alle{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.demo-all{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 5px;cursor:pointer;
  border-radius:13px;border:1px solid var(--bordo,#e3e7f0);background:var(--card,#fff);transition:.12s}
.demo-all:hover{transform:translateY(-2px)}
.demo-all.on{border-color:#6a86ff;box-shadow:0 0 0 2px rgba(106,134,255,.35)}
.demo-all img{width:44px;height:56px;object-fit:contain}
.demo-all span{font-size:30px}
.demo-all b{font-size:12px}
.demo-all small{font-size:10px;opacity:.6}
.demo-all.on small{color:#4338ca;font-weight:800;opacity:1}
.demo-vai{display:flex;align-items:center;gap:14px}
.demo-on{font-size:12px;font-weight:700;color:#4ade80}

/* LE SFERE dell'avversario, sopra la sua targhetta: quanti Animei gli restano.
   Piena = ancora in forze, vuota = gia' battuto. Come in Pokemon. */
.bt-sfere{display:flex;gap:4px;margin-bottom:4px;padding-left:2px}
.bt-sfere i{width:13px;height:13px;border-radius:50%;border:2px solid rgba(20,26,40,.75);
  background:linear-gradient(180deg,#ef4444 0 45%,#f8fafc 45% 100%);
  box-shadow:0 1px 3px rgba(0,0,0,.35)}
.bt-sfere i.vuota{background:rgba(120,140,205,.22);border-color:rgba(20,26,40,.35);opacity:.55}

/* ===== LA STRATEGIA nella scheda ==========================================
   Non e' prosa da leggere di fila: sono schede brevi, una per modo di
   giocarlo, e si devono poter scorrere con l'occhio. Barra colorata a
   sinistra col colore del tipo, titolo in grassetto, e le mosse che la
   fanno funzionare come pastiglie in fondo — cosi' si vede subito se le
   hai gia' insegnate o no. */
.sch-strat{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
.strat-uno{background:#f7f8fc;border-left:3px solid #ccd;border-radius:8px;padding:9px 12px}
.strat-tit{font-weight:800;font-size:13px;color:#2a3145;margin-bottom:3px}
.strat-txt{font-size:12.5px;color:#555;line-height:1.55}
.strat-mosse{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.strat-mosse span{background:#fff;border:1px solid #dfe3ee;border-radius:20px;padding:2px 9px;font-size:11.5px;color:#444;font-weight:600}
#f_strategie{font-family:inherit;font-size:13px;line-height:1.5;resize:vertical}

/* ===== RUOLI E TIPI — la mappa dei vuoti ==================================
   Non e' una statistica da contemplare: serve a vedere in tre secondi quale
   mestiere manca e di quale tipo. Quindi barra lunga = tanti, e in fondo a
   ogni ruolo la riga dei tipi che NON ce l'ha nessuno, che e' il pezzo che
   si viene a cercare. */
.rq-intro{font-size:13px;color:#555;line-height:1.55;margin-bottom:14px}
.rq{display:flex;flex-direction:column;gap:10px;max-height:62vh;overflow:auto}
.rq-riga{background:#f7f8fc;border-radius:10px;padding:10px 12px}
.rq-testa{display:flex;align-items:center;gap:10px;margin-bottom:7px}
.rq-testa b{font-size:14px;color:#2a3145;text-transform:capitalize;min-width:150px}
.rq-n{font-weight:800;color:#5b6cff;min-width:34px}
.rq-barra{flex:1;height:7px;background:#e6e9f3;border-radius:20px;overflow:hidden}
.rq-barra i{display:block;height:100%;background:linear-gradient(90deg,#5b6cff,#8b7cff);border-radius:20px}
.rq-testa small{color:#8b93b3;font-size:11.5px;min-width:34px;text-align:right}
.rq-tipi{display:flex;flex-wrap:wrap;gap:4px}
.rq-t{color:#fff;border-radius:20px;padding:2px 9px;font-size:11px;font-weight:600}
.rq-t b{font-weight:800;margin-left:2px}
.rq-vuoti{margin-top:6px;font-size:11.5px;color:#b0603a;line-height:1.5}
.rq-vuoti.ok{color:#3f9b54}

/* ===== IL RIORDINO SI DEVE POTER AFFERRARE OVUNQUE ========================
   Dentro la card ci sono un'immagine e del testo, e tutti e due «rubano» il
   gesto: l'immagine perche' i browser la trascinano di suo, il testo perche'
   premendo e tirando parte la selezione. Il risultato era che il riordino
   partiva solo afferrando il bordo. Qui si spengono tutti e due, ma SOLO
   quando la card e' effettivamente trascinabile — cioe' quando non c'e' un
   filtro attivo. */
.ccard[draggable="true"] img{ -webkit-user-drag:none; user-drag:none; }
.ccard[draggable="true"]{ -webkit-user-select:none; user-select:none; }

/* ===== LA MEDAGLIA, in fondo alla scheda e in grande ======================
   Stava in mezzo alle miniature, alta quanto un francobollo, col nome scritto
   in piccolo sotto e solo da leggere. Ma la medaglia e' la cosa che il
   giocatore si porta a casa da quella palestra: merita lo spazio. E il nome
   finisce in una frase che lui legge, quindi si scrive in un campo vero. */
.pgs-medbox{display:flex;gap:16px;align-items:flex-start}
.pgs-medimg{width:150px;height:150px;flex:none;border-radius:16px;
  background:radial-gradient(circle at 50% 40%,rgba(255,214,120,.13),rgba(20,26,44,.5));
  border:1px solid rgba(240,195,109,.35);display:flex;align-items:center;justify-content:center;padding:10px}
.pgs-medimg img{max-width:100%;max-height:100%;object-fit:contain;
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.45))}
.pgs-medvuota{display:flex;flex-direction:column;align-items:center;gap:6px;
  font-size:40px;opacity:.35}
.pgs-medvuota small{font-size:11px;opacity:.9}
.pgs-meddx{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}
.pgs-medlab{font-size:11px;color:#8b93b3;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.pgs-medinp{width:100%;padding:10px 12px;border-radius:10px;font-size:16px;font-weight:800;
  background:rgba(10,14,26,.55);border:1px solid #2b3450;color:#f0c36d;font-family:inherit}
.pgs-medinp:focus{outline:none;border-color:#f0c36d;background:rgba(10,14,26,.8)}
/* la frase come la leggera' il giocatore: si sceglie il nome guardando questa,
   non la parola isolata */
.pgs-medfrase{font-size:13.5px;color:#c8cee0;background:rgba(255,255,255,.045);
  border-left:3px solid #f0c36d;border-radius:0 8px 8px 0;padding:8px 12px;line-height:1.5}
.pgs-medfrase b{color:#f0c36d}
.pgs-medbt{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}
@media(max-width:700px){ .pgs-medbox{flex-direction:column} .pgs-medimg{width:100%;height:180px} }

/* ===== LA SCALA DELLA LEGA, nella scheda ==================================
   Cinque gradini in fila, il quinto è il Campione. Si vede a colpo d'occhio
   dove sta lui e quali posti sono ancora vuoti — un buco in mezzo alla scala
   spezza la catena degli annunci, e va notato subito. */
.pgs-scala{display:flex;gap:6px;margin-bottom:10px}
.pgs-grad{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:8px 4px;border-radius:10px;cursor:pointer;font:inherit;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);
  color:#b9c0da;transition:background .12s,border-color .12s,color .12s}
.pgs-grad:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22)}
.pgs-grad b{font-size:15px;line-height:1}
.pgs-grad small{font-size:10px;opacity:.75;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pgs-grad.io{background:linear-gradient(180deg,#f0c36d,#d8a03f);border-color:#f0c36d;color:#2a2110;font-weight:700}
.pgs-grad.io small{opacity:.9}
.pgs-scalanota{font-size:12px;color:#8b93b3;line-height:1.5;margin-top:6px}
.pgs-scalanota code{background:rgba(255,255,255,.08);border-radius:4px;padding:1px 4px;font-size:11px}

/* ===== IL CAMPO DEL DOPPIO (2v2) ==========================================
   Rifatto sulla foto dei Pokémon che ha mandato Andrea, e le due cose che ho
   copiato sono quelle che fanno la differenza:

   1) LE QUATTRO CREATURE UNA DI FIANCO ALL'ALTRA, non in diagonale. Due sopra e
      due sotto, sulla stessa linea di terreno. In diagonale sembravano quattro
      cose capitate li' per caso; affiancate si legge subito «questi due contro
      questi due».
   2) LA VITA SOTTO I PIEDI DI CHI E' SUA. Le targhette negli angoli mangiavano
      mezzo campo e costringevano a cercare con gli occhi quale barra fosse di
      chi. Attaccata alla creatura non c'e' niente da cercare.

   Tutto in percentuale del palco: le proporzioni restano quelle a qualunque
   larghezza, che era la richiesta. */

.bt-cas{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  width:max-content;min-width:118px}
/* il palco diventa un CONTENITORE, cosi' «cqh» vuol dire «per cento dell'altezza
   della scena»: le creature crescono e calano insieme al campo invece di
   restare grandi uguali su una scena piccola */

/* OGNI IMMAGINE TIENE LA SUA FORMA. Prima le costringevo tutte in un quadrato:
   una creatura lunga e bassa ci nuotava dentro con mezzo riquadro d'aria sopra,
   una alta e stretta veniva schiacciata. Adesso si fissa l'ALTEZZA e la
   larghezza se la prende come le serve — che e' anche il modo giusto di
   confrontare due creature, perche' fra esseri viventi si guarda quanto sono
   alti, non quanto sono larghi.
   E si appoggiano tutte sulla stessa linea di terra: `align-items:flex-end`. */
.bt-cas .bt-sprite{position:static !important;display:block;width:auto !important;
  height:calc(var(--alt) * var(--taglia, 1)) !important;max-height:none !important;
  max-width:100% !important;width:auto !important;object-fit:contain;object-position:center bottom;
  margin:0 !important;inset:auto !important;pointer-events:none}
/* la targhetta si APPOGGIA sulla creatura invece di stare sotto: sotto finiva
   dietro la vignetta bianca e non si leggeva piu'. Cade sulle zampe e sulla
   coda, che e' la parte che si puo' coprire senza perdere niente. */
.bt-cas .bt-mini{position:relative;margin-top:-14px;z-index:2}

/* i tuoi due sotto, affiancati sulla stessa linea; i loro due sopra, uguale */






/* ─── LE DUE FILE ──────────────────────────────────────────────────────────
   Misurato su 928 sprite: la larghezza rispetto all'altezza va da 0,50 a 2,81.
   Con una forbice cosi' nessun passo calcolato a mano puo' andare bene per
   tutti, ed e' il motivo per cui si accavallavano comunque. Qui la distanza
   non si calcola: due elementi in fila non si sovrappongono e basta.
   `gap` fa il resto, e `align-items:flex-end` li appoggia sulla stessa terra. */
.bt-fila{position:absolute;display:flex;align-items:flex-end;gap:clamp(10px,2.5%,42px);
  pointer-events:none;z-index:4}
/* LA MISURA DELLE CREATURE.
   La stessa per tutti: la differenza fra una e l'altra la fa solo `--taglia`,
   cioe' la sua altezza vera. Guarda sia l'altezza sia la LARGHEZZA della
   finestra, perche' su una finestra alta e stretta diventavano piu' grandi
   dello spazio disponibile. Il termine sull'altezza e' generoso (34vh) perche'
   su un monitor largo e basso — schermo intero su un 16:9 — era lui a tenerle
   piccole: li' di spazio in orizzontale ce n'e' da vendere ed e' giusto che lo
   riempiano. Sulle finestre strette comanda comunque la larghezza, quindi lo
   schermo piccolo resta identico a com'era.
   ⚠ Le due dichiarazioni di `--alt` devono restare in QUEST'ORDINE: hanno lo
   stesso peso, quindi decide chi viene dopo. Invertirle e' gia' costato un
   giro: la fila degli avversari si riprendeva la misura del giocatore. */
.bt-fila{--alt:max(88px, min(34vh, 14vw))}
/* GLI AVVERSARI SONO PIU' LONTANI, e quindi si vedono un filo piu' piccoli.
   Non e' solo estetica: la loro fascia in alto e' meno alta di quella davanti,
   e con la stessa misura i piu' grandi uscivano dal cielo. Un sesto in meno
   basta a tenerli dentro, e in piu' da' profondita' alla scena. */
.bt-fila-loro{--alt:max(74px, min(28.5vh, 11.7vw))}
/* E COMUNQUE NON SFONDANO IL CIELO.
   La fascia degli avversari e' la meta' alta della scena e non di piu'. Il
   colosso del catalogo e' alto quasi il doppio della misura di base (`--taglia`
   arriva a 1,75) e su un monitor molto alto sbatteva la testa: misurato, 40 px
   di cranio tagliati a 2560x1440. Il tetto e' scritto come la scena stessa —
   `clamp` con lo stesso andamento di `min-height` del palco — cosi' vale poco
   piu' del 40% dell'altezza vera del campo a qualunque grandezza. Tocca solo i
   giganti: tutti gli altri sono gia' sotto e non se ne accorgono. */
.bt-fila-loro .bt-cas .bt-sprite{
  height:min(calc(var(--alt) * var(--taglia, 1)), clamp(220px, 32vh, 440px)) !important}
/* stesso ragionamento per la fascia davanti, che pero' e' molto piu' alta:
   parte dal 17% e arriva in cima, quindi il tetto e' quasi il doppio. */
.bt-fila-tuoi .bt-cas .bt-sprite{
  height:min(calc(var(--alt) * var(--taglia, 1)), clamp(380px, 56vh, 780px)) !important}
/* NON SI ALLONTANANO ALL'INFINITO.
   Ancorate ai bordi (2% e 3%) le due coppie su uno schermo largo finiscono una
   in Sicilia e una in Piemonte, con un deserto vuoto nel mezzo. La distanza dal
   centro si ferma a poco meno di tre creature per lato: sotto quella soglia
   comandano ancora le percentuali, quindi sullo schermo piccolo non cambia
   niente, mentre sul grande la scena si richiude attorno al centro.
   La soglia e' scritta in unita' di finestra e non in `--alt` apposta: cosi' le
   due file si spostano della STESSA quantita' anche se le creature davanti e
   quelle dietro non sono grandi uguali, e la scena resta simmetrica. */
.bt-fila-tuoi{left:max(2%, calc(50% - min(98vh, 40vw)));bottom:17%;max-width:45%;justify-content:flex-start}
.bt-fila-loro{right:max(3%, calc(50% - min(98vh, 40vw)));bottom:52%;max-width:46%;justify-content:flex-end;z-index:3}
/* dentro la fila la casella non e' piu' assoluta: si mette in riga da sola */
.bt-cas{position:relative;flex:0 1 auto;min-width:0}
/* il compagno leggermente arretrato: da' profondita' senza toccare le misure */
/* ⚠ in percentuale NO: un margine in percentuale si calcola sulla LARGHEZZA
   del contenitore, non sull'altezza. Su un campo largo 2258 px quel «5%»
   diventava un sollevamento di 113 px e spingeva il compagno fuori dal cielo.
   Legato alla misura della creatura resta lo stesso stacco a ogni grandezza. */
.bt-fila-tuoi .bt-cas:nth-child(2){margin-bottom:calc(var(--alt) * 0.15)}
.bt-fila-loro .bt-cas:nth-child(2){margin-bottom:calc(var(--alt) * 0.09)}
@media (max-width:1000px){
  .bt-fila-tuoi{left:1%;bottom:15%;max-width:47%}
  .bt-fila-loro{right:2%;bottom:50%;max-width:52%}
}

/* --- la targhetta piccola sotto i piedi --- */
.bt-mini{width:100%;max-width:calc(var(--alt) * 0.80);font-size:calc(var(--alt) * 0.055);background:rgba(16,21,36,.82);border:1px solid rgba(255,255,255,.16);
  border-radius:8px;padding:3px 7px 4px;backdrop-filter:blur(3px);box-shadow:0 3px 10px rgba(0,0,0,.35)}
.bt-mini-r1{display:flex;align-items:baseline;gap:5px;line-height:1.1}
.bt-mini-n{color:#fff;font-size:1em;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.bt-mini-lv{color:#c8cfe6;font-size:.82em;font-weight:600;opacity:.85}
.bt-mini-ail{font-size:.74em;font-weight:800;text-transform:uppercase;color:#0e1322;
  background:#f0c36d;border-radius:4px;padding:0 4px}
.bt-mini-bar{height:calc(var(--alt) * 0.028);min-height:5px;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden;margin-top:3px}
.bt-mini-bar>i{display:block;height:100%;border-radius:99px;transition:width .35s ease,background .35s ease}
.bt-mini-hp{text-align:right;color:#c8cfe6;font-size:.82em;font-weight:600;margin-top:1px}

/* in doppio i comandi si stringono: con quattro creature in campo lo spazio
   vale piu' dei pulsanti, e i pulsanti restavano comunque grandi il doppio del
   necessario. Il secondo Animei resta un po' coperto, e va bene cosi': quando
   agisce lo si vede lo stesso. */
.bt-doppio-comandi .bt-btn{font-size:12px !important;padding:6px 8px !important;min-height:0 !important;line-height:1.15}
.bt-doppio-comandi .bt-move{font-size:11.5px !important;padding:5px 8px !important;min-height:0 !important;line-height:1.15}
.bt-doppio-comandi .bt-move .bt-mv-nome,.bt-doppio-comandi .bt-move b{font-size:12px !important}
.bt-doppio-comandi .tbadge{font-size:9.5px !important;padding:1px 7px !important;
  color:#fff !important;font-weight:800 !important;
  /* l'ombra scura attorno alle lettere e' quello che le rende leggibili ANCHE
     sui tipi di colore chiaro, dove il bianco su bianco spariva */
  text-shadow:0 1px 2px rgba(0,0,0,.55), 0 0 2px rgba(0,0,0,.45)}
.bt-doppio-comandi .bt-move small{font-size:9.5px !important}
.bt-doppio-comandi{gap:6px !important}
.bt-doppio-comandi{--basso:170px}
.bt-playerbar-doppio{display:flex;align-items:center;gap:12px;min-height:0}
.bt-turnodi{color:#e8ecf8;font-size:12.5px;opacity:.85}

@media (max-width:1200px){
  
  
  .bt-mini-n{font-size:10.5px}
}
@media (max-width:900px){
  
  
  .bt-mini{padding:2px 5px 3px}
  .bt-mini-n{font-size:9.5px}
  .bt-mini-hp{font-size:8.5px}
}

/* la casella di chi e' caduto resta li' fino a fine turno, come nei Pokémon:
   si smorza, non sparisce — se sparisse sembrerebbe che il campo si sia
   ristretto, e invece quel posto e' ancora suo */
.bt-casella-vuota{opacity:.45;filter:grayscale(1)}

/* il cartellino «chi colpisci?»: si sceglie GUARDANDO, non leggendo. Due nomi
   scritti uno sotto l'altro obbligano a ricordarsi quale dei due era quello
   mezzo morto; con la faccia davanti e la vita sotto, la scelta si fa a colpo
   d'occhio. Compare solo in doppio e solo quando c'e' davvero una scelta. */
.bers-ov{position:fixed;inset:0;background:rgba(10,14,26,.6);z-index:100060;
  display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.bers-box{background:#151b2c;border:1px solid rgba(255,255,255,.14);border-radius:16px;
  padding:18px;box-shadow:0 22px 60px rgba(0,0,0,.55)}
.bers-tit{color:#e8ecf8;font-size:15px;margin-bottom:14px;text-align:center}
.bers-riga{display:flex;gap:12px}
.bers-c{width:150px;padding:10px;border-radius:14px;cursor:pointer;font:inherit;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);color:#e8ecf8;
  transition:transform .12s,border-color .12s,background .12s}
.bers-c:hover{background:rgba(124,58,237,.16);border-color:#a78bfa;transform:translateY(-3px)}
.bers-img{height:96px;display:flex;align-items:center;justify-content:center;margin-bottom:6px}
.bers-img img{max-width:100%;max-height:96px;object-fit:contain;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.45))}
.bers-img span{font-size:30px;opacity:.4}
.bers-n{font-size:13px;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bers-tipi{display:flex;gap:4px;justify-content:center;margin:5px 0 6px}
.bers-t{font-size:9px;font-weight:800;color:#fff;border-radius:20px;padding:1px 7px;
  text-shadow:0 1px 2px rgba(0,0,0,.4)}
.bers-bar{height:6px;border-radius:99px;background:rgba(255,255,255,.14);overflow:hidden}
.bers-bar>i{display:block;height:100%;border-radius:99px}
.bers-hp{text-align:center;font-size:10px;color:#c8cfe6;margin-top:3px}
.bers-x{display:block;width:100%;margin-top:14px;padding:9px;border-radius:10px;cursor:pointer;
  background:none;border:1px solid rgba(255,255,255,.10);color:#8b93b3;font:inherit}
.bers-x:hover{color:#e8ecf8;border-color:rgba(255,255,255,.24)}

/* le due sfere del doppio partono dai due posti diversi: se partissero dallo
   stesso punto sembrerebbe un errore di disegno invece che due gesti */
.bt-sfera-you0{left:18%}
.bt-sfera-you1{left:42%}

/* ===== L'ARENA: il terreno, le pedane, le ombre =============================
   Mancava la cosa piu' semplice: un POSTO. Quattro creature ritagliate su un
   cielo sfumato non sono un campo di battaglia, sono quattro figurine incollate
   su una cartolina — e senza niente sotto i piedi sembrano anche sospese.

   Tre pezzi, tutti disegnati col CSS perche' non servono immagini:
   1. l'OMBRA sotto ognuna: e' quella che li appoggia. Un'ellisse scura e
      sfumata, larga quanto la creatura, che si stringe se la creatura e'
      piccola perche' e' agganciata alla stessa taglia.
   2. la PEDANA: un disco chiaro sotto ciascuno, come nei doppi dei Pokémon.
      Serve a dire «questo posto e' suo» e a separare chi sta davanti da chi sta
      dietro anche quando si sovrappongono.
   3. l'ORIZZONTE: una banda di terreno piu' scura in basso e una linea di
      separazione. Da' un pavimento su cui stare invece del vuoto. */

.bt-stage{position:relative;overflow:hidden}
/* ─── QUANDO C'E' UN POSTO VERO ─────────────────────────────────────────────
   L'immagine del terreno sostituisce il cielo sfumato. Si aggancia in BASSO
   («center bottom») e non al centro: la terra sotto i piedi deve restare dov'e'
   a qualunque proporzione di finestra, mentre del cielo in alto se ne puo'
   perdere un pezzo senza che nessuno se ne accorga.
   Il terreno disegnato col CSS va VIA tutto, non abbassato: era lui la «linea
   grigia che divide l'immagine». E' una fascia alta il 56% appoggiata in basso,
   quindi ha per forza un bordo netto in cima — proprio al 44%, cioe' esattamente
   dove passa l'orizzonte del dipinto. Tenerlo anche solo al 42% di opacita' non
   bastava: un velo trasparente con un bordo dritto resta un bordo dritto, e
   tagliava in due la neve. Se ne va anche la riga dell'orizzonte, per lo stesso
   motivo: l'orizzonte ce l'ha gia' il dipinto, e due orizzonti a un pelo di
   distanza sono la cosa che piu' fa sembrare finto un fondale.
   Resta solo la vignetta (l'ombra interna sui bordi), che e' sfumata su tutto il
   giro e non disegna nessuna linea. Le pedane e le ombre sotto le creature non
   c'entrano: stanno dentro le caselle e servono ad appoggiarle. */
.bt-stage.bt-terr{background-image:var(--terr);background-size:cover;
  background-position:center bottom;background-repeat:no-repeat}
.bt-stage.bt-terr::before,
.bt-stage.bt-terr::after{display:none}
/* il terreno: una fascia in basso, appena piu' scura del cielo, con la linea
   dell'orizzonte a tre quarti d'altezza — dove stanno i piedi dei loro due */
.bt-stage::before{
  content:'';position:absolute;left:0;right:0;bottom:0;height:56%;
  background:
    /* il CERCHIO DI TERRA battuta al centro: e' quello che trasforma un prato in
       un'arena. Un'ellisse chiara in prospettiva, piu' consumata dove si
       combatte, con un bordo appena piu' scuro come una pista vera. */
    radial-gradient(62% 88% at 50% 74%, rgba(214,196,150,.34) 0%, rgba(206,186,138,.26) 52%,
      rgba(120,116,86,.20) 74%, transparent 86%),
    /* la terra attorno, che si scurisce ai lati: chiude la scena invece di
       lasciarla scappare fuori dallo schermo */
    radial-gradient(120% 90% at 50% 96%, rgba(30,52,38,.05) 40%, rgba(16,30,22,.34) 100%),
    linear-gradient(180deg, rgba(24,42,32,.00) 0%, rgba(24,42,32,.12) 22%, rgba(16,30,22,.34) 100%);
  pointer-events:none;z-index:0}
/* una vignetta leggera su tutto: porta l'occhio al centro, dove si combatte */
.bt-stage{box-shadow:inset 0 0 140px 40px rgba(10,18,14,.22)}
/* la riga dell'orizzonte, sottile: separa il cielo dal campo */
.bt-stage::after{
  content:'';position:absolute;left:0;right:0;bottom:56%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.22) 18%,rgba(255,255,255,.22) 82%,transparent);
  pointer-events:none;z-index:0}

/* la pedana e l'ombra stanno DENTRO la casella, cosi' seguono la creatura
   ovunque la si sposti e si stringono con la sua taglia */
.bt-cas{--ped: calc(var(--alt) * var(--taglia,1) * 0.62)}
.bt-cas::before{                       /* la pedana */
  content:'';position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(var(--mini-h, 40px) - 6px);
  width:var(--ped);height:calc(var(--ped) * 0.26);border-radius:50%;
  background:radial-gradient(60% 100% at 50% 50%, rgba(255,255,255,.30), rgba(255,255,255,.10) 62%, transparent 78%);
  z-index:0;pointer-events:none}
.bt-cas::after{                        /* l'ombra, piu' stretta e piu' scura */
  content:'';position:absolute;left:50%;transform:translateX(-50%);
  bottom:calc(var(--mini-h, 40px) + 1px);
  width:calc(var(--ped) * 0.86);height:calc(var(--ped) * 0.20);border-radius:50%;
  background:radial-gradient(50% 100% at 50% 50%,
    rgba(8,14,11,.72) 0%, rgba(8,14,11,.58) 34%, rgba(8,14,11,.28) 62%, transparent 80%);
  filter:blur(3px);z-index:0;pointer-events:none}
.bt-cas .bt-sprite{position:relative;z-index:1;flex:0 0 auto}
.bt-cas .bt-mini{z-index:3}
/* chi e' caduto non proietta piu' ombra */
.bt-casella-vuota::before,.bt-casella-vuota::after{opacity:.25}

/* La tendina «spostalo in un'altra cartella» sulla tessera del personaggio.
   Sta in fondo, larga quanto la tessera ma discreta: si nota quando la cerchi
   e non ruba l'occhio al nome e alla faccia. */
.pgcard-sposta{width:100%;margin-top:6px;padding:4px 6px;font-size:11px;cursor:pointer;
  border:1px solid #2a3450;border-radius:8px;background:#121826;color:#aeb8d4}
.pgcard-sposta:hover{border-color:var(--pc,#5b6cff);color:#e6ecff}

/* ═══════════════════════════════════════════════════════════════════════════
   LE DUE LEGHE, VESTITE DA LEGA
   ═══════════════════════════════════════════════════════════════════════════
   Le cartelle sono tutte uguali, ma le Leghe non sono una cartella qualsiasi:
   sono il traguardo delle due regioni. Qui si riconoscono dal colore, senza
   bisogno di leggere il nome — ARGENTO per le Correnti della prima regione,
   ORO BRUNITO per i Valichi della seconda.
   Il secondo colore non e' scelto a caso: l'argento va verso l'azzurro
   dell'acqua (Correnti), l'oro verso la prugna delle vette al tramonto
   (Valichi). Il riflesso obliquo (::after) e' quello che le fa sembrare
   metallo invece che due bande colorate.
   Si aggancia a `data-cart`, quindi domani basta una riga per vestirne un'altra. */
.pgsec[data-cart^="lega"] .pgsec-h{position:relative;overflow:hidden;color:#1e2536}
.pgsec[data-cart^="lega"] .pgsec-h h3{text-shadow:0 1px 0 rgba(255,255,255,.55)}
.pgsec[data-cart^="lega"] .pgsec-h::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(74deg,rgba(255,255,255,.55) 0 13%,rgba(255,255,255,.12) 26%,rgba(255,255,255,0) 42%)}
.pgsec[data-cart^="lega"] .pgsec-h:hover{filter:brightness(1.05)}
.pgsec[data-cart^="lega"] .pgsec-fr{color:#3d465e}
.pgsec[data-cart^="lega"] .pgsec-q{background:rgba(255,255,255,.52);color:#2a3245}
.pgsec[data-cart^="lega"] .pgsec-e{filter:drop-shadow(0 1px 1px rgba(255,255,255,.6))}

/* PRIMA REGIONE — Lega delle Correnti: argento che scivola nell'azzurro */
.pgsec[data-cart="lega1"]{border-color:#a8bcd4}
.pgsec[data-cart="lega1"] .pgsec-h{
  background:linear-gradient(100deg,#f2f5f9 0%,#dbe2ec 26%,#bccbde 52%,#9ab6d6 78%,#7ba3cb 100%)}

/* SECONDA REGIONE — Lega dei Valichi: oro brunito che scivola nella prugna */
.pgsec[data-cart="lega2"]{border-color:#cdae7c}
.pgsec[data-cart="lega2"] .pgsec-h{
  background:linear-gradient(100deg,#f9edd2 0%,#e7cd96 26%,#cfa75f 52%,#ac7c48 78%,#7f5560 100%)}

/* IL NUMERO DEL POSTO IN LEGA, in alto a sinistra sulla tessera.
   Grande e leggibile: serve a leggere la scala a colpo d'occhio, non a fare
   decorazione. Il Campione (5º) e' dorato e porta la corona, cosi' l'ultimo
   gradino si riconosce senza contare. */
.pgcard-posto{position:absolute;left:7px;top:7px;min-width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;gap:2px;
  border-radius:11px;font-weight:800;font-size:17px;line-height:1;padding:0 7px;
  background:linear-gradient(140deg,#5b6cff,#3f4ce0);color:#fff;
  border:2px solid rgba(255,255,255,.85);box-shadow:0 2px 7px rgba(20,26,48,.28)}
.pgcard-posto i{font-style:normal;font-size:12px;opacity:.95}
.pgcard-posto.campione{background:linear-gradient(140deg,#f6d268,#c9962f 62%,#a9761f);
  color:#2a1e05;text-shadow:0 1px 0 rgba(255,255,255,.45)}

/* IL NUMERO DELLA PALESTRA, in alto a DESTRA: a sinistra c'e' la medaglia.
   Fase 1 e Fase 2 hanno due tinte diverse — verde acqua per la prima regione,
   ambra per la seconda — cosi' anche isolato dal contesto un numero dice a
   quale metà del cammino appartiene. */
.pgcard-ord{position:absolute;right:7px;top:7px;min-width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  border-radius:11px;font-weight:800;font-size:17px;line-height:1;padding:0 7px;
  border:2px solid rgba(255,255,255,.85);box-shadow:0 2px 7px rgba(20,26,48,.28)}
.pgcard-ord.fase1{background:linear-gradient(140deg,#3fb8a6,#1d8f81);color:#fff}
.pgcard-ord.fase2{background:linear-gradient(140deg,#e8a33c,#c07617);color:#fff}

/* TRASCINARE I PERSONAGGI. Gli stessi segni degli Animei: la tessera presa
   sbiadisce, e una barra blu dice da che parte entra quella che stai posando.
   La cartella intera si illumina quando ci si posa dentro nel vuoto. */
.pgcard{cursor:grab}
.pgcard.dragging{opacity:.4;cursor:grabbing}
.pgcard.drop-before{box-shadow:inset 5px 0 0 0 #5b6cff,0 0 10px rgba(91,108,255,.55)}
.pgcard.drop-after{box-shadow:inset -5px 0 0 0 #5b6cff,0 0 10px rgba(91,108,255,.55)}
.pgsec.drop-in{outline:2px dashed #5b6cff;outline-offset:2px;border-radius:12px}

/* le medaglie divise per regione: un titolo, poi la griglia */
.badge-reg{margin-bottom:18px}
.badge-reg h4{margin:0 0 8px;font-size:14px;color:#cfd4e4;letter-spacing:.4px;text-transform:uppercase}
.badge-reg h4 small{color:#8b93b3;font-weight:500;text-transform:none;margin-left:6px}
.badge-cell.got .badge-nm{color:#ffd23f}

/* ═══ L'INIZIO DELLA PARTITA ═══════════════════════════════════════════════
   Non è un modulo con tre campi: è una SCENA. A sinistra chi parla (il
   Professore, o l'Animei che ti sta facendo vedere) grande abbastanza da
   riconoscerlo; a destra la sua voce; sotto, solo quando serve, la domanda.
   Il pannello delle domande è nascosto finché il Professore parla, così la
   prima cosa che vedi è una faccia e non sei bottoni. */
.ng-ov{position:fixed;inset:0;z-index:100060;display:flex;align-items:center;justify-content:center;padding:18px}
.ng-ov::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 0%,#1b2340 0%,#080a12 70%);z-index:-1}
.ng-card{position:relative;width:min(760px,96vw);max-height:94vh;overflow:auto;
  background:#111728;border:2px solid #3a4668;border-radius:18px;box-shadow:0 26px 70px rgba(0,0,0,.75)}
.ng-x{position:absolute;right:10px;top:10px;z-index:3;width:32px;height:32px;border-radius:9px;
  border:1px solid #3a4668;background:rgba(15,19,32,.85);color:#9fb0d0;font-size:15px;cursor:pointer}
.ng-x:hover{color:#fff;border-color:#5b6cff}

.ng-scena{display:flex;align-items:flex-end;gap:16px;padding:18px 18px 16px;cursor:pointer;
  background:linear-gradient(180deg,#16203a,#111728)}
.ng-figura{flex:none;width:190px;height:230px;display:flex;align-items:flex-end;justify-content:center}
.ng-figura .ng-rit{max-width:100%;max-height:230px;object-fit:contain;filter:drop-shadow(0 10px 26px rgba(0,0,0,.55))}
.ng-figura .ng-rit-no{font-size:96px;line-height:1}
/* l'Animei presentato: grande davvero, che è il punto — «fallo vedere in
   grande mentre lo presenta» */
.ng-figura-cre{flex-direction:column;justify-content:center;gap:6px}
.ng-figura-cre .ng-cre{width:190px;height:190px;object-fit:contain;image-rendering:pixelated;
  filter:drop-shadow(0 12px 26px rgba(0,0,0,.6))}
.ng-figura-cre .ng-cre-nome{font-weight:800;color:#8ef2c4;font-size:14px;letter-spacing:.4px}
.ng-dice{flex:1;min-width:0;align-self:center;position:relative;background:#0f1320;border:2px solid #3a4668;
  border-radius:14px;padding:14px 34px 14px 16px;min-height:120px}
.ng-chi{font-weight:800;color:#ffd23f;font-size:13.5px;margin-bottom:5px;letter-spacing:.3px}
.ng-testo{color:#e6e9f0;font-size:16px;line-height:1.55;min-height:76px;white-space:pre-wrap}
.ng-avanti{position:absolute;right:12px;bottom:9px;color:#5b6cff;font-size:19px;animation:ngPulsa 1s infinite}
@keyframes ngPulsa{0%,100%{opacity:.25}50%{opacity:1}}

.ng-panel{padding:4px 18px 18px;border-top:1px solid #2b3450}
.ng-dom{font-weight:800;color:#fff;font-size:15px;margin:14px 0 9px}
.ng-nota{color:#8b93b3;font-size:12.5px;margin-bottom:9px;line-height:1.45}
.ng-due{display:flex;gap:10px}
.ng-big{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 10px;font-size:30px;
  border:2px solid #3a4668;border-radius:14px;background:#0f1320;color:#e6e9f0;cursor:pointer}
.ng-big b{font-size:14px}
.ng-big:hover{border-color:#5b6cff;background:#151b30}
.ng-inp{width:100%;font-size:16px}
.ng-fondo{display:flex;justify-content:flex-end;margin-top:14px}
.ng-ok{font-weight:800}

/* le figurine: una fila di riquadri, quella scelta si accende. Il canvas è
   disegnato a mano (ritaglio dallo spritesheet), non un <img> intero. */
.ng-figure{display:flex;flex-wrap:wrap;gap:10px}
.ng-fig{width:74px;height:92px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px;
  border:2px solid #3a4668;border-radius:12px;background:#0f1320;cursor:pointer}
.ng-fig:hover{border-color:#5b6cff}
.ng-fig.on{border-color:#22c55e;background:#12261c;box-shadow:0 0 0 3px rgba(34,197,94,.22)}
.ng-fig canvas{image-rendering:pixelated}
/* la casella col RITRATTO disegnato: piu' grande, perche' qui c'e' un disegno
   vero e non un francobollo di dodici pixel. Il ritratto sta dentro intero
   (`contain`) e non si stira mai; l'ombra sotto lo stacca dal fondo scuro. */
.ng-fig-eroe{width:108px;height:152px;align-items:center;padding:6px}
.ng-fig-eroe .ng-eroe{max-width:100%;max-height:100%;object-fit:contain;
  filter:drop-shadow(0 6px 12px rgba(0,0,0,.5));transition:transform .12s ease;-webkit-user-drag:none}
.ng-fig-eroe:hover .ng-eroe{transform:scale(1.05)}
.ng-fig-eroe.on .ng-eroe{transform:scale(1.05)}

.ng-tipi{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.ng-tipo{display:block;text-align:left;padding:11px 13px;border:2px solid #3a4668;border-radius:12px;
  background:#0f1320;color:#e6e9f0;font-size:14px;cursor:pointer}
.ng-tipo small{display:block;color:#8b93b3;font-size:12px;margin-top:2px}
.ng-tipo:hover{border-color:#5b6cff}
.ng-tipo.on{border-color:#22c55e;background:#12261c}

@media (max-width:620px){
  .ng-scena{flex-direction:column;align-items:center}
  .ng-figura{width:150px;height:170px}
  .ng-figura-cre .ng-cre{width:150px;height:150px}
  .ng-dice{width:100%}
  /* sul telefono tre per riga, altrimenti la fila dei sei esce dallo schermo */
  .ng-figure{gap:8px}
  .ng-fig-eroe{width:calc(33.333% - 6px);height:132px}
}
/* ===== EDITOR EVENTI: LA PERSONA SI PESCA DAL REGISTRO =====
   La tessera in cima al pannello dice CHI e' legato all'evento: faccia, nome e
   mestiere. Non e' un campo da riempire, e' un collegamento a un personaggio che
   esiste gia' — per questo somiglia a una card della pagina Personaggi e non a
   una casella di testo. */
.evpg-cur{display:flex;align-items:center;gap:10px;margin-bottom:6px;padding:8px;
  border:1px solid var(--pc,#3a4670);border-radius:11px;background:#141a2b}
.evpg-cur.ignoto{border-color:#8a6a20;background:#211b0f}
.evpg-t{position:relative;width:52px;height:52px;flex:none;border-radius:10px;
  overflow:hidden;background:#0d1119;border:1px solid #2b3450;display:flex;align-items:center;justify-content:center}
.evpg-i{flex:1;min-width:0}
.evpg-i b{display:block;color:#fff;font-size:14px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evpg-i span{display:block;color:#9fb0d0;font-size:11.5px}
.evpg-no{font-size:24px;opacity:.55}
.evpg-vuoto{width:100%;text-align:left;margin-bottom:6px;border-color:#0891b2;color:#22d3ee;font-weight:700}
.evpg-hint{color:#8b93b3;font-size:11px;line-height:1.4;margin-bottom:10px}
.evpg-hint.warn{color:#f0a020}
/* l'elenco: cartelle del registro, e dentro le facce. Le tessere sono strette
   perche' con cento personaggi conta quante ne vedi insieme, non quanto sono grandi. */
.evpg-sec{margin:10px 0 4px}
.evpg-sec-h{color:#cfd4e4;font-weight:800;font-size:13px;margin-bottom:6px}
.evpg-sec-h span{background:rgba(125,140,190,.16);color:#8b93b3;font-size:11px;padding:1px 8px;border-radius:20px;margin-left:4px}
.evpg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}
.evpg-card{background:#0d1119;border:2px solid #232c40;border-radius:10px;padding:7px 6px;
  cursor:pointer;text-align:center;transition:transform .1s,border-color .1s}
.evpg-card:hover{transform:translateY(-2px);border-color:var(--pc,#5b6cff)}
.evpg-card.on{border-color:#ffd23f;box-shadow:0 0 0 2px rgba(255,210,63,.35)}
.evpg-ct{position:relative;width:100%;height:64px;border-radius:8px;overflow:hidden;
  background:#151b2c;display:flex;align-items:center;justify-content:center}
.evpg-cn{color:#e6e9f0;font-size:12.5px;font-weight:800;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evpg-cm{color:#8b93b3;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.evpg-card canvas,.evpg-t canvas{image-rendering:pixelated;display:block}
/* la casella vuota appena cliccata: il pannello risponde invece di restare muto */
.evpg-vuota{background:#141a2b;border:1px dashed #3a4670;border-radius:11px;padding:12px;color:#cfd4e4;font-size:13px}

/* ▶ GIOCA — il pulsante che apre il gioco, in cima al menu. Verde perché non
   sia una voce di menu fra le altre: è LA cosa da premere. */
.nav-gioca{display:flex;align-items:center;justify-content:center;gap:8px;margin:2px 0 10px;padding:14px 12px;
  border-radius:12px;cursor:pointer;font-size:17px;font-weight:900;letter-spacing:.6px;color:#062b12;
  background:linear-gradient(180deg,#4ade80,#22c55e);box-shadow:0 6px 18px rgba(34,197,94,.35);
  border:1px solid #16a34a;transition:filter .14s,transform .1s}
.nav-gioca:hover{filter:brightness(1.08);transform:translateY(-1px)}
.nav-gioca:active{transform:translateY(0)}

/* I POSTI DEI SALVATAGGI — sia per salvare che per riprendere */
.sav-riga{position:relative;display:grid;grid-template-columns:78px 1fr auto;align-items:center;gap:10px;width:100%;
  text-align:left;padding:11px 42px 11px 12px;margin-bottom:7px;border-radius:11px;cursor:pointer;
  background:#141a2b;border:1px solid #2a3350;color:#e6e9f5;font-size:13.5px;font-family:inherit}
.sav-riga:hover{border-color:#6371ff;background:#182034}
.sav-riga b{color:#9aa3c7;font-size:12px;letter-spacing:.4px}
.sav-riga span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.sav-riga small{color:#8b93b3;font-weight:600}
.sav-riga.vuoto{opacity:.6;border-style:dashed}
.sav-x{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:0;cursor:pointer;
  font-size:15px;opacity:.55;padding:4px 6px;border-radius:8px;color:#e6e9f5}
.sav-x:hover{opacity:1;background:rgba(239,68,68,.18)}
.sav-nuova{display:block;width:100%;text-align:left;padding:15px 16px;border-radius:12px;cursor:pointer;
  font-size:17px;font-weight:900;color:#062b12;background:linear-gradient(180deg,#4ade80,#22c55e);
  border:1px solid #16a34a;font-family:inherit}
.sav-nuova small{display:block;margin-top:3px;font-size:12.5px;font-weight:600;color:#0b3a1b;opacity:.85}
.sav-nuova:hover{filter:brightness(1.07)}

/* IL VOLTO nelle due caselle «sono un ragazzo / una ragazza»: il disegno è a
   figura intera, qui si inquadra la testa (object-position in alto). */
.ng-volto{display:block;width:92px;height:92px;border-radius:50%;overflow:hidden;
  background:#0f1424;border:2px solid #2a3350;font-size:44px;line-height:88px;text-align:center}
.ng-volto img{width:100%;height:100%;object-fit:cover;object-position:50% 4%;display:block}
.ng-big:hover .ng-volto{border-color:#5b6cff}

/* LA CURA — lo schermo si spegne, tre battiti, e torna il colore */
.cura-ov{position:fixed;inset:0;z-index:100050;background:#000;opacity:0;pointer-events:none;
  transition:opacity .5s ease;display:flex;align-items:center;justify-content:center}
.cura-ov.on{opacity:1;pointer-events:auto}
.cura-cuori{display:flex;gap:18px;font-size:38px;opacity:0;transition:opacity .3s}
.cura-ov.battiti .cura-cuori{opacity:1}
.cura-ov.battiti .cura-cuori span{animation:curaBattito .5s ease-in-out}
.cura-ov.battiti .cura-cuori span:nth-child(2){animation-delay:.5s}
.cura-ov.battiti .cura-cuori span:nth-child(3){animation-delay:1s}
@keyframes curaBattito{0%{transform:scale(.7);filter:brightness(.5)}45%{transform:scale(1.25);filter:brightness(1.4)}100%{transform:scale(1);filter:brightness(1)}}

/* ════════════════════════════════════════════════════════════════════════════
   SQUADRA · BOX · ALLENAMENTO — schermate CHIARE, stile Pokémon
   Andrea le vuole chiare e non scure: qui c'è il guscio chiaro (.pkm-*) che
   Squadra e Box condividono, le tessere degli Animei (.pt-*) e le caselle del
   deposito (.bx-*). Il resto del gioco resta scuro: chiaro è solo dove si
   guardano gli Animei, come nei giochi veri.
   ═══════════════════════════════════════════════════════════════════════════ */
.pkm-card{background:#f3f6fd;border:1px solid #c6cfe4;border-radius:20px;box-shadow:0 30px 90px rgba(0,0,0,.6);
  overflow:hidden;display:flex;flex-direction:column;max-height:90vh;color:#1b2233}
.pkm-head{display:flex;align-items:center;gap:10px;padding:13px 16px;font-weight:800;font-size:16.5px;color:#18203a;
  background:linear-gradient(90deg,#dfe6fb,#f3f6fd 65%);border-bottom:1px solid #c6cfe4;flex:none}
.pkm-head small{font-weight:600;font-size:12.5px;color:#6a7490}
.pkm-x{margin-left:auto;width:30px;height:30px;border-radius:9px;border:1px solid #bcc6dd;background:#fff;color:#49536e;
  cursor:pointer;font-size:14px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.pkm-x:hover{background:#e6ecfa;color:#18203a}
.pkm-body{padding:16px 16px 16px;overflow:auto}
.pkm-vuoto{color:#6a7490;font-size:14px;text-align:center;padding:26px;line-height:1.6}
.pkm-nota{margin-top:10px;text-align:center;font-size:12px;color:#6a7490}

/* ── tessera di un Animei in squadra ─────────────────────────────────────── */
.pt-card{position:relative;display:flex;align-items:stretch;gap:10px;background:#fff;border:1.5px solid #d3dbee;
  border-radius:16px;padding:10px;margin-bottom:13px;box-shadow:0 2px 6px rgba(25,35,70,.08)}
.pt-card.lead{border-color:#f0a500;box-shadow:0 0 0 2px rgba(240,165,0,.22),0 3px 9px rgba(25,35,70,.11)}
.pt-cap{position:absolute;top:-9px;left:16px;background:#f0a500;color:#3b2700;font-size:10px;font-weight:800;
  letter-spacing:.09em;text-transform:uppercase;padding:2px 10px;border-radius:9px}
.pt-ord{display:flex;flex-direction:column;justify-content:center;gap:4px;flex:none}
.pt-ord button{width:26px;height:22px;border:1px solid #c6d0e6;background:#f1f5fd;color:#4b5674;border-radius:7px;
  cursor:pointer;font-size:10px;line-height:1;padding:0}
.pt-ord button:hover:not(:disabled){background:#e0e8fa}
.pt-ord button:disabled{opacity:.3;cursor:default}
.pt-art{flex:none;width:78px;height:78px;display:flex;align-items:center;justify-content:center;align-self:center;
  border:1.5px solid #ccc;border-radius:14px;cursor:pointer;padding:0}
.pt-art:hover{filter:brightness(1.04)}
.pt-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;justify-content:center}
.pt-r1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pt-nome{font-size:17px;font-weight:800;color:#161d2e;line-height:1.1}
.pt-tipi{display:inline-flex;gap:4px}
.pt-lv{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:12px;color:#6a7490;font-weight:700;white-space:nowrap}
.pt-lv input{width:52px;padding:5px;border-radius:8px;border:1px solid #c6d0e6;background:#fff;color:#1b2233;
  text-align:center;font-size:13px;font-weight:700}
.pt-hp{display:flex;align-items:center;gap:8px}
.pt-hp-l{font-size:10.5px;font-weight:800;color:#b07b00;letter-spacing:.08em}
.pt-hp-bar{flex:1;height:10px;background:#e6eaf4;border-radius:6px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(30,40,70,.16)}
.pt-hp-bar i{display:block;height:100%;border-radius:6px;transition:width .3s}
.pt-hp-n{font-size:12px;color:#3c465e;font-weight:800;font-variant-numeric:tabular-nums;flex:none}
.pt-mosse{display:flex;flex-wrap:wrap;gap:5px}
.pt-mossa{display:inline-flex;align-items:center;gap:6px;background:#f4f7fd;border:1px solid #d7dfef;border-left:3px solid #999;
  border-radius:9px;padding:3px 8px;font-size:12px;font-weight:700;color:#26304a}
/* al posto dei PP, che non esistono piu', la scheda squadra scrive il GRADO */
.pt-grado{
  font-weight:800; font-size:10px; padding:1px 6px; border-radius:20px;
  color:#fff; background:#4a5270;
}
.pt-grado.g1{background:#3fb27f} .pt-grado.g2{background:#d6a13a} .pt-grado.g3{background:#d2503f}
.pt-mossa-x{background:none;border:none;color:#c0392b;cursor:pointer;font-size:11px;padding:0 1px;line-height:1}
.pt-vuoto{color:#8b93ad;font-size:12px}
.pt-held{display:flex;align-items:center;gap:7px;padding-top:7px;border-top:1px dashed #dbe2f0;font-size:12.5px;flex-wrap:wrap}
.pt-held-l{color:#6a7490;font-weight:700}
.pt-held-nm{color:#8a6100}
.pt-held-x{background:#fdf3d8;border:1px solid #e5c76a;color:#8a6100;border-radius:6px;width:20px;height:20px;
  font-size:11px;cursor:pointer;padding:0;line-height:1}
.pt-held-btn{margin-left:auto;background:#eef3fd;border:1px solid #c6d0e6;color:#3c465e;border-radius:8px;
  padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}
.pt-held-btn:hover{background:#e0e8fa}
.pt-acts{flex:none;display:flex;flex-direction:column;gap:6px;justify-content:center;align-items:stretch}
.pt-btn{background:#eef3fd;border:1px solid #b9c5e2;color:#2c3557;border-radius:9px;padding:7px 12px;font-size:12.5px;
  font-weight:800;cursor:pointer;white-space:nowrap}
.pt-btn:hover{background:#dde7fb}
.pt-lib{background:#fff;border:1px solid #e3b7b1;color:#b0392b;border-radius:9px;height:28px;
  font-size:12px;cursor:pointer;padding:0;align-self:center;width:34px}
.pt-lib:hover{background:#fdecea}

/* ── BOX: caselle in griglia + scheda breve a sinistra ───────────────────── */
.bx-wrap{display:flex;gap:12px;padding:14px 16px 16px;overflow:auto}
.bx-det{flex:0 0 168px;display:flex;flex-direction:column;align-items:center;gap:7px;background:#fff;
  border:1px solid #d3dbee;border-radius:16px;padding:14px 12px;text-align:center;align-self:flex-start}
.bx-det-vuoto{color:#8b93ad;font-size:12.5px;line-height:1.5;padding:30px 0}
.bx-det-art{width:120px;height:120px;display:flex;align-items:center;justify-content:center}
.bx-det-nm{font-size:17px;font-weight:800;color:#161d2e;line-height:1.1}
.bx-det-lv{font-size:12px;color:#6a7490;font-weight:700}
.bx-det-tipi{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}
.bx-det-dove{font-size:11.5px;color:#6a7490;margin-bottom:2px}
.bx-det .btn.sm{background:#eef3fd;border:1px solid #b9c5e2;color:#2c3557;font-weight:700}
.bx-det .btn.sm:hover{background:#dde7fb}
.bx-lib{border-color:#e3b7b1!important;color:#b0392b!important;background:#fff!important}
.bx-lib:hover{background:#fdecea!important}
.bx-col{display:flex;flex-direction:column;min-width:0}
.bx-largo{flex:1}
.bx-t{font-weight:800;color:#2c3557;font-size:13px;padding:2px 4px 8px;letter-spacing:.3px}
.bx-t small{font-weight:600;color:#6a7490;margin-left:4px}
.bx-grid{display:grid;gap:7px;background:#e7ecf8;border:1px solid #d3dbee;border-radius:14px;padding:9px;
  align-content:flex-start}
.bx-team{grid-template-columns:repeat(2,68px)}
/* le colonne si contano da sole: su finestre strette la griglia va a capo
   invece di scappare fuori dal riquadro */
.bx-store{grid-template-columns:repeat(auto-fill,68px);justify-content:start;max-height:50vh;overflow:auto;min-width:0}
.bx-grid.hot{background:#dbe6ff;border-color:#8aa5f0;box-shadow:inset 0 0 0 2px rgba(91,124,240,.35)}
.bx-cell{position:relative;width:68px;height:68px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  border:1.5px solid transparent}
.bx-cell.vuota{background:#f2f5fc;border:1.5px dashed #ccd6ea}
.bx-cell.piena{cursor:grab;box-shadow:0 1px 3px rgba(25,35,70,.12)}
.bx-cell.piena:hover{filter:brightness(1.06)}
.bx-cell.piena.on{box-shadow:0 0 0 3px rgba(91,124,240,.5)}
.bx-cell.dragging{opacity:.35}
.bx-cell img{width:54px;height:54px;object-fit:contain;image-rendering:pixelated;pointer-events:none}
.bx-lv{position:absolute;right:3px;bottom:2px;background:rgba(20,28,52,.72);color:#fff;font-size:9.5px;font-weight:800;
  border-radius:6px;padding:0 4px;line-height:14px}
.bx-nota{font-size:11.5px;color:#6a7490;margin-top:8px;line-height:1.45;max-width:160px}

/* ── ALLENAMENTO: il riquadro del consigliato e i segni del ruolo ────────── */
.tr-cons{background:#141c30;border:1px solid #2f6f4e;border-left:4px solid #2faf63;border-radius:11px;padding:10px 12px}
.tr-cons-t{font-size:12px;font-weight:800;color:#6ee7b7;letter-spacing:.4px;text-transform:uppercase}
.tr-cons-d{font-size:12.5px;color:#c3cbe0;margin:4px 0 8px;line-height:1.5}
.tr-cons-b{display:flex;gap:8px;flex-wrap:wrap}
.tr-avviso{background:#2a2413;border:1px solid #6b5320;color:#f4d38a;border-radius:9px;padding:7px 11px;
  font-size:12.5px;margin-bottom:9px}
.tr-row.tr-picco{border-color:#2f6f4e;background:#111a24}
.tr-tag{margin-left:7px;font-size:10px;font-weight:800;border-radius:7px;padding:1px 7px;letter-spacing:.03em}
.tr-tag.su{background:#173a2a;border:1px solid #2faf63;color:#6ee7b7}
.tr-tag.giu{background:#2a1a1a;border:1px solid #7a3a34;color:#e5a29a}
.tr-b:disabled{opacity:.3;cursor:not-allowed}

/* ── ricordamosse: pulsante spento quando i soldi non bastano ────────────── */
.asum-learn.off{background:#241a1a;border-color:#7a3a34;color:#e5a29a;cursor:not-allowed;font-size:11.5px}
.asum-learn.off:hover{background:#241a1a}
.asum-piuavanti{color:#8b93b3;font-size:12px;text-align:center;padding:8px 4px 2px}

/* ── CARTELLE DEI PERSONAGGI: si riordinano trascinando l'intestazione ─────
   La maniglia ⠿ dice che si può prendere; mentre trascini una linea azzurra
   mostra dove finirà, sopra o sotto la cartella che stai sorvolando.
   `overflow:hidden` sulla sezione mangerebbe la linea sul bordo: qui la si
   disegna DENTRO, con un'ombra interna. */
.pgsec-mano{color:#8f99b5;font-size:13px;letter-spacing:-1px;cursor:grab;user-select:none;opacity:.55}
.pgsec-h:hover .pgsec-mano{opacity:1}
.pgsec-h:active .pgsec-mano{cursor:grabbing}
.pgsec.cart-dragging{opacity:.45}
.pgsec.cart-before{box-shadow:inset 0 6px 0 0 #5b6cff}
.pgsec.cart-after{box-shadow:inset 0 -6px 0 0 #5b6cff}

/* ── PUNTI ESPERIENZA: barretta sottile sotto quella dei PS ───────────────── */
.pt-xp{display:flex;align-items:center;gap:8px;margin-top:-1px}
.pt-xp-l{font-size:9.5px;font-weight:800;color:#3a6ea8;letter-spacing:.08em}
.pt-xp-bar{flex:1;height:6px;background:#e6eaf4;border-radius:4px;overflow:hidden;
  box-shadow:inset 0 1px 2px rgba(30,40,70,.16)}
.pt-xp-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#3f8fd6,#5bb6f0);transition:width .3s}
.pt-xp-n{font-size:11px;color:#5d6884;font-weight:700;font-variant-numeric:tabular-nums;flex:none}
.pt-xp-m{font-size:10.5px;color:#8b93ad;font-weight:600;flex:none;white-space:nowrap}

/* ── SCEGLI L'OGGETTO DA DARGLI: solo quello che hai nello zaino ──────────── */
.held-riga{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:#fff;
  border:1.5px solid #d3dbee;border-radius:12px;padding:9px 12px;margin-bottom:8px;cursor:pointer;color:#1b2233}
.held-riga:hover{background:#eef3fd;border-color:#b9c5e2}
.held-nm{flex:1;min-width:0;display:flex;flex-direction:column}
.held-nm b{font-size:14.5px;font-weight:800;color:#161d2e}
.held-nm small{font-size:11.5px;color:#6a7490}
.held-q{flex:none;background:#eef3fd;border:1px solid #c6d0e6;color:#3c465e;font-weight:800;
  font-size:12px;border-radius:8px;padding:3px 9px;font-variant-numeric:tabular-nums}

/* ── I COMANDI DELLA LOTTA NON ESCONO PIÙ DAL RIQUADRO ──────────────────────
   Con tre mosse, la seconda finiva mezza fuori dal bordo destro della scena e
   veniva tagliata. Non era la seconda mossa ad avere qualcosa che non andava:
   era la GRIGLIA. `grid-template-columns:1fr 1fr` vuol dire, per il browser,
   `minmax(auto, 1fr)`: la colonna non scende MAI sotto la larghezza minima del
   suo contenuto, e un nome tutto attaccato come «Megassorbimento» non si spezza
   da solo. Così la prima colonna si allargava oltre la metà, la griglia
   diventava più larga della barra dei comandi — che è ancorata a destra — e
   quello che avanzava usciva a destra, fuori dalla scena.
   La cura è in due tempi, e servono tutt'e due:
   1. `minmax(0, 1fr)`: le colonne possono davvero stringersi fino a zero, quindi
      la griglia non supera mai la barra;
   2. `overflow-wrap: anywhere` sul nome della mossa: adesso che c'è meno spazio,
      la parola lunga va a capo invece di sfondare la sua targhetta.
   Vale per due, tre e quattro mosse, e per la finestra stretta. */
.bt-menu,
.bt-actionbox .bt-menu,
.bt-bar .bt-menu,
.bt-bar-menu .bt-menu{grid-template-columns:repeat(2, minmax(0, 1fr))}
.bt-mainmenu{grid-template-columns:repeat(2, minmax(0, 1fr))}
/* ogni targhetta sta dentro la sua colonna, qualunque cosa ci sia scritto */
.bt-move{min-width:0;overflow:hidden}
.bt-move>b,.bt-actionbox .bt-move b{min-width:0;overflow-wrap:anywhere;word-break:normal;hyphens:auto}
.bt-move .bt-move-sub{min-width:0;flex-wrap:wrap;row-gap:2px}
.bt-move .tbadge{flex:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bt-cmd{min-width:0;overflow:hidden;text-overflow:ellipsis}
/* la barra col nome e i PS: il pulsante «Indietro» non deve mai spingere fuori
   il pannello, e il pannello non deve mai spingere fuori «Indietro» */
.bt-playerbar{min-width:0;flex-wrap:wrap}
.bt-playerbar>.bt-panel{min-width:0}

/* ── LE INTESTAZIONI DEI PANNELLI: il sottotitolo sta ATTACCATO al titolo ────
   `.nice-head` distribuisce lo spazio fra i suoi pezzi (`space-between`), e i
   pezzi sono tre: il titolo, il sottotitolo e la ✕. Risultato: il sottotitolo
   finiva in mezzo, staccato, e cominciando con un trattino si leggeva come una
   frase mozzata («🎒 Zaino» … «— «?» spiega»). Con un margine automatico a
   destra tutto lo spazio libero va da una parte sola: titolo e sottotitolo
   restano vicini, la ✕ resta in fondo. */
.nice-head>small{margin-right:auto}

/* ═══ v10 · LA LOTTA: comandi a METÀ, sfondo che non si ingrandisce, tipi leggibili ═══
   Andrea, guardando la lotta a schermo intero: «vorrei rimpicciolire almeno
   della metà tutta questa parte, comprese le mosse oltre al menu; quando
   ingrandisco, lo sfondo zoomato è bruttissimo; e la scritta dei tipi non si
   legge». Tre cose separate, qui in fila. */

/* 1 · IL BLOCCO DEI COMANDI SCENDE A METÀ.
   Prima era largo 520px e occupava fino a metà scena: su un monitor grande
   copriva il dipinto e rubava la scena alle creature, che sono la cosa bella. */
#owBattle .bt-actionbox, #ar_stage .bt-actionbox{ width:270px; max-width:26%; right:16px; bottom:14px; }
#owBattle .bt-cmd, #ar_stage .bt-cmd{
  font-size:12px; font-weight:800; padding:8px 6px; border-radius:9px;
  border-width:2px; letter-spacing:.2px;
  box-shadow:0 2px 0 rgba(0,0,0,.26),0 4px 9px rgba(0,0,0,.22);
}
#owBattle .bt-mainmenu, #ar_stage .bt-mainmenu{ gap:7px; }
#owBattle .bt-actionbox .bt-menu, #ar_stage .bt-actionbox .bt-menu{ gap:5px; }
/* le mosse: stessa cura, se no restano grandi come prima accanto a un menu piccolo */
#owBattle .bt-actionbox .bt-move, #ar_stage .bt-actionbox .bt-move{
  padding:5px 8px 5px 10px; border-radius:8px; border-left-width:4px;
  box-shadow:0 2px 7px rgba(0,0,0,.12);
}
#owBattle .bt-actionbox .bt-move b, #ar_stage .bt-actionbox .bt-move b{ font-size:11px; }
#owBattle .bt-actionbox .bt-move .bt-move-sub,
#ar_stage .bt-actionbox .bt-move .bt-move-sub{ font-size:9px; gap:4px; }
#owBattle .bt-move-pp, #ar_stage .bt-move-pp{ font-size:9px; }
#owBattle .bt-move-i, #ar_stage .bt-move-i{ font-size:12px; top:2px; right:4px; }
#owBattle .bt-back, #ar_stage .bt-back{ padding:2px 8px; font-size:10.5px; border-radius:8px; }
/* la barra della vita del giocatore, che sta lì sopra, scende con loro */
#owBattle .bt-playerbar, #ar_stage .bt-playerbar{ gap:6px; margin-bottom:6px; }
#owBattle .bt-playerbar .bt-panel, #ar_stage .bt-playerbar .bt-panel{ padding:5px 9px; border-radius:9px; }
#owBattle .bt-playerbar .bt-name, #ar_stage .bt-playerbar .bt-name{ font-size:11px; margin-bottom:3px; gap:4px; }
#owBattle .bt-playerbar .bt-name small, #ar_stage .bt-playerbar .bt-name small{ font-size:9.5px; }
#owBattle .bt-playerbar .bt-hp, #ar_stage .bt-playerbar .bt-hp{ height:5px; min-width:90px; }
#owBattle .bt-playerbar .bt-hpn, #ar_stage .bt-playerbar .bt-hpn{ font-size:9.5px; }
#owBattle .bt-playerbar .bt-hpwrap>span, #ar_stage .bt-playerbar .bt-hpwrap>span{ font-size:8px; }
#owBattle .bt-playerbar .bt-types .tbadge, #ar_stage .bt-playerbar .bt-types .tbadge{ font-size:8.5px; padding:1px 6px; }

/* 2 · LO SFONDO NON SI INGRANDISCE PIÙ.
   I dipinti sono 1600×900 (16:9) e la scena viene molto più larga che alta:
   con `cover` il browser li ingrandiva finché coprivano, e a schermo grande si
   vedevano i pixel. Adesso la scena TIENE il 16:9 finché ci sta, e per il pelo
   che avanza il dipinto si adatta invece di zoomare. */
#owBattle .bt-stage.bt-terr, #ar_stage .bt-stage.bt-terr{
  /* ⚠ QUESTA REGOLA POTEVA FAR DIVENTARE LA LOTTA TUTTA NERA, ed è colpa mia.
     Con `aspect-ratio` + `height:auto` l'altezza nasce dalla LARGHEZZA; e il
     tetto era `calc(100vh - 130px)`, che in qualunque momento in cui `vh` non
     è ancora noto (finestra che si apre, overlay creato prima del primo
     fotogramma) vale ZERO. Un tetto a zero schiaccia la scena a niente: resta
     il fondo scuro, e si vede tutto nero. Misurato con la sonda: `max-height`
     calcolato 0px e scena larga 0. Adesso il tetto non può MAI essere zero e
     la larghezza è dichiarata, così l'altezza ha sempre da cosa nascere. */
  width:100%;
  aspect-ratio:16/9; height:auto; min-height:420px;
  max-height:max(420px, calc(100vh - 130px));
  background-size:100% 100%;      /* si adatta, non ingrandisce */
  background-position:center;
  image-rendering:auto;
}

/* 3 · I TIPI SI LEGGONO, TUTTI E DICIOTTO.
   Il colore lo mette il tipo (`style="background:…"`), e su Ghiaccio, Terra,
   Volante e Folletto il bianco sopra spariva. Invece di ritoccare diciotto
   colori a mano, si stende sopra un velo scuro uguale per tutti — il colore
   resta riconoscibile, la scritta diventa nera su chiaro… anzi bianca su
   scuro, sempre. Vale ovunque, non solo in lotta. */
.tbadge:not(.off){
  /* ⚠ SERVE `!important`, e non e' pigrizia: il colore del tipo e' scritto
     dentro il tag (`style="background:#2f74c0"`), e la scorciatoia `background`
     azzera anche l'immagine di sfondo. Senza `!important` il velo non arriva
     mai: misurato, `background-image` risultava `none`. */
  background-image:linear-gradient(rgba(0,0,0,.34),rgba(0,0,0,.34)) !important;   /* .34 e non .28: con .28 l'Elettro restava sotto la soglia di leggibilità (4,24 contro i 4,5 richiesti). Misurato, non a occhio. */
  text-shadow:0 1px 2px rgba(0,0,0,.55);
  font-weight:800; letter-spacing:.25px;
  border:1px solid rgba(0,0,0,.18);
}

/* ═══ v11 · LE DUE CREATURE IN SCALA FRA LORO ══════════════════════════════
   Andrea, guardando una lotta: «quello del giocatore è estremamente troppo
   grande, l'avversario troppo piccolo; sposta il tuo un pochino, taglialo un
   po' e rendilo leggermente più piccolo».
   Le misure di base erano sbilanciate in partenza: il tuo Animei nasceva a
   60cqh e l'avversario a 42cqh, cioè il tuo era una volta e mezza l'altro
   PRIMA ancora di contare quanto è alta la creatura. Qui si avvicinano: il tuo
   resta più grande (è in primo piano, dev'essere così) ma di poco.
   Il TAGLIO: il tuo Animei sporge sotto dal bordo della scena, ed è un taglio
   voluto — la parte bassa è la base della creatura (zampe, ombra, coda a terra)
   e si può togliere senza perdere niente di riconoscibile. Sinistra uguale.
   Testa, corna, ali e muso non si toccano mai: quelli stanno in alto e a
   destra, e restano tutti dentro. */
#owBattle .bt-stage{
  --spr-foe: clamp(200px, max(50cqh, 26cqw), 660px);   /* era 42cqh / 560px */
  --spr-you: clamp(220px, max(52cqh, 27cqw), 700px);   /* era 60cqh / 820px */
}
#owBattle .bt-spr-you{
  /* scende un po' più sotto il bordo (taglio alla base) e si sposta a sinistra,
     liberando il centro della scena */
  bottom: calc(var(--spr-you) * -0.13);
  margin-left: 0; margin-right: auto;
  left: -2cqw;
}
#owBattle .bt-spr-foe{ top: 2.5cqh; right: 3cqw; }
@media(min-width:761px) and (max-width:1100px){
  #owBattle .bt-stage{
    --spr-foe: clamp(150px, 36cqh, 420px);
    --spr-you: clamp(155px, 38cqh, 440px);
  }
  #owBattle .bt-spr-you{ bottom: calc(var(--spr-you) * -0.12); left: -2cqw; }
}

/* ═══ v12 · L'AVVERSARIO SI PRENDE IL SUO SPAZIO, IL TUO SI TAGLIA ═════════
   Andrea, seconda passata: «è ancora troppo grande quello del giocatore
   rispetto all'avversario; il giocatore va tagliato ancora di più, quasi la
   metà, facendo attenzione che le teste si vedano sempre bene; l'avversario
   deve prendere un bel po' di spazio. E occhio: immagini quadrate, orizzontali
   e verticali vanno trattate in tre modi diversi».
   Ha ragione sulla forma, e il motivo è geometrico: il riquadro è più largo che
   alto, e l'immagine ci sta dentro «contenuta». Una figura LARGA tocca prima i
   fianchi del riquadro e smette di crescere — resta bassa, e sembra lontana.
   Una figura ALTA tocca prima il soffitto e riempie bene. Perciò non si può
   dare a tutte la stessa misura: si dà a ognuna il permesso che le serve. */

/* ── L'AVVERSARIO: più grande di prima in ogni caso ── */
#owBattle .bt-stage{
  --spr-foe: clamp(240px, max(62cqh, 32cqw), 780px);   /* era 50cqh / 660px */
  --spr-you: clamp(210px, max(50cqh, 26cqw), 660px);
}
/* ORIZZONTALI: sono quelle che «non si sviluppano in altezza», perché le ferma
   la larghezza. Si alza il tetto: più larghe possono essere, più alte vengono. */
#owBattle .bt-spr-foe.spr-oriz{ max-width:54%; width:calc(var(--spr-foe) * 2 * var(--taglia,1)); }
/* VERTICALI: sono già le migliori, le ferma il soffitto e non i fianchi.
   Un ritocco piccolo e basta, se no diventano torri. */
#owBattle .bt-spr-foe.spr-vert{ height:calc(var(--spr-foe) * 1.12 * var(--taglia,1)); max-width:34%; }
/* QUADRATE: stanno in mezzo e prima restavano le più piccole. */
#owBattle .bt-spr-foe.spr-quad{ max-width:46%; height:calc(var(--spr-foe) * 1.08 * var(--taglia,1)); }

/* ── IL TUO: tagliato quasi a metà, ma la testa non si tocca MAI ──
   Il taglio funziona solo se la creatura è APPOGGIATA IN BASSO dentro il suo
   riquadro: se restasse centrata, spingendo giù si taglierebbe il vuoto e non
   lei. Perciò prima la si incolla al fondo (tutte e tre le forme), poi si
   spinge il riquadro sotto il bordo della scena. Quello che esce sono zampe,
   coda e pancia; testa, corna e ali stanno in alto e restano dentro. */
#owBattle .bt-spr-you,
#owBattle .bt-spr-you.spr-oriz,
#owBattle .bt-spr-you.spr-vert,
#owBattle .bt-spr-you.spr-quad{ object-position:center bottom; }
#owBattle .bt-spr-you{ bottom:calc(var(--spr-you) * -0.38); }
/* le orizzontali del giocatore sono le più basse: se le tagli come le altre
   sparisce metà creatura invece di metà zampe. A loro si taglia meno. */
#owBattle .bt-spr-you.spr-oriz{ bottom:calc(var(--spr-you) * -0.26); }
/* le verticali sono alte: reggono il taglio più profondo senza perdere niente
   di importante, ed è così che si guadagna spazio per l'avversario. */
#owBattle .bt-spr-you.spr-vert{ bottom:calc(var(--spr-you) * -0.44); }

@media(min-width:761px) and (max-width:1100px){
  #owBattle .bt-stage{
    --spr-foe: clamp(170px, 44cqh, 500px);
    --spr-you: clamp(150px, 36cqh, 420px);
  }
  #owBattle .bt-spr-you{ bottom:calc(var(--spr-you) * -0.34); }
}

/* ═══ v13 · IL TAGLIO GIUSTO: in proporzione alla creatura, non al riquadro ══
   Misurato in Chrome su Albehard: riquadro alto 600, tagliati 122 px = solo il
   20%, altro che «quasi la metà». E c'era un errore peggiore: il taglio era una
   frazione di `--spr-you`, che è la misura PRIMA di moltiplicarla per la taglia
   della creatura. Su un Animei grande (taglia 1,28) tagliava poco; su uno
   piccolo (taglia 0,80) avrebbe tagliato il 69% — cioè la testa. Adesso la
   frazione moltiplica anche `--taglia`, quindi è sempre la stessa fetta di
   creatura, grande o piccola che sia. */
#owBattle .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.30); }
#owBattle .bt-spr-you.spr-oriz{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.28); }
#owBattle .bt-spr-you.spr-vert{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.32); }
/* e l'avversario si prende ancora un po' di scena: era il senso della richiesta */
#owBattle .bt-stage{ --spr-foe: clamp(260px, max(70cqh, 34cqw), 860px); }
@media(min-width:761px) and (max-width:1100px){
  #owBattle .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.27); }
}

/* ═══ v14 · IL VERO MOTIVO PER CUI SEMBRAVA TUTTO UGUALE ═══════════════════
   Ho passato tre giri a tagliare in ALTEZZA e Andrea continuava a vedere il suo
   Animei enorme. Misurando finalmente la larghezza ho capito perché: il taglio
   funzionava (207 px sotto il bordo, la scena li tagliava davvero), ma una
   creatura LARGA si prendeva il 50% della scena in orizzontale — 676 px su
   1342 — mentre l'avversario ne prendeva il 34%. A occhio non conta quanto è
   alta: conta quanta scena occupa. Tagliarla sotto non la rimpiccioliva.
   Qui si stringe la larghezza, che è la misura che si vede. */
#owBattle .bt-spr-you{ max-width:40%; }
#owBattle .bt-spr-you.spr-oriz{
  width:calc(var(--spr-you) * 1.4 * var(--taglia,1));
  max-width:38%;
}
#owBattle .bt-spr-you.spr-quad{ max-width:34%; }
#owBattle .bt-spr-you.spr-vert{ max-width:30%; }
@media(min-width:761px) and (max-width:1100px){
  #owBattle .bt-spr-you{ max-width:44%; }
  #owBattle .bt-spr-you.spr-oriz{ max-width:42%; }
}

/* ═══ v15 · LE STESSE REGOLE ANCHE NELL'ARENA ══════════════════════════════
   ⚠ QUI STA IL MOTIVO PER CUI ANDREA HA VISTO «SEMPRE UGUALE» PER TRE GIRI.
   Le lotte in Animex si giocano in DUE posti: nel mondo (contenitore
   `#owBattle`) e nell'Arena (contenitore `#ar_stage`). Dal secondo giro in poi
   ho scritto tutte le misure — taglia, taglio, larghezze per forma — solo per
   `#owBattle`, e lui provava nell'Arena: le regole c'erano, erano giuste, e
   non lo riguardavano. Il primo blocco (comandi e sfondo) invece nominava
   tutt'e due, ed è l'unico cambiamento che aveva visto.
   Da qui in avanti: ogni regola di battaglia nomina SEMPRE i due contenitori. */

#ar_stage .bt-stage{
  --spr-foe: clamp(260px, max(70cqh, 34cqw), 860px);
  --spr-you: clamp(210px, max(50cqh, 26cqw), 660px);
}
/* l'avversario, per forma dell'immagine */
#ar_stage .bt-spr-foe.spr-oriz{ max-width:54%; width:calc(var(--spr-foe) * 2 * var(--taglia,1)); }
#ar_stage .bt-spr-foe.spr-vert{ height:calc(var(--spr-foe) * 1.12 * var(--taglia,1)); max-width:34%; }
#ar_stage .bt-spr-foe.spr-quad{ max-width:46%; height:calc(var(--spr-foe) * 1.08 * var(--taglia,1)); }
#ar_stage .bt-spr-foe{ top:2.5cqh; right:3cqw; }
/* il tuo: appoggiato in basso, tagliato alla base, e soprattutto più STRETTO */
#ar_stage .bt-spr-you,
#ar_stage .bt-spr-you.spr-oriz,
#ar_stage .bt-spr-you.spr-vert,
#ar_stage .bt-spr-you.spr-quad{ object-position:center bottom; }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.30); max-width:40%; }
#ar_stage .bt-spr-you.spr-oriz{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.28);
  width:calc(var(--spr-you) * 1.4 * var(--taglia,1)); max-width:38%; }
#ar_stage .bt-spr-you.spr-vert{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.32); max-width:30%; }
#ar_stage .bt-spr-you.spr-quad{ max-width:34%; }
@media(min-width:761px) and (max-width:1100px){
  #ar_stage .bt-stage{
    --spr-foe: clamp(170px, 44cqh, 500px);
    --spr-you: clamp(150px, 36cqh, 420px);
  }
  #ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.27); max-width:44%; }
  #ar_stage .bt-spr-you.spr-oriz{ max-width:42%; }
}

/* l'AVVERSARIO non si taglia mai: lui si guarda intero, è il taglio del
   giocatore a essere voluto (sta in primo piano). Misurato nell'Arena: gli
   uscivano 65 px di zampe sotto il bordo perché il suo riquadro, cresciuto con
   le misure nuove, era più alto della scena. Un tetto e il problema non torna. */
/* ⚠ NON `cqh`: misurando ho scoperto che la scena non è un «contenitore»
   (container-type: normal), quindi cqh si riferisce a un elemento più alto —
   il tetto veniva 774px su una scena di 618 e non serviva a niente. La
   percentuale invece è calcolata sulla scena, che è il riferimento giusto. */
#owBattle .bt-spr-foe, #ar_stage .bt-spr-foe{ max-height:86%; }


/* ═══ v16 · ARENA E MONDO: LE STESSE MISURE, SEMPRE ══════════════════════
   Regola di Andrea: «arena e lotta mondo devono essere SEMPRE sincronizzate».
   Le misure delle creature erano scritte solo per la lotta del mondo, e lui
   provava nell'Arena: per tre giri ha visto «sempre uguale» perché quelle
   regole non lo riguardavano. Qui ogni regola degli sprite del mondo ha la
   sua gemella per l'Arena, generata dalle stesse dichiarazioni.
   Si controlla con: node scripts/lotta-sincronizzata.js */
/* gli slot del doppio valgono solo sotto i 1200px anche nel mondo (riga 1160):
   senza questa @media davo all Arena posizioni che la lotta del mondo non usa. */
@media (max-width:1200px){
#ar_stage .bt-sprite.bt-spr-you0{ left:9%;bottom:22%;width:clamp(110px,17%,220px) }
#ar_stage .bt-sprite.bt-spr-you1{ left:27%;bottom:41%;width:clamp(88px,13%,170px) }
#ar_stage .bt-sprite.bt-spr-foe0{ right:7%;top:29%;width:clamp(92px,14%,180px) }
#ar_stage .bt-sprite.bt-spr-foe1{ right:29%;top:17%;width:clamp(78px,11%,145px) }
}
#ar_stage .bt-spr-foe{ width: calc(var(--spr-foe) * 1.6 * var(--taglia,1)); height: calc(var(--spr-foe) * var(--taglia,1)); top: 1.5cqh; right: 2.5cqw; max-width: 52cqw; }
#ar_stage .bt-spr-you{ width: calc(var(--spr-you) * 1.6 * var(--taglia,1)); height: calc(var(--spr-you) * var(--taglia,1)); bottom: calc(var(--spr-you) * -0.07); left: 0; right: calc(3cqw + clamp(420px, 34cqw, 720px)); margin-left: auto; margin-right: auto; max-width: calc(96cqw - 36cqw); }
#ar_stage .bt-spr-foe{ top:9cqh; right:0; max-width:96cqw }
#ar_stage .bt-spr-you{ bottom:calc(var(--basso, 265px) + 2cqh); left:0; max-width:100cqw }
#ar_stage .bt-spr-foe{ top:2cqh; right:1cqw; max-width:60cqw }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * -0.06); left:0; max-width:calc(98cqw - clamp(340px, 44cqw, 620px) - 2cqw) }
#ar_stage .bt-spr-you{ bottom: calc(var(--spr-you) * -0.13); margin-left: 0; margin-right: auto; left: -2cqw; }
#ar_stage .bt-spr-foe{ top: 2.5cqh; right: 3cqw; }
#ar_stage .bt-spr-you{ bottom: calc(var(--spr-you) * -0.12); left: -2cqw; }
#ar_stage .bt-spr-foe.spr-oriz{ max-width:54%; width:calc(var(--spr-foe) * 2 * var(--taglia,1)); }
#ar_stage .bt-spr-foe.spr-vert{ height:calc(var(--spr-foe) * 1.12 * var(--taglia,1)); max-width:34%; }
#ar_stage .bt-spr-foe.spr-quad{ max-width:46%; height:calc(var(--spr-foe) * 1.08 * var(--taglia,1)); }
#ar_stage .bt-spr-you,
#ar_stage .bt-spr-you.spr-oriz,
#ar_stage .bt-spr-you.spr-vert,
#ar_stage .bt-spr-you.spr-quad{ object-position:center bottom; }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * -0.38); }
#ar_stage .bt-spr-you.spr-oriz{ bottom:calc(var(--spr-you) * -0.26); }
#ar_stage .bt-spr-you.spr-vert{ bottom:calc(var(--spr-you) * -0.44); }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * -0.34); }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.30); }
#ar_stage .bt-spr-you.spr-oriz{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.28); }
#ar_stage .bt-spr-you.spr-vert{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.32); }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.27); }
#ar_stage .bt-spr-you{ max-width:40%; }
#ar_stage .bt-spr-you.spr-oriz{ width:calc(var(--spr-you) * 1.4 * var(--taglia,1)); max-width:38%; }
#ar_stage .bt-spr-you.spr-quad{ max-width:34%; }
#ar_stage .bt-spr-you.spr-vert{ max-width:30%; }
#ar_stage .bt-spr-you{ max-width:44%; }
#ar_stage .bt-spr-you.spr-oriz{ max-width:42%; }

/* ── v17 · ARENA: gli ultimi quattro numeri che erano rimasti indietro ──────
   Trovati da `node scripts/lotta-sincronizzata.js` confrontando i valori
   RISOLTI (non il testo). L'Arena teneva ancora le misure vecchie: avversario
   piu largo e giocatore tagliato meno. Comanda la lotta del mondo. */
#ar_stage .bt-spr-foe{ max-width:52cqw; }
#ar_stage .bt-spr-you{ bottom:calc(var(--spr-you) * var(--taglia,1) * -0.30); max-width:40%; }
#ar_stage .bt-spr-you.spr-oriz{ max-width:38%; }
@media(min-width:761px) and (max-width:1100px){
  #ar_stage .bt-spr-you{ left:-2cqw; }
}
@media(max-width:760px){
  /* sul telefono la lotta del mondo lascia respirare l'avversario (96cqw):
     l'Arena faceva ancora 52cqw. */
  #ar_stage .bt-spr-foe{ top:9cqh; right:0; max-width:96cqw; }
}

/* ── v18 · la grandezza deve contare DAVVERO, e il taglio è di un terzo ─────
   Due cose, dalla foto di Andrea del 31/8/2026 (un Brasilo baby grande quanto
   mezza scena):
   1. i tetti erano percentuali fisse, così una baby e una forma finale finivano
      identiche: il tetto vinceva sul fattore di taglia e lo annullava. Ora ogni
      tetto è moltiplicato per la taglia, quindi una baby è davvero più piccola.
   2. il giocatore si taglia di UN TERZO, non di metà: -0,30 invece di -0,45.
   Le regole valgono per tutti e due i campi insieme, come dice la legge. */
#owBattle .bt-spr-foe, #ar_stage .bt-spr-foe{ max-height:min(86%, calc(86% * var(--taglia,1))); max-width:min(52cqw, calc(52cqw * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-oriz, #ar_stage .bt-spr-foe.spr-oriz{ max-width:min(54%, calc(54% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-vert, #ar_stage .bt-spr-foe.spr-vert{ max-width:min(34%, calc(34% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-quad, #ar_stage .bt-spr-foe.spr-quad{ max-width:min(46%, calc(46% * var(--taglia,1))); }
#owBattle .bt-spr-you, #ar_stage .bt-spr-you{ max-width:min(40%, calc(40% * var(--taglia,1))); }
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz{ max-width:min(38%, calc(38% * var(--taglia,1))); }
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert{ max-width:min(34%, calc(34% * var(--taglia,1))); }
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{ max-width:min(30%, calc(30% * var(--taglia,1))); }

/* ── v19 · il taglio è un terzo DELLA CREATURA, e l'avversario sta per terra ──
   1) `--giu` è l'altezza davvero disegnata, misurata da bxGiuSprite: il taglio
      diventa un terzo di quella. Il valore scritto qui è la riserva per quando
      la misura non è ancora arrivata (l'immagine disegnata è circa 9/10 della
      casella). Prima il taglio era una frazione della CASELLA: uno largo veniva
      tagliato per più di metà, uno stretto quasi per niente.
   2) l'avversario si appoggia alla stessa linea di terra qualunque sia la sua
      taglia: prima era appeso dall'alto, e una baby restava a mezz'aria. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you,
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz,
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert,
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{
  --giu: calc(var(--spr-you) * var(--taglia,1) * 0.9);
  bottom: calc(var(--giu) * -0.33);
}
/* (v19) la linea di terra per l avversario e stata TOLTA: Andrea, 31/8/2026,
   «li hai tutti spostati verso il basso gli animei avversari, non dovevi farlo».
   L avversario resta appeso in alto a destra come e sempre stato. */

/* ── v20 · la messa in scena di Champions ──────────────────────────────────
   Andrea, 31/8/2026, con la foto di Pokemon Champions come metro: il suo
   Animei sta in PRIMO PIANO in basso a sinistra e si vede quasi tutto,
   l'avversario sta piu' indietro in alto a destra, appoggiato al terreno, e
   sembra grande solo se lo e' davvero in metri.
   Nella foto di riferimento (1600x737) tutti e due stanno intorno al 30% della
   larghezza: il mio avversario al 46% era semplicemente troppo grosso, e il
   giocatore, rimpicciolito E tagliato di un terzo, spariva nell'angolo.
   Qui: avversario piu' contenuto e piu' in alto, giocatore piu' grande e
   tagliato di un quarto. La differenza fra baby e forma finale resta, ma sul
   giocatore e' piu' morbida: in primo piano si vede grande comunque, come
   Tyranitar nella foto. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you{ --tag-tuo: calc(1 + (var(--taglia,1) - 1) * 0.6); }

#owBattle .bt-spr-foe, #ar_stage .bt-spr-foe{
  max-height:min(72%, calc(72% * var(--taglia,1)));
  max-width:min(44cqw, calc(44cqw * var(--taglia,1)));
  /* niente riposizionamento: l avversario sta in alto a destra come prima */
}
#owBattle .bt-spr-foe.spr-oriz, #ar_stage .bt-spr-foe.spr-oriz{ max-width:min(44%, calc(44% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-vert, #ar_stage .bt-spr-foe.spr-vert{ max-width:min(30%, calc(30% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-quad, #ar_stage .bt-spr-foe.spr-quad{ max-width:min(38%, calc(38% * var(--taglia,1))); }

#owBattle .bt-spr-you, #ar_stage .bt-spr-you{ max-width:min(42%, calc(42% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz{ max-width:min(46%, calc(46% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert{ max-width:min(34%, calc(34% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{ max-width:min(40%, calc(40% * var(--tag-tuo))); }

/* un quarto, non un terzo: nella foto di Champions del suo Animei si vede
   quasi tutto il corpo, esce dall'inquadratura solo la parte bassa. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you,
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz,
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert,
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{ bottom: calc(var(--giu) * -0.25); }

/* ── v21 · l'avversario: la differenza fra una baby e una forma finale ──────
   Col solo tetto in percentuale le forme finali finivano tutte schiacciate sul
   tetto (38%) e le baby restavano lì sotto (33%): fra un cucciolo e un colosso
   c'erano cinque punti, cioè niente. La misura naturale adesso parte più bassa
   (0,72) e a comandare torna la taglia; il tetto si limita a impedire che i
   più alti escano di scena, e cresce un po' con loro — è il caso di Steelix
   nella foto di Andrea: sembra enorme perché lo è davvero in metri. */
#owBattle .bt-spr-foe, #ar_stage .bt-spr-foe{
  width: calc(var(--spr-foe) * 1.6 * var(--taglia,1) * 0.72);
  height: calc(var(--spr-foe) * var(--taglia,1) * 0.72);
  max-width:min(42cqw, calc(36cqw * var(--taglia,1)));
}
#owBattle .bt-spr-foe.spr-oriz, #ar_stage .bt-spr-foe.spr-oriz{
  width:calc(var(--spr-foe) * 2 * var(--taglia,1) * 0.72); max-width:min(44%, calc(38% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-vert, #ar_stage .bt-spr-foe.spr-vert{
  height:calc(var(--spr-foe) * 1.12 * var(--taglia,1) * 0.72); max-width:min(34%, calc(28% * var(--taglia,1))); }
#owBattle .bt-spr-foe.spr-quad, #ar_stage .bt-spr-foe.spr-quad{
  height:calc(var(--spr-foe) * 1.08 * var(--taglia,1) * 0.72); max-width:min(42%, calc(36% * var(--taglia,1))); }

/* ── v22 · il tuo Animei un filo più grande e tagliato un filo meno ────────
   Andrea, 31/8/2026: «puoi leggermente ingrandire il Pokemon del giocatore,
   ma leggermente, in modo da vedersi meglio; magari taglialo anche leggermente
   meno». Circa un decimo in più di misura, e il taglio da un quarto a un
   quinto: la testa e il corpo restano dentro, esce solo la parte bassa. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you{ max-width:min(46%, calc(46% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz{ max-width:min(50%, calc(50% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert{ max-width:min(37%, calc(37% * var(--tag-tuo))); }
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{ max-width:min(44%, calc(44% * var(--tag-tuo))); }
#owBattle .bt-spr-you, #ar_stage .bt-spr-you,
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz,
#owBattle .bt-spr-you.spr-vert, #ar_stage .bt-spr-you.spr-vert,
#owBattle .bt-spr-you.spr-quad, #ar_stage .bt-spr-you.spr-quad{ bottom: calc(var(--giu) * -0.20); }
/* non bastava alzare i tetti: per il tuo Animei a comandare e' la MISURA
   naturale, non il tetto (il tetto tocca solo i piu' grandi). Quindi si alza
   di un decimo anche quella, se no «ingrandisci un po'» non si vedeva. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you{
  width: calc(var(--spr-you) * 1.6 * var(--taglia,1) * 1.12);
  height: calc(var(--spr-you) * var(--taglia,1) * 1.12);
}
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz{ width: calc(var(--spr-you) * 1.4 * var(--taglia,1) * 1.12); }

/* ── v23 · il 2 contro 2 ────────────────────────────────────────────────────
   Andrea, 31/8/2026: «sistemami anche il 2v2, stai attento perché hai 4 Animei
   lì, 2 sopra e 2 sotto». Tre cose.

   1) L'ARENA ADESSO E' UN CONTENITORE VERO. Non lo era: `container-type` era
      «normal», quindi tutte le misure scritte in cqw/cqh (che sono la lingua di
      tutta la scena) nell'Arena si misuravano sulla FINESTRA e nel mondo sul
      palco. Due posti, due risultati, con la legge che dice che devono essere
      uguali. Provato: il palco tiene la sua misura (16/9 con larghezza piena),
      non si affloscia — quello che era successo l'altra volta era per aver
      copiato `flex:1; min-height:0`, non per il contenitore. */
#ar_stage .bt-stage{ container-type: size; }

/*   2) Anche le due file passano alla misura del palco. Erano in vh/vw, cioè
        finestra: nell'Arena le quattro creature venivano un quinto più grandi
        che nel mondo. */
.bt-fila{--alt:max(88px, min(34cqh, 14cqw))}
.bt-fila-loro{--alt:max(74px, min(28.5cqh, 11.7cqw))}

/*   3) Ogni fila resta nella SUA fascia. Il tetto vecchio era scritto in vh e
        valeva quasi il doppio dello spazio disponibile: il piu' grande davanti
        (taglia 1,40) arrivava con la testa al 29% dell'altezza, cioè dentro la
        fascia degli avversari, che hanno i piedi al 42%. Adesso il tetto è la
        fascia stessa. */
.bt-fila-loro .bt-cas .bt-sprite{ height:min(calc(var(--alt) * var(--taglia,1)), 38cqh) !important }
.bt-fila-tuoi .bt-cas .bt-sprite{ height:min(calc(var(--alt) * var(--taglia,1)), 36cqh) !important }

/*   e il secondo avversario non tocca piu' il bordo destro: era al 97%. */
.bt-fila-loro{right:max(5%, calc(50% - min(98cqh, 40cqw)))}
.bt-fila-tuoi{left:max(3%, calc(50% - min(98cqh, 40cqw)))}
/* passando alla misura del palco tutto si era rimpicciolito di un quinto
   (il palco e' piu' basso della finestra): qui si torna alla grandezza di
   prima, ma ora e' la stessa in tutti e due i campi. */
.bt-fila{--alt:max(88px, min(40cqh, 17cqw))}
.bt-fila-loro{--alt:max(74px, min(34cqh, 14.5cqw))}

/* ── v24 · la misura vera del tuo Animei ───────────────────────────────────
   Scoperta girando l'Arena in contenitore: finche' l'Arena misurava sulla
   FINESTRA, il tuo Animei li' risultava al 42% della scena — ma nel mondo,
   dove le stesse misure si contano sul palco, era solo il 28%. Ecco perche'
   Andrea continuava a dire «lo vedo ancora cosi'»: i miei numeri erano quelli
   dell'Arena gonfiata, i suoi occhi quelli del mondo. Adesso i due posti
   contano allo stesso modo, e qui si porta la misura dove doveva stare. */
#owBattle .bt-spr-you, #ar_stage .bt-spr-you{
  width: calc(var(--spr-you) * 1.6 * var(--taglia,1) * 1.68);
  height: calc(var(--spr-you) * var(--taglia,1) * 1.68);
}
#owBattle .bt-spr-you.spr-oriz, #ar_stage .bt-spr-you.spr-oriz{ width: calc(var(--spr-you) * 1.4 * var(--taglia,1) * 1.68); }

/* ── v25 · il 2 contro 2 come il testa a testa ─────────────────────────────
   Andrea, 31/8/2026, con due schermate: «i personaggi del giocatore falli come
   avevo fatto per l'uno contro uno, quindi taglia una parte di quello che si
   vede; l'importante e' che della loro immagine si vedra' la testa piu' che
   altro. Falli un po' piu' grandi e spostali verso il basso, cosi' almeno
   l'avversario ha piu' spazio. Anche gli avversari leggermente piu' grandi e
   piu' distanziati».
   Il taglio si fa con `clip-path` PIU' un margine negativo della stessa
   misura: senza il margine il pezzo tagliato lascerebbe il buco e la targhetta
   resterebbe a mezz'aria, staccata dalla creatura. */
.bt-fila-tuoi{ --alt:min(46cqh, 20cqw); bottom:8%; max-width:52% }
.bt-fila-loro{ --alt:min(39cqh, 16.5cqw); max-width:56%; gap:clamp(24px, 7cqw, 120px) }

.bt-fila-tuoi .bt-cas .bt-sprite{
  --h-tuo: min(calc(var(--alt) * var(--taglia,1)), 46cqh);
  height: var(--h-tuo) !important;
  clip-path: inset(0 0 34% 0);              /* via il terzo basso: resta la testa */
  margin-bottom: calc(var(--h-tuo) * -0.34);
}
.bt-fila-loro .bt-cas .bt-sprite{ height:min(calc(var(--alt) * var(--taglia,1)), 42cqh) !important }

/* la targhetta sta SOPRA la creatura: con il taglio le finisce addosso, e se
   passasse sotto sparirebbe dietro la pancia. */
.bt-fila-tuoi .bt-cas .bt-mini{ z-index:6 }
/* il margine va marcato !important: la regola di base delle caselle azzera
   tutti i margini con !important, e senza questo il pezzo tagliato lasciava
   il buco e la targhetta restava staccata dalla creatura. */
.bt-fila-tuoi{ --alt:min(42cqh, 18cqw); max-width:44%; left:max(2%, calc(50% - min(98cqh, 40cqw))) }
.bt-fila-loro{ max-width:52%; right:max(4%, calc(50% - min(98cqh, 40cqw))) }
.bt-fila-tuoi .bt-cas .bt-sprite{
  --h-tuo: min(calc(var(--alt) * var(--taglia,1)), 40cqh);
  height: var(--h-tuo) !important;
  margin-bottom: calc(var(--h-tuo) * -0.34) !important;
}
/* un filo piu' grandi davanti: il tetto (40cqh) tiene comunque il piu' alto
   dentro la sua fascia, quindi alzare la misura di base ingrandisce solo i
   piccoli — ed e' proprio quello che serviva, erano loro a sparire. */
.bt-fila-tuoi{ --alt:min(46cqh, 21cqw) }

/* ── v26 · nel 2 contro 2 i tuoi erano troppo piccoli ──────────────────────
   Andrea, 31/8/2026: «sono troppo piccoli quelli del giocatore, falli piu'
   grandi ma che comunque si incastrino bene, e quando si ingrandisce lo
   schermo tutto deve restare proporzionato».
   Il conto: davanti si taglia un terzo, quindi di quello che scrivo se ne vede
   solo due terzi. Con il tetto a 40cqh il piu' grande si vedeva alto 26cqh
   contro i 42cqh degli avversari — ecco perche' sembravano nani a casa loro.
   Adesso il tetto e' 58cqh: visibili ~38cqh, cioe' alla pari con chi sta di
   fronte, che e' giusto visto che sono i piu' vicini a noi.
   Tutto in cqh/cqw, cioe' in centesimi del palco: ingrandendo la finestra la
   scena cresce tutta insieme e le proporzioni non si muovono di un capello. */
.bt-fila-tuoi{ --alt:min(58cqh, 25cqw); max-width:42% }
.bt-fila-loro{ right:max(4%, calc(50% - min(98cqh, 40cqw))); max-width:52% }
.bt-fila-tuoi .bt-cas .bt-sprite{
  --h-tuo: min(calc(var(--alt) * var(--taglia,1)), 58cqh);
  height: var(--h-tuo) !important;
  margin-bottom: calc(var(--h-tuo) * -0.34) !important;
}
/* piu' grandi vuol dire anche piu' larghi: con le vecchie ancore le due file
   arrivavano a toccarsi in mezzo (il mio secondo finiva addosso al loro
   primo). Le due coppie si allargano verso i bordi e in mezzo resta il vuoto. */
.bt-fila-tuoi{ left:max(2%, calc(50% - min(120cqh, 46cqw))) }
.bt-fila-loro{ right:max(3%, calc(50% - min(120cqh, 46cqw))) }

/* ── v27 · il taglio del 2v2 va misurato sulla CREATURA, non sulla casella ──
   Errore mio, visto nella schermata: alzando il tetto in altezza non cambiava
   niente, perche' li' a comandare e' la LARGHEZZA (due caselle in una fila
   stretta). La casella restava alta 59% ma la creatura dentro, rimpicciolita
   per stare in larghezza, ne riempiva solo un quarto — e il taglio, calcolato
   in percentuale della CASELLA, si mangiava l'80% della creatura invece del
   34%. Restava una fetta di testa.
   Adesso si usa `--giu`, l'altezza davvero disegnata che misura bxGiuSprite:
   la stessa cosa che fa il testa a testa. E le due file hanno piu' larghezza,
   che e' quello che li fa davvero crescere. */
.bt-fila-tuoi{ max-width:54%; left:max(2%, calc(50% - min(120cqh, 46cqw))) }
.bt-fila-loro{ max-width:46%; right:max(2%, calc(50% - min(120cqh, 46cqw))) }
.bt-fila-tuoi .bt-cas .bt-sprite{
  clip-path: inset(0 0 calc(var(--giu, 0px) * 0.30) 0);
  margin-bottom: calc(var(--giu, 0px) * -0.30) !important;
}

/* ── v28 · i due del giocatore alla stessa altezza ─────────────────────────
   Andrea, 31/8/2026: «quelli del giocatore mettili pari». Il compagno era
   sollevato di un pezzo (0,15 della misura di base) per dare profondita', ma
   con le creature tagliate in basso non legge come «piu' indietro»: legge come
   uno storto rispetto all'altro. Gli avversari restano come sono. */
.bt-fila-tuoi .bt-cas:nth-child(2){ margin-bottom:0 }

/* ── v29 · anche i comandi crescono con lo schermo ─────────────────────────
   Andrea, 31/8/2026: «quando ingrandisco lo schermo metti proporzionate le
   mosse». Il riquadro dei comandi era scritto tutto in pixel fissi (270 px di
   larghezza, testo da 11 e 9): su un monitor grande la scena raddoppiava e lui
   restava un francobollo nell'angolo. Adesso e' in centesimi del palco come
   tutto il resto, con un minimo (lo schermo piccolo resta identico a prima) e
   un massimo (su un muro non diventa un cartellone). */
#owBattle .bt-actionbox, #ar_stage .bt-actionbox{
  width:clamp(240px, 24.5cqw, 560px); max-width:30cqw;
  right:clamp(14px, 1.45cqw, 34px); bottom:clamp(12px, 2.26cqh, 34px);
}
#owBattle .bt-cmd, #ar_stage .bt-cmd{
  font-size:clamp(11px, 1.09cqw, 22px);
  padding:clamp(7px, 0.73cqh, 16px) clamp(5px, 0.55cqw, 13px);
  border-radius:clamp(8px, 0.82cqw, 17px);
}
#owBattle .bt-mainmenu, #ar_stage .bt-mainmenu{ gap:clamp(6px, 0.64cqw, 14px); }
#owBattle .bt-actionbox .bt-menu, #ar_stage .bt-actionbox .bt-menu{ gap:clamp(4px, 0.46cqw, 11px); }
#owBattle .bt-actionbox .bt-move, #ar_stage .bt-actionbox .bt-move{
  padding:clamp(5px, 0.8cqh, 12px) clamp(8px, 0.73cqw, 17px) clamp(5px, 0.8cqh, 12px) clamp(10px, 0.91cqw, 20px);
  border-radius:clamp(8px, 0.73cqw, 16px);
  border-left-width:clamp(4px, 0.36cqw, 8px);
}
#owBattle .bt-actionbox .bt-move b, #ar_stage .bt-actionbox .bt-move b{ font-size:clamp(11px, 1cqw, 21px); }
#owBattle .bt-actionbox .bt-move .bt-move-sub,
#ar_stage .bt-actionbox .bt-move .bt-move-sub{ font-size:clamp(9px, 0.82cqw, 17px); gap:clamp(4px, 0.36cqw, 9px); }
#owBattle .bt-move-pp, #ar_stage .bt-move-pp{ font-size:clamp(9px, 0.82cqw, 17px); }
#owBattle .bt-move-i, #ar_stage .bt-move-i{ font-size:clamp(12px, 1.09cqw, 22px); top:clamp(2px,0.3cqh,6px); right:clamp(4px,0.36cqw,9px); }
#owBattle .bt-back, #ar_stage .bt-back{
  padding:clamp(2px,0.3cqh,6px) clamp(8px,0.73cqw,16px);
  font-size:clamp(10.5px, 0.96cqw, 19px); border-radius:clamp(8px,0.73cqw,16px);
}
#owBattle .bt-turnodi, #ar_stage .bt-turnodi{ font-size:clamp(10.5px, 0.96cqw, 19px); }
/* la barretta sopra i comandi (nome + vita di chi deve muovere) faceva parte
   dello stesso blocco a pixel fissi: senza di lei il riquadro cresceva e lei
   no, e si vedeva. */
#owBattle .bt-playerbar .bt-name, #ar_stage .bt-playerbar .bt-name{ font-size:clamp(11px, 1cqw, 21px); margin-bottom:clamp(3px,0.3cqh,7px); gap:clamp(4px,0.36cqw,9px); }
#owBattle .bt-playerbar .bt-name small, #ar_stage .bt-playerbar .bt-name small{ font-size:clamp(9.5px, 0.86cqw, 18px); }
#owBattle .bt-playerbar .bt-hp, #ar_stage .bt-playerbar .bt-hp{ height:clamp(5px, 0.55cqh, 11px); min-width:clamp(90px, 8.2cqw, 190px); }
#owBattle .bt-playerbar .bt-hpn, #ar_stage .bt-playerbar .bt-hpn{ font-size:clamp(9.5px, 0.86cqw, 18px); }
#owBattle .bt-playerbar .bt-hpwrap>span, #ar_stage .bt-playerbar .bt-hpwrap>span{ font-size:clamp(8px, 0.73cqw, 15px); }
#owBattle .bt-playerbar .bt-types .tbadge, #ar_stage .bt-playerbar .bt-types .tbadge{ font-size:clamp(8.5px, 0.77cqw, 16px); padding:clamp(1px,0.15cqh,3px) clamp(6px,0.55cqw,12px); }

/* ── v30 · i comandi del DOPPIO hanno un blocco tutto loro ─────────────────
   Scoperto misurando: nel 2 contro 2 le mosse non seguivano le regole di
   sopra perche' `.bt-doppio-comandi` le riscrive tutte in pixel fissi e con
   !important. Stessi numeri di prima come minimo, e da li' crescono col palco. */
.bt-doppio-comandi .bt-btn{ font-size:clamp(12px, 1.09cqw, 22px) !important; padding:clamp(6px,0.66cqh,13px) clamp(8px,0.73cqw,17px) !important }
.bt-doppio-comandi .bt-move{ font-size:clamp(11.5px, 1.05cqw, 21px) !important; padding:clamp(5px,0.55cqh,11px) clamp(8px,0.73cqw,17px) !important }
.bt-doppio-comandi .bt-move .bt-mv-nome,
.bt-doppio-comandi .bt-move b{ font-size:clamp(12px, 1.09cqw, 22px) !important }
.bt-doppio-comandi .tbadge{ font-size:clamp(9.5px, 0.86cqw, 18px) !important; padding:clamp(1px,0.12cqh,3px) clamp(7px,0.64cqw,14px) !important }
.bt-doppio-comandi .bt-move small{ font-size:clamp(9.5px, 0.86cqw, 18px) !important }
.bt-doppio-comandi{ gap:clamp(6px, 0.55cqw, 13px) !important }

/* il grado e la ricarica sul bottone della mossa */
.bt-grado{display:inline-block;border-radius:20px;padding:0 7px;font-size:10.5px;font-weight:800;border:1px solid;margin-left:4px}
.bt-grado.g1{border-color:#2f6b4a;color:#8fe0b4;background:#132a20}
.bt-grado.g2{border-color:#6b5a2f;color:#e6cf8f;background:#2a2413}
.bt-grado.g3{border-color:#6b2f3f;color:#ffa8bb;background:#2a1319}
.bt-ric{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;color:#ffd479}

/* ════════════════ L'ARENA DI SOLARIA ════════════════
   I Sol in campo, sul palco dipinto, come in Animex. Sopra ci galleggia solo
   l'ordine dei turni; tutto il resto — i numeri, gli stati, le mosse, il
   racconto — sta nella targhetta di ognuno o nella fascia in fondo. Il campo
   resta campo.                                                              */

.sol-arena{width:100%;display:flex;flex-direction:column;gap:0}
/* ⚠ IL PALCO LASCIA POSTO ALLA FASCIA. La regola di Animex dice «alto quanto
   la finestra meno 130px», ma li' sotto non c'era niente; qui c'e' il racconto
   e i cinque posti delle mosse, e senza abbassare il tetto la fascia finisce
   sotto il bordo dello schermo: il gioco ti chiede di premere «continua» e tu
   non lo vedi nemmeno. */
.sol-arena .bt-stage{position:relative;overflow:hidden;border-radius:16px 16px 0 0;cursor:pointer}
/* ⚠ LA STESSA FORZA DELLA REGOLA DI ANIMEX, se no non vince.
   Quella e' scritta «#ar_stage .bt-stage.bt-terr» e tiene 420px minimi con un
   tetto di «finestra meno 130»: misure giuste per una scena senza niente
   sotto. Qui sotto c'e' la fascia del racconto coi cinque posti delle mosse,
   e con quelle misure finisce oltre il bordo dello schermo — il gioco ti
   chiede di premere «continua» e tu non lo vedi nemmeno. Per sovrascriverla
   serve un selettore altrettanto specifico, non uno piu' gentile. */
#ar_stage.sol-arena .bt-stage.bt-terr{
  min-height:300px;
  max-height:max(320px, calc(100vh - 300px))}

/* ── L'ORDINE DEI PROSSIMI TURNI ────────────────────────────────────────── */
.sol-ordine{
  position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:7;
  display:flex;align-items:center;gap:6px;padding:5px 10px;max-width:94%;overflow-x:auto;
  background:rgba(10,14,26,.60);border:1px solid rgba(255,255,255,.16);border-radius:99px;
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);
  box-shadow:0 6px 20px rgba(0,0,0,.28)
}
.sol-ordine-t{font-size:10px;letter-spacing:.6px;text-transform:uppercase;color:#aab3d0;
  margin-right:4px;white-space:nowrap;font-weight:700}
.sol-gettone{
  position:relative;width:34px;height:34px;flex:0 0 34px;border-radius:10px;
  background:rgba(14,18,32,.9);border:2px solid #39406a;display:grid;place-items:center;overflow:hidden
}
.sol-gettone img{width:30px;height:30px;object-fit:contain}
.sol-gettone.tuo{border-color:#2f9e5e}
.sol-gettone.loro{border-color:#c0455a}
.sol-gettone.ora{box-shadow:0 0 0 3px #6b7cff}
.sol-gettone b{position:absolute;bottom:0;left:0;right:0;background:#6b7cff;color:#fff;
  font-size:8px;text-align:center;line-height:11px;font-weight:800}

/* ── UNO CONTRO UNO ─────────────────────────────────────────────────────
   Le due creature appoggiano dove appoggiano in Animex: chi sta dietro col
   piede al 48% dell'altezza, chi sta davanti all'88%. */
.sol-uno .sol-posto{position:absolute;z-index:2;display:flex;align-items:flex-end;justify-content:center}
.sol-uno .sol-posto-foe{right:17%;bottom:50%;width:30cqw;height:min(30cqh,24cqw)}
.sol-uno .sol-posto-you{left:8%;bottom:7%;width:38cqw;height:min(40cqh,32cqw)}
.sol-uno .sol-posto .bt-sprite{
  position:static !important;inset:auto !important;margin:0 !important;
  width:auto !important;height:calc(100% * var(--taglia,1)) !important;
  max-width:100% !important;max-height:100% !important;
  object-fit:contain;object-position:center bottom;pointer-events:none;z-index:1
}
.sol-uno .sol-posto::before{
  content:'';position:absolute;left:50%;bottom:-2px;transform:translateX(-50%);
  width:64%;height:11%;border-radius:50%;
  background:radial-gradient(60% 100% at 50% 50%, rgba(255,255,255,.30), rgba(255,255,255,.10) 62%, transparent 78%);
  z-index:0;pointer-events:none}
.sol-uno .sol-posto::after{
  content:'';position:absolute;left:50%;bottom:1%;transform:translateX(-50%);
  width:54%;height:8%;border-radius:50%;
  background:radial-gradient(50% 100% at 50% 50%, rgba(8,14,11,.72) 0%, rgba(8,14,11,.56) 34%, rgba(8,14,11,.26) 62%, transparent 80%);
  filter:blur(3px);z-index:0;pointer-events:none}
.sol-uno .sol-posto.mirabile{cursor:crosshair}
.sol-uno .sol-posto.mirabile::before{background:radial-gradient(60% 100% at 50% 50%, rgba(255,120,140,.55), rgba(255,120,140,.18) 62%, transparent 78%)}

/* i cartellini agli angoli opposti, come nei Pokemon: il suo in alto a
   sinistra, il tuo in basso a destra. ⚠ Il tuo NON puo' stare in alto a
   destra: li' c'e' l'avversario, e il cartellino gli finiva davanti coprendolo
   quasi tutto. Adesso il fondo del palco e' libero — le mosse sono scese nella
   fascia — e ci sta comodo. */
.sol-uno .bt-foe-panel{top:56px;left:20px;right:auto;bottom:auto}
.sol-uno .bt-you-panel{bottom:14px;right:20px;left:auto;top:auto}

/* ── DA DUE IN SU: le creature un po' più piccole ────────────────────────
   Andrea: «fai leggermente più piccoli i Sol nel 2v2 e nel 4v4 perché occupano
   troppo spazio». Le misure di Animex erano tarate su una scena senza fascia
   sotto; qui sotto c'è il racconto, e sopra la targhetta è cresciuta per fare
   posto agli stati. Si scende di circa un quarto. */
/* ⚠ LA TAGLIA DIPENDE DA QUANTI SONO IN CAMPO, non da un numero solo.
   Avevo abbassato tutto in blocco e nel 2 contro 2 erano diventati minuscoli:
   li' ci sono due creature per fila e lo spazio c'e'. Nel quattro contro
   quattro invece la fila e' lunga il doppio, quindi restano piu' contenute —
   ma un filo piu' grandi di com'erano, e appoggiate meglio. */
.sol-palco .bt-fila{--alt:max(78px, min(30cqh, 12.5cqw))}
.sol-palco .bt-fila-loro{--alt:max(66px, min(25cqh, 10.4cqw))}
.sol-palco.f2v2 .bt-fila{--alt:max(96px, min(38cqh, 15.5cqw))}
.sol-palco.f2v2 .bt-fila-loro{--alt:max(82px, min(32cqh, 13cqw))}
.sol-palco.f3v3 .bt-fila{--alt:max(84px, min(33cqh, 13.5cqw))}
.sol-palco.f3v3 .bt-fila-loro{--alt:max(72px, min(28cqh, 11.4cqw))}
.sol-palco.f4v4 .bt-fila{--alt:max(72px, min(27cqh, 11cqw))}
.sol-palco.f4v4 .bt-fila-loro{--alt:max(62px, min(23cqh, 9.4cqw))}
/* col campo pieno le due file si allargano e si allontanano un po': otto
   creature su due righe strette si toccavano le targhette */
/* con OTTO in campo le targhette non ci stanno in mezza scena: l'ultima
   finiva mezza fuori dal bordo. Si allarga la fila e si stringe la targhetta,
   che tanto li' il nome e' l'unica cosa che conta leggere. */
.sol-palco.f4v4 .bt-fila-tuoi{left:1.5%;max-width:57%}
.sol-palco.f4v4 .bt-fila-loro{right:1.5%;max-width:57%}
.sol-palco.f4v4 .bt-cas{min-width:clamp(96px, 11cqw, 150px)}
.sol-palco.f4v4 .bt-mini{width:clamp(96px, 11cqw, 150px);padding:4px 6px 5px}
.sol-palco.f4v4 .bt-fila{gap:clamp(4px,1.2%,16px)}
/* ⚠ SOLO LA FILA DAVANTI SCENDE. La distanza fra le due righe E' la
   profondita' della scena: abbassandole tutte e due si sposta la scena e basta.
   Il numero e' lo spazio che resta SOTTO la targhetta, ed e' l'unica cosa che
   si puo' rompere — un nome che tocca il fondo — e si rompe sulle finestre
   basse, non su quella grande dove si prova. */
.sol-palco .bt-fila-tuoi{bottom:10%}
.sol-palco .bt-fila-loro{bottom:52%}
.sol-palco.f4v4 .bt-fila-tuoi{bottom:9%}
.sol-palco.f4v4 .bt-fila-loro{bottom:51%}
.sol-palco .bt-fila-loro .bt-cas .bt-sprite{ height:min(calc(var(--alt) * var(--taglia,1)), 34cqh) !important }
.sol-cas{position:relative}
.sol-cas.mirabile{pointer-events:auto;cursor:crosshair}
.sol-cas.mirabile .bt-mini{box-shadow:0 0 0 2px #e05263}
.sol-cas.tocca .bt-mini{box-shadow:0 0 0 2px #6b7cff}
/* la targhetta non si appoggia più sulla creatura: adesso porta anche gli
   stati, e coprirle mezzo corpo la renderebbe illeggibile */
.sol-palco .bt-cas .bt-mini{margin-top:2px}

/* ── LA TARGHETTA, una per tutte e due le scene ─────────────────────────── */
.sol-uno .bt-panel{
  background:rgba(10,14,26,.74);border:1px solid rgba(255,255,255,.16);border-radius:14px;
  padding:9px 13px;min-width:230px;max-width:320px;color:#e8ecf8;
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);box-shadow:0 8px 24px rgba(0,0,0,.3)}
/* ⚠ LA LARGHEZZA VIENE DALLO SPAZIO, NON DAL NOME. Era «max-content», cioè
   larga quanto la roba che ci sta dentro — e la roba più larga è il nome:
   «Reiju» dava una barra corta, «Nembragon» una lunga. La lunghezza della vita
   dipendeva da come si chiama il Sol, che non è una ragione. E a schermo pieno
   non cresceva di un pixel, perché max-content non sa quanto spazio c'è. */
.bt-mini{width:clamp(126px, 15cqw, 230px);
  background:rgba(10,14,26,.80);border:1px solid rgba(255,255,255,.16);border-radius:11px;
  padding:5px 8px 6px;color:#e8ecf8;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 6px 18px rgba(0,0,0,.34)}
/* in due e in tre per parte c'è spazio: le barre si allungano davvero, e su un
   monitor grande crescono da sole invece di restare quelle di un portatile */
.sol-palco.f2v2 .bt-mini{width:clamp(150px, 19cqw, 290px)}
.sol-palco.f3v3 .bt-mini{width:clamp(138px, 16cqw, 250px)}
/* ⚠ E LA CASELLA SI ALLARGA PER FARLE POSTO. La casella e' larga quanto lo
   SPRITE: un Sol stretto dava una targhetta stretta, cioe' la lunghezza della
   barra della vita dipendeva dalla forma del disegno. Misurato: 204 px di la'
   e 138 di qua, con le stesse tre icone dentro — una riga contro due. */
/* ⚠ E VIA IL TAPPO DI ANIMEX. Piu' su nel foglio c'e'
     «.bt-mini{max-width:calc(var(--alt) * 0.80)}», cioe' «non piu' larga
     dell'80% dell'altezza della creatura»: aveva senso nel doppio di Animex,
     dove la targhetta si appoggiava addosso al mostro. Qui stanno sotto, in
     fila, e quella misura non c'entra piu' niente — ma comandava lo stesso, e
     teneva la barra a 140 px per quanto largo fosse lo schermo. */
.sol-palco .bt-mini,.sol-uno .bt-mini{max-width:none}
.sol-palco .bt-cas{min-width:clamp(126px, 15cqw, 230px)}
.sol-palco.f2v2 .bt-cas{min-width:clamp(150px, 19cqw, 290px)}
.sol-palco.f3v3 .bt-cas{min-width:clamp(138px, 16cqw, 250px)}
.bt-panel.tocca,.bt-mini.tocca{border-color:#6b7cff}
.bt-panel.giu,.bt-mini.giu{opacity:.5;filter:grayscale(1)}

.sol-testa{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;line-height:1.15}
.sol-nome{font-weight:800;color:#fff;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sol-lv{font-weight:700;color:#c8cfe6;opacity:.85}
.sol-uno .sol-nome{font-size:15px} .sol-uno .sol-lv{font-size:12px}
.bt-mini .sol-nome{font-size:11.5px} .bt-mini .sol-lv{font-size:9.5px}
.sol-testa .tbadge{font-size:9.5px;padding:0 6px;border-radius:20px;color:#fff}

/* la vita, con sopra il pezzo di scudo */
.sol-vita{position:relative;height:8px;border-radius:99px;background:rgba(0,0,0,.5);overflow:hidden;margin-top:4px}
.bt-mini .sol-vita{height:7px;margin-top:4px}
.sol-palco.f2v2 .bt-mini .sol-vita{height:8px}
.sol-vita-p{position:absolute;left:0;top:0;bottom:0;border-radius:99px;transition:width .3s ease,background .3s ease}
.sol-vita-scudo{position:absolute;left:0;top:0;bottom:0;border-radius:99px;
  background:repeating-linear-gradient(115deg, rgba(150,205,255,.95) 0 5px, rgba(96,166,255,.95) 5px 10px);
  box-shadow:0 0 8px rgba(120,190,255,.7)}
.sol-numeri{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:2px;
  font-size:11px;font-weight:700;color:#c8cfe6}
.bt-mini .sol-numeri{font-size:9px}
.sol-numeri-scudo{font-style:normal;color:#9fd0ff;font-weight:800}

/* la carica: la barra che dà il turno */
.sol-carica{height:5px;border-radius:99px;background:rgba(0,0,0,.5);overflow:hidden;margin-top:3px}
.bt-mini .sol-carica{height:4px;margin-top:3px}
.sol-carica>span{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#6b7cff,#c4a7ff);transition:width .25s linear}

/* ── GLI STATI, sotto la vita e la carica, sempre ───────────────────────── */
/* ⚠ CENTRATE E TUTTE ALTE UGUALE. Con quattro o cinque stati addosso prima
   andavano a capo dove capitava, allineate a sinistra, e l'ultima riga restava
   mozza: due righe a scaletta. Adesso stanno in colonna, e la seconda riga è
   centrata sotto la prima. */
.sol-stati{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;
  justify-content:center;align-items:center}
.sol-st{display:inline-flex;align-items:center;gap:4px;border-radius:20px;
  padding:1px 7px 1px 2px;font-size:10px;font-weight:800;line-height:1;
  min-height:22px}
/* ⚠ IL DISCO SCURO DIETRO L'ICONA. I disegni sono chiari e le pastiglie sono
   semitrasparenti sopra un fondo dipinto: senza qualcosa dietro, l'icona si
   confonde con l'erba o con la neve a seconda del terreno. E il disegno sta
   all'86% del disco, se no tocca il bordo e sembra schiacciato. */
.sol-st-ico{width:18px;height:18px;flex:0 0 18px;background-size:86%;
  background-position:center;background-repeat:no-repeat;display:block;
  background-color:rgba(6,10,20,.45);border-radius:50%}
.sol-st em{font-style:normal}
.sol-st b{font-size:9.5px;opacity:.95;padding-left:1px}
/* i teschi dei danni perpetui stanno in fila con gli altri, stessa altezza */
.sol-st.dp{min-height:22px}
/* ⚠ UNO STATO CHE IL CAMPO TIENE SPENTO: c'e', e si vede che non lavora.
   Sbiadito e grigio, con lo stesso segno di divieto che porta il campo. */
.sol-st.spento{opacity:.42;filter:grayscale(1);background:rgba(120,120,130,.28);
  border:1px solid rgba(180,180,190,.45);color:#d8d8dd}
.sol-st.spento::after{content:'\29B8';margin-left:2px;opacity:.9}
.sol-st.bonus{background:rgba(60,110,220,.32);border:1px solid rgba(120,170,255,.55);color:#bcd4ff}
.sol-st.malus{background:rgba(200,60,80,.32);border:1px solid rgba(255,130,150,.55);color:#ffc4cb}
/* il super teschio: viola, piu' grande, e si fa notare */
.sol-st.sol-super-teschio{background:rgba(110,40,170,.62);border:1px solid #c89bff;color:#f3e6ff;
  box-shadow:0 0 10px rgba(168,85,247,.8)}
.sol-st.sol-super-teschio .sol-st-ico{width:26px;height:26px;flex:0 0 26px;background-size:100%}
/* nella targhetta piccola il nome sparisce e restano icona e durata: se no
   con quattro stati addosso la targhetta diventa più grande della creatura */
/* ⚠ ERANO A 13 PIXEL PER UN MOTIVO CHE NON C'E' PIU': la targhetta era
   stretta e quattro stati la facevano diventare più grande della creatura. Ma
   i disegni sono da 128 pixel — stampati a 13 ne perdono nove su dieci, ed è
   per questo che «non si vedevano benissimo»: non è il file, è la riduzione.
   Adesso che la targhetta si misura sullo spazio, ci stanno a 18. */
.bt-mini .sol-st{font-size:9.5px;padding:1px 5px 1px 1px;min-height:21px}
.bt-mini .sol-st em{display:none}
.bt-mini .sol-st-ico{width:18px;height:18px;flex:0 0 18px}
/* nel quattro contro quattro lo spazio non c'è: lì si torna piccoli, ma non
   quanto prima */
.sol-palco.f4v4 .bt-mini .sol-st-ico{width:15px;height:15px;flex:0 0 15px}
.sol-palco.f4v4 .bt-mini .sol-st{min-height:18px}
/* ⚠ CHI NON HA L'ICONA TIENE IL NOME, anche nella targhetta piccola.
   La regola qui sopra nasconde il nome perché tanto c'è l'icona a dire di che
   si tratta. Uno stato senza icona però resterebbe un «3T» appeso al nulla:
   vedresti che c'è qualcosa addosso e non sapresti cosa. Quindi il nome resta,
   accorciato se serve, e il posto dell'icona non lascia il buco. */
.sol-st.nuda{padding-left:7px}
.bt-mini .sol-st.nuda{padding-left:5px; max-width:82px}
.bt-mini .sol-st.nuda em{display:inline; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
/* ── GLI STATI COME IN SUMMONERS WAR, ANCHE SUL PC (Andrea, 13/9 sera: «i malus
   e bonus come li hai fatti su mobile me li metti anche su PC, compreso 1v1»).
   Un quadratino per stato, attaccati, l'icona che riempie il quadrato e il
   numero dei turni DENTRO, nell'angolo in basso a destra: rossi i malus, blu i
   bonus, viola il super teschio; chi non ha l'icona mostra l'iniziale. Le
   regole qui sotto vengono DOPO quelle delle pastiglie e le scavalcano;
   il telefono (duel.css) fa la stessa cosa a 28 px. Il nome resta nel title. */
.sol-stati{gap:2px}
.sol-st,.bt-mini .sol-st,.sol-palco.f4v4 .bt-mini .sol-st{position:relative;display:block;width:26px;height:26px;min-height:0;max-width:none;
  padding:0;margin:0;border-radius:6px;border:2.5px solid #fff;background:#141a2e;color:#fff;
  box-shadow:0 0 0 1px rgba(0,0,0,.95),0 2px 5px rgba(0,0,0,.8);overflow:visible;font-size:0;line-height:0}
.sol-palco.f3v3 .sol-st,.sol-palco.f4v4 .sol-st,.sol-palco.f4v4 .bt-mini .sol-st{width:22px;height:22px;border-width:2px}
.sol-st.malus{border-color:#ff2038;background:linear-gradient(180deg,#8a1224,#3a0612);
  box-shadow:0 0 0 1px rgba(0,0,0,.95),0 0 7px rgba(255,32,56,.85),0 2px 5px rgba(0,0,0,.8)}
.sol-st.bonus{border-color:#2f9bff;background:linear-gradient(180deg,#154a8c,#081c3c);
  box-shadow:0 0 0 1px rgba(0,0,0,.95),0 0 7px rgba(47,155,255,.85),0 2px 5px rgba(0,0,0,.8)}
.sol-st.sol-super-teschio{border-color:#c85cff;background:linear-gradient(180deg,#5a1a8a,#24083e);
  box-shadow:0 0 0 1px rgba(0,0,0,.95),0 0 7px rgba(200,92,255,.85),0 2px 5px rgba(0,0,0,.8)}
.sol-st .sol-st-ico,.bt-mini .sol-st-ico,.sol-palco.f4v4 .bt-mini .sol-st-ico,.sol-st.sol-super-teschio .sol-st-ico{position:absolute;inset:1px;width:auto;height:auto;flex:none;margin:0;
  background-size:contain;background-position:center;background-repeat:no-repeat;background-color:transparent;border-radius:0;
  filter:brightness(1.35) saturate(1.35) drop-shadow(0 0 1px rgba(255,255,255,.6))}
.sol-st em,.bt-mini .sol-st.nuda em{display:none}
.sol-st.nuda,.bt-mini .sol-st.nuda{padding:0;max-width:none}
.sol-st.nuda::before{content:attr(data-l);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:900;line-height:1;color:#fff;text-shadow:0 1px 2px #000}
.sol-st b{display:none}
.sol-st::after{content:attr(data-n);position:absolute;right:-1px;bottom:-1px;min-width:11px;padding:0 2px;border-radius:4px 0 3px 0;
  background:rgba(0,0,0,.85);color:#fff;font-size:9.5px;font-weight:900;line-height:12px;text-align:center;text-shadow:0 0 2px #000}
.sol-st[data-n=""]::after,.sol-st:not([data-n])::after{display:none}
.sol-st.sol-dp b,.sol-st.sol-cp b,.sol-st.sol-super-teschio b{display:block;position:absolute;right:-1px;bottom:-1px;min-width:11px;padding:0 2px;
  border-radius:4px 0 3px 0;background:rgba(0,0,0,.85);color:#fff;font-size:9.5px;font-weight:900;line-height:12px;text-align:center;text-shadow:0 0 2px #000}
.sol-st.spento{opacity:.45;filter:grayscale(1);border-color:#9aa0b0;background:#2a2d3a}
.sol-st.spento::after{content:attr(data-n)}

/* ── LA BARRIERA DELLO SCUDO ────────────────────────────────────────────
   Andrea: «per gli scudi metti una sorta di barriera davanti all'Animei
   finché lo scudo è attivo o non viene distrutto». È una cupola davanti alla
   creatura, che respira piano per farsi notare senza dare fastidio. */
/* ⚠ LA MISURA VIENE DALL'ALTEZZA, e la larghezza la decide una proporzione.
   Prima era «larga il 104%» del RIQUADRO — che nell'1v1 è una cassa larga e
   bassa (38cqw × 32cqw) — e usciva una frittella distesa per terra, larga il
   triplo della creatura. E il Sol il riquadro non lo riempie: lo sprite è alto
   quanto la cassa ma largo quanto gli pare, quindi misurarlo in larghezza vuol
   dire misurare l'aria che gli sta ai lati.
   «--taglia» è quanto è grande QUELLA creatura in campo: così la cupola sta
   addosso alla baby piccola come alla forma finale. */
/* ⚠ LA MISURA LA METTE IL CODICE (solAdattaBarriere), tagliata sullo sprite
   vero: qui restano solo forma, colore e luce. Quelli qui sotto sono i valori
   di ripiego per l'istante prima che l'immagine sia caricata. */
.sol-barriera{
  position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  height:calc(92% * var(--taglia,1));
  aspect-ratio:0.86;width:auto;
  border-radius:50% 50% 44% 44% / 58% 58% 26% 26%;
  z-index:3;pointer-events:none;
  background:radial-gradient(58% 62% at 50% 66%, rgba(150,205,255,.05), rgba(110,175,255,.13) 72%, rgba(160,215,255,.24) 100%);
  border:1.5px solid rgba(165,220,255,.5);
  box-shadow:inset 0 0 22px rgba(150,210,255,.26), 0 0 14px rgba(110,175,255,.3);
  animation:solBolla 2.6s ease-in-out infinite}
/* ⚠ IL SEMICERCHIO DAVANTI, come l'ha chiesto Andrea: la cupola resta tenue e
   la luce si raccoglie sul lato verso cui il Sol GUARDA — è da lì che arrivano
   i colpi. Uno scudo che brilla dalla parte sbagliata sembra messo lì a caso. */
.sol-barriera.guarda-dx{
  box-shadow:inset -18px 0 26px -12px rgba(180,230,255,.75),
             inset 0 0 22px rgba(150,210,255,.22), 0 0 16px rgba(110,175,255,.34);
  border-right-color:rgba(200,240,255,.92)}
.sol-barriera.guarda-sx{
  box-shadow:inset 18px 0 26px -12px rgba(180,230,255,.75),
             inset 0 0 22px rgba(150,210,255,.22), 0 0 16px rgba(110,175,255,.34);
  border-left-color:rgba(200,240,255,.92)}
@keyframes solBolla{ 0%,100%{opacity:.7;transform:translateX(-50%) scale(1)}
                     50%{opacity:.95;transform:translateX(-50%) scale(1.028)} }
/* nel palco (due o più per parte) la cupola sta sopra la targhetta ai piedi */
.sol-palco .sol-barriera{height:calc(84% * var(--taglia,1))}
@media (prefers-reduced-motion:reduce){ .sol-barriera{animation:none} }

/* ═══════════════ I SEGNI CHE SI VEDONO ADDOSSO ═══════════════════════
   Andrea: «per l'immunità un effetto luminoso che arriva dal basso... e per i
   malus delle icone: sopra la testa una sorta di vortice di confusione, tipo
   quello dei cartoni animati».
   ⚠ LA MISURA E' IN cqh — per cento dell'altezza del palco — come le creature:
   un segno in pixel fissi sarebbe enorme nel 4v4 e invisibile nell'1v1. */
.sol-segni{pointer-events:none}
/* ⚠ ALTO ZERO E LARGO ZERO, e messo subito prima dello sprite: siccome la
   casella e' una colonna che appoggia in basso, si trova esattamente sul bordo
   di sopra della creatura senza che nessuno debba sapere quanto e' alta. */
.sol-segni-su{position:relative;width:0;height:0;overflow:visible;z-index:7}
.sol-segni-su .sol-segno{position:absolute;left:0;bottom:5px;transform:translateX(-50%)}
/* due segni insieme (stordito E confuso) si affiancano invece di coprirsi */
.sol-segni-su .sol-segno:nth-child(2){transform:translateX(-50%) translateX(calc(var(--sz) * .62))}
.sol-segni-su .sol-segno:nth-child(3){transform:translateX(-50%) translateX(calc(var(--sz) * -.62))}
/* ⚠ DIETRO LA CREATURA (lo sprite sta a z-index 1): e' luce che sale da terra,
   passandole davanti la coprirebbe invece di illuminarla. */
.sol-segni-giu{position:absolute;left:50%;bottom:calc(var(--mini-h, 40px) - 6px);
  transform:translateX(-50%);z-index:0}
.sol-segno{display:block;position:relative}

/* ── IL VORTICE DELLA CONFUSIONE ─────────────────────────────────────── */
/* ⚠ x var(--taglia): un Sol grosso ha 1,3 e uno piccolo 0,7, e un segno della
   stessa misura per tutti sta bene addosso a nessuno dei due. */
.seg-vortice{--sz:calc(max(26px, 7.4cqh) * var(--taglia, 1));width:var(--sz);height:calc(var(--sz) * .5)}
.seg-vortice::before{content:'';position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0turn,
    rgba(190,140,255,0) 0 10%, #d8b6ff 18% 30%, rgba(190,140,255,0) 40% 60%,
    #a56bff 68% 82%, rgba(190,140,255,0) 92%);
  -webkit-mask:radial-gradient(closest-side, transparent 38%, #000 46%);
          mask:radial-gradient(closest-side, transparent 38%, #000 46%);
  filter:drop-shadow(0 0 4px rgba(170,110,255,.8));
  animation:segGira .82s linear infinite}
.seg-vortice i{position:absolute;top:50%;left:50%;border-radius:50%;
  width:calc(var(--sz) * .17);height:calc(var(--sz) * .17);
  margin:calc(var(--sz) * -.085) 0 0 calc(var(--sz) * -.085);
  background:#f0e2ff;box-shadow:0 0 6px rgba(190,140,255,.95);
  animation:segOrbita 1.1s linear infinite}
.seg-vortice i:nth-child(2){animation-delay:-.55s}
.seg-vortice i:nth-child(3){display:none}
@keyframes segGira{to{transform:rotate(1turn)}}

/* ── LE STELLINE DELLO STUN ──────────────────────────────────────────── */
.seg-stelle{--sz:calc(max(28px, 7.8cqh) * var(--taglia, 1));width:var(--sz);height:calc(var(--sz) * .46)}
.seg-stelle i{position:absolute;top:50%;left:50%;
  width:calc(var(--sz) * .30);height:calc(var(--sz) * .30);
  margin:calc(var(--sz) * -.15) 0 0 calc(var(--sz) * -.15);
  background:linear-gradient(160deg, #fff8cf, #ffcf3d);
  clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);
  filter:drop-shadow(0 0 3px rgba(255,200,60,.85));
  animation:segOrbita 1.05s linear infinite}
.seg-stelle i:nth-child(2){animation-delay:-.35s}
.seg-stelle i:nth-child(3){animation-delay:-.7s}
/* ⚠ ELLISSE E NON CERCHIO, e la taglia cambia lungo il giro: e' quello che fa
   sembrare che passino DIETRO la testa. Un giro piatto sembra un adesivo. */
@keyframes segOrbita{
  0%  {transform:translate(calc(var(--sz) * .42), 0) scale(1)}
  25% {transform:translate(0, calc(var(--sz) * -.15)) scale(.7)}
  50% {transform:translate(calc(var(--sz) * -.42), 0) scale(1)}
  75% {transform:translate(0, calc(var(--sz) * .15)) scale(1.22)}
  100%{transform:translate(calc(var(--sz) * .42), 0) scale(1)}
}

/* ── L'AURA DELL'IMMUNITA', che sale da terra ────────────────────────── */
/* ⚠ PIU' LARGA DELLA CREATURA, ed e' tutto il punto: sta DIETRO di lei (e
   deve starci, se no la copre invece di illuminarla), quindi se e' stretta
   quanto il corpo, il corpo la nasconde per intero. Misurata prima: 83 pixel
   contro 152 di creatura — c'era, era giusta, e non si vedeva. La luce deve
   uscire dai fianchi: e' da li' che si legge il controluce. */
.seg-aura{--sz:calc(max(80px, 28cqh) * var(--taglia, 1));width:calc(var(--sz) * 1.5);height:var(--sz)}
.seg-aura::before{content:'';position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:100%;height:100%;
  background:linear-gradient(to top, rgba(255,238,160,.92), rgba(255,220,110,.52) 34%,
             rgba(255,232,150,.18) 66%, rgba(255,235,170,0) 92%);
  -webkit-mask:radial-gradient(56% 100% at 50% 100%, #000 30%, transparent 78%);
          mask:radial-gradient(56% 100% at 50% 100%, #000 30%, transparent 78%);
  animation:segAura 2.2s ease-in-out infinite}
/* ⚠ E UN ANELLO DI LUCE PER TERRA: e' quello che dice da DOVE sale. Senza, la
   sfumatura da sola si legge come una nebbia e non come un raggio. */
.seg-aura::after{content:'';position:absolute;left:50%;bottom:-3px;transform:translateX(-50%);
  width:98%;height:20%;border-radius:50%;
  background:radial-gradient(closest-side, rgba(255,252,225,.98), rgba(255,226,140,.55) 46%, transparent 76%);
  box-shadow:0 0 18px rgba(255,224,130,.6);
  filter:blur(.6px);animation:segAura 2.2s ease-in-out infinite}
/* le faville che salgono: sono loro a far leggere «dal basso verso l'alto» */
.seg-aura i{position:absolute;bottom:6%;left:50%;border-radius:50%;
  width:calc(var(--sz) * .075);height:calc(var(--sz) * .075);
  background:#fffbe6;box-shadow:0 0 9px rgba(255,230,150,1);
  animation:segFavilla 1.9s ease-out infinite}
.seg-aura i:nth-child(2){animation-delay:-.63s;margin-left:calc(var(--sz) * -.2)}
.seg-aura i:nth-child(3){animation-delay:-1.26s;margin-left:calc(var(--sz) * .22)}
@keyframes segAura{0%,100%{opacity:.72}50%{opacity:1}}
@keyframes segFavilla{
  0%  {transform:translateY(0) scale(.55);opacity:0}
  16% {opacity:1}
  100%{transform:translateY(calc(var(--sz) * -.92)) scale(.25);opacity:0}
}

/* ⚠ NELL'UNO-CONTRO-UNO LA SCENA E' FATTA IN UN ALTRO MODO: la creatura sta in
   un riquadro suo, alto quanto il posto per la sua taglia, e appoggiato in
   basso. Quindi la testa sta esattamente a quell'altezza, e i piedi a zero. */
/* ⚠ min(100%, ...) E NON SOLO 100% x taglia: la creatura ha un tetto
   (max-height:100% del riquadro), quindi una taglia 1,3 NON la rende alta il
   130% — la lascia al 100%. Senza il tetto anche qui, il segno restava a mezzo
   cielo sopra la testa dei Sol grossi. */
.sol-uno .sol-posto .sol-segni-su{position:absolute;left:50%;
  bottom:min(100%, calc(100% * var(--taglia, 1)));width:0;height:0}
.sol-uno .sol-posto .sol-segni-giu{bottom:0}

@media (prefers-reduced-motion:reduce){
  .seg-vortice::before,.seg-vortice i,.seg-stelle i,.seg-aura::before,.seg-aura::after,.seg-aura i{
    animation:none}
}

/* ── IL RACCONTO: la fascia orizzontale sotto il campo ──────────────────
   Larga quanto il palco, alta il giusto per tre righe. A sinistra quello che
   sta succedendo, a destra o «▸ continua» o le cinque mosse. */
.sol-racconto{
  display:flex;align-items:stretch;gap:12px;
  background:#101524;border:1px solid #2b3450;border-top:none;border-radius:0 0 16px 16px;
  padding:10px 14px;min-height:104px}
.sol-racconto.aspetta{cursor:pointer}
.sol-racconto.aspetta:hover{background:#131a2d}
.sol-righe{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;gap:2px}
.sol-riga{font-size:13px;line-height:1.45;color:#7c86a8}
.sol-riga.ora{font-size:16px;line-height:1.35;color:#eef1fb;font-weight:500}
.sol-riga b{color:#fff;font-weight:800}
.sol-riga.vuota{color:#5a6484;font-style:italic}
.sol-riga.danno.ora{color:#ffd2d8} .sol-riga.cura.ora{color:#a6ecc7}
.sol-riga.stato.ora{color:#d6c2ff} .sol-riga.ko.ora{color:#ff8d9c;font-weight:800}
.sol-riga.resiste.ora,.sol-riga.nulla.ora{color:#a8b0cc}
.sol-riga.vittoria.ora{color:#8fe0b4;font-weight:800}
.sol-riga.sconfitta.ora{color:#ff9aa6;font-weight:800}

.sol-continua{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;
  justify-content:center;gap:2px;padding-left:12px;border-left:1px solid #2b3450;min-width:150px}
.sol-continua b{font-size:16px;color:#8fa0ff;animation:solPulsa 1.1s ease-in-out infinite}
.sol-continua small{font-size:10.5px;color:#6a7396}
.sol-restano{font-size:10px;color:#6a7396}
@keyframes solPulsa{0%,100%{opacity:.55}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){ .sol-continua b{animation:none;opacity:1} }

/* ── I COMANDI: i cinque posti, a destra nella fascia ──────────────────── */
.sol-comandi{flex:0 0 auto;width:min(52%,560px);padding-left:12px;border-left:1px solid #2b3450;color:#e8ecf8}
.sol-comandi.attesa{width:auto;min-width:150px;display:flex;align-items:center;
  justify-content:flex-end;font-size:13px;color:#8b93b3}
.sol-tocca,.sol-chiedi{font-size:11.5px;color:#8b93b3;margin-bottom:5px}
.sol-mosse{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px}
.sol-mossa{
  text-align:left;background:#0e1220;border:1px solid #2b3450;border-left:4px solid #39406a;
  border-radius:10px;padding:5px 8px;cursor:pointer;color:#e8ecf8;min-width:0}
.sol-mossa:hover:not(.spenta){border-color:#6b7cff;background:#141b30}
.sol-mossa.spenta{opacity:.4;cursor:not-allowed}
.sol-mossa.g1{border-left-color:#2fbf71}
.sol-mossa.g2{border-left-color:#e0b32f}
.sol-mossa.g3{border-left-color:#e05263}
.sol-mossa b{display:block;font-size:11.5px;line-height:1.2;white-space:normal;
  overflow-wrap:break-word;word-break:normal;hyphens:none;min-height:2.4em}
.sol-mossa-g{float:right;font-size:9px;font-weight:800;color:#8b93b3}
.sol-mossa-sub{display:block;font-size:9.5px;color:#8b93b3;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sol-mossa-sub .tbadge{font-size:8.5px;padding:0 5px;border-radius:20px;color:#fff}
.sol-cd{color:#ffd479;font-weight:800}
.sol-cd-ok{color:#8b93b3}
.sol-esito{font-size:18px;font-weight:800;margin-bottom:8px}
.sol-esito.vinta{color:#8fe0b4}
.sol-esito.persa{color:#ff9aa6}
.sol-racconto.finita .sol-comandi{display:flex;align-items:center;gap:14px}
.sol-racconto.finita .sol-esito{margin:0}
@media (max-width:980px){
  .sol-mosse{grid-template-columns:1fr 1fr}
  .sol-comandi{width:min(58%,420px)}
  .sol-riga.ora{font-size:14px}
}


/* ════════════ LE ANIMAZIONI DELLA LOTTA ════════════
   Il grosso lo fa il motore di Animex (moveEffect): fendenti, raggi, morsi,
   onde, fulmini, la scena che si tinge del colore del tipo. Qui c'è solo
   quello che riguarda il CORPO delle creature — e i numeri che volano via. */

/* LO SLANCIO: mezzo passo verso il bersaglio e ritorno. La direzione la
   calcola il codice (--ax/--ay), perché in un quattro contro quattro il
   bersaglio può stare in quattro punti diversi. */
@keyframes solSlancio{
  0%{transform:translate(0,0)}
  40%{transform:translate(var(--ax,0),var(--ay,0))}
  55%{transform:translate(var(--ax,0),var(--ay,0))}
  100%{transform:translate(0,0)} }
.bt-sprite.sol-slancio{animation:solSlancio .46s cubic-bezier(.3,1.4,.5,1)}

/* IL CONTRACCOLPO di chi le prende: due scossoni e un lampo bianco-rosso */
@keyframes solColpito{
  0%,100%{transform:translate(0,0);filter:none}
  12%{transform:translate(-8px,0);filter:brightness(2.4)}
  28%{transform:translate(8px,0);filter:brightness(.45) sepia(1) saturate(5) hue-rotate(-32deg)}
  44%{transform:translate(-6px,0);filter:brightness(2.1)}
  62%{transform:translate(5px,0);filter:none}
  80%{transform:translate(-3px,0)} }
.bt-sprite.sol-colpito{animation:solColpito .5s}

/* IL COLPO PARATO: lo scudo lampeggia azzurro e la creatura non si muove */
@keyframes solParato{0%,100%{filter:none}30%{filter:brightness(1.7) saturate(1.4) drop-shadow(0 0 14px #7cc4ff)}}
.bt-sprite.sol-parato{animation:solParato .5s}

/* LA CURA: un alone verde che sale */
@keyframes solCurato{0%,100%{filter:none}35%{filter:brightness(1.35) drop-shadow(0 0 16px #6ee7a8)}}
.bt-sprite.sol-curato{animation:solCurato .9s}

/* UNO STATO CHE SI ATTACCA ADDOSSO: un tremolio corto, si nota e non disturba */
@keyframes solInStato{0%,100%{transform:translate(0,0)}25%{transform:translate(-3px,-2px)}60%{transform:translate(3px,1px)}}
.bt-sprite.sol-instato{animation:solInStato .55s}

/* LA CADUTA: scivola giù e sparisce, e ci resta */
@keyframes solCade{from{transform:translateY(0) scale(1);opacity:1}
                   to{transform:translateY(60px) scale(.86);opacity:0}}
.bt-sprite.sol-cade{animation:solCade .7s ease-in forwards}

/* I NUMERI CHE VOLANO VIA. Il registro dice quanti danni, ma quando lo leggi
   hai già smesso di guardare la creatura: il numero deve stare addosso a lei. */
.sol-numero{
  position:absolute;z-index:9;transform:translate(-50%,-50%);pointer-events:none;
  font-size:26px;font-weight:900;letter-spacing:-.5px;
  text-shadow:0 2px 0 rgba(0,0,0,.55), 0 0 14px rgba(0,0,0,.5);
  animation:solNumeroVola 1.05s cubic-bezier(.2,.9,.3,1) forwards}
@keyframes solNumeroVola{
  0%{opacity:0;transform:translate(-50%,-20%) scale(.6)}
  18%{opacity:1;transform:translate(-50%,-60%) scale(1.15)}
  32%{transform:translate(-50%,-52%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-140%) scale(.95)}}
.sol-numero.danno{color:#ff5f6d}
.sol-numero.cura{color:#5fe3a1}
.sol-numero.scudo{color:#8ecbff;font-size:22px}
@media (prefers-reduced-motion:reduce){
  .bt-sprite.sol-slancio,.bt-sprite.sol-colpito,.bt-sprite.sol-parato,
  .bt-sprite.sol-curato,.bt-sprite.sol-instato{animation:none}
  .sol-numero{animation:solNumeroVola 1.05s linear forwards}
}

/* ════════════ LE LOTTE DEL MONDO, sullo stesso palco ════════════
   Quello che il mondo ha e l'Arena no: i tasti in più (cambio, zaino, fuga) e
   la fila della squadra quando devi scegliere chi mandare. */

/* il palco dentro il riquadro sopra la mappa: si comporta come quello
   dell'Arena, e ne eredita tutte le misure */
#solMondoPalco .sol-arena{width:100%}
#solMondoPalco.sol-arena, #solMondoPalco .bt-stage{ container-type: size; }
#solMondoPalco .bt-stage.bt-terr{
  width:100%; aspect-ratio:16/9; height:auto;
  min-height:280px; max-height:max(300px, calc(100vh - 320px));
  background-size:100% 100%; background-position:center}

.sol-mondo-tasti{display:inline-flex;gap:6px;margin-left:10px;vertical-align:middle}
.sol-mondo-tasti .btn{padding:2px 9px;font-size:11px}

/* LA PANCHINA: una tessera per Sol, con la vita che si legge a colpo d'occhio.
   Quando il cambio è obbligato non c'è l'Annulla — non c'è niente da annullare,
   senza nessuno in campo la lotta non può andare avanti. */
.sol-panca-fila{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:6px}
.sol-panca{
  text-align:left;background:#0e1220;border:1px solid #2b3450;border-left:4px solid #2f9e5e;
  border-radius:10px;padding:6px 9px;cursor:pointer;color:#e8ecf8;min-width:0}
.sol-panca:hover:not(.giu){border-color:#6b7cff;background:#141b30}
.sol-panca.giu{opacity:.42;cursor:not-allowed;border-left-color:#6b2f3f}
.sol-panca-n{display:block;font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sol-panca-lv{display:block;font-size:9.5px;color:#8b93b3;margin-bottom:3px}
.sol-panca .sol-vita{margin:0}
.sol-panca small{display:block;text-align:right;font-size:9px;color:#8b93b3;margin-top:2px}

/* ════ LA SCELTA DELLA SQUADRA (e la pesca a vista del 4v4) ════ */
.sol-scelta-testa h2{margin:0 0 4px;font-size:21px}
.sol-scelta-corpo{display:flex;gap:16px;align-items:flex-start;margin-top:14px}
.sol-scelta-squadre{width:330px;flex:0 0 330px;display:flex;flex-direction:column;gap:12px}
.sol-fila-scelta .sol-fila-box{display:flex;gap:8px;flex-wrap:wrap}
.sol-scelto{
  width:74px;padding:6px 4px;border-radius:12px;background:#161b2c;border:1px solid #2b3450;
  display:flex;flex-direction:column;align-items:center;gap:2px;cursor:default
}
.sol-fila-scelta.tuo .sol-scelto{border-color:#2f6b4a}
.sol-fila-scelta.loro .sol-scelto{border-color:#6b2f3f}
.sol-scelto img{width:52px;height:52px;object-fit:contain}
.sol-scelto b{font-size:10.5px;text-align:center;line-height:1.2}
.sol-scelto.vuoto{
  border-style:dashed;color:#4a5490;font-size:22px;align-items:center;justify-content:center;
  min-height:74px;background:#0e1220
}
.sol-pesca-log{
  background:#0e1220;border:1px solid #2b3450;border-radius:12px;padding:9px 12px;
  font-size:12.5px;line-height:1.75;max-height:190px;overflow:auto
}
.sol-scelta-azioni{display:flex;gap:8px;flex-wrap:wrap}
.sol-scelta-catalogo{flex:1;min-width:0}
.sol-scelta-t{font-size:12.5px;color:#8b93b3;margin:8px 0 6px}
.griglia-sol.grande{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;
  max-height:56vh;overflow:auto;padding:6px;background:#0b0e1a;border:1px solid #2b3450;border-radius:12px
}
.griglia-sol.grande .sol-cella{
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;
  background:#141a2c;border:1px solid #2b3450;border-radius:10px;cursor:pointer;color:#e8ecf8
}
.griglia-sol.grande .sol-cella:hover:not(:disabled){border-color:#6b7cff;background:#1d2440}
.griglia-sol.grande .sol-cella:disabled{opacity:.3;cursor:not-allowed}
.griglia-sol.grande .sol-cella.presa{opacity:.28}
.griglia-sol.grande .sol-cella img{width:58px;height:58px;object-fit:contain}
.griglia-sol.grande .sol-cella b{font-size:12px;text-align:center;line-height:1.2}
.griglia-sol.grande .sol-cella small{font-size:10px;color:#8b93b3;text-align:center}

/* ════ RESISTENZA E PRECISIONE — le due percentuali ════
   Riquadro a sé: non hanno il budget delle sei e non si leggono come loro. */
.st-perc{margin-top:14px;padding:12px 14px;border:1px solid rgba(139,92,246,.34);border-radius:14px;
  background:linear-gradient(180deg,rgba(139,92,246,.09),rgba(20,190,220,.06))}
.st-perc-h{font-weight:800;font-size:13px;margin-bottom:9px;color:#e7ebf6}
.st-perc-h small{font-weight:400;color:var(--muted);margin-left:7px}
.st-prows{display:flex;flex-direction:column;gap:9px}
.st-prow{display:grid;grid-template-columns:1.1fr minmax(120px,1.5fr) 92px;gap:12px;align-items:center}
.st-prow .st-sub{display:block;font-size:10.5px;color:var(--muted)}
.st-slider{width:100%;height:5px;cursor:pointer}
.st-pnum{display:flex;align-items:center;gap:4px}
.st-pnum input{width:64px;text-align:right;font-weight:800}
.st-pnum span{color:var(--muted);font-size:12px}
.st-perc-conto{margin-top:10px;padding-top:9px;border-top:1px dashed rgba(255,255,255,.14);
  font-size:12px;line-height:1.55;color:#b9c1d6}
@media (max-width:640px){ .st-prow{grid-template-columns:1fr 88px;grid-auto-rows:auto;row-gap:7px}
  .st-slider{grid-column:1/-1} }

/* le stesse due nella schermata di ALLENAMENTO */
.tr-perc-t{margin:14px 0 8px;font-weight:800;font-size:12.5px;color:#cfd6ea}
.tr-perc-t small{font-weight:400;color:#8b93b3;margin-left:6px}
.tr-row.tr-perc{border-left:2px solid rgba(139,92,246,.55)}
.tr-row.tr-pieno .tr-proj{color:#2faf63}
.tr-max{color:#2faf63;font-weight:800}

/* il cartello dell'Arena quando il catalogo delle mosse è vuoto */
.ar-vuoto{
  margin:0 0 14px; padding:12px 15px; border-radius:12px; line-height:1.6;
  border:1px solid rgba(224,132,58,.45); background:rgba(224,132,58,.10); color:#8a5a20;
}
.ar-vuoto a{color:#7c3aed; font-weight:700}

/* ════ GLI STATI SOPRA LA TESTA ════
   Blu i bonus, rossi i malus: il colore dice se è una cosa buona o cattiva
   prima ancora che si legga il nome. */
.sol-stati{display:flex; flex-wrap:wrap; gap:4px; margin-top:5px}
.sol-st{
  display:inline-flex; align-items:center; gap:3px; padding:1px 6px 1px 3px; border-radius:20px;
  font-size:10px; font-weight:800; letter-spacing:.2px; line-height:1.6; cursor:help;
}
.sol-st.malus{background:rgba(232,72,43,.18); color:#ff9f8c; box-shadow:inset 0 0 0 1px rgba(232,72,43,.45)}
.sol-st.bonus{background:rgba(47,116,192,.20); color:#8fc4ff; box-shadow:inset 0 0 0 1px rgba(47,116,192,.5)}
.sol-st b{font-weight:900; opacity:.85}
.sol-st-ico{
  width:14px; height:14px; border-radius:50%; display:inline-block; flex:0 0 14px;
  background:currentColor; opacity:.55;
}
/* quando l'icona disegnata esiste, copre il pallino di riserva */
.sol-st-ico{background-size:cover; background-position:center; background-repeat:no-repeat}
/* e chi l'icona non ce l'ha non lascia il buco dov'era */
.sol-st.nuda{padding-left:7px}


/* ── IL CAMPO DI UN TIPO, in alto a sinistra nell'arena ──────────────────
   Stesso vetro smerigliato della striscia dei turni, cosi' le due cose in
   cima si somigliano invece di sembrare aggiunte in momenti diversi. Il
   colore lo mette il tipo, da --ct. */
.sol-campo{
  position:absolute;top:10px;left:10px;z-index:8;
  display:flex;align-items:center;gap:6px;padding:5px 10px 5px 8px;
  background:rgba(10,14,26,.60);border:1px solid var(--ct,#39406a);border-radius:99px;
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);
  box-shadow:0 6px 20px rgba(0,0,0,.28), inset 0 0 22px -12px var(--ct,#39406a);
  font-size:11.5px;color:#e8ecf8;white-space:nowrap
}
.sol-campo-p{
  width:12px;height:12px;border-radius:50%;flex:0 0 12px;
  background:var(--ct,#39406a);box-shadow:0 0 10px -1px var(--ct,#39406a)
}
.sol-campo b{font-weight:800;letter-spacing:.2px}
.sol-campo-n{color:var(--ct,#aab3d0);font-weight:700}
/* quando c'e' un campo, la striscia dei turni si stringe per non finirgli
   sotto: nel riquadro piccolo della mappa si coprirebbero a vicenda */
.col-campo .sol-ordine{max-width:calc(94% - 175px)}

.sol-campo-r{
  min-width:17px;height:17px;padding:0 4px;border-radius:99px;
  background:rgba(255,255,255,.13);display:grid;place-items:center;
  font-size:10px;font-weight:800;color:#e8ecf8
}


/* ── I DANNI PERPETUI: un teschio per ognuno ────────────────────────────
   Non sono stati e non hanno un nome scritto accanto: con quattro addosso il
   nome ripetuto quattro volte coprirebbe la creatura. Restano il teschio e il
   numero dei turni, che sono le due cose che servono davvero. */
/* ⚠ SOLO IL COLORE, ORMAI. Il teschio disegnato a mano non c'e' piu': i
   perpetui hanno la loro icona vera e usano lo stesso quadratino di tutti gli
   altri stati, quindi anche il padding stretto — tagliato su un glifo da 12
   pixel — va tolto, se no stringe un'icona da 18. */
.sol-dp{
  background:rgba(192,57,43,.42) !important; border:1px solid rgba(255,120,110,.75) !important;
  color:#ffd9d5 !important;
}
.sol-dp b{font-size:9.5px; opacity:1}

/* LE FASCIATURE, lo specchio dei teschi: croce bianca su azzurro. Stessa
   forma, stessa misura, colore opposto — cosi' in campo si leggono in coppia
   senza doverci pensare, che e' il punto di averle fatte specchio. */
.sol-cp{
  background:rgba(47,155,208,.42) !important; border:1px solid rgba(140,210,255,.75) !important;
  color:#e2f3ff !important;
}
.sol-cp b{font-size:9.5px; opacity:1}
/* la super: stessa famiglia, un filo piu' accesa - deve leggersi come «questa
   e' un'altra cosa» senza uscire dalla fila delle cure. */
.sol-cp.super{
  background:rgba(31,127,184,.55) !important; border-color:rgba(180,230,255,.9) !important;
}

/* ⚠ LA MOSSA VIETATA NON E' UNA MOSSA IN RICARICA, e il grigio da solo non sa
   dire la differenza. Il taglio in diagonale la marca come «chiusa»: la
   ricarica e' un'attesa che finisce da sola, il divieto no. */
.sol-mossa.vietata{
  opacity:.5; filter:grayscale(.5);
  background-image:repeating-linear-gradient(135deg, rgba(255,90,90,.14) 0 7px, transparent 7px 14px);
  border-color:rgba(255,120,120,.45) !important;
}


/* ═══════════════════════════════════════════════════════════════════════════
   IL CATALOGO DI COMBATTIMENTO
   ═══════════════════════════════════════════════════════════════════════════
   Cartelle richiudibili, schede larghe, e il colore che fa il lavoro: ogni
   cartella e ogni scheda porta il colore del suo tipo (--cc, --mc), cosi' si
   riconosce il gruppo senza leggere l'intestazione. */

.cat{display:flex; flex-direction:column; gap:10px; padding:2px 2px 60px; color:#e8ecf8}
.cat-vuoto{padding:40px; text-align:center; color:#8b93b3}

/* ── la cartella ──────────────────────────────────────────────────────── */
.cat-cart{border:1px solid #2b3450; border-radius:14px; overflow:hidden; background:#141a2b}
.cat-cart-t{
  display:flex; align-items:center; gap:10px; width:100%; text-align:left; cursor:pointer;
  background:linear-gradient(90deg, color-mix(in srgb, var(--cc) 22%, #161c30), #161c30 62%);
  border:0; border-left:4px solid var(--cc); color:#e8ecf8; padding:11px 14px; font-size:14.5px;
}
.cat-cart-t:hover{filter:brightness(1.12)}
.cat-cart-t b{font-weight:800; letter-spacing:.2px}
.cat-cart-t small{color:#9aa3c4; font-size:11.5px; font-weight:600}
.cat-cart-t em{
  margin-left:auto; font-style:normal; font-size:11.5px; font-weight:800; color:#cdd4f5;
  background:rgba(0,0,0,.32); border:1px solid rgba(255,255,255,.13); border-radius:20px; padding:1px 9px;
}
.cat-freccia{transition:transform .18s ease; color:var(--cc); font-size:12px}
.cat-cart.chiusa .cat-freccia{transform:rotate(-90deg)}
.cat-cart.chiusa .cat-cart-c{display:none}
.cat-cart-c{padding:10px 12px 12px}
/* una cartella dentro un'altra: si stringe, cosi' si vede il livello */
.cat-cart .cat-cart{margin:8px 0 0; background:#111726}

/* ── la griglia delle schede ──────────────────────────────────────────── */
.cat-griglia{display:grid; grid-template-columns:repeat(auto-fill, minmax(315px, 1fr)); gap:10px}
.cat-griglia.larga{grid-template-columns:repeat(auto-fill, minmax(340px, 1fr))}

/* ── la scheda di una mossa ───────────────────────────────────────────── */
.cat-m{
  border:1px solid #2b3450; border-left:4px solid var(--mc); border-radius:12px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--mc) 9%, #171d31), #151a2b);
  padding:11px 13px; display:flex; flex-direction:column; gap:8px;
}
.cat-m.guasta{border-color:#5a4a1e}
/* ⚠ UNA SCHEDA CHE SI APRE DEVE DIRLO PRIMA DEL CLIC: la mano che cambia e il
   bordo che si accende sono l'unico modo di scoprire che si puo' fare. */
.cat-m.apribile{cursor:pointer; transition:border-color .12s ease, transform .12s ease}
.cat-m.apribile:hover{border-color:var(--mc); transform:translateY(-1px)}
.cat-m-testa{display:flex; align-items:center; gap:8px}
.cat-m-nome{font-size:15px; font-weight:800; color:var(--mc); flex:1; min-width:0}
.cat-warn{color:#ffce4a; font-size:12px; text-shadow:0 0 6px rgba(255,180,40,.9); cursor:help}
.cat-g{
  font-size:10.5px; font-weight:900; padding:1px 8px; border-radius:20px;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.15); color:#dfe5fb;
}
.cat-g.g1{border-color:#2f8f63; color:#9fe6c2}
.cat-g.g2{border-color:#b08425; color:#ffd98a}
.cat-g.g3{border-color:#b1402f; color:#ffb0a3}

.cat-m-numeri{display:flex; flex-wrap:wrap; gap:6px; align-items:stretch}
.cat-cat{
  font-size:11px; font-weight:800; padding:3px 9px; border-radius:8px; align-self:center;
  background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.14)
}
.cat-cat.fisico{color:#ffb59a; border-color:#7a3a28}
.cat-cat.magico{color:#d3b9ff; border-color:#553a80}
.cat-cat.stato{color:#ffe6a3; border-color:#7a6420}
.cat-cat.custom{color:#8ee6da; border-color:#1f6e64}
.cat-n{
  display:flex; flex-direction:column; gap:1px; padding:3px 9px; border-radius:8px;
  background:rgba(0,0,0,.24); border:1px solid #262d47; min-width:74px
}
.cat-n.largo{flex:1 1 130px}
.cat-n i{font-style:normal; font-size:9.5px; letter-spacing:.5px; text-transform:uppercase; color:#7f88a8}
.cat-n b{font-size:12.5px; color:#e8ecf8; font-weight:700}
.cat-n.vuoto b{color:#5c6480}

.cat-m-desc{margin:0; font-size:12.5px; line-height:1.5; color:#aab3d0}

/* ── gli effetti dentro la scheda ─────────────────────────────────────── */
.cat-m-eff{display:flex; flex-direction:column; gap:5px}
.cat-m-eff.vuoto{font-size:11.5px; color:#6f7796; font-style:italic}
.cat-eff{
  display:flex; align-items:baseline; gap:7px; flex-wrap:wrap;
  padding:5px 9px; border-radius:8px; background:rgba(0,0,0,.26);
  border-left:3px solid var(--ec); font-size:11.5px;
}
.cat-eff-p{width:7px; height:7px; border-radius:50%; background:var(--ec); flex:0 0 7px;
  box-shadow:0 0 7px -1px var(--ec)}
.cat-eff b{color:#e8ecf8; font-weight:800}
.cat-eff span{color:#98a1c0}
.cat-eff i{color:#8b93b3; font-style:italic; flex:1 1 100%}

.cat-m-ruoli{display:flex; flex-wrap:wrap; gap:4px}
.cat-m-ruoli.tutti{font-size:11px; color:#6f7796; font-style:italic}
.cat-ruolo{
  font-size:10.5px; font-weight:700; padding:1px 8px; border-radius:20px;
  background:rgba(107,124,255,.16); border:1px solid #3a4270; color:#c3ccf7
}

/* ── i gradini delle statistiche, nei ruoli ───────────────────────────── */
.cat-stat{display:flex; flex-wrap:wrap; gap:4px}
.cat-s{font-size:10.5px; font-weight:700; padding:1px 8px; border-radius:20px;
  border:1px solid #2f3757; background:#1b2137; color:#a8b2ce}
/* ⚠ LA SCALA A CINQUE, la stessa nel Laboratorio e qui. La freccia dice il
   verso, il colore l'intensità, e le due cose insieme si leggono senza
   legenda: ▲▲ verde molto alta · ▲ blu alta · grigia normale · ▼ arancione
   bassa · ▼▼ rosso molto bassa. Verde e rosso agli estremi perché sono i due
   colori che l'occhio prende per primi, e gli estremi sono quello che di un
   ruolo conta di più. */
.cat-s i{font-style:normal; font-size:8.5px; margin-right:4px; vertical-align:1px; letter-spacing:-1px}
.cat-s.pari{border-color:#2b3247; background:#161b2c; color:#78829e}
.cat-s.su1{border-color:#4aa8e8; background:#0f2942; color:#9ad6ff; font-weight:800}
.cat-s.su1 i{color:#69bdf5}
.cat-s.su2{border-color:#3fb27f; background:#0f2f22; color:#8fe8bd; font-weight:800;
  box-shadow:0 0 0 1px rgba(63,178,127,.30)}
.cat-s.su2 i{color:#5fd39c}
.cat-s.giu1{border-color:#e0862f; background:#3a2510; color:#ffc78d; font-weight:800}
.cat-s.giu1 i{color:#f0a250}
.cat-s.giu2{border-color:#e0503f; background:#3d1613; color:#ffb0a3; font-weight:800;
  box-shadow:0 0 0 1px rgba(224,80,63,.30)}
.cat-s.giu2 i{color:#ff7a66}

/* ── IL PANNELLO DEI FILTRI, una fascia in cima all'elenco ─────────────── */
.cat-fil{border:1px solid #2b3450; border-radius:12px; background:#151a2b; margin-bottom:16px}
.cat-fil-alto{display:flex; align-items:center; gap:12px; padding:0 12px 0 0; flex-wrap:wrap}
.cat-fil-t{
  flex:0 0 auto; display:flex; align-items:center; gap:9px; background:none; border:0;
  color:#e8ecf8; font:inherit; font-size:13px; cursor:pointer; padding:11px 14px;
}
.cat-fil-t b{font-size:13.5px; letter-spacing:.3px}
.cat-fil-t small{color:#7f8aa8; font-size:11.5px}
.cat-fil-t em{
  font-style:normal; font-size:11px; font-weight:800; background:#6b7cff; color:#fff;
  border-radius:20px; min-width:18px; text-align:center; padding:1px 6px;
}
.cat-fil-t .cat-freccia{transition:transform .15s; color:#7f8aa8}
.cat-fil:not(.chiusa) .cat-fil-t .cat-freccia{transform:rotate(90deg)}
.cat-fil-t.accesa b{color:#9fb0ff}
.cat-fil-conto{color:#7f8aa8; font-size:12px; margin-left:auto}
.cat-fil-tutti{
  background:#20263d; border:1px solid #39406a; color:#c8d0e8; border-radius:8px;
  padding:5px 11px; font-size:12px; cursor:pointer;
}
.cat-fil-tutti:hover{background:#2a3150}
.cat-fil-c{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:16px;
  padding:6px 14px 16px; border-top:1px solid #232a44;
}
.cat-fil-g h4{
  margin:12px 0 6px; font-size:11px; letter-spacing:.7px; text-transform:uppercase;
  color:#7f8aa8; display:flex; align-items:center; gap:8px;
}
.cat-fil-off{
  background:none; border:0; color:#6b7cff; font-size:10.5px; cursor:pointer;
  text-transform:none; letter-spacing:0; padding:0;
}
.cat-fil-nota{margin:0 0 7px; font-size:11px; color:#6f7a97; line-height:1.45}
.cat-fil-voci{display:flex; flex-wrap:wrap; gap:6px}
.cat-fil-v{
  --fc:#6b7cff;
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  border:1px solid #2f3757; background:#1b2137; color:#a8b2ce;
  border-radius:20px; padding:4px 10px; font-size:12px; font-weight:600;
}
.cat-fil-v i{
  font-style:normal; font-size:10px; font-weight:800; color:#6f7a97;
  background:#131829; border-radius:10px; padding:0 5px; min-width:16px; text-align:center;
}
.cat-fil-v:hover{border-color:#4a5490}
.cat-fil-v.on{
  border-color:var(--fc); color:#fff; font-weight:800;
  background:color-mix(in srgb, var(--fc) 26%, #131829);
  box-shadow:0 0 0 1px color-mix(in srgb, var(--fc) 45%, transparent);
}
.cat-fil-v.on i{background:rgba(0,0,0,.35); color:#fff}
/* ⚠ SPENTA, NON SPARITA: una voce che non ha niente dietro resta li' a dire
   che quella scelta esiste. Se sparisse, non si saprebbe mai di poterla fare. */
.cat-fil-v.vuota{opacity:.34}

/* ── la scheda di un effetto ──────────────────────────────────────────── */
.cat-fx{
  border:1px solid #2b3450; border-top:3px solid var(--ec); border-radius:12px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--ec) 10%, #171d31), #151a2b);
  padding:12px 13px; display:flex; flex-direction:column; gap:8px;
}
.cat-fx-testa{display:flex; align-items:center; gap:9px}
.cat-fx-ico{
  width:26px; height:26px; flex:0 0 26px; border-radius:9px; display:grid; place-items:center;
  background:var(--ec); color:#fff; font-weight:900; font-size:13px;
  box-shadow:0 0 14px -4px var(--ec), inset 0 0 0 1px rgba(255,255,255,.22);
}
.cat-fx-testa b{font-size:14.5px; font-weight:800; flex:1; color:#e8ecf8}
.cat-fx-seg{font-size:10px; font-weight:800; letter-spacing:.4px; text-transform:uppercase;
  color:#8b93b3; border:1px solid #2f3757; border-radius:20px; padding:1px 8px}
.cat-fx-t{margin:0; font-size:12.5px; line-height:1.55; color:#aab3d0}
.cat-fx-piede{display:flex; flex-wrap:wrap; gap:6px; align-items:center}
.cat-fx-d{font-size:11px; font-weight:700; color:var(--ec)}
.cat-fx-campi{display:flex; flex-wrap:wrap; gap:4px}
.cat-fx-campi i{font-style:normal; font-size:10px; color:#98a1c0;
  background:rgba(0,0,0,.28); border:1px solid #262d47; border-radius:6px; padding:1px 7px}
.cat-fx-uso{font-size:11px; color:#c3ccf7; border-top:1px dashed #262d47; padding-top:7px; cursor:help}
.cat-fx-uso.zero{color:#6f7796; font-style:italic}


/* ══ LA TAVOLA DEI TIPI ══════════════════════════════════════════════════
   ⚠ SUL «QUASI IN 3D» DI ANDREA. La profondità sta nelle TESSERE: luce in
   alto, ombra sotto, e si sollevano quando ci passi sopra. L'inclinazione
   vera — la tabella girata in prospettiva — c'è ma è un tasto, perché una
   griglia inclinata di diciannove colonne si guarda bene e si LEGGE male: i
   numeri in fondo si schiacciano proprio quando li stai cercando. */
.tp{display:flex; flex-direction:column; gap:18px}
.tp-legenda{
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  font-size:12px; color:#8b95b4;
}
.tp-leg{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:26px; height:20px; border-radius:6px; font-size:11px; font-weight:800;
  margin-left:10px;
}
.tp-leg:first-child{margin-left:0}
.tp-letto{
  margin-left:auto; color:#c8d0e8; font-size:13px; background:#171d31;
  border:1px solid #2b3450; border-radius:20px; padding:5px 14px; min-width:230px; text-align:center;
}
.tp-tasto{
  background:#20263d; border:1px solid #39406a; color:#c8d0e8; border-radius:8px;
  padding:5px 12px; font-size:12px; cursor:pointer;
}
.tp-tasto.on{background:#3a2f6e; border-color:#6b7cff; color:#fff; font-weight:700}

.tp-scena{perspective:1600px; overflow:auto; padding:6px 2px 14px}
.tp-griglia{
  display:grid; grid-template-columns:112px repeat(var(--n), minmax(30px, 1fr));
  gap:3px; min-width:760px; transform-style:preserve-3d;
  transition:transform .35s ease;
}
/* il tasto «Prospettiva»: la stessa griglia, girata davvero */
.tp-scena.prospettiva .tp-griglia{transform:rotateX(24deg) rotateZ(-1.5deg) scale(.96)}

.tp-ang{
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:0;
  background:#171d31; border:1px solid #2b3450; border-radius:8px; cursor:pointer;
  color:#8b95b4; font:inherit; font-size:10px; padding:4px 8px; line-height:1.25;
}
.tp-ang b{color:#c8d0e8; font-size:11px}
.tp-ang em{font-style:normal; font-size:9.5px}
.tp-ang:hover{border-color:#6b7cff}

/* ⚠ IL COLORE DEL TIPO SI DEVE VEDERE. Con diciannove colonne l'occhio la
   colonna giusta la trova dal colore, non leggendo tre lettere: tenerlo al 34%
   voleva dire diciannove intestazioni quasi nere e uguali fra loro. */
.tp-h{
  --tc:#39406a;
  background:linear-gradient(180deg, color-mix(in srgb, var(--tc) 82%, #ffffff14), color-mix(in srgb, var(--tc) 62%, #0d1120));
  border:1px solid color-mix(in srgb, var(--tc) 75%, #2b3450);
  border-top-color:color-mix(in srgb, var(--tc) 55%, #ffffff);
  color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.55);
  font:inherit; font-size:11px; font-weight:800; cursor:pointer;
  border-radius:7px; padding:0 6px; letter-spacing:.3px;
  display:flex; align-items:center; box-shadow:0 2px 0 rgba(0,0,0,.35);
  transition:transform .12s, box-shadow .12s, filter .12s;
}
.tp-h.dif{justify-content:center; min-height:34px; text-transform:uppercase; font-size:10px}
.tp-h.att{justify-content:flex-start; min-height:30px; padding-left:10px}
.tp-h:hover{filter:brightness(1.25); transform:translateY(-2px); box-shadow:0 4px 8px rgba(0,0,0,.45)}
.tp-h.croce{filter:brightness(1.45); box-shadow:0 0 0 2px #ffffff55, 0 4px 8px rgba(0,0,0,.5)}

/* LE TESSERE. Il rilievo è tutto qui: una riga chiara in cima (la luce che
   batte) e un'ombra piena sotto (lo spessore). Non è un'ombra sfumata: è uno
   spessore, e si vede che la tessera è alta. */
.tp-c{
  min-height:30px; border-radius:7px; border:1px solid #262e49; cursor:pointer;
  font:inherit; font-size:11.5px; font-weight:800; color:#dfe5f5;
  background:linear-gradient(180deg,#1f263e,#161c2e);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 2px 0 rgba(0,0,0,.4);
  transition:transform .12s, box-shadow .12s, filter .12s;
}
.tp-c.e1{color:#4d5878}
.tp-c.ep{
  background:linear-gradient(180deg,#2f7d52,#1d5236); border-color:#3fa06a; color:#ecfff4;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18), 0 3px 0 #12331f;
}
.tp-c.em{
  background:linear-gradient(180deg,#8a4030,#5c2a1f); border-color:#b25642; color:#ffe3da;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), 0 3px 0 #3a190f;
}
.tp-c.e0{
  background:linear-gradient(180deg,#3a3350,#221d33); border-color:#5b4f80; color:#d8ccff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), 0 3px 0 #17122a;
}
.tp-c:hover{transform:translateY(-3px); filter:brightness(1.22); box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 6px 10px rgba(0,0,0,.5)}
.tp-c.croce{filter:brightness(1.35); box-shadow:inset 0 0 0 1px rgba(255,255,255,.35), 0 3px 0 rgba(0,0,0,.4)}

/* ── il pannello che risponde ── */
.tp-info{
  --tc:#6b7cff;
  border:1px solid #2b3450; border-top:3px solid var(--tc); border-radius:14px;
  background:linear-gradient(180deg, color-mix(in srgb, var(--tc) 8%, #171d31), #151a2b);
  padding:16px 18px 18px; display:flex; flex-direction:column; gap:14px;
  box-shadow:0 10px 24px rgba(0,0,0,.34);
  color:#e8ecf8;
}
.tp-testa{display:flex; align-items:center; gap:12px; flex-wrap:wrap}
.tp-testa b{font-size:16px}
.tp-testa > span{color:#8b95b4; font-size:12.5px}
.tp-testa.grande b{font-size:20px; letter-spacing:.3px}
.tp-testa.piccolo{gap:8px; border-top:1px solid #262e49; padding-top:12px}
.tp-pallo{width:16px; height:16px; border-radius:50%; background:var(--tc); box-shadow:0 0 12px var(--tc)}
.tp-vs{font-size:19px; color:#8b95b4}
.tp-mul{
  margin-left:auto; font-size:14px; font-weight:800; border-radius:20px; padding:5px 16px;
  border:1px solid #2b3450;
}
.tp-mul.ep{background:#1d5236; border-color:#3fa06a; color:#ecfff4}
.tp-mul.em{background:#5c2a1f; border-color:#b25642; color:#ffe3da}
.tp-mul.e0{background:#221d33; border-color:#5b4f80; color:#d8ccff}
.tp-mul.e1{background:#1b2137; color:#a8b2ce}
.tp-alt{
  background:#20263d; border:1px solid #39406a; color:#9fb0ff; border-radius:8px;
  padding:5px 12px; font-size:12px; cursor:pointer; font-family:inherit;
}
.tp-alt:hover{background:#2a3150; border-color:#6b7cff}

.tp-numeri{display:flex; flex-wrap:wrap; gap:10px}
.tp-num{
  flex:1 1 130px; background:#131829; border:1px solid #262e49; border-radius:10px;
  padding:9px 12px; display:flex; flex-direction:column; gap:2px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.tp-num i{font-style:normal; font-size:10.5px; color:#7f8aa8; text-transform:uppercase; letter-spacing:.5px}
.tp-num b{font-size:17px; color:#eef1fb}
.tp-num small{font-size:10.5px; color:#6f7a97}

.tp-blocco h4{
  margin:0 0 7px; font-size:11px; letter-spacing:.7px; text-transform:uppercase; color:#7f8aa8;
}
.tp-blocco.ok h4{color:#5fc08a}
.tp-blocco.ko h4{color:#e08a72}
.tp-blocco.zero h4{color:#b3a0ff}
.tp-chips{display:flex; flex-wrap:wrap; gap:6px}
.tp-chip{
  --tc:#39406a; font-family:inherit; cursor:pointer;
  border:1px solid color-mix(in srgb, var(--tc) 55%, #2b3450);
  background:linear-gradient(180deg, color-mix(in srgb, var(--tc) 30%, #171d31), color-mix(in srgb, var(--tc) 14%, #12172a));
  color:#eef1fb; border-radius:20px; padding:4px 12px; font-size:12px; font-weight:700;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09), 0 2px 0 rgba(0,0,0,.32);
  transition:transform .12s, filter .12s;
}
.tp-chip:hover{transform:translateY(-2px); filter:brightness(1.25)}
.tp-chip i{font-style:normal; opacity:.7; margin-left:5px; font-size:10.5px}
.tp-tag{
  border:1px solid #39406a; background:#1b2137; color:#a8b2ce;
  border-radius:20px; padding:3px 11px; font-size:11.5px; font-weight:600;
}
.tp-nulla{color:#6f7a97; font-size:12.5px; font-style:italic}
.tp-nota{margin:0; font-size:11.5px; color:#6f7a97; line-height:1.5}
.tp-nota.grande{font-size:12.5px; color:#8b95b4; border-top:1px solid #262e49; padding-top:12px}

/* le due colonne della classifica */
.tp-due{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:20px}
.tp-col h4{margin:0 0 5px; font-size:12px; letter-spacing:.6px; text-transform:uppercase; color:#c8d0e8}
.tp-col .tp-nota{margin-bottom:10px}
.tp-riga{
  --tc:#39406a; width:100%; display:grid; grid-template-columns:104px 1fr auto; align-items:center; gap:10px;
  background:#131829; border:1px solid #262e49; border-left:3px solid var(--tc);
  border-radius:9px; padding:6px 11px; margin-bottom:5px; cursor:pointer;
  font-family:inherit; text-align:left; color:#e8ecf8;
}
.tp-riga:hover{background:#1d2440; border-color:#3a4270; border-left-color:var(--tc)}
.tp-riga b{font-size:12.5px; color:var(--tc)}
.tp-riga i{font-style:normal; font-size:10.5px; color:#6f7a97; white-space:nowrap}
.tp-barra{display:block; height:8px; background:#0e1220; border-radius:20px; overflow:hidden}
.tp-barra i{display:block; height:100%; background:var(--tc); border-radius:20px}
.tp-riga.male .tp-barra i{background:#b25642}

/* le coppie consigliate */
.tp-cop{
  --tc:#39406a; display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:12px;
  background:#131829; border:1px solid #262e49; border-left:3px solid var(--tc);
  border-radius:9px; padding:8px 12px; margin-bottom:6px;
}
.tp-cop b{font-size:13px; color:#eef1fb}
.tp-cop em{font-style:normal; font-weight:800; font-size:13px; color:#5fc08a; min-width:34px}
.tp-cop.cattiva em{color:#e08a72}
.tp-cop i{font-style:normal; font-size:11px; color:#7f8aa8}
/* le SPECIALISTE non hanno il numero in mezzo: due colonne, non tre. */
.tp-cop.spec{grid-template-columns:auto 1fr}

/* ── la parte di Andrea: quello che scrive lui ──
   ⚠ NIENTE RIGA COLORATA A SINISTRA. Era una barretta gialla identica a quelle
   che il programma usa per i propri avvisi, e faceva sembrare una nota di
   sistema l'unico pezzo della scheda in cui parla lui. Adesso e' una SCHEDA A
   SE', con le virgolette grandi dietro e addosso IL COLORE DEL TIPO: l'Elettro
   e' dorato, l'Acqua blu, il Vento azzurro. Il colore lo prende da --tc, che
   .tp-info mette gia' addosso a tutto il pannello. */
.tp-blocco.mio{
  position:relative; overflow:hidden;
  border:1px solid color-mix(in srgb, var(--tc,#6b7cff) 34%, #2b3450);
  border-radius:14px; padding:14px 18px 15px;
  background:
    radial-gradient(130% 150% at 0% 0%, color-mix(in srgb, var(--tc,#6b7cff) 15%, transparent), transparent 62%),
    linear-gradient(180deg,#1b2237,#12172a);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 8px 20px rgba(0,0,0,.4);
}
/* le virgolette: e' quello che fa leggere il riquadro come UNA VOCE e non come
   un campo di un modulo. Sono tipografia, non un'icona appiccicata. */
.tp-blocco.mio.chi::before{
  content:'\201C'; position:absolute; right:14px; top:-34px; pointer-events:none;
  font:400 132px/1 Georgia,'Times New Roman',serif;
  color:color-mix(in srgb, var(--tc,#6b7cff) 22%, transparent);
}
.tp-blocco.mio h4{color:color-mix(in srgb, var(--tc,#6b7cff) 62%, #dfe5f5)}
/* .tp-blocco.istr, piu in basso nel foglio, aggiungerebbe una riga in cima
   alla scheda: dentro una cornice non ci va. */
.tp-blocco.mio.istr{border-top:none; padding-top:14px}
.tp-blocco.mio .tp-nota{position:relative; max-width:78ch}
.tp-scrivi{
  display:block; width:100%; box-sizing:border-box; margin-top:10px; position:relative;
  background:rgba(6,9,18,.55); color:#eef1fb;
  border:1px solid color-mix(in srgb, var(--tc,#6b7cff) 16%, #2b3450); border-radius:11px;
  padding:12px 15px; font:inherit; font-size:14px; line-height:1.7; resize:vertical;
  box-shadow:inset 0 2px 6px rgba(0,0,0,.4);
  transition:border-color .15s, box-shadow .15s, background .15s;
}
.tp-scrivi:focus{
  outline:none; background:rgba(6,9,18,.8);
  border-color:color-mix(in srgb, var(--tc,#6b7cff) 62%, #2b3450);
  box-shadow:inset 0 2px 6px rgba(0,0,0,.4), 0 0 0 3px color-mix(in srgb, var(--tc,#6b7cff) 17%, transparent);
}
.tp-scrivi::placeholder{color:#5b6480; font-style:italic}
.tp-spia{display:block; margin-top:7px; font-size:11px; color:#7f8aa8; min-height:14px; letter-spacing:.3px}
.tp-spia.ok{color:#5fc08a}
.tp-spia.ko{color:#e08a72}
.tp-nota.confronto.tuo{
  border-left-color:var(--tc,#6b7cff);
  background:linear-gradient(90deg, color-mix(in srgb, var(--tc,#6b7cff) 12%, #171d31), #171d31);
  color:#c2cbe4;
}

/* ── il 3D: non si fa inclinando, si fa con la luce ──
   Le barre diventano cilindri (riflesso in alto, ombra sotto), la pista si
   scava nel fondo, e i riquadri dei numeri si staccano con un'ombra vera. */
/* ⚠ Le barre stanno scritte piu' sotto, dov'erano gia': scriverle qui non
   servirebbe a niente perche' a parita' di peso in CSS vince l'ultima. */
.tp-g1{
  background:linear-gradient(180deg, rgba(255,255,255,.028), rgba(0,0,0,.16));
  border:1px solid #232b45; border-radius:12px; padding:12px 14px 10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
.tp-num{
  background:linear-gradient(180deg,#1c2337,#111627); border-radius:12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 4px 10px rgba(0,0,0,.38);
}
.tp-cop{box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 3px 8px rgba(0,0,0,.3)}

@media (max-width: 900px){
  .tp-letto{margin-left:0; min-width:0; flex:1 1 100%}
  .tp-griglia{grid-template-columns:78px repeat(var(--n), minmax(26px,1fr))}
}


/* la riga che manda al banco: sta dov'era il cartello «catalogo vuoto», che
   adesso non serve più — le mosse arrivano dal Laboratorio da sole. */
.ar-banco-dove{
  background:#1a2340; border:1px solid #39406a; border-left:3px solid #6b7cff;
  border-radius:10px; padding:10px 14px; margin:0 0 12px;
  font-size:12.5px; line-height:1.65; color:#c8d0e8;
}
.ar-banco-dove b{color:#eef1fb}

/* ══ IL BANCO DELLE MOSSE ════════════════════════════════════════════════
   Il tasto sta sul Sol scelto, in tutt'e due le file. Quando ha delle mosse a
   mano si accende: se no non c'e' modo di sapere, guardando la schermata,
   quale Sol e' stato preparato e quale no. */
.sol-scelto{position:relative}
.sol-mosse-bt{
  display:block; margin:5px auto 0; cursor:pointer; font-family:inherit;
  border:1px solid #39406a; background:#1b2137; color:#a8b2ce;
  border-radius:20px; padding:2px 9px; font-size:10px; font-weight:700;
}
.sol-mosse-bt:hover{border-color:#6b7cff; color:#fff}
.sol-mosse-bt.scelte{border-color:#6b7cff; background:#2a3160; color:#cfd6ff}

.bm-ov{
  position:fixed; inset:0; z-index:120; background:rgba(8,10,18,.72);
  display:flex; align-items:center; justify-content:center; padding:22px;
}
.bm{
  width:min(760px, 96vw); max-height:88vh; overflow:auto;
  background:#151a2b; border:1px solid #2b3450; border-radius:16px;
  box-shadow:0 20px 60px rgba(0,0,0,.55); padding:18px 20px 20px; color:#e8ecf8;
}
.bm-top{display:flex; align-items:center; gap:12px; margin-bottom:8px}
.bm-top h3{margin:0; font-size:17px; flex:1}
.bm-nota{margin:0 0 14px; font-size:12px; color:#8b95b4; line-height:1.6}
.bm-slots{display:flex; flex-direction:column; gap:10px}
.bm-slot{
  display:grid; grid-template-columns:26px 1fr; gap:8px 10px; align-items:center;
  border:1px solid #262e49; border-radius:11px; padding:10px 12px; background:#131829;
}
.bm-slot.vuota{opacity:.62; border-style:dashed}
/* ⚠ IL NUMERO DA SOLO NON BASTA: i cinque posti non sono intercambiabili, e
   se il tetto non si vede uno cerca una G3 nella prima casella e conclude che
   manca dall'elenco. Numero sopra, tetto sotto, e il colore del grado. */
.bm-slot{grid-template-columns:46px 1fr}
.bm-slot-t{
  grid-row:span 2; align-self:start; margin-top:2px;
  display:flex; flex-direction:column; align-items:center; gap:1px;
}
.bm-slot-t b{
  width:26px; height:26px; border-radius:50%; background:#20263d; color:#8b95b4;
  display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800;
}
.bm-slot-t i{font-style:normal; font-size:9px; font-weight:800; letter-spacing:.2px}
.bm-slot.g1 .bm-slot-t i{color:#3fb27f}
.bm-slot.g2 .bm-slot-t i{color:#d6a13a}
.bm-slot.g3 .bm-slot-t i{color:#d2503f}
.bm-slot.g1{border-left:3px solid #3fb27f}
.bm-slot.g2{border-left:3px solid #d6a13a}
.bm-slot.g3{border-left:3px solid #d2503f}
.bm-sel{
  width:100%; background:#0e1220; border:1px solid #2f3757; color:#e8ecf8;
  border-radius:9px; padding:8px 10px; font-size:13px; font-family:inherit;
}
.bm-desc{grid-column:2; display:flex; flex-direction:column; gap:4px}
.bm-dati{font-size:11.5px; color:#8b95b4}
.bm-eff{
  --ec:#6b7cff; font-size:11.5px; color:#c8d0e8;
  border-left:3px solid var(--ec); padding-left:8px;
}
.bm-eff b{color:var(--ec)}
.bm-eff.vuoto{border-left-color:#2f3757; color:#6f7a97; font-style:italic}
/* ── I FILTRI DEL BANCO ─────────────────────────────────────────────────
   Una riga sola sopra le cinque caselle: tipo, grado, effetto. Sta IN ALTO e
   non di fianco perche' le caselle sono gia' larghe e una colonna di filtri le
   stringerebbe proprio mentre si legge cosa fa una mossa. */
.bm-filtri{display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  margin:12px 0 2px; padding:9px 11px; border-radius:12px;
  background:#0e1220; border:1px solid #2b3450}
.bm-f-t{font-size:11px; font-weight:800; letter-spacing:.6px; text-transform:uppercase; color:#7c86a8}
.bm-filtri .bm-f{
  background:#151b2e; color:#e7ebf6; border:1px solid #2f3757; border-radius:9px;
  padding:5px 9px; font-size:12.5px; font-family:inherit; cursor:pointer; max-width:230px;
}
.bm-filtri .bm-f:hover{border-color:#4a5490}
.bm-filtri .bm-f-eff{max-width:280px}
.bm-f-via{padding:4px 10px !important; font-size:12px !important}
/* quanti ne restano: e' l'unica risposta che conta dopo aver mosso un filtro */
.bm-f-n{margin-left:auto; font-size:11.5px; color:#7c86a8; font-weight:700}
.bm-f-n.zero{color:#f0a250}

/* la riga che dice quale strategia e' appena stata messa */
.bm-piano{margin:10px 2px 0;font-size:12.5px;color:#cdd6ea;line-height:1.5}
.bm-piano:empty{display:none}
.bm-piano i{opacity:.75}
.bm-piano-no{color:#f0c477}
.bm-foot{display:flex; gap:10px; justify-content:flex-end; margin-top:16px; flex-wrap:wrap}


/* ══ NIENTE DI PRONTO ═══════════════════════════════════════════════════
   Il cartello che compare quando tutte le mosse sono in ricarica. Deve
   spiegare PRIMA di offrire il tasto: senza la riga, un «Passa il turno» in
   mezzo a quattro mosse spente sembra una resa. */
.sol-passa{
  display:flex; align-items:center; gap:12px; flex-wrap:wrap;
  background:#2a2313; border:1px solid #6b5a22; border-radius:10px;
  padding:9px 13px; margin-bottom:9px; font-size:12.5px; color:#f0dfa8;
}
.sol-passa b{color:#ffce4a}
.sol-passa .btn{margin-left:auto}


/* IL VERDE ACQUA DELLE GX, scritto una volta.
   ⚠ Prima era un viola ripetuto in cinque punti, ognuno col suo esadecimale:
   cambiarlo voleva dire trovarli tutti e cinque, e dimenticarne uno vuol dire
   una GX verde acqua in quattro schermate e viola nella quinta. */
:root{ --gx:#19c2ad; --gx-chiaro:#8ff0e2; --gx-scuro:#0c3d38; }

/* ══ LA PASSIVA IN ARENA ════════════════════════════════════════════════
   ⚠ La luce che gira lungo il bordo, come l'ha chiesta Andrea. Non è un
   ornamento: è l'unico modo di dire «questa c'è ma non ti aspetta». Un tasto
   spento direbbe «in ricarica», e una passiva tolta dalla barra non si
   saprebbe di averla.
   Si fa con un conico che ruota dietro alla carta: il bordo è il conico che si
   vede, il dentro è la carta che lo copre. */
/* ⚠ UNA ANIMAZIONE SOLA. Prima ce n'erano due — una girava l'angolo del
   conico, l'altra il riquadro come ripiego — e il browser le faceva tutt'e
   due: la luce girava il doppio e traballava. Il ripiego non e' una scelta che
   fa il browser, e' una cosa che avevo dato per scontata guardando il codice
   invece dello schermo.
   Questa gira un QUADRATO GRANDE col conico dentro, tagliato dal riquadro:
   funziona ovunque, senza @property e senza ripieghi. */
@keyframes gxgira{to{transform:translate(-50%,-50%) rotate(360deg)}}
.sol-mossa.gx{
  position:relative; cursor:default; overflow:hidden;
  border-color:var(--gx);
}
.sol-mossa.gx .sol-mossa-luce{
  position:absolute; top:50%; left:50%; width:260%; aspect-ratio:1; z-index:0;
  transform:translate(-50%,-50%);
  background:conic-gradient(transparent 0deg, var(--gx-chiaro) 34deg, var(--gx) 62deg, transparent 96deg, transparent 360deg);
  animation:gxgira 2.6s linear infinite;
}
/* il dentro copre il conico e lascia vedere solo il bordo */
.sol-mossa.gx::after{
  content:''; position:absolute; inset:2px; z-index:1; border-radius:inherit;
  background:#10262a;
}
.sol-mossa.gx > *{position:relative; z-index:2}
.sol-mossa.gx .sol-mossa-g{background:var(--gx); color:#04211d}
.sol-gx-nota{color:var(--gx-chiaro); font-weight:700}
/* chi ha il movimento ridotto vede il bordo acceso e fermo: l'informazione
   resta, il giramento no */
@media (prefers-reduced-motion: reduce){
  .sol-mossa.gx .sol-mossa-luce{animation:none; background:var(--gx)}
}

/* nel catalogo: la pastiglia della GX e la sua cartella */
.cat-g.g4{background:var(--gx-scuro); border-color:var(--gx); color:var(--gx-chiaro)}


/* ══ L'ARENA — il banco di prova ═════════════════════════════════════════
   Una schermata sola: formato, le due squadre, gioca. Il semi-3D sta nelle
   TESSERE — luce in cima, spessore sotto, e si sollevano girandosi appena
   verso di te quando ci passi sopra. Non è una scena 3D vera: una schermata
   che si guarda per SCEGLIERE deve restare leggibile. */
.ar{display:flex; flex-direction:column; gap:16px; perspective:1200px}

.ar-barra{
  display:flex; align-items:flex-end; gap:14px; flex-wrap:wrap;
  background:linear-gradient(180deg,#1b2138,#151a2b);
  border:1px solid #2b3450; border-radius:14px; padding:12px 14px;
  box-shadow:0 8px 20px rgba(0,0,0,.28);
}
.ar-formati{display:flex; gap:8px; flex-wrap:wrap}
.ar-f{
  display:flex; flex-direction:column; align-items:center; gap:1px; cursor:pointer;
  font-family:inherit; border:1px solid #2f3757; border-radius:11px;
  background:linear-gradient(180deg,#20263d,#171d31); color:#a8b2ce;
  padding:7px 14px; box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 2px 0 rgba(0,0,0,.35);
  transition:transform .12s, box-shadow .12s, filter .12s;
}
.ar-f b{font-size:14px; letter-spacing:.4px}
.ar-f small{font-size:9.5px; color:#6f7a97; text-transform:uppercase; letter-spacing:.4px}
.ar-f:hover{transform:translateY(-2px); filter:brightness(1.2)}
.ar-f.on{
  border-color:#6b7cff; color:#fff;
  background:linear-gradient(180deg,#3a4290,#2a3160);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 3px 0 #1b2050, 0 0 0 1px rgba(107,124,255,.4);
}
.ar-f.on small{color:#b9c2ff}
.ar-campo{display:flex; flex-direction:column; gap:3px}
.ar-campo > span{font-size:10px; text-transform:uppercase; letter-spacing:.5px; color:#7f8aa8}
.ar-campo input, .ar-campo select{
  background:#0e1220; border:1px solid #2f3757; color:#e8ecf8; border-radius:9px;
  padding:7px 10px; font-size:13px; font-family:inherit; width:88px;
}
.ar-campo.largo select{width:190px}
.ar-gioca{
  margin-left:auto; cursor:pointer; font-family:inherit;
  border:0; border-radius:12px; padding:12px 30px; font-size:16px; font-weight:900; letter-spacing:.8px;
  background:linear-gradient(180deg,#4ade9a,#1f9c63); color:#04231a;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 4px 0 #12603d, 0 8px 18px rgba(31,156,99,.3);
  transition:transform .1s, box-shadow .1s;
}
.ar-gioca:hover{transform:translateY(-2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.35), 0 6px 0 #12603d, 0 10px 22px rgba(31,156,99,.36)}
.ar-gioca:active{transform:translateY(2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.25), 0 2px 0 #12603d}
.ar-gioca.spenta{
  background:#232a44; color:#5f6982; cursor:not-allowed;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 3px 0 #171d31;
}
.ar-aiuto{margin:0; font-size:12px; color:#8b95b4; line-height:1.7}
.ar-aiuto b{color:#c8d0e8}

/* ── il campo: le due squadre, e il VS in mezzo ── */
.ar-campo-gioco{
  display:grid; grid-template-columns:1fr auto 1fr; gap:14px; align-items:stretch;
}
.ar-vs{
  align-self:center; font-size:15px; font-weight:900; letter-spacing:2px; color:#4d5878;
  writing-mode:vertical-rl; padding:0 2px;
}
.ar-fila{
  border:1px solid #2b3450; border-radius:14px; padding:12px 13px 14px;
  background:linear-gradient(180deg,#171d31,#141929);
  box-shadow:0 8px 20px rgba(0,0,0,.26);
}
.ar-fila.tuo{border-top:3px solid #4aa8e8}
.ar-fila.loro{border-top:3px solid #e0503f}
.ar-fila-t{display:flex; align-items:center; gap:9px; margin-bottom:11px; flex-wrap:wrap}
.ar-fila-t b{font-size:13.5px; color:#e8ecf8}
.ar-fila-t > span{font-size:11px; color:#6f7a97; margin-right:auto}
.ar-mini{
  background:#20263d; border:1px solid #39406a; color:#a8b2ce; border-radius:8px;
  padding:3px 10px; font-size:11px; cursor:pointer; font-family:inherit;
}
.ar-mini:hover{background:#2a3150; color:#fff}
.ar-carte{display:grid; grid-template-columns:repeat(auto-fill,minmax(146px,1fr)); gap:11px}

/* LE TESSERE. Il rilievo è tutto qui: si sollevano e si girano APPENA verso di
   te — sei gradi, non venti: di più e il nome comincia a storcersi. */
.ar-carta{
  --tc:#39406a; position:relative; border-radius:14px; padding:10px 10px 11px;
  border:1px solid color-mix(in srgb, var(--tc) 45%, #2b3450);
  background:linear-gradient(180deg, color-mix(in srgb, var(--tc) 26%, #1b2138), #12172a);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10), 0 4px 0 rgba(0,0,0,.42), 0 8px 18px rgba(0,0,0,.3);
  display:flex; flex-direction:column; align-items:center; gap:5px;
  transition:transform .16s ease, box-shadow .16s ease;
  transform-style:preserve-3d;
}
.ar-carta:hover{
  transform:translateY(-5px) rotateX(6deg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 8px 0 rgba(0,0,0,.42), 0 16px 30px rgba(0,0,0,.42);
}
.ar-posto{
  position:absolute; top:7px; left:8px; width:19px; height:19px; border-radius:50%;
  background:rgba(0,0,0,.42); color:#c8d0e8; font-size:10.5px; font-weight:800;
  display:flex; align-items:center; justify-content:center;
}
.ar-via{
  position:absolute; top:5px; right:5px; width:21px; height:21px; border-radius:50%;
  background:rgba(0,0,0,.42); border:0; color:#8b95b4; cursor:pointer; font-size:11px;
  opacity:0; transition:opacity .12s; font-family:inherit;
}
.ar-carta:hover .ar-via{opacity:1}
.ar-via:hover{background:#8a2e22; color:#fff}
.ar-ritratto{
  background:none; border:0; cursor:pointer; padding:0; width:100%;
  display:flex; align-items:center; justify-content:center; height:78px;
}
/* lo sprite esce dal bordo: è quello che dà la profondità vera */
.ar-ritratto img{
  max-width:100%; max-height:96px; margin-top:-14px;
  image-rendering:auto;
  filter:drop-shadow(0 8px 8px rgba(0,0,0,.55));
  transition:transform .16s ease;
}
.ar-carta:hover .ar-ritratto img{transform:translateY(-4px) scale(1.06)}
.ar-nome{font-size:12.5px; font-weight:800; color:#eef1fb; text-align:center; line-height:1.25}
.ar-tipi{display:flex; gap:4px; flex-wrap:wrap; justify-content:center}
.ar-tipi i{
  font-style:normal; font-size:9px; font-weight:800; color:#fff; border-radius:20px;
  padding:1px 7px; text-transform:uppercase; letter-spacing:.3px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.25);
}
.ar-mosse{
  width:100%; margin-top:2px; cursor:pointer; font-family:inherit;
  border:1px solid #2f3757; background:#131829; color:#8b95b4;
  border-radius:9px; padding:5px 8px; font-size:10.5px; font-weight:700;
}
.ar-mosse:hover{border-color:#6b7cff; color:#fff}
.ar-mosse.scelte{border-color:#6b7cff; background:#232a55; color:#cfd6ff}

.ar-carta.vuota{
  cursor:pointer; font-family:inherit; justify-content:center; min-height:172px;
  border-style:dashed; border-color:#2f3757; background:#111624; color:#6f7a97;
  box-shadow:none;
}
.ar-carta.vuota:hover{border-color:#6b7cff; color:#c8d0e8; transform:translateY(-3px)}
.ar-carta.vuota b{font-size:12px}
.ar-carta.vuota small{font-size:10.5px}
.ar-piu{font-size:30px; line-height:1; color:#39406a; font-weight:300}
.ar-carta.vuota:hover .ar-piu{color:#6b7cff}

/* ── il pop-up degli Animei ── */
.arp-ov{
  position:fixed; inset:0; z-index:130; background:rgba(8,10,18,.74);
  display:flex; align-items:center; justify-content:center; padding:22px;
}
.arp{
  width:min(940px,96vw); max-height:88vh; display:flex; flex-direction:column;
  background:#151a2b; border:1px solid #2b3450; border-radius:16px;
  box-shadow:0 22px 60px rgba(0,0,0,.6); color:#e8ecf8; overflow:hidden;
}
.arp-top{display:flex; align-items:center; gap:12px; padding:14px 16px 10px}
.arp-top h3{margin:0; font-size:15px; flex:1; font-weight:800}
.arp-tuo{color:#8fd4ff}
.arp-loro{color:#ffab9c}
.arp-cerca{padding:0 16px 10px; display:flex; flex-direction:column; gap:8px}
.arp-input{
  width:100%; background:#0e1220; border:1px solid #2f3757; color:#e8ecf8;
  border-radius:10px; padding:9px 12px; font-size:13.5px; font-family:inherit;
}
.arp-tipi{display:flex; gap:5px; flex-wrap:wrap}
.arp-t{
  --tc:#39406a; cursor:pointer; font-family:inherit; font-size:10.5px; font-weight:700;
  border:1px solid #2f3757; background:#1b2137; color:#a8b2ce;
  border-radius:20px; padding:2px 9px;
}
.arp-t:hover{border-color:var(--tc)}
.arp-t.on{background:var(--tc); border-color:var(--tc); color:#fff}
.arp-conto{padding:0 16px 8px; font-size:11px; color:#6f7a97}
.arp-griglia{
  overflow:auto; padding:0 16px 16px;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(196px,1fr)); gap:8px;
}
.arp-c{
  --tc:#39406a; display:flex; align-items:center; gap:9px; cursor:pointer; text-align:left;
  font-family:inherit; border-radius:11px; padding:6px 9px 6px 6px;
  border:1px solid #262e49; border-left:3px solid var(--tc);
  background:linear-gradient(90deg, color-mix(in srgb, var(--tc) 16%, #131829), #131829);
  color:#e8ecf8; transition:transform .1s, border-color .1s, background .1s;
}
.arp-c:hover{transform:translateX(2px); border-color:var(--tc); background:linear-gradient(90deg, color-mix(in srgb, var(--tc) 30%, #1b2237), #1b2237)}
.arp-c img{width:46px; height:46px; object-fit:contain; flex:0 0 46px; filter:drop-shadow(0 3px 4px rgba(0,0,0,.5))}
.arp-senza{
  width:46px; height:46px; flex:0 0 46px; display:flex; align-items:center; justify-content:center;
  background:#1b2137; border-radius:10px; color:#4d5878; font-size:18px;
}
.arp-n{display:flex; flex-direction:column; gap:2px; min-width:0}
.arp-n b{font-size:12.5px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.arp-n small{font-size:10px; color:#6f7a97}
.arp-tt{display:flex; gap:3px; flex-wrap:wrap; margin-top:1px}
.arp-tt i{font-style:normal; font-size:8.5px; font-weight:800; color:#fff; border-radius:20px; padding:0 6px}

@media (max-width: 1000px){
  .ar-campo-gioco{grid-template-columns:1fr}
  .ar-vs{writing-mode:horizontal-tb; text-align:center}
}


/* ══ LA SCHEDA DELLA MOSSA ══════════════════════════════════════════════
   Sta SOPRA la fila delle mosse, non di lato: di lato c'è il racconto della
   battaglia, e coprirlo mentre scegli vuol dire non vedere più cosa è appena
   successo — che è metà di quello su cui stai decidendo. */
.sol-comandi{position:relative}
.sol-scheda{
  position:absolute; left:0; right:0; bottom:calc(100% + 8px); z-index:20;
  background:linear-gradient(180deg,#1b2138,#151a2b);
  border:1px solid #39406a; border-radius:12px; padding:10px 12px 11px;
  box-shadow:0 12px 28px rgba(0,0,0,.5);
  display:flex; flex-direction:column; gap:7px; color:#e8ecf8;
  pointer-events:none;
}
/* quella INCHIODATA si può toccare: ha la ✕ e il bordo acceso */
.sol-scheda.fissa{pointer-events:auto; border-color:#6b7cff; box-shadow:0 12px 28px rgba(0,0,0,.5), 0 0 0 1px rgba(107,124,255,.35)}
.sol-scheda-t{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.sol-scheda-t b{font-size:14px}
.sol-scheda-g{
  font-size:10px; font-weight:800; border-radius:6px; padding:1px 7px;
  background:#20263d; border:1px solid #39406a; color:#c8d0e8;
}
.sol-scheda-g.g1{border-color:#3fb27f; color:#8fe8bd}
.sol-scheda-g.g2{border-color:#d6a13a; color:#f0d79a}
.sol-scheda-g.g3{border-color:#d2503f; color:#ffb0a3}
.sol-scheda-g.gx{border-color:var(--gx,#19c2ad); color:var(--gx-chiaro,#8ff0e2)}
.sol-scheda-x{
  margin-left:auto; background:#20263d; border:1px solid #39406a; color:#8b95b4;
  border-radius:7px; width:22px; height:22px; cursor:pointer; font-family:inherit; font-size:11px;
}
.sol-scheda-x:hover{background:#8a2e22; color:#fff}
.sol-scheda-n{display:flex; gap:14px; flex-wrap:wrap; font-size:11.5px; color:#8b95b4}
.sol-scheda-n b{color:#e8ecf8}
.sol-scheda-d{margin:0; font-size:12px; color:#c8d0e8; line-height:1.5}
.sol-scheda-e{display:flex; flex-direction:column; gap:4px}

/* la «i» nell'angolo della mossa */
.sol-mossa{position:relative}
.sol-i{
  position:absolute; top:3px; right:3px; z-index:2;
  width:16px; height:16px; border-radius:50%; cursor:pointer;
  background:rgba(0,0,0,.34); border:1px solid rgba(255,255,255,.18);
  color:#a8b2ce; font-size:10px; font-weight:800; font-style:italic;
  display:flex; align-items:center; justify-content:center; line-height:1;
}
.sol-i:hover{background:#6b7cff; border-color:#8fa0ff; color:#fff}
.sol-mossa.spenta .sol-i{opacity:.5}


/* ══ I GRAFICI DEL TIPO ══════════════════════════════════════════════════
   Barre e basta: nessuna libreria, nessun disegno. Quello che si guarda in un
   grafico così non è il numero assoluto — è CHI SVETTA — e per dirlo bastano
   una riga colorata e un numero in fondo. */
.tp-graf{display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:18px; margin-top:4px}
.tp-g1 h5{
  margin:0 0 8px; font-size:10.5px; letter-spacing:.7px; text-transform:uppercase;
  color:#7f8aa8; font-weight:800;
}
.tp-b{
  --bc:#6b7cff;
  display:grid; grid-template-columns:88px 1fr 26px; align-items:center; gap:8px;
  margin-bottom:5px; font-size:11.5px;
}
.tp-b-e{color:#c8d0e8; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
/* ⚠ IL 3D NON SI FA INCLINANDO, SI FA CON LA LUCE. La pista si scava nel
   fondo (ombra dentro, in alto), la barra prende un riflesso sul dorso e
   un'ombra sotto il ventre: da rettangolo diventa cilindro. Costa zero - sono
   due gradienti - e si legge meglio di prima, non solo piu' bello: il riflesso
   dice dov'e' il pieno anche quando la barra e' corta. */
.tp-b-l{display:block; height:13px; border-radius:20px; overflow:hidden;
  background:linear-gradient(180deg,#070a14,#141a2d);
  box-shadow:inset 0 2px 5px rgba(0,0,0,.8), inset 0 -1px 0 rgba(255,255,255,.05)}
.tp-b-l i{
  display:block; height:100%; border-radius:20px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.32), rgba(255,255,255,.05) 46%, rgba(0,0,0,.26)),
    linear-gradient(90deg, color-mix(in srgb, var(--bc) 52%, #000), var(--bc));
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.45), inset 0 -2px 3px rgba(0,0,0,.35),
    0 0 11px color-mix(in srgb, var(--bc) 50%, transparent), 0 1px 2px rgba(0,0,0,.55);
  transition:width .45s cubic-bezier(.2,.8,.25,1);
}
.tp-b-n{color:#eef1fb; font-weight:800; font-size:12px; text-align:right}
.tp-b small{
  grid-column:2 / 4; font-size:9.5px; color:#6f7a97; margin-top:-3px; margin-bottom:2px;
}
.tp-blocco.graf{border-top:1px solid #262e49; padding-top:14px}
.tp-blocco.graf .tp-numeri{margin-top:12px}
.tp-nota.confronto{
  margin-top:10px; padding:9px 12px; border-left:3px solid #6b7cff; background:#171d31;
  border-radius:0 9px 9px 0; color:#8b95b4;
}
.tp-nota.confronto b{color:#c8d0e8}

/* le istruzioni scritte nel Laboratorio */
.tp-blocco.istr{border-top:1px solid #262e49; padding-top:14px}
.tp-istr{
  margin:0; font-size:13px; line-height:1.65; color:#dfe5f5;
  background:#131829; border:1px solid #262e49; border-left:3px solid var(--tc,#6b7cff);
  border-radius:0 10px 10px 0; padding:11px 14px;
}

/* il pulsante che rifà la foto dell'arena sul link del telefono (Duel Solaria) */
.nav-duel{display:flex;align-items:center;justify-content:center;gap:6px;margin:-4px 0 10px;padding:9px 10px;
  border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;color:#f5c451;
  background:rgba(245,196,81,.08);border:1px solid rgba(245,196,81,.35);transition:background .14s}
.nav-duel:hover{background:rgba(245,196,81,.16)}
.nav-musica{display:flex;align-items:center;justify-content:center;gap:6px;margin:-4px 0 10px;padding:8px 10px;border-radius:12px;
  border:1px solid rgba(140,160,255,.18);background:rgba(255,255,255,.04);color:#c9d1e8;font-size:12.5px;font-weight:700;cursor:pointer;user-select:none}
.nav-musica:hover{background:rgba(120,150,255,.14)}

/* ── MENTRE SI SCEGLIE IL BERSAGLIO: chi non si può puntare si spegne, e chi
   si può (con la Minaccia addosso a uno, solo lui) si accende. Andrea:
   «illumina solo il bersaglio con minaccia, così è facile». ────────────── */
.scelta-bersaglio .sol-cas:not(.mirabile), .scelta-bersaglio .sol-posto:not(.mirabile){
  opacity:.38; filter:grayscale(.55) brightness(.75); transition:opacity .18s, filter .18s}
/* ⚠ NIENTE MOVIMENTO (Andrea: «quando scelgo il personaggio non me li fare
   muovere, sennò è difficile»): il bersaglio si riconosce dalla luce che
   pulsa, non da un salto. Toccare una cosa che si sposta è il modo più facile
   di toccare quella sbagliata. */
.scelta-bersaglio .sol-cas.mirabile, .scelta-bersaglio .sol-posto.mirabile{
  opacity:1; filter:none; animation:solMira 1.2s ease-in-out infinite}
.scelta-bersaglio .sol-cas.mirabile .bt-mini{box-shadow:0 0 0 2px #ff5f70, 0 0 18px rgba(255,95,112,.75)}
@keyframes solMira{50%{filter:brightness(1.25) drop-shadow(0 0 8px rgba(255,95,112,.9))}}

/* ── IL BANCO DELLE MOSSE CON LE TESSERE DEL CATALOGO ──────────────────────
   Andrea: «quando scelgo le mosse nell'arena, l'elenco visualizzato come
   l'elenco mosse del Catalogo combattimento, identico da PC e da mobile». */
.bm-slot-corpo{grid-column:2; display:flex; flex-direction:column; gap:8px; min-width:0}
.bm-slot-riga{display:flex; gap:6px; align-items:center}
.bm-slot-riga .bm-sel{flex:1; min-width:0}
.bm-scegli.on{background:#6b7cff; color:#fff; border-color:#6b7cff}
.bm-via{flex:0 0 auto}
.bm-slot.scelta{border-color:#6b7cff; box-shadow:0 0 0 1px #6b7cff inset}
.bm-tessera .cat-m{cursor:default}
.bm-elenco{margin-top:12px; border-top:1px solid #2b3450; padding-top:10px}
.bm-elenco-t{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:12.5px; color:#aab3d0; margin-bottom:8px}
.bm-elenco-t .btn{margin-left:auto}
.bm-griglia{display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:10px}
.bm-voce{cursor:pointer; border-radius:12px; transition:transform .12s ease, box-shadow .12s ease}
.bm-voce:hover{transform:translateY(-1px)}
.bm-voce .cat-m{cursor:pointer; height:100%; box-sizing:border-box}
.bm-voce.scelta .cat-m{border-color:#6b7cff; box-shadow:0 0 0 2px rgba(107,124,255,.45)}
.bm-eff em{font-style:normal; color:#8b95b4}
.cat-eff-dove{color:#8b95b4}
.cat-eff-cosa{color:#dfe5fb; flex:1 1 100%}
