:root { color-scheme: light dark; --bg:#f6f7f9; --fg:#1b1f24; --card:#fff; --accent:#2d6cdf; --line:#d9dde3; }
@media (prefers-color-scheme: dark) {
  :root { --bg:#14171b; --fg:#e8eaed; --card:#1e2227; --line:#323840; }
}
* { box-sizing: border-box; }
body { margin:0; font:16px/1.5 system-ui,sans-serif; background:var(--bg); color:var(--fg); }
main { max-width:56rem; margin:0 auto; padding:1.5rem 1rem; }
h1 { margin-top:0; }
.cards { display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(14rem,1fr)); }
.card { display:flex; flex-direction:column; align-items:center; gap:.5rem; padding:1.5rem 1rem;
  background:var(--card); border:1px solid var(--line); border-radius:1rem; color:inherit;
  text-decoration:none; text-align:center; min-height:9rem; justify-content:center;
  transition:transform .15s ease; }
.card svg { width:3rem; height:3rem; stroke:var(--accent); fill:none; stroke-width:1.6; }
.card:hover { border-color:var(--accent); }
.card:active { transform:scale(.96); }
.card.big { font-size:1.2rem; font-weight:600; min-height:11rem; }
.login { max-width:22rem; margin:20vh auto 0; padding:1.5rem; background:var(--card);
  border:1px solid var(--line); border-radius:1rem; }
.login input, .login button { width:100%; font:inherit; padding:.7rem; margin-top:.75rem;
  border-radius:.6rem; border:1px solid var(--line); }
.login button { background:var(--accent); color:#fff; border:0; cursor:pointer; }
.error { color:#c0392b; margin:.5rem 0 0; }
@media (prefers-reduced-motion: reduce) {
  .card { transition:none; }
  .card:active { transform:none; }
}
.button { display:inline-block; padding:.8rem 1.4rem; background:var(--accent); color:#fff;
  border-radius:.6rem; text-decoration:none; font-weight:600; }
.banner { padding:.7rem 1rem; border-radius:.6rem; margin:.75rem 0; }
.banner:empty { display:none; }
.error-banner { background:#fdecea; color:#8a1f11; }
.warn-banner { background:#fff4d6; color:#6b4b00; }
@media (prefers-color-scheme: dark) {
  .error-banner { background:#3b1d1a; color:#f5b7b1; }
  .warn-banner { background:#3a3012; color:#f3dc9a; }
}
.stats { display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); margin:1rem 0; }
.stat { background:var(--card); border:1px solid var(--line); border-radius:1rem; padding:1rem; }
.stat h2 { font-size:1rem; margin:0 0 .25rem; }
.stat p { margin:.1rem 0; }
.stat .total { font-size:1.6rem; font-weight:700; }
.stat .sport, .muted { opacity:.75; font-size:.9rem; }
.rows { list-style:none; padding:0; margin:0; }
.rows li { background:var(--card); border:1px solid var(--line); border-radius:.8rem;
  padding:.7rem 1rem; margin-bottom:.5rem; }
.rows a { color:var(--accent); }

/* pagina di import */
.btn, button.btn { display:inline-flex; align-items:center; justify-content:center; min-height:44px;
  padding:.6rem 1.2rem; font:inherit; font-weight:600; color:var(--fg); background:var(--card);
  border:1px solid var(--line); border-radius:.6rem; cursor:pointer; }
.btn.primary { background:var(--accent); color:#fff; border-color:var(--accent); }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.drop-zone { position:relative; display:flex; flex-direction:column; align-items:center; gap:.25rem;
  justify-content:center; min-height:9rem; padding:1.5rem 1rem; text-align:center; cursor:pointer;
  background:var(--card); border:2px dashed var(--line); border-radius:1rem; }
.drop-zone.over, .drop-zone:focus-within { border-color:var(--accent); }
.drop-zone.busy { opacity:.6; cursor:progress; }
.drop-zone input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.drop-title { font-weight:600; font-size:1.1rem; }
.status { min-height:1.5rem; margin:.5rem 0; }
.import-cards { display:grid; gap:1rem; grid-template-columns:1fr; margin:1rem 0; }
@media (min-width: 640px) { .import-cards { grid-template-columns:repeat(2,1fr); } }
.file-card { background:var(--card); border:1px solid var(--line); border-radius:1rem; padding:1rem;
  min-width:0; overflow-wrap:anywhere; }
.file-card.file-error { border-color:#c0392b; background:#fdecea; color:#8a1f11; }
@media (prefers-color-scheme: dark) { .file-card.file-error { background:#3b1d1a; color:#f5b7b1; } }
.file-card h2 { font-size:1.05rem; margin:0; }
.card-head { display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; margin-bottom:.5rem; }
.tag { padding:.1rem .6rem; border-radius:1rem; background:var(--accent); color:#fff; font-size:.85rem; font-weight:600; }
.counts { list-style:none; padding:0; margin:.25rem 0 .5rem; }
.uncat summary { cursor:pointer; min-height:44px; display:flex; align-items:center; font-weight:600; }
.uncat .rows li { padding:.5rem .75rem; }
.balance.ok { color:#1e7a46; font-weight:600; }
.balance.diff { color:#c0392b; font-weight:600; }
.recalc { display:flex; gap:.5rem; align-items:flex-end; flex-wrap:wrap; margin:.5rem 0; }
.recalc label { display:flex; flex-direction:column; flex:1 1 12rem; font-size:.9rem; gap:.25rem; }
.recalc input { min-height:44px; font:inherit; padding:.5rem .7rem; border-radius:.6rem;
  border:1px solid var(--line); background:var(--bg); color:var(--fg); }
.actions { display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.75rem; }
.actions .btn { flex:1 1 8rem; }
.ok-banner { background:#e3f4ea; color:#14532d; }
.info-banner { background:#e8eefb; color:#1d3a73; }
@media (prefers-color-scheme: dark) {
  .ok-banner { background:#18301f; color:#a7e3bd; }
  .info-banner { background:#1b2740; color:#b6c9f2; }
}
.link-section { margin:1.5rem 0; }
.link-section .btn { width:100%; }
@media (min-width: 640px) { .link-section .btn { width:auto; } }
