/* ==========================================================================
   BOXOS - sistema di design del pannello web
   Sopra Pico.css: font Inter autoospitato, palette dedicata (chiara/scura),
   componenti rifiniti (card, bottoni, badge, dashboard). Pico scala il
   font-size fino al 131% sugli schermi larghi (pensato per pagine
   editoriali) - per un pannello denso lo blocchiamo fisso.
   ========================================================================== */

:root {
    /* --- Palette chiara --- */
    --boxos-bg: #F7F6F2;
    --boxos-surface: #FFFFFF;
    --boxos-surface-alt: #FBF6EF;
    --boxos-text: #1C1B1F;
    --boxos-text-muted: #75726C;
    --boxos-border: #E7E3DA;
    --boxos-accent: #E8590C;
    --boxos-accent-hover: #CC4E0A;
    --boxos-accent-soft: #FCE4D3;
    --boxos-accent-contrast: #FFFFFF;
    --boxos-success: #1C8A5A;
    --boxos-success-soft: #DCF3E7;
    --boxos-warning: #B8860B;
    --boxos-warning-soft: #FBF0CE;
    --boxos-danger: #C4351C;
    --boxos-danger-soft: #FBE2DC;
    --boxos-info: #2C6E9E;
    --boxos-info-soft: #DDEBF5;
    --boxos-shadow: 0 1px 2px rgba(28, 27, 31, 0.04), 0 4px 12px rgba(28, 27, 31, 0.06);
    --boxos-shadow-hover: 0 2px 6px rgba(28, 27, 31, 0.06), 0 10px 24px rgba(28, 27, 31, 0.09);
    --boxos-radius: 12px;
    --boxos-radius-sm: 8px;

    color-scheme: light;
    --pico-font-family: 'Inter', -apple-system, "Segoe UI", system-ui, sans-serif;
    --pico-font-size: 100% !important;
    --pico-line-height: 1.45;
    --pico-spacing: 0.85rem;
    --pico-typography-spacing-vertical: 0.75rem;
    --pico-border-radius: var(--boxos-radius-sm);

    --pico-background-color: var(--boxos-bg);
    --pico-color: var(--boxos-text);
    --pico-muted-color: var(--boxos-text-muted);
    --pico-h1-color: var(--boxos-text);
    --pico-h2-color: var(--boxos-text);
    --pico-border-color: var(--boxos-border);
    --pico-muted-border-color: var(--boxos-border);

    --pico-card-background-color: var(--boxos-surface);
    --pico-card-border-color: var(--boxos-border);
    --pico-card-box-shadow: var(--boxos-shadow);
    --pico-card-sectioning-background-color: var(--boxos-surface-alt);

    --pico-primary: var(--boxos-accent);
    --pico-primary-background: var(--boxos-accent);
    --pico-primary-border: var(--boxos-accent);
    --pico-primary-hover: var(--boxos-accent-hover);
    --pico-primary-hover-background: var(--boxos-accent-hover);
    --pico-primary-hover-border: var(--boxos-accent-hover);
    --pico-primary-underline: var(--boxos-accent);
    --pico-primary-hover-underline: var(--boxos-accent-hover);
    --pico-primary-focus: rgba(232, 89, 12, 0.25);
    --pico-primary-inverse: var(--boxos-accent-contrast);

    --pico-secondary: var(--boxos-text-muted);
    --pico-secondary-background: #EDEAE2;
    --pico-secondary-border: #EDEAE2;
    --pico-secondary-hover: var(--boxos-text);
    --pico-secondary-hover-background: #E2DDD1;
    --pico-secondary-hover-border: #E2DDD1;
    --pico-secondary-inverse: var(--boxos-text);

    --pico-del-color: var(--boxos-danger);
    --pico-ins-color: var(--boxos-success);
    --pico-mark-background-color: var(--boxos-warning-soft);
}

@media (prefers-color-scheme: dark) {
    :root {
        --boxos-bg: #121114;
        --boxos-surface: #1B1A1E;
        --boxos-surface-alt: #211F23;
        --boxos-text: #F3F1EC;
        --boxos-text-muted: #A29D93;
        --boxos-border: #322F32;
        --boxos-accent: #FF7A33;
        --boxos-accent-hover: #FF8F52;
        --boxos-accent-soft: #3A2416;
        --boxos-accent-contrast: #1A0D04;
        --boxos-success: #3FCB8C;
        --boxos-success-soft: #163326;
        --boxos-warning: #E0B84B;
        --boxos-warning-soft: #362A0F;
        --boxos-danger: #F0654A;
        --boxos-danger-soft: #3A1912;
        --boxos-info: #6BB4E8;
        --boxos-info-soft: #142835;
        --boxos-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 6px 18px rgba(0, 0, 0, 0.35);
        --boxos-shadow-hover: 0 2px 6px rgba(0, 0, 0, 0.35), 0 14px 30px rgba(0, 0, 0, 0.4);

        color-scheme: dark;
        --pico-primary-focus: rgba(255, 122, 51, 0.3);
        --pico-secondary-background: #29272B;
        --pico-secondary-border: #29272B;
        --pico-secondary-hover-background: #322F34;
        --pico-secondary-hover-border: #322F34;
        --pico-secondary-inverse: var(--boxos-text);
    }
}

* { transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease, color 0.15s ease; }
body { overflow-x: hidden; background: var(--boxos-bg); }

h1 { font-size: 1.6rem; font-weight: 800; letter-spacing: -0.02em; margin-bottom: 0.25rem; }
h2 { font-size: 1.3rem; font-weight: 700; letter-spacing: -0.01em; }
h3 { font-size: 1.1rem; font-weight: 700; }
hgroup p { color: var(--boxos-text-muted); font-size: 0.92rem; margin: 0; }
strong { font-weight: 700; }
code { font-weight: 600; background: var(--boxos-accent-soft); color: var(--boxos-accent-hover); border-radius: 4px; }

/* --- Bottoni: piu' carattere, leggero rilievo, micro-interazione --- */
button, [role="button"], input[type="submit"] {
    min-height: 44px;
    font-weight: 600;
    border-radius: var(--boxos-radius-sm);
    box-shadow: var(--boxos-shadow);
    letter-spacing: -0.005em;
}
button:not(.secondary):not(.contrast):not(.outline):hover,
[role="button"]:not(.secondary):not(.contrast):not(.outline):hover {
    transform: translateY(-1px);
    box-shadow: var(--boxos-shadow-hover);
}
button:active, [role="button"]:active { transform: translateY(0); }

/* --- Card generiche (article) --- */
article {
    border-radius: var(--boxos-radius);
    border: 1px solid var(--boxos-border);
    box-shadow: var(--boxos-shadow);
}
article > header { font-weight: 700; border-bottom: 1px solid var(--boxos-border); }

/* --- Nav in alto: compatta, sticky, col logo dedicato --- */
nav.container-fluid {
    --pico-nav-element-spacing-vertical: 0.35rem;
    position: sticky;
    top: 0;
    z-index: 20;
    padding-block: 0.4rem;
    font-size: 0.92rem;
    background: color-mix(in srgb, var(--boxos-bg) 88%, transparent);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--boxos-border);
}
nav.container-fluid ul { align-items: center; gap: 0.15rem; }
nav.container-fluid li { margin: 0; display: flex; align-items: center; }
nav.container-fluid a {
    text-decoration: none;
    white-space: nowrap;
    padding: 0.4rem 0.6rem;
    border-radius: var(--boxos-radius-sm);
    color: var(--boxos-text-muted);
    font-weight: 600;
}
nav.container-fluid a:hover { background: var(--boxos-surface-alt); color: var(--boxos-text); }
nav.container-fluid button {
    min-height: 0;
    height: 2rem;
    padding: 0 0.75rem;
    font-size: 0.85rem;
    box-shadow: none;
}
.brand-mark { display: inline-flex; align-items: center; gap: 0.5rem; color: var(--boxos-text) !important; }
.brand-mark svg { color: var(--boxos-accent); }
.brand-mark:hover { background: transparent !important; }

/* --- Pallino di avviso in nav (atleti scaduti/in scadenza) --- */
.nav-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.2rem;
    height: 1.2rem;
    padding: 0 0.35rem;
    margin-left: 0.3rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1;
    vertical-align: middle;
    color: #fff;
}
.nav-badge-danger { background: var(--boxos-danger); }
.nav-badge-warning { background: var(--boxos-warning); color: var(--boxos-text); }

.legenda {
    color: var(--boxos-text-muted);
    font-size: 0.85rem;
}

.errore {
    color: var(--boxos-danger);
    font-weight: 700;
}

.avviso, article.avviso {
    background: var(--boxos-warning-soft);
    border: 1px solid transparent;
    border-left: 4px solid var(--boxos-warning);
    padding: 0.85rem 1.1rem;
    box-shadow: none;
}

.avviso-inline {
    color: var(--boxos-success);
    font-weight: 700;
}

article.avviso-critico {
    border-left: 4px solid var(--boxos-danger);
    background: var(--boxos-danger-soft);
}

.inline-form { display: inline; }

/* --- Login --- */
.login-container { max-width: 400px; margin-top: 12vh; }
.login-container article {
    padding: 2rem 2rem 1.5rem;
    text-align: center;
    box-shadow: var(--boxos-shadow-hover);
}
.login-container h1 { font-size: 1.4rem; }
.login-logo { margin-bottom: 0.75rem; }
.login-logo svg { width: 56px; height: 28px; color: var(--boxos-accent); }
.logout-form { margin: 0; }

