/* Keep Growing — global styles */
:root {
  --gold: #F6C23E; --gold-dim: rgba(246,194,62,0.35);
  --gold-glow: 0 0 20px rgba(246,194,62,0.45), 0 0 40px rgba(246,194,62,0.2);
  --blue: #2B6CB0; --blue-deep: #0D1B4B;
  --bg-page: #030A18;
  --glass: rgba(15,30,80,0.45); --glass-lt: rgba(255,255,255,0.05); --glass-bd: rgba(255,255,255,0.1);
  --blur: blur(22px); --shadow: 0 24px 64px rgba(0,0,0,0.6);
  --r-lg: 24px; --r-md: 16px; --r-sm: 10px;
  --green: #38A169; --orange: #ED8936; --red: #E53E3E;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  min-height: 100vh; background: var(--bg-page); color: #fff;
  font-family: 'Outfit', system-ui, sans-serif;
  display: flex; flex-direction: column; align-items: center;
  overflow-x: hidden; padding-bottom: 40px;
}

a { color: inherit; text-decoration: none; }
a.link { color: var(--gold); }
a.link:hover { text-decoration: underline; }

/* Backgrounds */
.bg-scene { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.bg-blob { position: absolute; border-radius: 50%; filter: blur(80px); opacity: 0.5; }
.bg-blob-1 { width: 70vw; height: 70vw; top: -15%; left: -10%;
  background: radial-gradient(ellipse, rgba(43,108,176,0.55), transparent 70%); }
.bg-blob-2 { width: 55vw; height: 55vw; bottom: -10%; right: -5%;
  background: radial-gradient(ellipse, rgba(13,27,75,0.75), transparent 70%); }
body > *:not(.bg-scene) { position: relative; z-index: 1; }

/* Glass */
.glass-panel {
  background: var(--glass); backdrop-filter: var(--blur); -webkit-backdrop-filter: var(--blur);
  border: 1px solid var(--glass-bd); border-radius: var(--r-lg);
  padding: 24px; box-shadow: var(--shadow); width: 100%;
  margin-bottom: 18px;
}

/* Top bar */
.top-bar {
  width: 100%; padding: 14px 24px; display: flex; align-items: center;
  gap: 16px; background: rgba(3,10,24,0.8); border-bottom: 1px solid var(--glass-bd);
  position: sticky; top: 0; z-index: 200; backdrop-filter: var(--blur);
}
.brand {
  font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; letter-spacing: 3px;
  background: linear-gradient(135deg, #F6C23E, #C9962D);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.sep { color: rgba(255,255,255,0.25); }
.top-nav { margin-left: auto; display: flex; gap: 16px; align-items: center; }
.top-nav a { color: rgba(255,255,255,0.7); font-size: 0.9rem; font-weight: 500; }
.top-nav a:hover { color: #fff; }

/* Page */
.page { width: 100%; max-width: 1100px; padding: 24px 20px; }
.page.narrow { max-width: 560px; }
.page-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
.page-head h1 { font-size: 1.8rem; font-weight: 700; }
.page-head h1 small { font-size: 1rem; font-weight: 400; }

/* Buttons */
.btn-gold {
  display: inline-block; padding: 12px 22px; border: none;
  border-radius: var(--r-md); background: linear-gradient(135deg, #F6C23E, #C9962D);
  color: #030A18; font-weight: 800; letter-spacing: 0.5px; cursor: pointer;
  font-family: inherit; transition: all 0.2s;
}
.btn-gold:hover { transform: translateY(-2px); box-shadow: var(--gold-glow); }
.btn-gold.sm { padding: 8px 14px; font-size: 0.85rem; }
.btn-ghost {
  display: inline-block; padding: 10px 16px; border-radius: var(--r-md);
  background: rgba(255,255,255,0.06); border: 1px solid var(--glass-bd);
  color: rgba(255,255,255,0.75); font-weight: 600; cursor: pointer; transition: all 0.2s;
}
.btn-ghost:hover { background: rgba(255,255,255,0.12); color: #fff; }
.btn-esci { margin-left: auto; padding: 6px 14px; border-radius: 8px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--glass-bd);
  color: rgba(255,255,255,0.5); font-size: 0.75rem; font-weight: 600;
  font-family: inherit; }

/* Forms */
.form-stack { display: flex; flex-direction: column; gap: 14px; }
.form-stack label { display: flex; flex-direction: column; gap: 6px;
  font-size: 0.85rem; color: rgba(255,255,255,0.65); font-weight: 600; }
.form-stack input, .form-stack select, .form-stack textarea {
  padding: 12px 14px; background: rgba(255,255,255,0.04);
  border: 1px solid var(--glass-bd); border-radius: var(--r-md);
  color: #fff; font-family: inherit; font-size: 1rem; outline: none;
  transition: border-color 0.2s;
}
.form-stack input:focus, .form-stack select:focus, .form-stack textarea:focus { border-color: var(--gold-dim); }
.row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 600px) { .row { grid-template-columns: 1fr; } }

/* Auth */
.auth-wrap { display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; min-height: 100vh; padding: 24px; width: 100%; }
.auth-form { max-width: 380px; display: flex; flex-direction: column; gap: 16px; padding: 36px; }
.auth-form h2 { font-size: 1.6rem; text-align: center; }
.auth-form .hint { font-size: 0.85rem; color: rgba(255,255,255,0.5); text-align: center; }
.auth-form .brand-mini { text-align: center; font-size: 0.7rem; letter-spacing: 3px;
  color: rgba(255,255,255,0.45); text-transform: uppercase; }
.auth-form input { padding: 14px 18px; background: rgba(255,255,255,0.05);
  border: 1px solid var(--glass-bd); border-radius: var(--r-md); color: #fff;
  font-family: inherit; font-size: 1rem; outline: none; }
.auth-form button { margin-top: 8px; }

/* Landing */
.landing { padding: 80px 24px; max-width: 720px; text-align: center; }
.landing-badge { display: inline-block; font-family: 'Bebas Neue', sans-serif;
  font-size: 2rem; letter-spacing: 6px;
  background: linear-gradient(135deg, #F6C23E, #C9962D);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.landing-logo { display: block; margin: 24px auto; height: 200px; width: auto;
  max-width: 100%; object-fit: contain;
  filter: drop-shadow(0 6px 18px rgba(0,0,0,0.45)); }
.landing h1 { font-size: 2.6rem; line-height: 1.15; margin: 20px 0; }
.landing .lead { font-size: 1.1rem; color: rgba(255,255,255,0.7); margin-bottom: 28px; }
.landing .hint { color: rgba(255,255,255,0.4); font-size: 0.85rem; margin-top: 24px; }

/* Cards / lists */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 800px) { .grid-2 { grid-template-columns: 1fr; } }

.card { background: var(--glass); border: 1px solid var(--glass-bd);
  border-radius: var(--r-md); padding: 16px; }
.card-hd { display: flex; justify-content: space-between; margin-bottom: 8px; }
.card-bd code { font-size: 0.8rem; color: rgba(255,255,255,0.5); }
.card-ft { display: flex; gap: 12px; margin-top: 12px; font-size: 0.85rem; }
.tag { display: inline-block; padding: 2px 10px; border-radius: 999px;
  background: rgba(255,255,255,0.08); font-size: 0.7rem; letter-spacing: 1px;
  text-transform: uppercase; color: rgba(255,255,255,0.6); }
.tag.allenamento { background: rgba(43,108,176,0.25); color: #80b5e0; }
.tag.partita { background: rgba(246,194,62,0.18); color: #F6C23E; }
.tag.raduno { background: rgba(56,161,105,0.2); color: #6fcf97; }

.section-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.section-head h2 { font-size: 1.1rem; font-weight: 700; letter-spacing: 0.5px; }
.section-head h3 { font-size: 0.95rem; font-weight: 700; margin-top: 16px; margin-bottom: 8px;
  color: rgba(255,255,255,0.8); }

.list { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.list li { padding: 10px 12px; background: rgba(255,255,255,0.03);
  border-radius: var(--r-sm); display: flex; gap: 10px; align-items: center; }
.list li:hover { background: rgba(255,255,255,0.06); }
.list .num { font-family: 'Bebas Neue', sans-serif; color: var(--gold);
  font-size: 1.3rem; min-width: 32px; }
.list .name { flex: 1; }
.muted { color: rgba(255,255,255,0.45); font-size: 0.85rem; }
.empty { padding: 20px; text-align: center; color: rgba(255,255,255,0.4); }

/* Tables */
.data-table { width: 100%; border-collapse: collapse; }
.data-table th, .data-table td { text-align: left; padding: 12px 10px;
  border-bottom: 1px solid var(--glass-bd); font-size: 0.9rem; }
.data-table th { color: rgba(255,255,255,0.4); font-weight: 600;
  font-size: 0.75rem; text-transform: uppercase; letter-spacing: 1px; }
.data-table tr:hover td { background: rgba(255,255,255,0.03); }

.dims-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
@media (max-width: 700px) { .dims-grid { grid-template-columns: 1fr; } }

.link-box { display: block; padding: 12px; background: rgba(255,255,255,0.05);
  border-radius: var(--r-sm); font-size: 0.85rem; word-break: break-all; }

/* Flash */
.flash-wrap { position: fixed; top: 84px; left: 50%; transform: translateX(-50%);
  z-index: 9999; display: flex; flex-direction: column; gap: 10px;
  max-width: 90vw; width: max-content; pointer-events: none; }
.flash { padding: 14px 28px; border-radius: 999px; font-size: 0.95rem;
  font-weight: 600; letter-spacing: 0.3px;
  background: rgba(56,161,105,0.95); color: #fff;
  box-shadow: 0 12px 36px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.1);
  animation: flashIn 0.3s cubic-bezier(0.2, 0.9, 0.3, 1.2);
  pointer-events: auto;
  display: flex; align-items: center; gap: 10px;
}
.flash::before { content: '✓'; font-size: 1.2rem; }
.flash.error { background: rgba(229,62,62,0.95); }
.flash.error::before { content: '⚠'; }
.flash.ok { background: rgba(56,161,105,0.95); }
.flash.fade-out { animation: flashOut 0.4s ease forwards; }
@keyframes flashIn {
  from { opacity: 0; transform: translateY(-20px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes flashOut {
  to { opacity: 0; transform: translateY(-20px) scale(0.95); }
}

/* Tessera atleta */
.athlete-bg { background: var(--bg-page); }
.page-header {
  width: 100%; padding: 16px 20px; display: flex; gap: 10px; align-items: center;
  background: rgba(3,10,24,0.7); backdrop-filter: var(--blur);
  border-bottom: 1px solid var(--glass-bd); position: sticky; top: 0; z-index: 200;
}
.hdr-badge { font-family: 'Bebas Neue', sans-serif; font-size: 1.6rem; letter-spacing: 4px;
  background: linear-gradient(135deg, #F6C23E, #C9962D);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.hdr-sep { color: rgba(255,255,255,0.2); }
.hdr-club { font-size: 0.7rem; font-weight: 600; letter-spacing: 2px;
  color: rgba(255,255,255,0.5); text-transform: uppercase; }

.tessera-wrap { width: 100%; max-width: 480px; padding: 24px 16px;
  display: flex; flex-direction: column; gap: 14px; }
.hero { padding: 20px; }
.hero-row { display: flex; gap: 16px; align-items: center; }
.hero-pic { width: 80px; height: 80px; border-radius: 50%; overflow: hidden;
  background: rgba(255,255,255,0.08); display: flex; align-items: center; justify-content: center;
  border: 2px solid var(--gold-dim); flex-shrink: 0; position: relative;
  transition: all 0.2s; }
.hero-pic:hover { border-color: var(--gold); transform: scale(1.04); }
.hero-pic:hover .foto-edit-badge { opacity: 1; transform: scale(1); }
.hero-pic img { width: 100%; height: 100%; object-fit: cover; }
.hero-pic .initials { font-family: 'Bebas Neue', sans-serif; font-size: 1.8rem; color: var(--gold); }
.foto-edit-badge {
  position: absolute; bottom: -2px; right: -2px;
  background: var(--gold); color: #030A18;
  width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.85rem; font-weight: 700;
  border: 2px solid var(--bg-page);
  opacity: 0.85; transform: scale(0.9); transition: all 0.2s;
}
.hero-info h1 { font-size: 1.4rem; margin-bottom: 4px; }
.level { display: flex; gap: 12px; margin-top: 6px; }
.lvl { padding: 4px 12px; border-radius: 999px; background: var(--gold);
  color: #030A18; font-weight: 800; font-size: 0.8rem; letter-spacing: 1px; }
.xp { padding: 4px 12px; border-radius: 999px;
  border: 1px solid var(--glass-bd); font-size: 0.8rem; color: rgba(255,255,255,0.7); }

.feedback { padding: 14px 16px; border-radius: var(--r-md); margin-bottom: 10px;
  background: rgba(255,255,255,0.04); border-left: 3px solid rgba(255,255,255,0.2); }
.feedback h3 { font-size: 0.7rem; letter-spacing: 1.5px; text-transform: uppercase;
  color: rgba(255,255,255,0.55); margin-bottom: 6px; }
.feedback p { font-size: 0.95rem; line-height: 1.4; }
.feedback.ok { border-left-color: var(--green); }
.feedback.warn { border-left-color: var(--orange); }
.feedback.action { border-left-color: var(--gold); background: rgba(246,194,62,0.05); }
.feedback.note { border-left-color: var(--blue); }

.agenda { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.agenda li { display: flex; gap: 12px; padding: 10px 12px;
  background: rgba(255,255,255,0.03); border-radius: var(--r-sm); align-items: center; }
.agenda strong { display: block; font-size: 0.95rem; }
.agenda small { display: block; }

/* ════════════════════════════════════════════════════
   RESPONSIVE — TABLET (≥600px) e DESKTOP (≥1024px)
   La tessera è mobile-first; questi breakpoint
   ingrandiscono progressivamente per tablet e PC.
═══════════════════════════════════════════════════ */

/* ───── TABLET (600-1023px) ───── */
@media (min-width: 600px) {
  /* Layout — tessera CENTRATA */
  .athlete-bg .tessera-wrap {
    max-width: 720px;
    padding: 30px 28px;
    gap: 18px;
    margin: 0 auto;
  }

  /* Header pagina: contenuto centrato tramite padding "calc" che si adatta
     alla larghezza viewport (l'header in sé resta full-width sticky) */
  body.athlete-bg > .athlete-header {
    padding-top: 12px; padding-bottom: 12px;
    padding-left: max(28px, calc((100vw - 720px) / 2));
    padding-right: max(28px, calc((100vw - 720px) / 2));
  }
  .athlete-header .hdr-logo { height: 72px; max-width: 110px; }
  .athlete-header .hdr-club { font-size: 1.2rem; letter-spacing: 2.5px; }
  .athlete-header .hdr-progetto { font-size: 1.85rem; letter-spacing: 4px; }
  .athlete-header .btn-esci { padding: 8px 18px; font-size: 0.85rem; }

  /* Pannelli */
  .athlete-bg .glass-panel { padding: 28px; }
  .athlete-bg .glass-panel .section-head h2 { font-size: 1.25rem; }

  /* CARD RENDER più grande */
  .cr-stripe { height: 8px; }
  .cr-photo { width: 180px; height: 180px; }
  .cr-initials { font-size: 4.4rem; }
  .cr-jersey { width: 44px; height: 44px; font-size: 1.6rem; border-width: 3px; }
  .cr-photo-edit { width: 36px; height: 36px; font-size: 1rem; }
  .cr-name { font-size: 3rem; letter-spacing: 5px; }
  .cr-role { font-size: 1rem; letter-spacing: 2.5px; }
  .cr-indice { padding: 18px 22px; }
  .cr-indice-val { font-size: 3.2rem; }
  .cr-indice-bar { height: 12px; }
  .cr-indice-label { font-size: 0.8rem; }
  .cr-radar-wrap { max-width: 520px; padding: 22px 18px 24px; }
  .cr-team-badge { font-size: 0.95rem; padding: 8px 28px; }
  .cr-block { padding: 18px 22px; margin: 14px 28px; }
  .cr-block-content { font-size: 1.05rem; }
  .cr-spunto-img { max-height: 260px; }
  .cr-claim { font-size: 1.1rem; letter-spacing: 4px; }

  /* VALORI 3 colonne */
  .valori-grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }
  .valore-num { font-size: 2.4rem; }
  .valore-head { font-size: 0.75rem; }

  /* LVL ring più grande */
  .lvl-ring { width: 88px; height: 88px; }
  .lvl-num { font-size: 2.2rem; }
  .lvl-suffix { font-size: 0.7rem; }
  .lvl-label { font-size: 1.5rem; }
  .lvl-xp { font-size: 1.4rem; }

  /* Feedback / Focus */
  .focus-body { font-size: 1.1rem; }
  .fb-body { font-size: 1.05rem; }

  /* Bottom nav: tap target più ampi */
  .athlete-bottom-nav { padding: 10px 8px calc(env(safe-area-inset-bottom, 0px) + 10px); }
  .athlete-bottom-nav a { padding: 10px 8px; }
  .athlete-bottom-nav .nav-icon { font-size: 1.6rem; }
  .athlete-bottom-nav .nav-lbl { font-size: 0.7rem; }
}

/* ───── DESKTOP (1024px+) ───── */
@media (min-width: 1024px) {
  body.athlete-bg { padding-bottom: 140px; }
  /* Tessera CENTRATA */
  .athlete-bg .tessera-wrap {
    max-width: 920px;
    padding: 40px 40px 50px;
    gap: 22px;
    margin: 0 auto;
  }

  /* Header: contenuto centrato tramite padding calc */
  body.athlete-bg > .athlete-header {
    padding-top: 14px; padding-bottom: 14px;
    padding-left: max(40px, calc((100vw - 920px) / 2));
    padding-right: max(40px, calc((100vw - 920px) / 2));
  }
  .athlete-header .hdr-logo { height: 84px; max-width: 130px; }
  .athlete-header .hdr-club { font-size: 1.35rem; }
  .athlete-header .hdr-progetto { font-size: 2.1rem; letter-spacing: 5px; }

  /* Pannelli */
  .athlete-bg .glass-panel { padding: 32px; }
  .athlete-bg .glass-panel .section-head h2 { font-size: 1.45rem; }

  /* CARD RENDER */
  .cr-photo { width: 220px; height: 220px; border-width: 4px; }
  .cr-initials { font-size: 5.4rem; }
  .cr-jersey { width: 52px; height: 52px; font-size: 1.9rem; }
  .cr-name { font-size: 3.6rem; letter-spacing: 6px; }
  .cr-role { font-size: 1.15rem; }
  .cr-indice-val { font-size: 3.8rem; }
  .cr-radar-wrap { max-width: 600px; padding: 28px 20px 32px; }
  .cr-spunto-img { max-height: 300px; }

  /* VALORI rimane 3-col ma celle più grandi */
  .valori-grid { gap: 20px; }
  .valore-card { padding: 18px 20px; }
  .valore-num { font-size: 2.8rem; }
  .valore-head { font-size: 0.8rem; }

  /* LVL */
  .lvl-card { padding: 26px 32px; }
  .lvl-ring { width: 100px; height: 100px; }
  .lvl-num { font-size: 2.6rem; }
  .lvl-label { font-size: 1.7rem; }
  .lvl-xp { font-size: 1.6rem; }

  /* Piano AI: esercizi 2-col su desktop */
  .ai-ex-list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
  .ai-block-head { font-size: 1.5rem; }
  .narrator-text { font-size: 1.02rem; }
  .ai-quote-text { font-size: 1.3rem; }
  .ai-sfida-text { font-size: 1.15rem; }

  /* Bacheca 2 colonne */
  .bacheca-list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }

  /* Bottom nav centrata e più larga (sempre fixed bottom) */
  body.athlete-bg > .athlete-bottom-nav,
  .athlete-bottom-nav {
    left: 50%; right: auto;
    -webkit-transform: translate3d(-50%, 0, 0);
    transform: translate3d(-50%, 0, 0);
    max-width: 760px; width: 100%;
    border-radius: 18px 18px 0 0;
    padding: 14px 20px calc(env(safe-area-inset-bottom, 0px) + 14px);
    border: 1px solid rgba(255,255,255,0.1);
    border-bottom: none;
  }
  .athlete-bottom-nav a {
    padding: 12px 16px;
    border-radius: 14px;
    max-width: 180px;
  }
  .athlete-bottom-nav .nav-icon { font-size: 2rem; }
  .athlete-bottom-nav .nav-lbl { font-size: 0.85rem; letter-spacing: 1px; }

  /* App footer: logo AI+Tempo ancora più grande su PC */
  .footer-logo { height: 110px; max-width: 380px; }
}

/* ───── EXTRA LARGE (1400+) ───── */
@media (min-width: 1400px) {
  .athlete-bg .tessera-wrap { max-width: 1040px; }
}

/* ═══════════════════════════════════════════════════
   ATHLETE HEADER — sticky in alto + bottom nav per ancore
═══════════════════════════════════════════════════ */
/* Override del body display:flex (rompe position:sticky/fixed sui figli) */
body.athlete-bg {
  display: block;
  padding-bottom: 130px;  /* spazio per bottom nav + footer */
}
/* Tessera centrata orizzontalmente */
.athlete-bg .tessera-wrap {
  padding-top: 18px;
  margin-left: auto;
  margin-right: auto;
}

/* Override di 'body > *:not(.bg-scene) { position:relative }' con
   selettore di specificità superiore (0,2,1 vs 0,1,1) — niente !important.
   -webkit-sticky per Safari iPad/iPhone. */
body.athlete-bg > .athlete-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 250;
  gap: 14px; padding: 10px 20px;
  margin: 0 0 18px;
  display: flex; align-items: center;
  background: rgba(3,10,24,0.92);
  backdrop-filter: var(--blur);
  -webkit-backdrop-filter: var(--blur);
  border-bottom: 1px solid rgba(255,255,255,0.08);
  /* hardware acceleration per evitare jitter su iOS */
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  will-change: transform;
}

/* Quando l'utente clicca su un link ancora dal bottom nav, lo scroll
   deve fermarsi sotto l'header sticky (~80px). */
.athlete-bg [id] { scroll-margin-top: 90px; }
html { scroll-behavior: smooth; }

/* Bottom nav: position fixed via selettore con specificità sufficiente.
   Hardware acceleration per iOS (evita lo "slide up" sul cambio
   barra indirizzi). */
body.athlete-bg > .athlete-bottom-nav,
.athlete-bottom-nav {
  position: fixed; bottom: 0; left: 0; right: 0;
  z-index: 240;
  background: rgba(3,10,24,0.95);
  backdrop-filter: blur(22px); -webkit-backdrop-filter: blur(22px);
  border-top: 1px solid rgba(255,255,255,0.1);
  display: flex; justify-content: space-around; align-items: stretch;
  padding: 6px 4px calc(env(safe-area-inset-bottom, 0px) + 6px);
  box-shadow: 0 -8px 24px rgba(0,0,0,0.5);
  max-width: 100vw;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  will-change: transform;
}
.athlete-bottom-nav a {
  flex: 1; max-width: 110px;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 8px 4px; border-radius: 10px;
  color: rgba(255,255,255,0.65); text-decoration: none;
  font-size: 0.65rem; font-weight: 700; letter-spacing: 0.5px;
  transition: all 0.15s; text-transform: uppercase;
}
.athlete-bottom-nav a:hover,
.athlete-bottom-nav a:focus {
  color: var(--gold); background: rgba(246,194,62,0.1);
}
.athlete-bottom-nav .nav-icon { font-size: 1.4rem; line-height: 1; }
.athlete-bottom-nav .nav-lbl { font-size: 0.62rem; }
.athlete-header .hdr-logo {
  height: 60px; width: auto; max-width: 90px;
  object-fit: contain;
  background: transparent;
  padding: 0; border-radius: 0;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45));
  flex-shrink: 0;
}
.athlete-header .hdr-text {
  display: flex; flex-direction: column; gap: 4px;
  flex: 1; min-width: 0;
}
.athlete-header .hdr-club {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.05rem; letter-spacing: 2px; line-height: 1;
  color: rgba(255,255,255,0.95);
  text-transform: uppercase;
  word-break: break-word;
}
.athlete-header .hdr-progetto {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.55rem; letter-spacing: 3px; line-height: 1;
  background: linear-gradient(135deg, #F6C23E 0%, #C9962D 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.athlete-header .btn-esci { margin-left: auto; flex-shrink: 0; }

/* Gradient SCURO uniforme per tutti i pannelli della tessera. */
.athlete-bg .glass-panel:not(.card-render) {
  background: linear-gradient(160deg, #0D1B4B 0%, #0A1432 50%, #050C24 100%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,0.06);
}

/* ═══════════════════════════════════════════════════
   CARD RENDER — tessera "stadio"
═══════════════════════════════════════════════════ */
.card-render {
  padding: 0; overflow: hidden;
  background: linear-gradient(160deg, #0D1B4B 0%, #0A1432 50%, #050C24 100%);
  border: 1.5px solid var(--gold-dim);
  position: relative;
  box-shadow: 0 24px 64px rgba(0,0,0,0.65),
              0 0 0 1px rgba(246,194,62,0.1),
              inset 0 1px 0 rgba(255,255,255,0.1);
}
.card-render::before {
  content: ''; position: absolute; inset: 0;
  background-image: repeating-linear-gradient(135deg,
    transparent 0px, transparent 24px,
    rgba(246,194,62,0.025) 24px, rgba(246,194,62,0.025) 25px);
  pointer-events: none; z-index: 0;
}
.card-render > * { position: relative; z-index: 1; }

.cr-stripe {
  height: 6px; background: linear-gradient(90deg,
    transparent 0%, var(--gold) 25%, #fff5d0 50%, var(--gold) 75%, transparent 100%);
  box-shadow: 0 2px 16px rgba(246,194,62,0.5);
}

.cr-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 20px 18px; gap: 14px;
  background: rgba(0,0,0,0.18);
  position: relative;
}
.cr-header::after {
  content: '';
  position: absolute; bottom: 0; left: 12%; right: 12%; height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(246,194,62,0.55) 50%,
    transparent 100%);
}
.cr-society { display: flex; gap: 14px; align-items: center; min-width: 0; }
.cr-logo-wrap { position: relative; width: 68px; height: 68px; flex-shrink: 0; }
/* Logo trasparente, ingrandito, niente sfondo bianco né padding.
   Solo un'ombra morbida per staccarlo dal blu della card. */
.cr-logo { position: absolute; inset: 0; z-index: 2;
  width: 100%; height: 100%; object-fit: contain;
  background: transparent; border-radius: 0; padding: 0;
  box-shadow: none;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.45)); }
/* Fallback (quando il logo non è stato caricato): badge gold con iniziali */
.cr-logo-fallback { position: absolute; inset: 0; z-index: 1;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, rgba(246,194,62,0.18), rgba(246,194,62,0.06));
  border: 1.5px solid var(--gold-dim); border-radius: 12px;
  color: var(--gold); font-family: 'Bebas Neue', sans-serif;
  font-size: 1.4rem; letter-spacing: 2px; }
.cr-society-name { font-size: 0.7rem; font-weight: 700; letter-spacing: 1.5px;
  color: #fff; text-transform: uppercase; line-height: 1.1; }
.cr-stagione { font-size: 0.65rem; color: rgba(255,255,255,0.45);
  text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; }
.cr-badge {
  font-family: 'Bebas Neue', sans-serif;
  padding: 8px 16px; border-radius: 10px;
  background: rgba(246,194,62,0.12);
  border: 1.5px solid var(--gold);
  color: var(--gold); font-size: 1.4rem; letter-spacing: 3px;
  text-shadow: 0 0 12px rgba(246,194,62,0.5);
  flex-shrink: 0;
}

.cr-hero { padding: 24px 20px 16px; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.cr-photo-wrap { position: relative; display: inline-block; }
.cr-photo {
  width: 144px; height: 144px; border-radius: 50%; overflow: hidden;
  background: radial-gradient(circle at 30% 30%, #2B6CB0 0%, #0D1B4B 100%);
  border: 3px solid var(--gold);
  box-shadow: 0 0 28px rgba(246,194,62,0.4), inset 0 0 24px rgba(0,0,0,0.5);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; padding: 0; position: relative;
  transition: all 0.25s;
}
.cr-photo:hover { transform: scale(1.03); box-shadow: 0 0 40px rgba(246,194,62,0.6); }
.cr-photo img { width: 100%; height: 100%; object-fit: cover; }
.cr-initials { font-family: 'Bebas Neue', sans-serif; font-size: 3.6rem;
  color: var(--gold); letter-spacing: 4px; text-shadow: 0 0 16px rgba(246,194,62,0.5); }
.cr-jersey {
  position: absolute; top: 6px; left: 6px;
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--gold); color: #030A18;
  font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem;
  display: flex; align-items: center; justify-content: center;
  border: 2px solid #030A18; box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
.cr-photo-edit {
  position: absolute; bottom: 4px; right: 4px;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--gold); color: #030A18;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.9rem; font-weight: 700;
  border: 2px solid #030A18; opacity: 0.92;
}

.cr-name {
  font-family: 'Bebas Neue', sans-serif; font-size: 2.6rem;
  letter-spacing: 4px; line-height: 1; text-align: center;
  color: #fff; text-shadow: 0 2px 16px rgba(0,0,0,0.6);
  margin-top: 4px;
}
.cr-role {
  display: flex; gap: 10px; align-items: center; justify-content: center;
  font-size: 0.85rem; font-weight: 600; letter-spacing: 2px;
  color: rgba(43,108,176,0.95); text-transform: uppercase;
}
.cr-role .dot { color: var(--gold); }

.cr-indice {
  margin: 12px 20px 16px; padding: 14px 16px;
  background: rgba(0,0,0,0.25); border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.06);
  display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center;
}
.cr-indice-label { font-size: 0.65rem; letter-spacing: 1.5px;
  color: rgba(255,255,255,0.55); text-transform: uppercase; line-height: 1.1; font-weight: 700; }
.cr-indice-tag { color: var(--gold); font-weight: 800; }
.cr-indice-bar { height: 10px; background: rgba(255,255,255,0.08); border-radius: 999px; overflow: hidden; }
.cr-indice-fill { height: 100%; border-radius: 999px;
  transition: width 0.8s ease;
  box-shadow: 0 0 12px currentColor; }
.cr-indice-val { font-family: 'Bebas Neue', sans-serif; font-size: 2.6rem;
  line-height: 1; letter-spacing: 1px; }

.cr-radar-wrap { padding: 18px 16px 20px; position: relative;
  max-width: 440px; margin: 0 auto; width: 100%; }
.cr-radar-wrap .kg-radar-point { transition: r 0.15s ease; }
.cr-radar-wrap .kg-radar-point:hover { r: 8; }
.cr-radar-wrap .kg-radar-pill { cursor: default; }
.cr-radar-wrap .kg-radar-pill rect { transition: fill 0.15s ease, stroke 0.15s ease; }
.cr-radar-wrap .kg-radar-pill:hover rect { fill: #FFFF00; stroke: #ffffff; }
.kg-radar-tooltip {
  position: absolute;
  pointer-events: none;
  background: rgba(0,0,0,0.85);
  color: var(--gold);
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.95rem; letter-spacing: 1.5px;
  padding: 6px 12px;
  border-radius: 8px;
  border: 1px solid var(--gold-dim);
  box-shadow: 0 4px 12px rgba(0,0,0,0.5);
  opacity: 0;
  transform: translate(-50%, -130%);
  transition: opacity 0.15s ease;
  white-space: nowrap;
  z-index: 50;
}
.kg-radar-tooltip.show { opacity: 1; }
.trend-wrap { position: relative; width: 100%; padding: 6px 4px 0; }
.kg-svg-radar, .kg-svg-trend { display: block; width: 100%; height: auto; }

/* Piano AI lazy-load: <details> stilizzato */
.ai-details { width: 100%; }
.ai-summary {
  list-style: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px;
  background: rgba(246,194,62,0.05);
  border: 1px solid rgba(246,194,62,0.2);
  border-radius: var(--r-md);
  font-weight: 700; font-size: 1rem;
  transition: all 0.2s;
}
.ai-summary::-webkit-details-marker { display: none; }
.ai-summary::after {
  content: '▾';
  color: var(--gold);
  font-size: 1.2rem;
  transition: transform 0.2s;
}
.ai-details[open] .ai-summary::after { transform: rotate(180deg); }
.ai-summary:hover { background: rgba(246,194,62,0.1); }
.ai-summary-text { color: #fff; }
.ai-summary-hint { font-size: 0.7rem; color: rgba(255,255,255,0.5);
  font-weight: 500; margin-right: 8px; }
.ai-lazy-content { padding: 16px 0 0; }

/* ════════════════════════════════════════════════════
   COMPITI A CASA — atleta
═══════════════════════════════════════════════════ */
.homework-panel { }
.hw-group { margin-bottom: 20px; }
.hw-group:last-child { margin-bottom: 0; }
.hw-group-head {
  font-family: 'Bebas Neue', sans-serif; font-size: 1.05rem; letter-spacing: 2px;
  text-transform: uppercase; margin: 4px 0 10px;
}
.hw-list { display: flex; flex-direction: column; gap: 12px; }
/* Card "foglietto del mister": fondo nocciola chiaro + testo grigio scuro,
   per massima leggibilità (come un post-it scritto a mano). */
.hw-card {
  padding: 14px 16px 12px;
  background: linear-gradient(180deg, #F6EEDD 0%, #EFE5CE 100%);
  border-radius: 12px;
  border: 1px solid #E2D6BC;
  border-left: 4px solid var(--gold);
  box-shadow: 0 6px 18px rgba(0,0,0,0.28);
}
.hw-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.hw-cat {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.65rem; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.35);
}
.hw-date { font-size: 0.7rem; color: #9A8A66; }
.hw-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.3rem; letter-spacing: 2px;
  margin: 0 0 8px; color: #232323;
}
.hw-content {
  font-size: 0.95rem; line-height: 1.6;
  color: #3A362C; margin: 0 0 10px;
  white-space: pre-line;
}
.hw-content a {
  color: var(--blue); font-weight: 600;
  text-decoration: underline; word-break: break-word;
}
.ca-quote {
  display: inline-block; padding-left: 10px;
  border-left: 3px solid rgba(0,0,0,0.15);
  font-style: italic; opacity: 0.85;
}
.coach-app .ca-quote { border-left-color: var(--ca-line); color: var(--ca-muted); opacity: 1; }

/* Anteprima del link nel testo di uno spunto (mockup approvato da Marco,
   2026-09-07): miniatura a sinistra, titolo e dominio a destra, tutta la
   riga porta al link originale. */
.hw-link-preview {
  display: flex; align-items: center; gap: 10px;
  margin-top: 10px; padding-top: 10px;
  border-top: 1px solid #E2D6BC;
  text-decoration: none; color: inherit;
  transition: opacity .15s;
}
.hw-link-preview:hover { opacity: 0.8; }
.hw-link-thumb {
  width: 52px; height: 52px; border-radius: 8px; object-fit: cover;
  flex-shrink: 0; background: #E2D6BC;
}
.hw-link-body { min-width: 0; display: block; }
.hw-link-title {
  font-size: 0.82rem; font-weight: 700; color: #3A362C; line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.hw-link-domain {
  font-size: 0.66rem; color: #9A8A66; text-transform: uppercase;
  letter-spacing: .5px; margin-top: 3px; display: block;
}
.hw-foot {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 10px;
  font-size: 0.72rem;
  color: #6E6450;
}
.hw-narratore {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.95rem; letter-spacing: 2px;
  color: #8A6A24;
}
.hw-meta { display: inline-flex; align-items: center; gap: 4px; }

/* ════════════════════════════════════════════════════
   SCHEDA SETTIMANALE — vista atleta
═══════════════════════════════════════════════════ */
.weekgrid { display: grid; grid-template-columns: 1fr; gap: 8px; }
@media (min-width: 720px) {
  .weekgrid { grid-template-columns: repeat(7, 1fr); gap: 4px; }
}
.weekday {
  background: rgba(0,0,0,0.22);
  border-radius: 10px;
  padding: 10px 8px;
  min-height: 60px;
  display: flex; flex-direction: column; gap: 6px;
}
.weekday.has-sessions { background: rgba(0,0,0,0.3); }
.weekday-head {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.95rem; letter-spacing: 2px;
  color: var(--gold); text-align: center;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.weekday-empty {
  flex: 1; display: flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,0.25);
  font-size: 1.1rem;
}
.weekday-sess { display: flex; flex-direction: column; gap: 4px; }
.sess-item {
  background: rgba(255,255,255,0.04);
  border-left: 3px solid var(--gold);
  border-radius: 6px;
  padding: 6px 8px;
}
.sess-item summary {
  cursor: pointer; list-style: none;
  display: flex; flex-direction: column; gap: 2px;
  font-size: 0.72rem;
}
.sess-item summary::-webkit-details-marker { display: none; }
.sess-icon { font-size: 0.95rem; }
.sess-t { color: #fff; font-weight: 600; line-height: 1.2; }
.sess-body {
  margin-top: 8px; padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.08);
  font-size: 0.82rem; line-height: 1.5;
  color: rgba(255,255,255,0.85);
}
.sess-narr {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.78rem; letter-spacing: 1.5px;
  color: var(--gold); margin-bottom: 4px;
}
.sess-body p { margin: 0; }

/* ════════════════════════════════════════════════════
   PLAYER CARD V3 — light, radar integrato, no truncate
   ════════════════════════════════════════════════════ */
.player-card.v3 {
  position: relative;
  width: 100%; max-width: 440px;
  margin: 0 auto;
  background: #ffffff;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,0.5), 0 0 0 4px var(--pc-dark, #0D1B4B);
  font-family: 'Outfit', system-ui, sans-serif;
  color: #1a1a2e;
  padding-bottom: 52px; /* spazio per le waves */
}

/* TOP BAR — full society name + flag IT */
.player-card.v3 .pc-top {
  background: var(--pc-dark, #0D1B4B);
  color: #fff;
  padding: 12px 14px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
}
.player-card.v3 .pc-progetto-tag {
  display: inline-block;
  padding: 5px 12px;
  background: rgba(0,0,0,0.35);
  border-radius: 999px;
  font-size: 0.7rem; font-weight: 700; letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #fff;
  flex-shrink: 0;
}
.player-card.v3 .pc-society-name {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.05rem;
  letter-spacing: 1.5px;
  color: #fff;
  line-height: 1.05;
  /* niente truncation: se è lungo va a capo */
  word-break: break-word;
  text-align: center;
}
.player-card.v3 .pc-top-icons { display: flex; align-items: center; gap: 8px; }
.player-card.v3 .pc-shield {
  width: 32px; height: 36px;
  background: linear-gradient(180deg, var(--pc-primary), color-mix(in srgb, var(--pc-primary) 65%, #000));
  clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);
  display: flex; align-items: center; justify-content: center;
  padding: 3px;
  flex-shrink: 0;
}
.player-card.v3 .pc-shield img {
  width: 100%; height: 100%; object-fit: contain;
  background: white;
  clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);
  padding: 2px;
}
.player-card.v3 .pc-shield-fb {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.85rem; letter-spacing: 1px; color: #fff;
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
}
.player-card.v3 .pc-flag-it {
  width: 30px; height: 22px;
  border: 1px solid rgba(255,255,255,0.25);
  border-radius: 2px;
  flex-shrink: 0;
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}

/* HERO LIGHT — foto + nome + indice */
.player-card.v3 .pc-hero-light {
  background: linear-gradient(180deg, #ffffff 0%, #f6f8fc 100%);
  padding: 24px 18px 18px;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  position: relative;
}
.player-card.v3 .pc-hero-light::before {
  content: ''; position: absolute; inset: 0;
  background:
    radial-gradient(circle at 50% 40%,
      color-mix(in srgb, var(--pc-primary) 18%, transparent) 0%,
      transparent 60%);
  pointer-events: none;
}
.player-card.v3 .pc-hero-light > * { position: relative; z-index: 1; }

/* PHOTO + jersey badge */
.player-card.v3 .pc-photo-area-v3 {
  position: relative; display: inline-block;
}
.player-card.v3 .pc-photo-btn {
  position: relative;
  width: 140px; height: 140px;
  border: 4px solid var(--pc-primary);
  border-radius: 50%;
  background: linear-gradient(180deg, #f0f4ff, #d6dcf0);
  padding: 0; overflow: hidden;
  cursor: pointer;
  box-shadow: 0 12px 28px rgba(0,0,0,0.2);
}
.player-card.v3 .pc-photo {
  width: 100%; height: 100%; object-fit: cover;
}
.player-card.v3 .pc-photo-fallback {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 2.6rem; letter-spacing: 3px;
  color: var(--pc-primary);
}
.player-card.v3 .pc-photo-edit {
  position: absolute; bottom: 6px; left: 6px;
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--pc-secondary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.8rem; font-weight: 700;
  border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.player-card.v3 .pc-jersey-badge {
  position: absolute; bottom: -4px; right: -4px;
  width: 42px; height: 42px; border-radius: 50%;
  background: var(--pc-primary);
  color: white;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.4rem; letter-spacing: 0;
  display: flex; align-items: center; justify-content: center;
  border: 3px solid white;
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
}
.player-card.v3 .pc-photo-overlay {
  position: absolute; inset: 0;
  display: none;
  align-items: center; justify-content: center;
  background: rgba(0,0,0,0.5);
  border-radius: 50%;
}
.player-card.v3 .pc-photo-overlay.active { display: flex; }

/* NAME BLOCK */
.player-card.v3 .pc-name-block { text-align: center; }
.player-card.v3 .pc-name-v3 {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.7rem;
  letter-spacing: 2px;
  color: var(--pc-dark, #0D1B4B);
  line-height: 1.05;
  margin: 0;
  word-break: break-word;
}
.player-card.v3 .pc-role-line {
  font-size: 0.78rem;
  color: rgba(0,0,0,0.55);
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-top: 4px;
}
.player-card.v3 .pc-role-line .dot { color: var(--pc-primary); margin: 0 4px; }

/* INDICE ROW */
.player-card.v3 .pc-indice-row {
  width: 100%; max-width: 380px;
  padding: 12px 14px;
  background: linear-gradient(135deg,
    color-mix(in srgb, var(--pc-primary) 8%, white),
    color-mix(in srgb, var(--pc-primary) 4%, white));
  border: 1px solid color-mix(in srgb, var(--pc-primary) 20%, white);
  border-radius: 12px;
  margin-top: 6px;
}
.player-card.v3 .pc-indice-label {
  font-size: 0.62rem; letter-spacing: 1.5px;
  color: rgba(0,0,0,0.5); text-transform: uppercase;
  font-weight: 700; margin-bottom: 6px;
}
.player-card.v3 .pc-indice-label strong { color: var(--pc-primary); }
.player-card.v3 .pc-indice-content {
  display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center;
}
.player-card.v3 .pc-indice-num {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 2.4rem; line-height: 1;
  color: var(--pc-primary);
}
.player-card.v3 .pc-indice-right { display: flex; flex-direction: column; gap: 6px; }
.player-card.v3 .pc-stars-v3 { display: flex; gap: 2px; }
.player-card.v3 .pc-stars-v3 .pc-star {
  font-size: 0.95rem; color: rgba(0,0,0,0.18); line-height: 1;
}
.player-card.v3 .pc-stars-v3 .pc-star.on { color: var(--pc-secondary); }
.player-card.v3 .pc-indice-bar {
  height: 6px; background: rgba(0,0,0,0.08);
  border-radius: 999px; overflow: hidden;
}
.player-card.v3 .pc-indice-fill {
  height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, var(--pc-primary), color-mix(in srgb, var(--pc-primary) 70%, var(--pc-secondary)));
  transition: width 0.6s ease;
}

/* RADAR LIGHT — sezione dedicata */
.player-card.v3 .pc-radar-light {
  padding: 14px 16px 4px;
  background: #ffffff;
  border-top: 1px solid rgba(0,0,0,0.06);
}
.player-card.v3 .pc-radar-light svg { max-width: 320px; }

/* FOOTER LIGHT con claim */
.player-card.v3 .pc-footer-light {
  text-align: center;
  padding: 8px 16px 4px;
  background: #ffffff;
}
.player-card.v3 .pc-claim {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.95rem;
  letter-spacing: 2.5px;
  color: var(--pc-primary);
}

.player-card.v3 .pc-waves {
  position: absolute; left: 0; right: 0; bottom: 0;
  width: 100%; height: 52px;
  pointer-events: none;
}

/* Mobile mini */
@media (max-width: 380px) {
  .player-card.v3 .pc-society-name { font-size: 0.95rem; }
  .player-card.v3 .pc-photo-btn { width: 120px; height: 120px; border-width: 3px; }
  .player-card.v3 .pc-jersey-badge { width: 36px; height: 36px; font-size: 1.2rem; }
  .player-card.v3 .pc-name-v3 { font-size: 1.4rem; }
  .player-card.v3 .pc-indice-num { font-size: 2rem; }
  .player-card.v3 .pc-radar-light svg { max-width: 280px; }
}

/* ════════════════════════════════════════════════════
   PLAYER CARD V2 — legacy (mantenuta in CSS per riferimento)
   ════════════════════════════════════════════════════ */
.player-card {
  position: relative;
  width: 100%; max-width: 420px;
  margin: 0 auto;
  background: #ffffff;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,0.5), 0 0 0 4px var(--pc-dark, #0D1B4B);
  font-family: 'Outfit', system-ui, sans-serif;
  color: #1a1a2e;
}

/* TOP BAR — progetto label + shield + country */
.pc-top {
  background: var(--pc-dark, #0D1B4B);
  color: #fff;
  padding: 12px 14px 14px;
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px;
}
.pc-progetto {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  background: rgba(0,0,0,0.35);
  border-radius: 999px;
  font-size: 0.7rem; letter-spacing: 1.5px; text-transform: uppercase;
  font-weight: 600;
}
.pc-progetto-pre { color: rgba(255,255,255,0.6); }
.pc-progetto strong { color: #fff; }

.pc-top-right { display: flex; gap: 10px; align-items: flex-start; }
.pc-shield {
  width: 50px; height: 56px;
  background: linear-gradient(180deg, var(--pc-primary), color-mix(in srgb, var(--pc-primary) 70%, #000));
  clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);
  display: flex; align-items: center; justify-content: center;
  padding: 4px;
  position: relative;
}
.pc-shield img { width: 100%; height: 100%; object-fit: contain; padding: 4px; background: white; clip-path: polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%); }
.pc-shield-fallback {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.1rem; letter-spacing: 1px;
  color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.pc-team { text-align: center; min-width: 50px; }
.pc-flag {
  width: 36px; height: 22px;
  margin: 0 auto;
  background: linear-gradient(to right, var(--pc-secondary) 0 33%, #fff 33% 66%, var(--pc-primary) 66%);
  border: 1px solid rgba(255,255,255,0.3);
  border-radius: 2px;
}
.pc-team-lbl {
  font-size: 0.62rem; letter-spacing: 1px; font-weight: 700;
  color: rgba(255,255,255,0.85); text-transform: uppercase;
  margin-top: 4px;
}

/* HERO — pills sx, foto centro, jersey dx */
.pc-hero {
  position: relative;
  background: #ffffff;
  display: grid;
  grid-template-columns: 90px 1fr 70px;
  align-items: center;
  padding: 18px 14px 8px;
  min-height: 240px;
}

.pc-pills { display: flex; flex-direction: column; gap: 10px; z-index: 2; }
.pc-pill {
  display: flex; align-items: center;
  background: linear-gradient(135deg, var(--pc-primary), color-mix(in srgb, var(--pc-primary) 70%, #000));
  color: white;
  border-radius: 999px;
  padding: 4px 4px 4px 12px;
  font-size: 0.7rem; font-weight: 700; letter-spacing: 1px;
  box-shadow: 0 4px 10px rgba(0,0,0,0.15);
  min-width: 84px; max-width: 100%;
  white-space: nowrap;
}
.pc-pill-lbl { flex: 1; text-transform: uppercase; }
.pc-pill-val {
  background: #fff;
  color: var(--pc-primary);
  border-radius: 999px;
  padding: 2px 10px;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1rem; letter-spacing: 0.5px;
  margin-left: 8px;
}

/* AREA FOTO con raggi radiali */
.pc-photo-area {
  position: relative;
  display: flex; align-items: center; justify-content: center;
  margin: 0;
  z-index: 1;
}
.pc-rays {
  position: absolute; inset: 0;
  background:
    repeating-conic-gradient(
      from 0deg at 50% 55%,
      color-mix(in srgb, var(--pc-primary) 15%, transparent) 0deg 10deg,
      transparent 10deg 20deg
    );
  opacity: 0.45;
  z-index: 0;
}
.pc-photo-btn {
  position: relative;
  width: 160px; height: 160px;
  border: 4px solid var(--pc-primary);
  border-radius: 50%;
  background: linear-gradient(180deg, #f0f4ff, #d6dcf0);
  padding: 0; overflow: hidden;
  cursor: pointer;
  box-shadow: 0 12px 32px rgba(0,0,0,0.18);
  z-index: 2;
}
.pc-photo-btn:hover { transform: translateY(-2px); transition: transform 0.2s; }
.pc-photo { width: 100%; height: 100%; object-fit: cover; }
.pc-photo-fallback {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 3rem; letter-spacing: 3px;
  color: var(--pc-primary);
}
.pc-photo-edit {
  position: absolute; bottom: 6px; right: 6px;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--pc-secondary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.85rem; font-weight: 700;
  border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.pc-photo-overlay {
  position: absolute; inset: 0;
  display: none;
  align-items: center; justify-content: center;
  background: rgba(0,0,0,0.5);
  border-radius: 50%;
}
.pc-photo-overlay.active { display: flex; }

/* JERSEY NUMBER big sulla destra */
.pc-jersey {
  position: relative;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 4.5rem; line-height: 1;
  color: var(--pc-dark, #0D1B4B);
  text-align: right;
  font-weight: 700;
  text-shadow: 0 2px 0 rgba(0,0,0,0.06);
  align-self: end;
  padding-bottom: 4px;
}

/* BOTTOM — nome + stelle + bars */
.pc-bottom {
  position: relative;
  background: #ffffff;
  padding: 4px 16px 70px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
  z-index: 2;
}
.pc-bottom-left {}
.pc-name {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1.4rem;
  letter-spacing: 2px;
  color: var(--pc-dark, #0D1B4B);
  line-height: 1.05;
  word-break: break-word;
}
.pc-stars { margin-top: 4px; display: flex; gap: 2px; }
.pc-star {
  font-size: 0.85rem;
  color: rgba(0,0,0,0.18);
  line-height: 1;
}
.pc-star.on { color: var(--pc-secondary, #E91E63); }
.pc-desc {
  margin-top: 8px;
  font-size: 0.72rem;
  line-height: 1.4;
  color: rgba(0,0,0,0.55);
  font-style: italic;
}

/* BARS dx */
.pc-bars { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; }
.pc-bar-row {}
.pc-bar-lbl {
  font-size: 0.62rem; letter-spacing: 1px; font-weight: 700;
  color: rgba(0,0,0,0.55); text-transform: uppercase;
  margin-bottom: 3px;
}
.pc-bar-track {
  height: 6px;
  background: rgba(0,0,0,0.08);
  border-radius: 999px;
  overflow: hidden;
}
.pc-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--pc-primary), color-mix(in srgb, var(--pc-primary) 70%, var(--pc-secondary)));
  border-radius: 999px;
  transition: width 0.6s ease;
}

/* WAVES decorative in fondo */
.pc-waves {
  position: absolute; left: 0; right: 0; bottom: 0;
  width: 100%; height: 60px;
  pointer-events: none;
}

/* Responsive ridotto su schermi piccolissimi */
@media (max-width: 380px) {
  .pc-hero { grid-template-columns: 76px 1fr 56px; padding: 14px 8px 6px; min-height: 200px; }
  .pc-pill { font-size: 0.62rem; min-width: 72px; }
  .pc-pill-val { font-size: 0.85rem; padding: 1px 8px; }
  .pc-photo-btn { width: 130px; height: 130px; border-width: 3px; }
  .pc-jersey { font-size: 3.4rem; }
  .pc-name { font-size: 1.15rem; }
  .pc-bottom { padding: 4px 12px 60px; gap: 10px; }
}

/* Overlay spinner sopra l'avatar durante l'upload foto */
.cr-photo-overlay {
  position: absolute; inset: 0;
  display: none;
  align-items: center; justify-content: center;
  background: rgba(3, 10, 24, 0.7);
  border-radius: 50%;
  z-index: 5;
}
.cr-photo-overlay.active { display: flex; }
.cr-photo-spinner {
  width: 36px; height: 36px;
  border: 3px solid rgba(246,194,62,0.2);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

.cr-team-badge {
  display: inline-block; margin: 14px auto;
  padding: 6px 22px; border-radius: 999px;
  background: rgba(43,108,176,0.2); border: 1.5px solid rgba(43,108,176,0.6);
  color: #80b5e0; font-weight: 700; letter-spacing: 2px;
  font-size: 0.85rem; text-transform: uppercase;
  display: block; width: max-content; max-width: calc(100% - 40px);
  margin-left: auto; margin-right: auto;
}

.cr-block { margin: 10px 20px; padding: 14px 16px;
  background: rgba(0,0,0,0.25); border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.05); }
.cr-block-label { font-size: 0.65rem; letter-spacing: 1.5px;
  color: rgba(255,255,255,0.5); text-transform: uppercase; font-weight: 700; margin-bottom: 6px; }
.cr-block-content { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.cr-match { font-size: 0.95rem; }
.cr-result { padding: 4px 12px; border-radius: 6px; font-size: 0.75rem;
  font-weight: 800; letter-spacing: 1.5px; flex-shrink: 0; }
.cr-result-vittoria { background: rgba(56,161,105,0.25); color: #6fcf97; border: 1px solid rgba(56,161,105,0.5); }
.cr-result-pareggio { background: rgba(237,137,54,0.2); color: #f4a460; border: 1px solid rgba(237,137,54,0.5); }
.cr-result-sconfitta { background: rgba(229,62,62,0.2); color: #fc8181; border: 1px solid rgba(229,62,62,0.5); }
.cr-block-quote { font-style: italic; line-height: 1.4; color: rgba(255,255,255,0.85); }
.cr-spunto-img { width: 100%; max-height: 200px; object-fit: cover;
  border-radius: 10px; margin-top: 10px; display: block;
  border: 1px solid rgba(255,255,255,0.08); }

.cr-footer {
  margin-top: 16px; padding: 14px 20px;
  border-top: 1px solid rgba(255,255,255,0.06);
  font-size: 0.7rem; color: rgba(255,255,255,0.45);
  display: flex; flex-direction: column; gap: 4px;
  text-align: center;
}
.cr-claim { font-family: 'Bebas Neue', sans-serif; font-size: 0.95rem;
  letter-spacing: 3px; color: var(--gold); margin-top: 8px; }

/* ═══════════════════════════════════════════════════
   LEVEL / XP CARD
═══════════════════════════════════════════════════ */
.lvl-card { padding: 18px 20px; }
.lvl-row { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; }
.lvl-ring {
  width: 72px; height: 72px; border-radius: 50%;
  background: radial-gradient(circle, rgba(246,194,62,0.18) 0%, rgba(246,194,62,0) 70%);
  border: 2px solid var(--gold);
  box-shadow: 0 0 20px rgba(246,194,62,0.45), inset 0 0 12px rgba(246,194,62,0.15);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.lvl-num { font-family: 'Bebas Neue', sans-serif; font-size: 1.8rem; line-height: 1; color: #fff; }
.lvl-suffix { font-size: 0.6rem; letter-spacing: 2px; color: var(--gold); }
.lvl-info { flex: 1; min-width: 0; }
.lvl-label { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem;
  letter-spacing: 3px; color: #fff; }
.lvl-next { font-size: 0.78rem; color: rgba(255,255,255,0.55); margin-top: 2px; }
.lvl-next strong { color: var(--gold); }
.lvl-xp { font-family: 'Bebas Neue', sans-serif; font-size: 1.2rem;
  letter-spacing: 2px; color: var(--gold); flex-shrink: 0; }
.lvl-bar-track { height: 8px; background: rgba(255,255,255,0.06);
  border-radius: 999px; overflow: hidden; }
.lvl-bar-fill { height: 100%; background: linear-gradient(90deg, #2B6CB0, var(--gold));
  border-radius: 999px; transition: width 0.8s ease;
  box-shadow: 0 0 10px rgba(246,194,62,0.5); }

/* ═══════════════════════════════════════════════════
   VALORI GRID
═══════════════════════════════════════════════════ */
.valori-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.valore-card { padding: 12px 14px; background: rgba(0,0,0,0.18);
  border-radius: 12px; border: 1px solid rgba(255,255,255,0.06); }
.valore-head { font-size: 0.65rem; letter-spacing: 1.5px;
  color: rgba(255,255,255,0.55); text-transform: uppercase;
  font-weight: 700; margin-bottom: 6px; }
.valore-body { display: flex; align-items: center; gap: 10px; }
.valore-num { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; line-height: 1; }
.valore-bar { flex: 1; height: 6px; background: rgba(255,255,255,0.08);
  border-radius: 999px; overflow: hidden; }
.valore-bar-fill { height: 100%; border-radius: 999px; transition: width 0.8s ease; }
.valore-delta { font-size: 0.75rem; font-weight: 700;
  text-align: right; margin-top: 4px; }
.delta-up { color: #6fcf97; }
.delta-down { color: #fc8181; }
.delta-flat { color: rgba(255,255,255,0.4); }
.delta-new { color: var(--gold); font-size: 0.65rem; letter-spacing: 1.5px; }

/* ═══════════════════════════════════════════════════
   FOCUS / FEEDBACK
═══════════════════════════════════════════════════ */
/* Stessa card "seppia" di .tr-row (Allenamenti della settimana) — massima
   leggibilità, richiesta da Marco il 2026-08-26 anche qui. */
.focus-card {
  padding: 16px 18px; border-radius: 12px;
  background: linear-gradient(180deg, #F6EEDD 0%, #EFE5CE 100%);
  border: 1px solid #E2D6BC; border-left: 4px solid #C9962D;
  box-shadow: 0 6px 18px rgba(0,0,0,0.28);
}
.focus-head { font-size: 0.7rem; letter-spacing: 2px; color: #A0690F;
  font-weight: 800; text-transform: uppercase; margin-bottom: 8px; }
.focus-body { font-size: 1rem; font-weight: 600; line-height: 1.4; color: #232323; }

.fb-card { padding: 14px 16px; border-radius: 12px;
  background: linear-gradient(180deg, #F6EEDD 0%, #EFE5CE 100%);
  border: 1px solid #E2D6BC; box-shadow: 0 6px 18px rgba(0,0,0,0.28);
  margin-bottom: 10px;
  border-left: 4px solid #C9962D; }
.fb-card.fb-good { border-left-color: #2F7A4D; }
.fb-card.fb-warn { border-left-color: #A0690F; }
.fb-head { font-size: 0.7rem; letter-spacing: 1.5px; font-weight: 800;
  text-transform: uppercase; margin-bottom: 6px; }
.fb-good .fb-head { color: #2F7A4D; }
.fb-warn .fb-head { color: #A0690F; }
.fb-body { font-size: 0.95rem; line-height: 1.45; color: #232323; }

/* ═══════════════════════════════════════════════════
   BACHECA
═══════════════════════════════════════════════════ */
.bacheca-list { display: flex; flex-direction: column; gap: 10px; }
.bacheca-item {
  display: grid; grid-template-columns: 56px 1fr auto; gap: 12px;
  padding: 12px 14px; background: rgba(0,0,0,0.18);
  border-radius: 12px; border: 1px solid rgba(255,255,255,0.05);
  align-items: center;
}
.bacheca-date { text-align: center; padding: 4px 0;
  background: rgba(255,255,255,0.04); border-radius: 8px; }
.b-day { font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem; line-height: 1; color: #fff; }
.b-month { font-size: 0.6rem; letter-spacing: 1.5px; color: rgba(255,255,255,0.5); font-weight: 700; }
.bacheca-body { min-width: 0; }
.b-sede { font-size: 0.68rem; font-weight: 800; letter-spacing: 1px; margin-bottom: 3px; }
.b-sede.is-casa { color: #6fcf97; }
.b-sede.is-trasferta { color: #f4a460; }
.b-title { font-weight: 700; font-size: 0.95rem; }
.b-meta { font-size: 0.72rem; color: rgba(255,255,255,0.45);
  text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; }
.bacheca-result { text-align: right; }
.b-result { font-family: 'Bebas Neue', sans-serif; font-size: 1.2rem;
  letter-spacing: 2px; display: block; line-height: 1; }
.b-result-vittoria { color: #6fcf97; }
.b-result-pareggio { color: #f4a460; }
.b-result-sconfitta { color: #fc8181; }
.b-score { font-size: 0.75rem; color: rgba(255,255,255,0.55); margin-top: 4px; display: block; }
.b-upcoming { display: inline-block; padding: 4px 12px;
  border-radius: 999px; background: rgba(246,194,62,0.15);
  border: 1px solid var(--gold-dim);
  color: var(--gold); font-size: 0.7rem; font-weight: 800; letter-spacing: 1.5px; }

/* ═══════════════════════════════════════════════════
   AZIONI FINALI
═══════════════════════════════════════════════════ */
.action-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 4px; }
.action-card {
  padding: 14px 8px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--glass-bd);
  color: #fff; font-family: inherit; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  text-align: center; transition: all 0.2s; backdrop-filter: var(--blur);
}
.action-card:hover { transform: translateY(-2px); border-color: var(--gold-dim);
  box-shadow: 0 12px 30px rgba(0,0,0,0.4); }
.action-icon { font-size: 1.4rem; margin-bottom: 2px; }
.action-title { font-size: 0.78rem; font-weight: 700; line-height: 1.2; }
.action-sub { font-size: 0.66rem; color: rgba(255,255,255,0.5); }

.updated-at { text-align: center; font-size: 0.75rem;
  color: rgba(255,255,255,0.35); margin-top: 8px; letter-spacing: 1px; }

/* ═══════════════════════════════════════════════════
   AI PANEL — Piano di Crescita
═══════════════════════════════════════════════════ */
.ai-panel { background: linear-gradient(160deg, rgba(15,30,80,0.55), rgba(15,30,80,0.35));
  border: 1px solid rgba(246,194,62,0.25); }
.ai-spinner {
  width: 48px; height: 48px; margin: 0 auto;
  border: 4px solid rgba(246,194,62,0.15);
  border-top-color: var(--gold);
  border-radius: 50%; animation: spin 0.9s linear infinite;
  box-shadow: 0 0 24px rgba(246,194,62,0.3);
}
@keyframes spin { to { transform: rotate(360deg); } }

.ai-cached { padding: 8px 14px; margin-bottom: 14px;
  border-radius: 8px; font-size: 0.8rem;
  background: rgba(56,161,105,0.1); border: 1px solid rgba(56,161,105,0.3);
  color: #6fcf97; }
.ai-cached a { color: var(--gold); }

.ai-block { padding: 16px 18px; margin-bottom: 14px;
  border-radius: var(--r-md);
  background: rgba(0,0,0,0.22); border: 1px solid rgba(255,255,255,0.06); }
.ai-block-head { font-family: 'Bebas Neue', sans-serif;
  font-size: 1.3rem; letter-spacing: 2px;
  margin-bottom: 12px; color: #fff; }

.ai-tech { border-left: 3px solid #F6C23E; }
.ai-athl { border-left: 3px solid #2B6CB0; }
.ai-emot { border-left: 3px solid #9F7AEA; }
.ai-sfida { border-left: 3px solid #E53E3E;
  background: linear-gradient(135deg, rgba(229,62,62,0.08), rgba(229,62,62,0.02)); }

.ai-insp { padding: 10px 12px; margin-bottom: 12px;
  background: rgba(246,194,62,0.08); border-radius: 8px;
  font-size: 0.85rem; line-height: 1.4; color: rgba(255,255,255,0.85); font-style: italic; }

.ai-ex-list { display: flex; flex-direction: column; gap: 10px; }
.ai-ex { padding: 12px 14px; background: rgba(255,255,255,0.03);
  border-radius: 10px; border: 1px solid rgba(255,255,255,0.05); }
.ai-ex-name { font-weight: 700; font-size: 0.95rem; margin-bottom: 4px;
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ai-ex-where { font-size: 0.65rem; padding: 2px 8px; border-radius: 999px;
  background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.6);
  text-transform: uppercase; letter-spacing: 1px; font-weight: 700; }
.ai-where-casa { background: rgba(56,161,105,0.2); color: #6fcf97; }
.ai-where-campo { background: rgba(246,194,62,0.18); color: var(--gold); }
.ai-where-entrambi { background: rgba(43,108,176,0.2); color: #80b5e0; }
.ai-ex-desc { font-size: 0.88rem; color: rgba(255,255,255,0.75);
  line-height: 1.45; margin-bottom: 8px; }
.ai-ex-meta { display: flex; justify-content: space-between; align-items: center;
  font-size: 0.75rem; gap: 10px; flex-wrap: wrap; }
.ai-ex-duration { color: rgba(255,255,255,0.5); }
.ai-ex-yt { display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 6px;
  background: rgba(229,62,62,0.15); color: #fc8181;
  text-decoration: none; font-weight: 600;
  border: 1px solid rgba(229,62,62,0.3); transition: all 0.15s; }
.ai-ex-yt:hover { background: rgba(229,62,62,0.3); color: #fff; }

.ai-focus-tag { font-size: 0.75rem; color: rgba(255,255,255,0.55);
  margin-bottom: 10px; letter-spacing: 1px; text-transform: uppercase; }
.ai-focus-tag strong { color: #c4a3ff; font-weight: 800; }
.ai-reflection { padding: 12px 14px; background: rgba(159,122,234,0.08);
  border-radius: 8px; line-height: 1.55; font-size: 0.92rem;
  margin-bottom: 12px; color: rgba(255,255,255,0.92);
  border-left: 2px solid #9F7AEA; }
.ai-six { padding: 12px 14px; background: rgba(255,255,255,0.03); border-radius: 8px; }
.ai-six-fase { font-family: 'Bebas Neue', sans-serif; font-size: 1rem;
  letter-spacing: 2px; color: #c4a3ff; margin-bottom: 6px; }
.ai-six-desc { font-size: 0.88rem; line-height: 1.45; color: rgba(255,255,255,0.8); }

.ai-sfida-text { font-size: 1rem; font-weight: 600; line-height: 1.45; }
.ai-sfida-meas { margin-top: 10px; padding: 8px 12px;
  background: rgba(0,0,0,0.25); border-radius: 6px;
  font-size: 0.82rem; color: rgba(255,255,255,0.7); }

/* AFORISMA — citazione grandi calciatori */
.ai-quote {
  position: relative;
  padding: 22px 22px 18px 60px;
  margin-bottom: 18px;
  background: linear-gradient(135deg, rgba(246,194,62,0.12), rgba(246,194,62,0.02));
  border: 1px solid rgba(246,194,62,0.25);
  border-left: 4px solid var(--gold);
  border-radius: var(--r-md);
}
.ai-quote-mark {
  position: absolute; left: 14px; top: 0;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 5rem; line-height: 1;
  color: var(--gold); opacity: 0.6;
  text-shadow: 0 0 20px rgba(246,194,62,0.4);
}
.ai-quote-text {
  font-size: 1.15rem; font-style: italic; line-height: 1.4;
  color: #fff; font-weight: 500;
}
.ai-quote-author {
  margin-top: 10px;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 1rem; letter-spacing: 3px;
  color: var(--gold); text-transform: uppercase;
}
.ai-quote-why {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed rgba(246,194,62,0.25);
  font-size: 0.85rem; color: rgba(255,255,255,0.7);
  line-height: 1.45;
}

.ai-meta-saved { font-size: 0.75rem; color: rgba(255,255,255,0.5);
  margin-bottom: 14px; padding: 8px 12px;
  background: rgba(0,0,0,0.2); border-radius: 6px;
  border-left: 2px solid rgba(56,161,105,0.5); }
.ai-meta-saved strong { color: rgba(255,255,255,0.85); }

/* NARRATORE — spiegazione esercizio "voce" del grande giocatore */
.ai-narrator {
  margin-top: 10px;
  padding: 14px 16px 14px 20px;
  background: rgba(0,0,0,0.28);
  border-left: 3px solid var(--gold);
  border-radius: 8px;
  position: relative;
}
.ai-narrator::before {
  content: '"';
  position: absolute;
  left: 6px; top: -6px;
  font-family: 'Bebas Neue', sans-serif;
  font-size: 2.2rem; line-height: 1;
  color: var(--gold); opacity: 0.5;
}
.narrator-name {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 0.95rem; letter-spacing: 2px;
  color: var(--gold);
  margin-bottom: 8px;
  text-transform: uppercase;
}
.narrator-text {
  font-size: 0.95rem; line-height: 1.55;
  color: rgba(255,255,255,0.92);
  font-style: italic;
}
.ai-athl .ai-narrator { border-left-color: #80b5e0; }
.ai-athl .ai-narrator::before { color: #80b5e0; }
.ai-athl .narrator-name { color: #80b5e0; }
.ai-emot .ai-narrator { border-left-color: #c4a3ff; }
.ai-emot .ai-narrator::before { color: #c4a3ff; }
.ai-emot .narrator-name { color: #c4a3ff; }

.ai-disclaimer {
  margin-top: 16px; padding: 10px 14px;
  font-size: 0.72rem; line-height: 1.45;
  color: rgba(255,255,255,0.4);
  background: rgba(0,0,0,0.18);
  border-radius: 8px;
  border: 1px dashed rgba(255,255,255,0.12);
  font-style: italic;
}
.ai-disclaimer strong { color: rgba(255,255,255,0.55); font-style: normal; }

/* ═══════════════════════════════════════════════════
   APP FOOTER (AI+Tempo)
═══════════════════════════════════════════════════ */
.app-footer {
  width: 100%; padding: 22px 20px 28px;
  margin-top: 24px;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
  border-top: 1px solid var(--glass-bd);
  background: rgba(0,0,0,0.2);
}
/* Footer staccato dal bottom-nav fisso sulla tessera atleta */
body.athlete-bg .app-footer { margin-bottom: 76px; }

/* Riga bianca separator tra il claim e il blocco "Powered by AI+Tempo" */
.footer-divider {
  width: 80%; max-width: 240px;
  height: 1px;
  border: 0;
  margin: 6px auto 4px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,0.35) 50%,
    transparent 100%);
}
.footer-claim { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.footer-claim-text { font-family: 'Bebas Neue', sans-serif;
  font-size: 1.1rem; letter-spacing: 3px;
  background: linear-gradient(135deg, #F6C23E, #C9962D);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; }
.footer-claim-society { font-size: 0.65rem; color: rgba(255,255,255,0.4);
  letter-spacing: 1.5px; text-transform: uppercase; font-weight: 600; }
/* Blocco "Powered by" verticale: testo sopra, logo grande sotto, centrato */
.footer-powered {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.footer-powered-by {
  font-size: 0.7rem;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  font-weight: 700;
  color: rgba(255,255,255,0.4);
}
.footer-aipiutempo {
  display: inline-flex;
  align-items: center; justify-content: center;
  text-decoration: none;
  transition: opacity 0.2s, transform 0.2s;
}
.footer-aipiutempo:hover { opacity: 0.85; transform: translateY(-1px); }
/* Logo grande, trasparente, senza padding/box bianco */
.footer-logo {
  height: 90px;       /* +30% rispetto a 68px */
  width: auto;
  max-width: 320px;
  object-fit: contain;
  background: transparent;
  border-radius: 0;
  padding: 0;
  filter: drop-shadow(0 4px 14px rgba(0,0,0,0.55));
}
.footer-aipiutempo-text {
  display: inline-flex;
  align-items: center;
}

/* ==========================================================================
   AFORISMA DEL GIORNO (tessera atleta) + scelta idolo + pannello coach
   ========================================================================== */

/* --- Card aforisma sulla tessera --- */
.idol-quote {
  position: relative;
  background:
    linear-gradient(135deg, rgba(246,194,62,0.06) 0%, rgba(234,255,0,0.02) 100%),
    rgba(0,0,0,0.32);
  border: 1px solid rgba(234,255,0,0.18);
  box-shadow: 0 8px 28px rgba(0,0,0,0.28),
              inset 0 1px 0 rgba(255,255,255,0.05);
  overflow: hidden;
}
.idol-quote::before {
  content: "";
  position: absolute;
  top: -40%; right: -10%;
  width: 220px; height: 220px;
  background: radial-gradient(circle, rgba(234,255,0,0.10) 0%, transparent 70%);
  pointer-events: none;
}
.idol-quote-head {
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px; margin-bottom: 10px; position: relative; z-index: 1;
}
.idol-quote-eyebrow {
  font-size: 0.74rem; font-weight: 700; letter-spacing: 0.08em;
  color: #EAFF00; text-transform: uppercase;
}
.idol-quote-change {
  font-size: 0.72rem; color: rgba(255,255,255,0.55);
  text-decoration: none; padding: 4px 10px;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 999px; transition: all .15s;
}
.idol-quote-change:hover { color: #EAFF00; border-color: rgba(234,255,0,0.5); }
.idol-quote-text {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.18rem; line-height: 1.5;
  font-weight: 500; color: rgba(255,255,255,0.96);
  margin: 0; padding: 8px 0 6px;
  position: relative; z-index: 1;
  letter-spacing: 0.005em;
}
.idol-quote-mark {
  color: #EAFF00; font-size: 1.7rem; font-weight: 800;
  vertical-align: -0.05em; opacity: 0.8;
}
.idol-quote-mark-end { margin-left: 2px; }
.idol-quote-foot {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 14px; position: relative; z-index: 1;
}
.idol-quote-by {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; font-size: 1rem;
  color: #EAFF00; letter-spacing: 0.04em;
}
.idol-quote-ctx {
  font-size: 0.82rem; color: rgba(255,255,255,0.55);
  font-style: italic;
}
.idol-quote-dim {
  margin-left: auto;
  font-size: 0.7rem; font-weight: 700;
  padding: 4px 10px; border-radius: 999px;
  background: rgba(234,255,0,0.16);
  color: #EAFF00;
  text-transform: uppercase; letter-spacing: 0.06em;
  border: 1px solid rgba(234,255,0,0.4);
}
.idol-quote-disclaimer {
  margin-top: 12px;
  font-size: 0.68rem; color: rgba(255,255,255,0.32);
  font-style: italic; line-height: 1.4;
  position: relative; z-index: 1;
}
.idol-quote-pending {
  margin: 6px 0 0; font-size: 0.92rem; line-height: 1.5;
  color: rgba(255,255,255,0.72);
}
.idol-quote-empty { border-color: rgba(255,255,255,0.1); }

/* --- CTA scelta idolo --- */
.idol-cta {
  text-align: center;
  background:
    linear-gradient(135deg, rgba(234,255,0,0.10) 0%, rgba(246,194,62,0.04) 100%),
    rgba(0,0,0,0.36);
  border: 1px dashed rgba(234,255,0,0.42);
}
.idol-cta-icon { font-size: 2.8rem; line-height: 1; margin-bottom: 6px; }
.idol-cta-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.35rem; font-weight: 800;
  color: #EAFF00; margin: 0 0 8px;
  letter-spacing: 0.02em;
}
.idol-cta-text {
  color: rgba(255,255,255,0.78);
  font-size: 0.95rem; line-height: 1.55;
  margin: 0 0 16px;
}
.idol-cta-btn {
  display: inline-block; padding: 12px 22px;
  background: #EAFF00; color: #000;
  font-weight: 800; text-decoration: none;
  border-radius: 999px;
  font-family: 'Outfit', system-ui, sans-serif;
  letter-spacing: 0.03em;
  box-shadow: 0 6px 20px rgba(234,255,0,0.35);
  transition: transform .15s, box-shadow .15s;
}
.idol-cta-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 26px rgba(234,255,0,0.5);
}

/* --- Pagina scelta idolo --- */
.idol-pick-intro p { line-height: 1.55; }
.idol-pick-form { display: flex; flex-direction: column; gap: 24px; }
.idol-era-section { display: flex; flex-direction: column; gap: 8px; }
.idol-era-title {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.15rem; font-weight: 800;
  color: var(--gold); margin: 0;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.idol-era-desc {
  font-size: 0.82rem; color: rgba(255,255,255,0.55);
  margin: 0 0 8px;
}
.idol-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 10px;
}
.idol-card { position: relative; cursor: pointer; display: block; }
.idol-card input { position: absolute; opacity: 0; pointer-events: none; }
.idol-card-inner {
  background: rgba(0,0,0,0.35);
  border: 2px solid rgba(255,255,255,0.10);
  border-radius: 14px;
  padding: 14px 12px 12px;
  height: 100%;
  display: flex; flex-direction: column; gap: 4px;
  transition: all .18s;
  position: relative;
}
.idol-card-label {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.4rem; font-weight: 800;
  color: #fff; letter-spacing: 0.04em; line-height: 1;
}
.idol-card-ruolo {
  font-size: 0.72rem; color: rgba(255,255,255,0.55);
  text-transform: uppercase; letter-spacing: 0.08em;
  font-weight: 600;
}
.idol-card-desc {
  font-size: 0.78rem; color: rgba(255,255,255,0.7);
  line-height: 1.4; margin-top: 6px;
}
.idol-card-check {
  position: absolute; top: 10px; right: 10px;
  width: 22px; height: 22px;
  background: #EAFF00; color: #000;
  border-radius: 50%;
  font-weight: 800; font-size: 0.85rem;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transform: scale(0.6);
  transition: all .18s;
}
.idol-card:hover .idol-card-inner {
  border-color: rgba(234,255,0,0.45);
  transform: translateY(-2px);
}
.idol-card-selected .idol-card-inner,
.idol-card input:checked + .idol-card-inner {
  border-color: #EAFF00;
  background: rgba(234,255,0,0.08);
  box-shadow: 0 8px 22px rgba(234,255,0,0.18);
}
.idol-card-selected .idol-card-check,
.idol-card input:checked + .idol-card-inner .idol-card-check {
  opacity: 1; transform: scale(1);
}
.idol-pick-actions {
  display: flex; gap: 10px; flex-wrap: wrap;
  justify-content: center; padding: 24px 0 12px;
}

/* --- Pannello coach aforismi --- */
.aphorism-list { display: flex; flex-direction: column; gap: 10px; }
.aphorism-row { padding: 12px 14px; }
.aph-meta {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
  margin-bottom: 8px; font-size: 0.78rem;
}
.aph-idol {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; color: var(--gold);
  font-size: 1rem; letter-spacing: 0.04em;
}
.aph-dim {
  padding: 2px 8px; border-radius: 999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.75);
  text-transform: uppercase; letter-spacing: 0.06em;
  font-weight: 600; font-size: 0.7rem;
}
.aph-status {
  padding: 2px 10px; border-radius: 999px;
  font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.06em; font-size: 0.7rem;
}
.aph-status-draft     { background: rgba(246,194,62,0.18); color: var(--gold); border:1px solid rgba(246,194,62,0.4); }
.aph-status-approved  { background: rgba(56,161,105,0.22); color: #6EE7B7; border:1px solid rgba(56,161,105,0.45); }
.aph-status-rejected  { background: rgba(229,62,62,0.18); color: #FCA5A5; border:1px solid rgba(229,62,62,0.4); }
.aph-status-archived  { background: rgba(160,174,192,0.18); color: #CBD5E0; border:1px solid rgba(160,174,192,0.4); }
.aph-date { margin-left: auto; }
.aph-edit-form { display: flex; flex-direction: column; gap: 8px; }
.aph-textarea {
  width: 100%; resize: vertical;
  background: rgba(0,0,0,0.32);
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 10px;
  color: #fff; font: inherit; font-size: 0.95rem;
  line-height: 1.5; padding: 10px 12px;
}
.aph-textarea:focus { outline: none; border-color: var(--gold); }
.aph-contesto {
  background: rgba(0,0,0,0.22);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 8px;
  color: #fff; font: inherit; font-size: 0.82rem;
  padding: 6px 10px;
}
.aph-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.aph-delete { opacity: 0.5; }
.aph-delete:hover { opacity: 1; color: #FCA5A5; }

/* status chips coach (riutilizzabili) */
.status-chips .chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 999px;
  background: rgba(0,0,0,0.32);
  border: 1px solid rgba(255,255,255,0.14);
  color: rgba(255,255,255,0.78);
  text-decoration: none; font-size: 0.85rem;
  transition: all .15s;
}
.status-chips .chip:hover { border-color: rgba(246,194,62,0.4); color: #fff; }
.status-chips .chip-on {
  background: rgba(246,194,62,0.18);
  border-color: var(--gold);
  color: var(--gold); font-weight: 700;
}
.chip-n {
  background: rgba(255,255,255,0.10);
  padding: 1px 8px; border-radius: 999px;
  font-size: 0.75rem; font-weight: 700;
}

/* modal generazione aforismi */
.modal-dialog {
  border: none; border-radius: 18px;
  background: linear-gradient(180deg, #1a2030, #0d1220);
  color: #fff; max-width: min(640px, 95vw);
  padding: 0; box-shadow: 0 24px 70px rgba(0,0,0,0.6);
}
.modal-dialog::backdrop { background: rgba(0,0,0,0.72); backdrop-filter: blur(4px); }
.modal-body { padding: 22px 24px 18px; }
.modal-body h2 {
  margin: 0 0 10px; font-family: 'Outfit', system-ui, sans-serif;
  color: var(--gold); font-size: 1.3rem;
}
.gen-fieldset {
  margin-top: 14px; padding: 12px 14px;
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 12px; background: rgba(0,0,0,0.22);
}
.gen-fieldset legend {
  padding: 0 8px; font-size: 0.82rem;
  color: var(--gold); font-weight: 700;
  letter-spacing: 0.04em; text-transform: uppercase;
}
.gen-idols {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 6px; max-height: 280px; overflow-y: auto;
  margin-top: 8px;
}
.gen-idol-chk {
  display: flex; align-items: center; gap: 6px;
  font-size: 0.82rem; padding: 4px 6px;
  border-radius: 6px; cursor: pointer;
}
.gen-idol-chk:hover { background: rgba(255,255,255,0.04); }
.modal-actions {
  display: flex; gap: 10px; justify-content: flex-end;
  margin-top: 18px; padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.10);
}

@media (max-width: 600px) {
  .idol-quote-text { font-size: 1.06rem; }
  .idol-grid { grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
  .idol-card-label { font-size: 1.2rem; }
}

/* ==========================================================================
   TEST COGNITIVI / PSICOCINEMATICI (hub + runner + risultato + coach dash)
   ========================================================================== */

/* --- HUB --- */
.test-hub-intro p { line-height: 1.55; }
.test-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
  margin-top: 14px;
}
.test-card {
  display: flex; gap: 14px; align-items: center;
  padding: 16px 14px;
  background: rgba(0,0,0,0.35);
  border: 1px solid rgba(255,255,255,0.10);
  border-left: 4px solid var(--test-color, var(--gold));
  border-radius: 14px;
  text-decoration: none; color: inherit;
  transition: transform .15s, border-color .15s, background .15s;
}
.test-card:hover {
  transform: translateY(-2px);
  border-color: var(--test-color, var(--gold));
  background: rgba(0,0,0,0.45);
}
.test-card-icon { font-size: 2.2rem; flex: 0 0 auto; }
.test-card-body { flex: 1 1 auto; min-width: 0; }
.test-card-body h3 {
  margin: 0 0 4px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.05rem; font-weight: 800;
  color: #fff; letter-spacing: 0.01em;
}
.test-card-sub {
  margin: 0 0 8px;
  font-size: 0.82rem; color: rgba(255,255,255,0.65);
  line-height: 1.4;
}
.test-card-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.test-card-tag {
  padding: 2px 8px; border-radius: 999px;
  font-size: 0.68rem; font-weight: 700;
  background: rgba(234,255,0,0.14); color: #EAFF00;
  border: 1px solid rgba(234,255,0,0.32);
  text-transform: uppercase; letter-spacing: 0.05em;
}
.test-card-dur {
  font-size: 0.72rem; color: rgba(255,255,255,0.5);
  padding: 2px 0;
}
.test-card-count {
  flex: 0 0 auto; text-align: center;
  display: flex; flex-direction: column; align-items: center;
  min-width: 50px;
}
.test-card-n {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.6rem; font-weight: 800;
  color: var(--test-color, var(--gold)); line-height: 1;
}
.test-card-n-lbl {
  font-size: 0.62rem; color: rgba(255,255,255,0.5);
  text-transform: uppercase; letter-spacing: 0.08em;
}
.test-card-n-new {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 0.78rem; font-weight: 800;
  color: #000; background: #EAFF00;
  padding: 4px 8px; border-radius: 6px;
  letter-spacing: 0.05em;
}
.test-history { display: flex; flex-direction: column; gap: 4px; }
.test-history-row {
  display: grid;
  grid-template-columns: auto 1fr auto auto auto;
  gap: 10px; align-items: center;
  padding: 8px 10px; border-radius: 8px;
  text-decoration: none; color: rgba(255,255,255,0.85);
  transition: background .15s;
  font-size: 0.85rem;
}
.test-history-row:hover { background: rgba(255,255,255,0.05); }
.test-history-icon { font-size: 1.1rem; }
.test-history-name { font-weight: 600; }
.test-history-date { font-size: 0.74rem; }
.test-history-rt, .test-history-acc {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 700; color: var(--gold);
}
.test-history-rt small, .test-history-acc small {
  font-size: 0.65rem; color: rgba(255,255,255,0.5);
  margin-left: 2px;
}

/* --- ARENA TEST (runner) --- */
.test-running-body { overflow: hidden; }
.test-arena-container {
  width: 100%;
  max-width: 760px;
  margin: 0 auto;
}
.ct-stage {
  position: relative;
  background: #000;
  border-radius: 18px;
  min-height: min(70vh, 600px);
  padding: 28px 20px 24px;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  text-align: center;
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
  outline: none;
  cursor: pointer;
  transition: background .15s;
}
.ct-stage-fullscreen {
  min-height: min(80vh, 700px);
}
.ct-stage.ct-ready { background: #0a0a0a; }
.ct-status {
  position: absolute; top: 14px; left: 14px;
  font-size: 0.78rem; color: rgba(255,255,255,0.4);
  letter-spacing: 0.05em;
}
.ct-progress {
  position: absolute; top: 14px; right: 14px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 0.9rem; color: #EAFF00;
  font-weight: 700; letter-spacing: 0.04em;
}
.ct-target-wrap {
  flex: 1; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 18px; min-height: 280px;
  padding: 20px 10px;
}
.ct-intro {
  font-size: 1.04rem; line-height: 1.55;
  color: rgba(255,255,255,0.92);
  margin: 0; max-width: 540px;
}
.ct-intro-sub {
  font-size: 0.84rem; color: rgba(255,255,255,0.6);
  margin: 4px 0 0;
}
.ct-wait {
  font-size: 3rem; color: rgba(255,255,255,0.2);
  font-family: monospace;
}
.ct-stim {
  width: 180px; height: 180px;
  border-radius: 50%;
  box-shadow: 0 0 60px currentColor;
  animation: ct-pop 0.15s ease-out;
}
.ct-stim-green {
  background: #10B981;
  box-shadow: 0 0 60px rgba(16,185,129,0.65);
}
@keyframes ct-pop {
  from { transform: scale(0.6); opacity: 0; }
  to   { transform: scale(1); opacity: 1; }
}
.ct-feedback {
  position: absolute; bottom: 90px; left: 50%;
  transform: translateX(-50%);
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.4rem; font-weight: 800;
  padding: 6px 14px; border-radius: 10px;
  pointer-events: none;
}
.ct-feedback.ct-fb-ok  { color: #6EE7B7; }
.ct-feedback.ct-fb-bad { color: #FCA5A5; }
.ct-actions {
  position: absolute; bottom: 18px; left: 0; right: 0;
  display: flex; justify-content: center; gap: 10px;
  padding: 0 16px;
}
.ct-btn {
  padding: 12px 24px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 999px;
  color: #fff; font-weight: 700;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 0.95rem; cursor: pointer;
  letter-spacing: 0.03em;
  text-decoration: none;
  display: inline-flex; align-items: center;
}
.ct-btn:hover { background: rgba(255,255,255,0.14); }
.ct-btn-primary {
  background: #EAFF00; color: #000;
  border-color: #EAFF00;
  box-shadow: 0 4px 18px rgba(234,255,0,0.32);
}
.ct-btn-primary:hover { background: #d6e800; }

/* Stroop & Go/NoGo specifics */
.ct-stroop-word {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 3.2rem; font-weight: 900;
  letter-spacing: 0.04em;
  text-shadow: 0 0 30px currentColor;
}
.ct-stroop-btns {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 10px; max-width: 360px; width: 100%;
}
.ct-color-btn {
  padding: 18px;
  border: 2px solid rgba(0,0,0,0.3);
  border-radius: 14px;
  color: #fff; font-weight: 800;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1rem; cursor: pointer;
  text-shadow: 0 1px 4px rgba(0,0,0,0.5);
  transition: transform .08s;
}
.ct-color-btn:active { transform: scale(0.96); }

.ct-letter {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 7rem; font-weight: 900;
  color: #fff;
  text-shadow: 0 0 40px rgba(255,255,255,0.4);
  line-height: 1;
}
.ct-letter-nogo {
  color: #E53E3E;
  text-shadow: 0 0 50px rgba(229,62,62,0.7);
}

.ct-loading {
  color: rgba(255,255,255,0.6);
  font-size: 0.9rem; padding: 12px;
}

/* Quick result during arena (mini-card) */
.ct-result-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 10px;
  max-width: 560px; width: 100%;
}
.ct-result-stat {
  display: flex; flex-direction: column; align-items: center;
  padding: 14px 8px;
  background: rgba(255,255,255,0.06);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.10);
}
.ct-result-num {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.6rem; font-weight: 800;
  color: #EAFF00; line-height: 1;
}
.ct-result-lbl {
  font-size: 0.7rem; color: rgba(255,255,255,0.6);
  text-transform: uppercase; letter-spacing: 0.06em;
  margin-top: 6px;
}
.ct-result-warn .ct-result-num { color: #FCA5A5; }

/* --- RESULT PAGE (post-test) --- */
.test-result-card { padding: 18px; }
.test-result-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 10px;
}
.test-result-stat {
  display: flex; flex-direction: column; align-items: center;
  padding: 14px 10px;
  background: rgba(255,255,255,0.05);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.10);
}
.test-result-num {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.8rem; font-weight: 800;
  color: var(--gold); line-height: 1;
}
.test-result-lbl {
  font-size: 0.7rem; color: rgba(255,255,255,0.6);
  text-transform: uppercase; letter-spacing: 0.06em;
  margin-top: 6px; text-align: center;
}
.test-result-warn .test-result-num { color: #FCA5A5; }

/* --- COACH DASHBOARD --- */
.coach-tests-table { overflow-x: auto; }
.data-table {
  width: 100%; border-collapse: collapse;
  background: rgba(0,0,0,0.32);
  border-radius: 12px;
  overflow: hidden;
}
.data-table th {
  background: rgba(255,255,255,0.06);
  padding: 10px 12px;
  font-size: 0.78rem; font-weight: 700;
  color: rgba(255,255,255,0.85);
  text-transform: uppercase; letter-spacing: 0.05em;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
.data-table td {
  padding: 8px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  font-size: 0.88rem;
  vertical-align: middle;
}
.data-table tbody tr:hover { background: rgba(255,255,255,0.03); }
.data-table-compact td { padding: 4px 8px; font-size: 0.78rem; }
.td-athlete strong { color: #fff; }
.td-athlete small { display: block; color: rgba(255,255,255,0.5); }

.th-test { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.th-test-icon { font-size: 1.2rem; }
.th-test-label { font-size: 0.7rem; font-weight: 600; color: rgba(255,255,255,0.75); }

.test-cell {
  display: inline-flex; flex-direction: column; gap: 2px;
  align-items: center;
  padding: 6px 10px; border-radius: 8px;
  text-decoration: none;
  border-left: 3px solid var(--c, var(--gold));
  background: rgba(255,255,255,0.03);
  transition: background .15s;
  min-width: 64px;
}
.test-cell:hover { background: rgba(255,255,255,0.08); }
.test-cell-rt {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; color: #fff;
  font-size: 1rem;
}
.test-cell-rt small { font-size: 0.65rem; color: rgba(255,255,255,0.5); margin-left: 2px; }
.test-cell-acc {
  font-size: 0.74rem; color: var(--gold);
  font-weight: 600;
}
.test-cell-date {
  font-size: 0.65rem; color: rgba(255,255,255,0.45);
}
.test-cell-empty {
  color: rgba(255,255,255,0.25);
  font-weight: 700;
}

@media (max-width: 700px) {
  .ct-stim { width: 140px; height: 140px; }
  .ct-letter { font-size: 5rem; }
  .ct-stroop-word { font-size: 2.4rem; }
  .test-grid { grid-template-columns: 1fr; }
  .test-history-row {
    grid-template-columns: auto 1fr auto;
    gap: 6px;
  }
  .test-history-date,
  .test-history-acc { display: none; }
}

/* ==========================================================================
   SFONDO MESH — gradiente coi colori societari Polisportiva (navy + azzurro)
   ========================================================================== */

/* Mesh gradient moderno: più aloni di azzurro/navy sfumati tra loro su base
   navy profondo. Dà movimento e profondità senza foto, sempre nitido. */
body.athlete-bg {
  background:
    radial-gradient(at 18% 16%, rgba(43,108,176,0.55) 0px, transparent 45%),
    radial-gradient(at 84% 24%, rgba(26,68,128,0.50) 0px, transparent 45%),
    radial-gradient(at 50% 96%, rgba(13,34,86,0.75) 0px, transparent 52%),
    radial-gradient(at 75% 70%, rgba(43,108,176,0.18) 0px, transparent 42%),
    #08132e;
  background-attachment: fixed;
}

/* Il mesh fa già da atmosfera: niente foto, niente blob. */
.athlete-bg .bg-scene { display: none; }

/* Card stadio: vetro più profondo + bagliore neon coerente col radar. */
.athlete-bg .card-render {
  background:
    radial-gradient(140% 70% at 50% 0%, rgba(43,108,176,0.22) 0%, transparent 60%),
    linear-gradient(160deg, #0c1a4a 0%, #091230 52%, #04081c 100%);
  border: 1.5px solid rgba(246,194,62,0.32);
  box-shadow:
    0 28px 70px rgba(0,0,0,0.72),
    0 0 0 1px rgba(246,194,62,0.10),
    0 0 60px rgba(234,255,0,0.04),
    inset 0 1px 0 rgba(255,255,255,0.10);
}

/* Alone neon attorno al radar: lo fa risaltare come un'insegna. */
.athlete-bg .cr-radar-wrap::after {
  content: "";
  position: absolute;
  inset: 8% 14%;
  background: radial-gradient(ellipse, rgba(234,255,0,0.10) 0%, transparent 68%);
  filter: blur(14px);
  z-index: 0;
  pointer-events: none;
}
.athlete-bg .cr-radar-wrap > svg { position: relative; z-index: 1; }

/* --- MINI-PILLOLE VALORI sotto il radar (numero + delta) --- */
.cr-values {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 7px;
  padding: 4px 16px 22px;
}
.cr-val-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 11px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 999px;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.cr-val-name {
  font-size: 0.74rem;
  font-weight: 600;
  color: rgba(255,255,255,0.62);
  letter-spacing: 0.02em;
}
.cr-val-num {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 0.95rem;
  font-weight: 800;
  color: #EAFF00;
  line-height: 1;
  text-shadow: 0 0 10px rgba(234,255,0,0.35);
}
.cr-val-delta {
  font-size: 0.66rem;
  line-height: 1;
  font-weight: 700;
}
.cr-val-up   { color: #6EE7B7; }
.cr-val-down { color: #FCA5A5; }
.cr-val-flat { color: rgba(255,255,255,0.35); }
.cr-val-new  { color: rgba(234,255,0,0.6); }

@media (min-width: 640px) {
  .cr-values { gap: 9px; padding: 6px 22px 26px; }
  .cr-val-name { font-size: 0.8rem; }
  .cr-val-num  { font-size: 1.05rem; }
}

/* ==========================================================================
   AREA COACH — gestionale chiaro con sidebar navy (tutto scoped .coach-app)
   ========================================================================== */
body.coach-app{
  --ca-navy:#0A1F4A; --ca-azure:#2B6CB0; --ca-gold:#F6C23E;
  --ca-bg:#EEF1F6; --ca-card:#FFFFFF; --ca-ink:#1A2A44; --ca-muted:#4A5568;
  --ca-line:#E2E7F0; --ca-green:#2F9E5F; --ca-red:#D6453C; --ca-amber:#E0992A;
  display:block; background:var(--ca-bg); color:var(--ca-ink);
  font-family:'Inter','Outfit',system-ui,sans-serif; min-height:100vh;
}
/* z-index:2 esplicito: senza, .ca-app eredita z-index:1 dalla regola
   globale "body > *" (riga 32) — lo stesso valore di .app-footer, che
   però viene dopo nel DOM (è incluso a parte in base.html): a parità di
   z-index vince l'ultimo nel markup, quindi il footer si dipingeva SOPRA
   l'intera app coach, sidebar mobile aperta compresa (bug reale segnalato
   da Marco il 2026-09-03, verificato con screenshot su viewport mobile). */
.coach-app .ca-app{ display:flex; min-height:100vh; position:relative; z-index:2; }

/* --- SIDEBAR --- */
.coach-app .ca-side{ width:236px; background:linear-gradient(180deg,#0c2358,#081634); color:#fff;
  display:flex; flex-direction:column; position:fixed; top:0; bottom:0; left:0; z-index:30; }
.coach-app .ca-brand{ padding:18px 18px 14px; display:flex; align-items:center; gap:10px;
  border-bottom:1px solid rgba(255,255,255,0.08); }
.coach-app .ca-logo{ width:48px; height:48px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center; overflow:visible; }
.coach-app .ca-logo img{ width:100%; height:100%; object-fit:contain;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,0.45)); }
.coach-app .ca-logo-fallback{ width:100%; height:100%; border-radius:10px;
  background:#fff; color:var(--ca-navy); display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:0.85rem; box-shadow:0 2px 10px rgba(0,0,0,0.35); }
.coach-app .ca-brand-txt{ min-width:0; }
.coach-app .ca-brand b{ display:block; font-size:0.78rem; letter-spacing:.4px; color:#fff; line-height:1.25; }
.coach-app .ca-brand small.ca-brand-prog{ display:block; margin-top:2px; color:var(--ca-gold);
  font-family:'Outfit',system-ui,sans-serif; font-weight:800; font-size:0.7rem;
  letter-spacing:.12em; text-transform:uppercase; }
.coach-app .ca-nav{ padding:8px 10px; flex:1; overflow-y:auto; }
.coach-app .ca-sec{ font-size:0.62rem; text-transform:uppercase; letter-spacing:.12em;
  color:rgba(255,255,255,0.35); padding:12px 10px 6px; font-weight:600; }
.coach-app .ca-item{ display:flex; align-items:center; gap:11px; padding:9px 11px; border-radius:9px;
  color:rgba(255,255,255,0.78); text-decoration:none; font-size:0.86rem; font-weight:500; margin-bottom:2px; transition:.12s; }
.coach-app .ca-item:hover{ background:rgba(255,255,255,0.07); color:#fff; }
.coach-app .ca-item.on{ background:var(--ca-gold); color:var(--ca-navy); font-weight:700; }
.coach-app .ca-item .ic{ width:18px; text-align:center; font-size:0.95rem; }
.coach-app .ca-foot{ padding:12px; border-top:1px solid rgba(255,255,255,0.08); display:flex; align-items:center; gap:10px; }
.coach-app .ca-foot .av{ width:32px; height:32px; border-radius:50%; background:var(--ca-azure);
  display:flex; align-items:center; justify-content:center; font-weight:700; font-size:0.78rem; color:#fff; }
.coach-app .ca-foot .nm{ font-size:0.8rem; font-weight:600; line-height:1.2; color:#fff; }
.coach-app .ca-foot .nm small{ color:rgba(255,255,255,0.5); font-weight:400; font-size:0.68rem; display:block; }
.coach-app .ca-foot .out{ margin-left:auto; color:rgba(255,255,255,0.55); text-decoration:none; font-size:1.1rem; }
.coach-app .ca-foot .out:hover{ color:#fff; }

/* --- MAIN + TOPBAR --- */
.coach-app .ca-main{ flex:1; margin-left:236px; display:flex; flex-direction:column; min-width:0; }
.coach-app .ca-top{ background:#fff; border-bottom:1px solid var(--ca-line); padding:11px 24px;
  display:flex; align-items:center; gap:16px; position:sticky; top:0; z-index:20; }
.coach-app .ca-search{ flex:1; min-width:0; max-width:420px; display:flex; align-items:center; gap:8px;
  background:var(--ca-bg); border:1px solid var(--ca-line); border-radius:10px; padding:8px 13px; color:var(--ca-muted); font-size:0.85rem; }
/* min-width:0 sopra: senza, un flex item con un <input> dentro non si
   restringe mai sotto la sua larghezza "naturale" (il placeholder), e su
   schermi stretti spinge fuori dal viewport tutto ciò che viene dopo —
   bug reale segnalato da Marco il 2026-09-03 (il "+" spariva dallo
   schermo), verificato su iPhone SE prima e dopo la correzione. */
.coach-app .ca-search input{ min-width:0; }
.coach-app .ca-search input{ border:none; background:none; outline:none; flex:1; font:inherit; color:var(--ca-ink); }
.coach-app .ca-top-actions{ margin-left:auto; display:flex; gap:10px; }
.coach-app .ca-burger{ display:none; background:none; border:none; font-size:1.3rem; cursor:pointer; color:var(--ca-navy); }

/* --- LINK DENTRO TESTO LIBERO (es. spunti Keep Growing) --- */
.coach-app .ca-linkified{ white-space:pre-line; }
.coach-app .ca-linkified a{ color:var(--ca-azure); font-weight:600;
  text-decoration:underline; word-break:break-word; }
.coach-app .ca-link-preview{
  display:flex; align-items:center; gap:10px;
  margin-top:10px; padding-top:10px; border-top:1px solid var(--ca-line);
  text-decoration:none; color:inherit; transition:opacity .15s;
}
.coach-app .ca-link-preview:hover{ opacity:0.75; }
.coach-app .ca-link-thumb{ width:48px; height:48px; border-radius:8px; object-fit:cover;
  flex-shrink:0; background:var(--ca-bg); }
.coach-app .ca-link-body{ min-width:0; display:block; }
.coach-app .ca-link-title{ font-size:0.8rem; font-weight:700; color:var(--ca-ink); line-height:1.3;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.coach-app .ca-link-domain{ font-size:0.66rem; color:var(--ca-muted); text-transform:uppercase;
  letter-spacing:.5px; margin-top:3px; display:block; }

/* --- BOTTONI --- */
.coach-app .ca-btn{ border:none; border-radius:9px; padding:9px 15px; font:inherit; font-size:0.83rem; font-weight:600;
  cursor:pointer; display:inline-flex; align-items:center; gap:7px; text-decoration:none; white-space:nowrap; }
.coach-app .ca-btn-gold{ background:var(--ca-gold); color:var(--ca-navy); }
.coach-app .ca-btn-gold:hover{ background:#e8b62f; }
.coach-app .ca-btn-ghost{ background:#fff; color:var(--ca-navy); border:1px solid var(--ca-line); }
.coach-app .ca-btn-ghost:hover{ background:var(--ca-bg); }
.coach-app .ca-btn-azure{ background:var(--ca-azure); color:#fff; }
.coach-app .ca-btn-azure:hover{ background:#245a96; }
.coach-app .ca-btn-sm{ padding:6px 11px; font-size:0.78rem; }

/* --- CONTENT --- */
/* min-width:0: .ca-content è un flex item della colonna .ca-main, che di
   default non si restringe sotto la larghezza "naturale" del figlio più
   largo — una tabella con min-width fisso (es. Gruppi) spingeva l'intera
   pagina più larga dello schermo invece di scorrere dentro il proprio
   contenitore overflow-x:auto (stesso identico bug della ricerca nel
   topbar, un livello più in alto nell'albero — Marco, 2026-09-03). */
.coach-app .ca-content{ padding:24px; max-width:1240px; min-width:0; }
.coach-app .ca-h1{ font-size:1.5rem; font-weight:800; margin-bottom:3px; color:var(--ca-navy); }
.coach-app .ca-sub{ color:var(--ca-muted); font-size:0.88rem; margin-bottom:22px; }

/* KPI */
.coach-app .ca-kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:22px; }
.coach-app .ca-kpi{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:14px; padding:16px 18px; }
.coach-app .ca-kpi-lbl{ font-size:0.72rem; color:var(--ca-muted); font-weight:600; text-transform:uppercase; letter-spacing:.05em; }
.coach-app .ca-kpi-val{ font-family:'Outfit',sans-serif; font-size:2rem; font-weight:800; margin-top:6px; color:var(--ca-navy); line-height:1; }
.coach-app .ca-kpi-val .u{ font-size:0.9rem; color:var(--ca-muted); font-weight:600; }
.coach-app .ca-kpi-trend{ font-size:0.74rem; font-weight:600; margin-top:6px; }
.coach-app .up{ color:var(--ca-green); } .coach-app .down{ color:var(--ca-red); }

/* PANEL */
.coach-app .ca-grid2{ display:grid; grid-template-columns:1.3fr 1fr; gap:18px; align-items:start; }
/* min-width:0 sui figli diretti: un grid item, come un flex item, non si
   restringe di default sotto il contenuto più largo al suo interno — una
   tabella con min-width fisso dentro una colonna di .ca-grid2 spingeva
   l'intera griglia (e la pagina) più larga dello schermo, anche dopo che
   la colonna collassava a 1fr sotto gli 880px (Gruppi, Marco 2026-09-03).
   Stesso principio già applicato a .ca-main/.ca-content più in alto
   nell'albero, qui ripetuto per ogni figlio diretto della griglia. */
.coach-app .ca-grid2 > *{ min-width:0; }
.coach-app .ca-panel{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:14px; padding:18px 20px; margin-bottom:18px; }
.coach-app .ca-panel-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.coach-app .ca-panel-head h3{ font-size:1rem; font-weight:700; color:var(--ca-navy); }
.coach-app .ca-panel-head a{ font-size:0.78rem; color:var(--ca-azure); text-decoration:none; font-weight:600; }

/* row liste */
.coach-app .ca-row{ display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--ca-line); }
.coach-app .ca-row:last-child{ border:none; }
/* Lista "da fare" scrollabile al proprio interno: la card resta compatta
   anche con molti atleti da valutare, invece di limitarsi a mostrarne
   solo i primi 5 e nascondere gli altri (Marco, 2026-09-03). */
.coach-app .ca-scroll-list{ max-height:360px; overflow-y:auto; }
.coach-app .ca-avsm{ width:34px; height:34px; border-radius:50%; background:var(--ca-bg); display:flex; align-items:center;
  justify-content:center; font-weight:700; font-size:0.74rem; color:var(--ca-navy); flex-shrink:0; border:1px solid var(--ca-line); }
.coach-app .ca-row .nm{ font-weight:600; font-size:0.86rem; }
.coach-app .ca-row .meta{ font-size:0.74rem; color:var(--ca-muted); }
.coach-app .ca-badge{ padding:2px 9px; border-radius:99px; font-size:0.68rem; font-weight:700; }
.coach-app .ca-badge-warn{ background:#FCEFD6; color:var(--ca-amber); }
.coach-app .ca-badge-ok{ background:#E1F3E8; color:var(--ca-green); }
.coach-app .ca-badge-red{ background:#FBE3E1; color:var(--ca-red); }

/* azioni rapide */
.coach-app .ca-quick{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.coach-app .ca-qa{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:12px; padding:16px;
  text-align:center; cursor:pointer; text-decoration:none; color:var(--ca-ink); transition:.12s; display:block; }
.coach-app .ca-qa:hover{ border-color:var(--ca-azure); box-shadow:0 4px 14px rgba(43,108,176,0.1); transform:translateY(-1px); }
.coach-app .ca-qa .ic{ font-size:1.6rem; }
.coach-app .ca-qa .t{ font-weight:700; font-size:0.86rem; margin-top:7px; color:var(--ca-navy); }
.coach-app .ca-qa .s{ font-size:0.72rem; color:var(--ca-muted); margin-top:2px; }

/* eventi / log */
.coach-app .ca-ev{ display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px solid var(--ca-line); font-size:0.85rem; }
.coach-app .ca-ev:last-child{ border:none; }
.coach-app .ca-evdate{ background:var(--ca-navy); color:#fff; border-radius:8px; padding:5px 9px; text-align:center; flex-shrink:0; min-width:46px; }
.coach-app .ca-evdate b{ display:block; font-size:0.95rem; font-weight:800; line-height:1; }
.coach-app .ca-evdate small{ font-size:0.6rem; text-transform:uppercase; }
.coach-app .ca-dot{ width:8px; height:8px; border-radius:50%; flex-shrink:0; }

/* HERO SCURO (dashboard mister — "prossimo allenamento") */
.coach-app .ca-hero-dark{ background:linear-gradient(160deg,#0c1a4a,#081230); border-radius:14px;
  padding:18px 20px; color:#fff; margin-bottom:16px; position:relative; }
.coach-app .ca-hero-icon{ width:42px; height:42px; border-radius:11px; background:var(--ca-gold);
  color:var(--ca-navy); display:flex; align-items:center; justify-content:center; font-size:1.2rem;
  position:absolute; top:18px; right:20px; }
.coach-app .ca-hero-label{ font-size:0.68rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
  color:var(--ca-gold); margin-bottom:8px; }
.coach-app .ca-hero-title{ font-family:'Outfit',sans-serif; font-weight:800; font-size:1.1rem;
  margin-bottom:10px; padding-right:52px; }
.coach-app .ca-hero-row{ display:flex; align-items:center; gap:6px; font-size:0.83rem;
  color:rgba(255,255,255,.8); margin-bottom:5px; }
.coach-app .ca-hero-btn{ margin-top:8px; display:inline-flex; background:var(--ca-gold); color:var(--ca-navy);
  font-weight:700; font-size:0.8rem; padding:8px 14px; border-radius:9px; text-decoration:none; }

/* TESSERE NUMERICHE (3 numeri già calcolati, dashboard mister) */
.coach-app .ca-stat-tiles{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:16px; }
.coach-app .ca-stat-tile{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:12px;
  padding:12px 8px; text-align:center; }
.coach-app .ca-stat-tile b{ display:block; font-family:'Outfit',sans-serif; font-weight:800; font-size:1.3rem;
  color:var(--ca-navy); }
.coach-app .ca-stat-tile span{ font-size:0.68rem; color:var(--ca-muted); }

/* MENU A TENDINA — sezioni secondarie che non devono allungare la pagina
   (bacheca, prossimi impegni in dashboard; gruppi nell'elenco atleti). */
.coach-app details.ca-acc{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:12px;
  margin-bottom:12px; overflow:hidden; }
.coach-app details.ca-acc summary{ list-style:none; display:flex; align-items:center; justify-content:space-between;
  padding:13px 16px; font-weight:700; color:var(--ca-navy); font-size:0.9rem; cursor:pointer; }
.coach-app details.ca-acc summary::-webkit-details-marker{ display:none; }
.coach-app details.ca-acc summary .chev{ color:var(--ca-muted); font-size:0.7rem; transition:transform .15s; }
.coach-app details.ca-acc[open] summary .chev{ transform:rotate(180deg); }
.coach-app details.ca-acc .ca-acc-body{ padding:0 16px 14px; display:flex; flex-direction:column; gap:10px; }
.coach-app details.ca-acc.danger summary{ color:var(--ca-red); }

/* TABELLA */
.coach-app .ca-table{ width:100%; border-collapse:collapse; }
.coach-app .ca-table thead th{ text-align:left; font-size:0.72rem; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ca-muted); padding:10px 12px; border-bottom:2px solid var(--ca-line); font-weight:700; }
.coach-app .ca-table tbody td{ padding:11px 12px; border-bottom:1px solid var(--ca-line); font-size:0.87rem; }
.coach-app .ca-table tbody tr.clickable{ cursor:pointer; }
.coach-app .ca-table tbody tr.clickable:hover{ background:var(--ca-bg); }
.coach-app .ca-atname{ display:flex; align-items:center; gap:10px; font-weight:600; }
.coach-app .ca-idx{ font-family:'Outfit',sans-serif; font-weight:800; padding:3px 10px; border-radius:8px; font-size:0.9rem; }
.coach-app .ca-idx-hi{ background:#E1F3E8; color:var(--ca-green); }
.coach-app .ca-idx-mid{ background:#FCEFD6; color:var(--ca-amber); }
.coach-app .ca-idx-lo{ background:#FBE3E1; color:var(--ca-red); }

/* ELENCO ATLETI MOBILE (raggruppato per squadra, con menu a tendina) —
   alternativa a .ca-table sotto gli 880px, stessi dati. */
.coach-app .ca-mobile-list{ display:none; }
.coach-app .ca-search-lg{ background:var(--ca-card); border:1px solid var(--ca-line); border-radius:10px;
  padding:9px 12px; color:var(--ca-muted); font-size:0.86rem; display:flex; align-items:center; gap:8px;
  margin-bottom:14px; }
.coach-app .ca-search-lg input{ border:none; background:none; outline:none; flex:1; min-width:0; font:inherit; color:var(--ca-ink); }
.coach-app .ca-mrow{ text-decoration:none; color:inherit; }
.coach-app .ca-mrow-chev{ color:var(--ca-muted); font-size:1rem; flex-shrink:0; }
@media(max-width:880px){
  .coach-app .ca-mobile-list{ display:block; }
  .coach-app .ca-desktop-table{ display:none; }
}

/* SCHEDA ATLETA */
.coach-app .ca-ath-head{ display:flex; align-items:center; gap:16px; background:var(--ca-card); border:1px solid var(--ca-line);
  border-radius:14px; padding:18px 20px; margin-bottom:18px; flex-wrap:wrap; }
.coach-app .ca-ath-av{ width:64px; height:64px; border-radius:50%; background:var(--ca-navy); color:var(--ca-gold);
  display:flex; align-items:center; justify-content:center; font-weight:800; font-size:1.3rem; overflow:hidden; flex-shrink:0; }
.coach-app .ca-ath-av img{ width:100%; height:100%; object-fit:cover; }
.coach-app .ca-ath-head h2{ font-size:1.3rem; color:var(--ca-navy); }
.coach-app .ca-ath-head .r{ color:var(--ca-muted); font-size:0.85rem; }
.coach-app .ca-ath-head .acts{ margin-left:auto; display:flex; gap:10px; flex-wrap:wrap; }
.coach-app .ca-radar-box{ display:grid; grid-template-columns:260px 1fr; gap:20px; align-items:center; }
.coach-app .ca-radar-box svg{ width:100%; height:auto; display:block; }
.coach-app .ca-vlist{ display:flex; flex-direction:column; gap:8px; }
.coach-app .ca-vrow{ display:flex; align-items:center; gap:10px; }
.coach-app .ca-vrow .vn{ width:130px; font-size:0.84rem; font-weight:600; }
.coach-app .ca-vbar{ flex:1; height:9px; background:var(--ca-bg); border-radius:99px; overflow:hidden; }
.coach-app .ca-vbar i{ display:block; height:100%; border-radius:99px; }
.coach-app .ca-vrow .vv{ font-family:'Outfit',sans-serif; font-weight:800; width:24px; text-align:right; color:var(--ca-navy); }

/* flash */
.coach-app .ca-flash{ padding:11px 16px; border-radius:10px; margin-bottom:16px; font-size:0.86rem; font-weight:500; }
.coach-app .ca-flash-ok{ background:#E1F3E8; color:#1d6e40; border:1px solid #b6e0c6; }
.coach-app .ca-flash-error{ background:#FBE3E1; color:#9a2820; border:1px solid #f0b8b2; }

/* backdrop mobile sidebar */
.coach-app .ca-backdrop{ display:none; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:25; }

/* Striscia col nome del club (mobile) e barra di navigazione fissa in
   fondo: nascoste di default, mostrate solo sotto gli 880px insieme al
   resto del riadattamento mobile (Marco, 2026-09-03). */
.coach-app .ca-mobile-brand{ display:none; }
.coach-app .ca-tabbar{ display:none; }

@media(max-width:880px){
  .coach-app .ca-kpis{ grid-template-columns:repeat(2,1fr); }
  .coach-app .ca-grid2{ grid-template-columns:1fr; }
  .coach-app .ca-radar-box{ grid-template-columns:1fr; }
  .coach-app .ca-side{ transform:translateX(-100%); transition:transform .25s; }
  .coach-app.ca-side-open .ca-side{ transform:translateX(0); }
  .coach-app.ca-side-open .ca-backdrop{ display:block; }
  .coach-app .ca-main{ margin-left:0; }
  .coach-app .ca-burger{ display:block; }
  .coach-app .ca-top-actions .ca-label{ display:none; }

  .coach-app .ca-mobile-brand{ display:flex; align-items:center; gap:9px; background:var(--ca-navy);
    color:#fff; padding:9px 14px; position:sticky; top:0; z-index:21; }
  .coach-app .ca-mobile-brand .sq{ width:24px; height:24px; border-radius:6px; background:#fff;
    color:var(--ca-navy); display:flex; align-items:center; justify-content:center; font-weight:800;
    font-size:0.62rem; flex-shrink:0; overflow:hidden; }
  .coach-app .ca-mobile-brand .sq img{ width:100%; height:100%; object-fit:contain; }
  .coach-app .ca-mobile-brand .txt{ min-width:0; flex:1; line-height:1.2; }
  .coach-app .ca-mobile-brand .txt b{ display:block; font-size:0.7rem; letter-spacing:.02em;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .coach-app .ca-mobile-brand .txt small{ display:block; color:var(--ca-gold); font-weight:800;
    font-size:0.58rem; letter-spacing:.07em; text-transform:uppercase; margin-top:1px; }
  .coach-app .ca-mobile-brand .av{ width:24px; height:24px; border-radius:50%; background:var(--ca-azure);
    color:#fff; font-weight:800; font-size:0.6rem; display:flex; align-items:center; justify-content:center;
    flex-shrink:0; }

  .coach-app .ca-tabbar{ display:flex; position:fixed; left:0; right:0; bottom:0; z-index:22;
    background:#fff; border-top:1px solid var(--ca-line); padding-bottom:env(safe-area-inset-bottom, 0); }
  .coach-app .ca-tab{ flex:1; display:flex; flex-direction:column; align-items:center; gap:2px;
    padding:7px 0 6px; font-size:0.62rem; font-weight:600; color:var(--ca-muted); text-decoration:none;
    background:none; border:none; font-family:inherit; cursor:pointer; }
  .coach-app .ca-tab .ic{ font-size:1.1rem; line-height:1; }
  .coach-app .ca-tab.on{ color:var(--ca-navy); font-weight:700; }
  /* Spazio in fondo alla pagina pari all'altezza della tabbar, altrimenti
     l'ultimo blocco di contenuto (spesso il footer) resterebbe nascosto
     dietro alla barra fissa. */
  .coach-app .ca-content{ padding-bottom:64px; }
}

/* ==========================================================================
   OVERRIDE LEGACY — rende leggibili le pagine coach non ancora riscritte
   (usano ancora glass-panel/btn/data-table del tema scuro) sul tema chiaro.
   ========================================================================== */
.coach-app .page,
.coach-app main.page{ padding:0; max-width:none; margin:0; width:auto; }
.coach-app .page-head{ display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap; margin-bottom:18px; }
.coach-app .page-head h1{ font-size:1.5rem; font-weight:800; color:var(--ca-navy); }
.coach-app h1,.coach-app h2,.coach-app h3{ color:var(--ca-navy); }
.coach-app .grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.coach-app .grid-2 > *{ min-width:0; }
@media(max-width:760px){ .coach-app .grid-2{ grid-template-columns:1fr; } }

.coach-app .glass-panel{
  background:var(--ca-card); border:1px solid var(--ca-line); border-radius:14px;
  padding:18px 20px; margin-bottom:18px; box-shadow:none; color:var(--ca-ink);
}
.coach-app .glass-panel .section-head,
.coach-app .section-head{ display:flex; align-items:center; justify-content:space-between;
  gap:12px; margin-bottom:14px; flex-wrap:wrap; }
.coach-app .section-head h2{ font-size:1.05rem; font-weight:700; color:var(--ca-navy); }

.coach-app .muted{ color:var(--ca-muted) !important; }
.coach-app .empty{ color:var(--ca-muted); text-align:center; padding:24px; }

/* bottoni legacy → stile gestionale */
.coach-app .btn-gold{ background:var(--ca-gold); color:var(--ca-navy); border:none; border-radius:9px;
  padding:9px 15px; font-weight:600; font-size:0.83rem; cursor:pointer; text-decoration:none;
  display:inline-flex; align-items:center; gap:6px; }
.coach-app .btn-gold:hover{ background:#e8b62f; }
.coach-app .btn-ghost{ background:#fff; color:var(--ca-navy); border:1px solid var(--ca-line); border-radius:9px;
  padding:9px 15px; font-weight:600; font-size:0.83rem; cursor:pointer; text-decoration:none;
  display:inline-flex; align-items:center; gap:6px; }
.coach-app .btn-ghost:hover{ background:var(--ca-bg); }
.coach-app .btn-gold.sm,.coach-app .btn-ghost.sm,.coach-app .sm{ padding:6px 11px; font-size:0.78rem; }

/* tabelle legacy */
.coach-app .data-table{ width:100%; border-collapse:collapse; background:var(--ca-card);
  border:1px solid var(--ca-line); border-radius:12px; overflow:hidden; }
.coach-app .data-table th{ background:#F4F6FB; color:var(--ca-navy); text-align:left;
  padding:10px 12px; font-size:0.74rem; text-transform:uppercase; letter-spacing:.04em;
  border-bottom:2px solid var(--ca-line); font-weight:700; }
.coach-app .data-table td{ padding:10px 12px; border-bottom:1px solid var(--ca-line);
  font-size:0.86rem; color:var(--ca-ink); }
.coach-app .data-table tbody tr:hover{ background:var(--ca-bg); }

/* link, input, code */
.coach-app a.link,.coach-app .link{ color:var(--ca-azure); text-decoration:none; font-weight:600; }
.coach-app a.link:hover{ text-decoration:underline; }
.coach-app input,.coach-app select,.coach-app textarea{
  background:#fff; border:1px solid var(--ca-line); border-radius:8px; padding:8px 10px;
  color:var(--ca-ink); font:inherit; }
.coach-app input:focus,.coach-app select:focus,.coach-app textarea:focus{ outline:none; border-color:var(--ca-azure); }
.coach-app label{ color:var(--ca-navy); }
.coach-app code,.coach-app .link-box{ background:#F1F4F9; color:var(--ca-navy); border:1px solid var(--ca-line);
  border-radius:8px; padding:8px 12px; display:inline-block; word-break:break-all; font-size:0.82rem; }
.coach-app .form-stack{ display:flex; flex-direction:column; gap:12px; }
.coach-app .form-stack label{ font-size:0.84rem; font-weight:600; }
.coach-app .dims-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
.coach-app .row{ display:flex; gap:12px; flex-wrap:wrap; }

/* tag/chip legacy */
.coach-app .tag{ padding:3px 10px; border-radius:99px; font-size:0.7rem; font-weight:700;
  background:#E8EDF6; color:var(--ca-navy); text-transform:uppercase; }
.coach-app .status-chips .chip{ background:#fff; border:1px solid var(--ca-line); color:var(--ca-ink); }
.coach-app .status-chips .chip-on{ background:#FCEFD6; border-color:var(--ca-gold); color:var(--ca-amber); }
.coach-app .chip-n{ background:#E8EDF6; color:var(--ca-navy); }

/* liste legacy (home vecchia, ecc.) */
.coach-app .list{ list-style:none; padding:0; margin:0; }
.coach-app .list li{ border-bottom:1px solid var(--ca-line); }
.coach-app .list li a{ display:flex; align-items:center; gap:12px; padding:10px 4px;
  text-decoration:none; color:var(--ca-ink); }
.coach-app .list li a:hover{ background:var(--ca-bg); }
.coach-app .list .num{ width:28px; font-weight:700; color:var(--ca-azure); }

/* componenti custom su tema chiaro: test, aforismi, piano AI */
.coach-app .test-result-card{ background:var(--ca-card); }
.coach-app .test-result-stat{ background:var(--ca-bg); border:1px solid var(--ca-line); }
.coach-app .test-result-num{ color:var(--ca-navy); }
.coach-app .test-result-lbl{ color:var(--ca-muted); }
.coach-app .test-result-warn .test-result-num{ color:var(--ca-red); }
.coach-app .test-cell{ background:var(--ca-bg); }
.coach-app .test-cell-rt{ color:var(--ca-navy); }
.coach-app .test-cell-rt small,.coach-app .test-cell-date{ color:var(--ca-muted); }
.coach-app .test-cell-acc{ color:var(--ca-azure); }
.coach-app .th-test-label{ color:var(--ca-muted); }

.coach-app .aphorism-row{ background:var(--ca-card); border:1px solid var(--ca-line); }
.coach-app .aph-idol{ color:var(--ca-navy); }
.coach-app .aph-dim{ background:#E8EDF6; color:var(--ca-navy); border:none; }
.coach-app .aph-textarea,.coach-app .aph-contesto{ background:#fff; border:1px solid var(--ca-line); color:var(--ca-ink); }
.coach-app .gen-fieldset{ background:var(--ca-bg); border-color:var(--ca-line); }
.coach-app .gen-fieldset legend{ color:var(--ca-navy); }
.coach-app .gen-idol-chk:hover{ background:#fff; }

/* "Come leggere i dati" box giallo: tienilo chiaro/leggibile */
.coach-app .glass-panel[style*="234,255,0"]{ background:#FFFDF0 !important; border:1px solid var(--ca-line) !important; }
.coach-app .glass-panel[style*="234,255,0"] h3{ color:var(--ca-amber) !important; }
.coach-app .glass-panel[style*="234,255,0"] li{ color:var(--ca-ink) !important; }

/* Piano AI render: lo isolo in un riquadro scuro (è progettato per tema scuro) */
.coach-app .ai-plan-darkbox{ background:linear-gradient(160deg,#0c1a4a,#081230);
  border-radius:14px; padding:18px; color:#fff; margin-top:4px; }
.coach-app .ai-plan-darkbox h1,.coach-app .ai-plan-darkbox h2,
.coach-app .ai-plan-darkbox h3,.coach-app .ai-plan-darkbox h4{ color:#fff; }

/* FOOTER nell'area coach: confinato alla STESSA colonna del contenuto
   (margin-left sidebar + stessa max-width del content) così il suo centro
   coincide col centro delle card, non col centro dello schermo. */
.coach-app .app-footer{
  margin-left:236px; margin-bottom:0;
  max-width:1240px;   /* identico a .ca-content → centro allineato al contenuto */
  background:#fff; border-top:1px solid var(--ca-line);
  padding:26px 24px 32px; display:flex; flex-direction:column; align-items:center; gap:12px;
}
.coach-app .footer-claim-text{ color:var(--ca-navy); }
.coach-app .footer-claim-society{ color:var(--ca-muted); }
.coach-app .footer-divider{ border:none; border-top:1px solid var(--ca-line); width:120px; opacity:1; margin:4px 0; }
.coach-app .footer-powered-by{ color:var(--ca-muted); }
.coach-app .footer-logo{ filter:none; height:104px; max-width:380px; }
.coach-app .footer-aipiutempo-text span{ color:var(--ca-azure) !important; }
@media(max-width:880px){ .coach-app .app-footer{ margin-left:0; max-width:none; margin-bottom:64px; } }

/* Login Segreteria (admin) su tema chiaro */
.coach-app .auth-wrap{ display:flex; justify-content:center; padding:30px 16px; }
.coach-app .auth-form{ background:var(--ca-card); border:1px solid var(--ca-line); width:100%; padding:26px 24px; }
.coach-app .auth-form h2{ color:var(--ca-navy); margin:6px 0 8px; }
.coach-app .auth-form .brand-mini{ color:var(--ca-navy); font-weight:700; }
.coach-app .auth-form .hint{ color:var(--ca-muted) !important; }
.coach-app .auth-form input[type="password"]{ display:block; width:100%; margin:10px 0 14px; }

/* ==========================================================================
   SCELTA FRASE (atleta) — card selezionabili con la voce dell'idolo
   ========================================================================== */
.frase-intro p { line-height: 1.55; }
.frase-form { display: flex; flex-direction: column; gap: 18px; }
.frase-list { display: flex; flex-direction: column; gap: 12px; }
.frase-card { display: block; cursor: pointer; position: relative; }
.frase-card input { position: absolute; opacity: 0; pointer-events: none; }
.frase-card-inner {
  position: relative;
  background: rgba(0,0,0,0.32);
  border: 2px solid rgba(255,255,255,0.10);
  border-radius: 16px;
  padding: 18px 18px 14px;
  transition: all .18s;
}
.frase-card-mark {
  position: absolute; top: 6px; left: 14px;
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 2.4rem; font-weight: 800; line-height: 1;
  color: rgba(234,255,0,0.35);
}
.frase-card-text {
  font-family: 'Outfit', system-ui, sans-serif;
  font-size: 1.1rem; line-height: 1.5; font-weight: 500;
  color: rgba(255,255,255,0.95);
  padding: 14px 26px 0 18px;
}
.frase-card-ctx {
  margin-top: 10px; padding-left: 18px;
  font-size: 0.8rem; color: rgba(255,255,255,0.5); font-style: italic;
}
.frase-card-check {
  position: absolute; top: 14px; right: 14px;
  width: 24px; height: 24px;
  background: #EAFF00; color: #000;
  border-radius: 50%;
  font-weight: 800; font-size: 0.9rem;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transform: scale(0.5);
  transition: all .18s;
}
.frase-card:hover .frase-card-inner {
  border-color: rgba(234,255,0,0.4);
  transform: translateY(-2px);
}
.frase-card-selected .frase-card-inner,
.frase-card input:checked + .frase-card-inner {
  border-color: #EAFF00;
  background: rgba(234,255,0,0.07);
  box-shadow: 0 8px 24px rgba(234,255,0,0.16);
}
.frase-card-selected .frase-card-check,
.frase-card input:checked + .frase-card-inner .frase-card-check {
  opacity: 1; transform: scale(1);
}
.frase-actions {
  display: flex; gap: 10px; flex-wrap: wrap; justify-content: center;
  padding: 8px 0 4px;
}
.frase-save {
  background: #EAFF00; color: #000; font-weight: 800;
  padding: 13px 26px; border-radius: 999px; border: none;
  font-family: 'Outfit', system-ui, sans-serif; letter-spacing: 0.02em; cursor: pointer;
}

/* ==========================================================================
   KEEP GROWING DAL MISTER — sezione a tendina (details/summary)
   ========================================================================== */
.hw-toggle > .hw-summary {
  display: flex; align-items: center; gap: 10px;
  cursor: pointer; list-style: none;
  -webkit-tap-highlight-color: transparent;
  user-select: none; -webkit-user-select: none;
}
.hw-toggle > .hw-summary::-webkit-details-marker { display: none; }  /* Safari */
.hw-toggle > .hw-summary::marker { content: ""; }
.hw-summary h2 { margin: 0; flex: 1; font-size: 1rem; }
.hw-count {
  background: rgba(246,194,62,0.18);
  border: 1px solid rgba(246,194,62,0.45);
  color: var(--gold);
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; font-size: 0.82rem;
  padding: 2px 11px; border-radius: 999px;
}
.hw-chevron {
  color: rgba(255,255,255,0.55);
  font-size: 1.1rem; line-height: 1;
  transition: transform 0.2s ease;
}
.hw-toggle[open] > .hw-summary .hw-chevron { transform: rotate(180deg); }
.hw-toggle > .hw-summary:hover .hw-chevron { color: var(--gold); }

/* ==========================================================================
   ALLENAMENTI DELLA SETTIMANA — programma ricorrente sulla tessera
   ========================================================================== */
.tr-list { display: flex; flex-direction: column; gap: 10px; }
/* Card "seppia" come i foglietti Keep Growing: massima leggibilità */
.tr-row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 12px 16px;
  background: linear-gradient(180deg, #F6EEDD 0%, #EFE5CE 100%);
  border: 1px solid #E2D6BC;
  border-left: 4px solid #C9962D;
  border-radius: 12px;
  box-shadow: 0 6px 18px rgba(0,0,0,0.28);
}
.tr-day {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; font-size: 0.92rem;
  color: #232323;
  min-width: 100px;
  display: inline-flex; align-items: center; gap: 8px;
}
.tr-oggi {
  background: #C9962D; color: #fff;
  font-size: 0.6rem; font-weight: 800;
  padding: 2px 9px; border-radius: 999px;
  letter-spacing: 0.08em;
  text-shadow: 0 1px 1px rgba(0,0,0,0.25);
}
.tr-time {
  font-family: 'Outfit', system-ui, sans-serif;
  font-weight: 800; font-size: 1.05rem;
  color: #A0690F;
}
.tr-place { font-size: 0.82rem; color: #4A4435; display: inline-flex; gap: 10px; }
.tr-spogl { color: #232323; font-weight: 600; }
.tr-note { width: 100%; font-size: 0.76rem; color: #8A7B5C; font-style: italic; margin-top: 2px; }

/* Oggi: la card di riferimento — bordo oro marcato + alone caldo */
.tr-today {
  border-left: 5px solid #EAB308;
  box-shadow: 0 6px 22px rgba(234,179,8,0.28), 0 0 0 1px rgba(234,179,8,0.4) inset;
}
.tr-today .tr-day { color: #1a1a1a; }
.tr-today .tr-oggi { background: #EAB308; }

/* Comunicazione del mister: campo unico in fondo agli allenamenti */
.com-box {
  margin-top: 14px;
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(246,194,62,0.10), rgba(246,194,62,0.03));
  border: 1px solid rgba(246,194,62,0.4);
  border-left: 4px solid var(--gold);
  border-radius: 12px;
}
.com-head {
  font-size: 0.72rem; font-weight: 800;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 8px;
}
.com-text {
  font-size: 0.95rem; line-height: 1.55;
  color: rgba(255,255,255,0.92);
  margin: 0; white-space: pre-line;
}
.com-text a {
  color: var(--gold); font-weight: 700;
  text-decoration: underline; word-break: break-word;
}
.com-date {
  margin-top: 8px;
  font-size: 0.68rem; color: rgba(255,255,255,0.4); font-style: italic;
}

/* ══════════════════════════════════════════════════════════════
   WIZARD GUIDATI (coach) — un passo alla volta, "a prova di
   scimmia": valutazione, diario allenamenti, spunti Keep Growing.
   Sistema condiviso dai 4 wizard, mockup approvato da Marco il
   2026-08-25. Prefisso .wiz- per non toccare classi esistenti.
═══════════════════════════════════════════════════════════════ */
/* La card è una colonna flex a 3 righe (header fisso / corpo che scorre
   internamente / barra Indietro-Avanti fissa) — deliberatamente NON un
   position:fixed sulla barra bottoni: annidato dentro l'.overlay a sua
   volta fixed, in certi contesti finiva a fondo pagina sotto al footer
   invece di restare agganciato in basso (bug segnalato da Marco, la
   colonna flex con overflow solo sul corpo lo evita del tutto). Su
   schermi larghi la card diventa una vera finestra pop-up al centro,
   con lo sfondo (dashboard) visibile e scurito dietro — richiesto da
   Marco il 2026-08-25. */
.coach-app .wiz-overlay{
  position:fixed; inset:0; background:rgba(10,31,74,0.55); z-index:100;
  display:none; align-items:center; justify-content:center;
}
.coach-app .wiz-overlay.open{ display:flex; }
.coach-app .wiz-inner{
  background:var(--ca-bg); width:100%; max-width:560px; height:100%; max-height:100vh;
  margin:0 auto; display:flex; flex-direction:column; overflow:hidden; position:relative;
}
.coach-app .wiz-close{
  position:absolute; top:14px; right:16px; width:32px; height:32px; border-radius:50%;
  background:var(--ca-bg); border:1px solid var(--ca-line); color:var(--ca-muted);
  display:flex; align-items:center; justify-content:center; font-size:1.3rem; line-height:1;
  cursor:pointer; text-decoration:none; z-index:6;
}
.coach-app .wiz-close:hover{ background:var(--ca-line); color:var(--ca-navy); }
.coach-app .wiz-inner > form{ display:flex; flex-direction:column; flex:1; min-height:0; }
@media (min-width:760px){
  .coach-app .wiz-inner{
    height:auto; max-height:min(760px, 90vh); border-radius:20px;
    box-shadow:0 30px 70px rgba(3,10,24,0.45);
  }
}

.coach-app .wiz-top{ background:#fff; border-bottom:1px solid var(--ca-line); padding:14px 20px 16px; position:sticky; top:0; z-index:5; }
.coach-app .wiz-exit{ background:none; border:none; color:var(--ca-muted); font:inherit; font-size:0.8rem; padding:0; cursor:pointer; display:flex; align-items:center; gap:4px; margin-bottom:10px; }
.coach-app .wiz-exit:hover{ color:var(--ca-navy); }
.coach-app .wiz-ctx{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.coach-app .wiz-ctx-av{ width:34px; height:34px; border-radius:50%; background:var(--ca-navy); color:var(--ca-gold);
  display:flex; align-items:center; justify-content:center; font-weight:800; font-size:0.82rem; flex-shrink:0; }
.coach-app .wiz-ctx-txt{ line-height:1.2; }
.coach-app .wiz-ctx-txt b{ display:block; font-size:0.88rem; color:var(--ca-navy); }
.coach-app .wiz-ctx-txt span{ font-size:0.74rem; color:var(--ca-muted); }

.coach-app .wiz-bar{ display:flex; gap:4px; margin-bottom:8px; }
.coach-app .wiz-seg{ flex:1; height:5px; border-radius:999px; background:var(--ca-line); overflow:hidden; }
.coach-app .wiz-seg i{ display:block; height:100%; width:0%; background:linear-gradient(90deg,var(--ca-gold),#C9962D); transition:width .25s ease; }
.coach-app .wiz-count{ font-size:0.72rem; color:var(--ca-muted); font-weight:600; }

.coach-app .wiz-body{ flex:1; min-height:0; overflow-y:auto; padding:24px 20px; }
.coach-app .wiz-step{ display:none; }
.coach-app .wiz-step.active{ display:block; animation:wizFadeUp .2s ease; }
@keyframes wizFadeUp{ from{ opacity:0; transform:translateY(6px);} to{ opacity:1; transform:none;} }

.coach-app .wiz-eyebrow{ font-size:0.7rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:#C9962D; margin-bottom:6px; }
.coach-app .wiz-title{ font-size:1.4rem; font-weight:800; color:var(--ca-navy); margin:0 0 8px; line-height:1.25; }
.coach-app .wiz-help{ font-size:0.86rem; color:var(--ca-muted); line-height:1.5; margin:0 0 20px; }

.coach-app .wiz-field{ display:block; font-size:0.78rem; font-weight:700; color:var(--ca-navy); margin:18px 0 8px; text-transform:uppercase; letter-spacing:0.04em; }
.coach-app .wiz-field:first-of-type{ margin-top:0; }
.coach-app .wiz-body input[type="text"], .coach-app .wiz-body input[type="date"],
.coach-app .wiz-body input[type="number"], .coach-app .wiz-body textarea, .coach-app .wiz-body select{
  width:100%; padding:13px 14px; border:1.5px solid var(--ca-line); border-radius:12px;
  font:inherit; font-size:0.95rem; color:var(--ca-ink); background:#fff; text-align:left;
}
/* Safari (desktop e iOS) può allineare il valore di un input date/number
   diversamente dal resto dei campi testo dello stesso form, lasciando
   uno spazio asimmetrico rispetto al bordo — text-align:left esplicito
   lo riporta in linea con gli altri campi (Marco, 2026-09-03). */
.coach-app .wiz-body input[type="date"]::-webkit-date-and-time-value{ text-align:left; }
.coach-app .wiz-body input:focus, .coach-app .wiz-body textarea:focus, .coach-app .wiz-body select:focus{ outline:none; border-color:var(--ca-gold); }
.coach-app .wiz-body textarea{ resize:vertical; min-height:88px; }
.coach-app .wiz-char-count{ text-align:right; font-size:0.72rem; color:var(--ca-muted); margin-top:4px; }
.coach-app .wiz-skip{ display:inline-block; margin-top:10px; font-size:0.8rem; color:var(--ca-azure); font-weight:600; text-decoration:none; cursor:pointer; background:none; border:none; font-family:inherit; padding:0; }

.coach-app .wiz-choice-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.coach-app .wiz-choice-grid.cols-3{ grid-template-columns:1fr 1fr 1fr; }
.coach-app .wiz-choice-btn{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:16px 10px;
  border-radius:14px; border:1.5px solid var(--ca-line); background:#fff; cursor:pointer;
  font:inherit; color:var(--ca-navy); font-weight:700; font-size:0.84rem; text-align:center; }
.coach-app .wiz-choice-btn .ic{ font-size:1.5rem; }
.coach-app .wiz-choice-btn.selected{ border-color:var(--wsel,var(--ca-gold)); background:var(--wsel-bg,#FFF7E3); box-shadow:0 0 0 2px var(--wsel-ring,rgba(246,194,62,0.35)) inset; }

.coach-app .wiz-valrow{ margin-bottom:20px; padding-bottom:18px; border-bottom:1px solid var(--ca-line); }
.coach-app .wiz-valrow:last-child{ border-bottom:none; }
.coach-app .wiz-valrow-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:9px; }
.coach-app .wiz-valrow-head b{ font-size:0.92rem; color:var(--ca-navy); }
.coach-app .wiz-val-current{ font-variant-numeric:tabular-nums; font-weight:800; font-size:0.95rem; color:#C9962D; }
.coach-app .wiz-val-prev-hint{ font-size:0.74rem; font-weight:700; color:var(--ca-red); margin:-4px 0 8px; }
.coach-app .wiz-val-picker{ display:flex; gap:5px; }
.coach-app .wiz-val-dot{ position:relative; flex:1; height:38px; border-radius:8px; border:1.5px solid var(--ca-line); background:#fff;
  display:flex; align-items:center; justify-content:center; font-size:0.78rem; font-weight:700;
  color:var(--ca-muted); cursor:pointer; font-variant-numeric:tabular-nums; }
.coach-app .wiz-val-dot.on{ background:linear-gradient(180deg,var(--ca-gold),#C9962D); border-color:#C9962D; color:var(--ca-navy); }
/* Pallino rosso sotto il numero della valutazione precedente — riferimento
   per capire se il ragazzo è migliorato, richiesto da Marco il 2026-08-26. */
.coach-app .wiz-val-dot.prev::after{
  content:''; position:absolute; bottom:-6px; left:50%; transform:translateX(-50%);
  width:6px; height:6px; border-radius:50%; background:var(--ca-red);
}
.coach-app .wiz-val-scale-hint{ display:flex; justify-content:space-between; font-size:0.68rem; color:var(--ca-muted); margin-top:5px; }

.coach-app .wiz-chip-row{ display:flex; flex-wrap:wrap; gap:8px; }
.coach-app .wiz-chip{ padding:9px 14px; border-radius:999px; border:1.5px solid var(--ca-line); background:#fff;
  font:inherit; font-size:0.82rem; font-weight:600; color:var(--ca-navy); cursor:pointer; }
.coach-app .wiz-chip.on{ background:var(--ca-navy); border-color:var(--ca-navy); color:#fff; }
.coach-app .wiz-chip.block{ width:100%; text-align:left; padding:13px 16px; }

.coach-app .wiz-fase-card{ background:#fff; border:1.5px solid var(--ca-line); border-radius:14px; padding:14px; margin-bottom:12px; }
.coach-app .wiz-fase-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.coach-app .wiz-fase-head b{ font-size:0.86rem; color:var(--ca-navy); }
.coach-app .wiz-fase-rm{ background:none; border:none; color:var(--ca-red); font-size:0.76rem; font-weight:700; cursor:pointer; font-family:inherit; }
.coach-app .wiz-fase-row2{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:8px; }
.coach-app .wiz-fase-row2 input, .coach-app .wiz-fase-row2 select{ padding:10px 11px; font-size:0.86rem; }
/* Dimensioni/giocatori/formato/recupero: 4 colonne su schermo largo, ma
   a 4-per-riga un telefono le stringe troppo per essere leggibili
   (era una griglia a 4 colonne fissa via style inline, senza alcuna
   versione mobile — "tutto sfasato", Marco 2026-09-03). */
.coach-app .wiz-fase-row4{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:10px; }
.coach-app .wiz-fase-row4 input{ padding:10px 11px; font-size:0.86rem; }
@media(max-width:600px){ .coach-app .wiz-fase-row4{ grid-template-columns:1fr 1fr; } }
.coach-app .wiz-carico-row{ display:flex; gap:6px; margin-top:4px; }
.coach-app .wiz-carico-btn{ flex:1; padding:8px 4px; border-radius:8px; border:1.5px solid var(--ca-line); background:#fff;
  font:inherit; font-size:0.74rem; font-weight:700; cursor:pointer; color:var(--ca-muted); }
.coach-app .wiz-carico-btn.on-basso{ background:#E7F5EC; border-color:var(--ca-green); color:var(--ca-green); }
.coach-app .wiz-carico-btn.on-medio{ background:#FCF1DC; border-color:var(--ca-amber); color:var(--ca-amber); }
.coach-app .wiz-carico-btn.on-alto{ background:#FBE7E5; border-color:var(--ca-red); color:var(--ca-red); }
.coach-app .wiz-add-fase{ width:100%; padding:16px; border-radius:14px; border:2px dashed #cfd8ea; background:#fff;
  color:var(--ca-azure); font:inherit; font-weight:700; font-size:0.9rem; cursor:pointer; }
.coach-app .wiz-add-fase:hover{ border-color:var(--ca-azure); background:#F3F7FC; }

.coach-app .wiz-upload-box{ border:1.5px dashed var(--ca-line); border-radius:14px; padding:20px; text-align:center;
  color:var(--ca-muted); font-size:0.84rem; background:#fff; cursor:pointer; }
.coach-app .wiz-upload-box .ic{ font-size:1.6rem; display:block; margin-bottom:6px; }
.coach-app .wiz-upload-preview{ max-width:100%; max-height:180px; border-radius:12px; margin-top:10px; display:none; }

.coach-app .wiz-privacy-note{ display:flex; gap:8px; align-items:flex-start; background:#FDEEEE; border:1px solid #F5C9C6;
  border-radius:12px; padding:11px 13px; font-size:0.78rem; color:#8A2A24; margin-top:10px; line-height:1.4; }

.coach-app .wiz-sum-block{ background:#fff; border:1px solid var(--ca-line); border-radius:14px; padding:14px 16px; margin-bottom:10px; }
.coach-app .wiz-sum-label{ font-size:0.68rem; font-weight:700; text-transform:uppercase; letter-spacing:0.06em; color:var(--ca-muted); margin-bottom:4px; }
.coach-app .wiz-sum-val{ font-size:0.92rem; color:var(--ca-navy); font-weight:600; line-height:1.4; white-space:pre-line; }
.coach-app .wiz-sum-vals-grid{ display:flex; flex-wrap:wrap; gap:6px; }
.coach-app .wiz-sum-pill{ padding:5px 10px; border-radius:999px; background:#F1F4F9; font-size:0.78rem; font-weight:700; color:var(--ca-navy); }
.coach-app .wiz-sum-pill b{ color:#C9962D; font-variant-numeric:tabular-nums; }

.coach-app .wiz-nav{ flex-shrink:0; background:#fff; border-top:1px solid var(--ca-line);
  padding:12px 20px calc(env(safe-area-inset-bottom,0px) + 12px); }
.coach-app .wiz-nav-inner{ max-width:560px; margin:0 auto; display:flex; gap:10px; }
.coach-app .wiz-btn{ flex:1; padding:14px; border-radius:12px; border:none; font:inherit; font-weight:700; font-size:0.92rem; cursor:pointer; text-align:center; }
.coach-app .wiz-btn-ghost{ background:#fff; color:var(--ca-navy); border:1.5px solid var(--ca-line); flex:0 0 100px; }
.coach-app .wiz-btn-ghost:disabled{ opacity:0.35; cursor:default; }
.coach-app .wiz-btn-gold{ background:linear-gradient(135deg,var(--ca-gold),#C9962D); color:var(--ca-navy); }
.coach-app .wiz-btn-gold:hover{ filter:brightness(1.04); }

.coach-app .wiz-done{ display:none; flex:1; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:40px 24px; }
.coach-app .wiz-done.active{ display:flex; }
.coach-app .wiz-done-ic{ width:76px; height:76px; border-radius:50%; background:#E7F5EC; color:var(--ca-green);
  display:flex; align-items:center; justify-content:center; font-size:2.1rem; margin-bottom:18px; }
.coach-app .wiz-done h2{ font-weight:800; font-size:1.3rem; color:var(--ca-navy); margin:0 0 8px; }
.coach-app .wiz-done p{ color:var(--ca-muted); font-size:0.9rem; margin:0 0 26px; max-width:320px; line-height:1.5; }

/* Entry point: card grande "apri il wizard", stile coerente con .ca-panel */
.coach-app .wiz-entry-card{ display:flex; align-items:center; gap:14px; background:#fff; border:1px solid var(--ca-line);
  border-radius:16px; padding:16px; text-align:left; cursor:pointer; width:100%; font:inherit; color:inherit; }
.coach-app .wiz-entry-card:hover{ box-shadow:0 8px 20px rgba(10,31,74,0.08); border-color:#cfd8ea; }
.coach-app .wiz-entry-ic{ width:52px; height:52px; border-radius:14px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:1.5rem; }
.coach-app .wiz-entry-txt{ flex:1; min-width:0; }
.coach-app .wiz-entry-txt h3{ font-weight:800; font-size:1rem; margin:0 0 2px; color:var(--ca-navy); }
.coach-app .wiz-entry-txt p{ margin:0; font-size:0.82rem; color:var(--ca-muted); line-height:1.35; }

@media (prefers-reduced-motion: reduce){ .coach-app .wiz-step.active{ animation:none; } }