/* --- Home: menu a bottoni centrati + dashboard statistiche --- */
.home-menu {
    max-width: 560px;
    margin: 2vh auto 0;
    text-align: center;
}
.home-menu .brand-mark-lg { color: var(--boxos-accent); margin-bottom: 0.5rem; }
.home-menu h1 { margin-bottom: 0; }
.home-menu p { color: var(--boxos-text-muted); margin-bottom: 1.5rem; }
.home-actions {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-top: 2rem;
}
.home-actions a[role="button"] {
    font-size: 1.05rem;
    padding: 0.9rem;
}

.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
    gap: 0.6rem;
    margin-bottom: 1rem;
}
.stat-card {
    background: var(--boxos-surface);
    border: 1px solid var(--boxos-border);
    border-radius: var(--boxos-radius);
    box-shadow: var(--boxos-shadow);
    padding: 0.9rem 0.75rem;
    text-align: center;
}
.stat-card .stat-num { font-size: 1.7rem; font-weight: 800; line-height: 1; display: block; letter-spacing: -0.02em; }
.stat-card .stat-label { font-size: 0.78rem; color: var(--boxos-text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; }
.stat-card.stat-attivi .stat-num { color: var(--boxos-success); }
.stat-card.stat-scadenza .stat-num { color: var(--boxos-warning); }
.stat-card.stat-scaduti .stat-num { color: var(--boxos-danger); }
.stat-card.stat-attesa .stat-num { color: var(--boxos-info); }

.classi-oggi-lista { text-align: left; margin-top: 0.5rem; }
.classi-oggi-riga {
    display: flex;
    justify-content: space-between;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--boxos-border);
    font-size: 0.9rem;
}
.classi-oggi-riga:last-child { border-bottom: none; }

/* --- Badge di stato (pill) --- */
.badge {
    display: inline-block;
    padding: 0.2rem 0.7rem;
    border-radius: 1rem;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.01em;
}
.badge-attivo { background: var(--boxos-success-soft); color: var(--boxos-success); }
.badge-scaduto, .badge-bloccato { background: var(--boxos-danger-soft); color: var(--boxos-danger); }
.badge-attesa, .badge-congelato { background: var(--boxos-info-soft); color: var(--boxos-info); }

/* --- Elenco atleti: righe come card cliccabili --- */
.athlete-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--boxos-surface);
    border: 1px solid var(--boxos-border);
    border-radius: var(--boxos-radius-sm);
    margin-bottom: 0.5rem;
    text-decoration: none;
    color: var(--boxos-text);
}
.athlete-row:hover { box-shadow: var(--boxos-shadow-hover); border-color: var(--boxos-accent); transform: translateX(2px); }
.athlete-dot { font-size: 1.1rem; line-height: 1; }
.athlete-name { font-weight: 600; flex: 1; }
.athlete-status-label { font-size: 0.8rem; color: var(--boxos-text-muted); }

.riepilogo-atleta {
    background: var(--boxos-surface-alt);
    border: 1px solid var(--boxos-border);
    border-radius: var(--boxos-radius);
    padding: 1.1rem 1.35rem;
    margin-bottom: 1.5rem;
}
.riepilogo-atleta dl { display: grid; grid-template-columns: auto 1fr; gap: 0.4rem 1rem; margin: 0; }
.riepilogo-atleta dt { color: var(--boxos-text-muted); font-weight: 600; }
.riepilogo-atleta dd { margin: 0; font-weight: 700; }

.sezione-atleta {
    margin-bottom: 1.5rem;
    padding: 1.1rem 1.35rem;
    background: var(--boxos-surface);
    border: 1px solid var(--boxos-border);
    border-radius: var(--boxos-radius);
    box-shadow: var(--boxos-shadow);
}
.sezione-atleta header {
    font-weight: 700;
    margin-bottom: 0.75rem;
    padding-bottom: 0.6rem;
    border-bottom: 1px solid var(--boxos-border);
    background: transparent;
}

.riga-azioni-rapide { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.riga-azioni-rapide form { flex: 1 1 160px; margin: 0; }
.riga-azioni-rapide button { width: 100%; }

.link-pericolo { color: var(--boxos-danger) !important; font-weight: 600; }

/* --- Classi: griglia settimanale che va a capo, mai colonne strette --- */
.week-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
    align-items: start;
}
.giorno-card { margin-bottom: 0; }
.giorno-card header { display: flex; justify-content: space-between; align-items: baseline; }
.classe-riga {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid var(--boxos-border);
    text-decoration: none;
    color: var(--boxos-text);
}
.classe-riga:last-of-type { border-bottom: none; }
.classe-riga:hover { color: var(--boxos-accent); }
.classe-orario { font-weight: 700; min-width: 4.5em; }
.classe-tipo { flex: 1; }
.classe-posti { font-size: 0.85rem; color: var(--boxos-text-muted); }
.classe-annullata { color: var(--boxos-danger); }
