/* ==========================================================================
   Tema «Atelier» — monocromo lime su porcellana fredda
   Palette da un solo colore: rgb(207,214,0) = #CFD600, in scala.
   Font display Prata (serif), UI Jost (sans), self-hosted. Angoli arrotondati.
   L'acido non è mai testo su fondo chiaro: resta pieno (bottone, spunta, accento);
   il testo importante è inchiostro. Distinzione attività: AGE = acido, CON = inchiostro.
   ========================================================================== */

@font-face { font-family: "Jost"; font-style: normal; font-weight: 300 500; src: url("/fonts/jost-latin.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "Prata"; font-style: normal; font-weight: 400; src: url("/fonts/prata-latin.woff2") format("woff2"); font-display: swap; }

:root {
    /* Neutri: porcellana fredda, carta, pietra */
    --porcelain: #f7f6f2;
    --paper: #ffffff;
    --linen: #efede5;
    --stone: #e4e1d6;
    --line: #dcd9cd;
    --line-soft: #e8e5da;

    /* Inchiostro */
    --ink: #14150f;
    --graphite: #3d3e33;
    --muted: #6b6c5e;
    --mist: #96978a;

    /* L'unico colore, in scala */
    --acid: #cfd600;
    --acid-deep: #a6ac00;
    --acid-dark: #71750a;
    --acid-soft: #e7e983;
    --acid-wash: #f4f6cc;
    --acid-veil: rgba(207, 214, 0, .16);

    /* Alias verso i vecchi nomi usati nei fogli/è nelle pagine */
    --fondo: var(--porcelain);
    --superficie: var(--paper);
    --blu: var(--ink);
    --evidenza: var(--ink);
    --testo: var(--ink);
    --testo-attenuato: var(--muted);
    --linea: var(--line);
    --velo: rgba(20, 21, 15, .035);
    --velo-forte: rgba(20, 21, 15, .06);
    --rosso: var(--ink);
    --verde: var(--acid-dark);
    --age: var(--acid);
    --con: var(--ink);
    --age-testo: var(--acid-dark);
    --con-testo: var(--ink);

    /* Area «Amministrazione»: stessa scala, un filo più fredda */
    --amm-testo: var(--muted);
    --amm-forte: var(--ink);
    --amm-linea: var(--stone);
    --amm-velo: rgba(20, 21, 15, .05);
    --amm-velo-forte: rgba(20, 21, 15, .09);
    --amm-banda: #efede5;

    /* Geometria */
    --r-xs: 3px;
    --r-sm: 6px;
    --r-md: 10px;
    --r-lg: 16px;
    --r-pill: 999px;
    --raggio: var(--r-sm);
    --shadow-lift: 0 1px 2px rgba(20, 21, 15, .04), 0 12px 32px -12px rgba(20, 21, 15, .14);
    --ease: cubic-bezier(.2, .7, .2, 1);

    --display: "Prata", "Bodoni Moda", Didot, Georgia, serif;
    --ui: "Jost", "Futura", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

/* Bootstrap: raggi arrotondati e variabili allineate al tema */
:root,
[data-bs-theme=light] {
    --bs-body-bg: var(--porcelain);
    --bs-body-color: var(--ink);
    --bs-body-font-family: var(--ui);
    --bs-body-font-weight: 350;
    --bs-border-radius: var(--r-sm);
    --bs-border-radius-sm: var(--r-xs);
    --bs-border-radius-lg: var(--r-md);
    --bs-border-radius-xl: var(--r-lg);
    --bs-border-radius-pill: var(--r-pill);
    --bs-border-color: var(--line);
    --bs-link-color: var(--ink);
    --bs-link-color-rgb: 20, 21, 15;
    --bs-link-hover-color: var(--acid-dark);
    --bs-link-hover-color-rgb: 113, 117, 10;
    --bs-table-bg: transparent;
    --bs-table-color: var(--graphite);
    --bs-table-border-color: var(--line-soft);
    --bs-table-striped-bg: var(--velo);
    --bs-table-hover-bg: var(--acid-veil);
    --bs-secondary-color: var(--muted);
    --bs-secondary-bg: transparent;
    --bs-tertiary-bg: transparent;
    --bs-emphasis-color: var(--ink);
    --bs-card-bg: var(--paper);
    --bs-card-border-color: var(--line);
    --bs-card-cap-bg: transparent;
    --bs-form-control-bg: var(--paper);
    --bs-form-control-color: var(--ink);
    --bs-form-control-border-color: var(--line);
}

html { background-color: var(--porcelain); font-size: 14px; }
body { background: transparent; }
html, body {
    color: var(--ink);
    font-family: var(--ui);
    font-weight: 350;
    line-height: 1.55;
    min-height: 100%;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

/* Soffio acido fisso in alto a destra */
html {
    background-image: radial-gradient(620px 620px at 92% -8%, rgba(207, 214, 0, .18), rgba(207, 214, 0, .05) 45%, transparent 70%);
    background-attachment: fixed;
    background-repeat: no-repeat;
}

::selection { background: var(--acid-soft); color: var(--ink); }
:focus-visible { outline: 2px solid var(--acid-deep); outline-offset: 2px; border-radius: var(--r-xs); }

/* Titoli: Prata, inchiostro */
h1, h2, h3, h4, h5, h6,
.titolo {
    font-family: var(--display);
    color: var(--ink);
    font-weight: 400;
    letter-spacing: 0;
    line-height: 1.12;
}
h1 { font-size: clamp(28px, 3.4vw, 40px); }
h2 {
    font-size: 1.6rem;
    border-left: 3px solid var(--acid);
    padding-left: 0.6rem;
    margin: 0.4rem 0 1.2rem;
}
h5 { font-size: 1.1rem; }

/* Navigazione (header .barra + navbar) */
.navbar {
    background: rgba(247, 246, 242, .86) !important;
    border-bottom: 1px solid var(--line) !important;
    backdrop-filter: blur(12px);
    margin-bottom: 1.5rem !important;
}
.navbar-brand { color: var(--ink) !important; font-family: var(--display); letter-spacing: .08em; }
.navbar .nav-link {
    color: var(--graphite) !important;
    padding: 0.55rem 0.8rem !important;
    border-bottom: 2px solid transparent;
    font-size: 0.92rem;
}
.navbar .nav-link:hover,
.navbar .nav-link.active {
    color: var(--ink) !important;
    border-bottom-color: var(--acid);
    background: var(--acid-veil);
}
.navbar-toggler { border: 1px solid var(--line); }

/* Separazione delle due aree del menu */
.nav-aree { display: flex; align-items: stretch; flex-wrap: wrap; }
.nav-area { margin: 0; }
.nav-area-prog { padding-right: 0.3rem; }
.nav-area-amm { background: var(--amm-banda); padding: 0 0.35rem; border-radius: var(--r-sm); }
.nav-sep-v {
    align-self: stretch;
    width: 0;
    margin: 0.4rem 0.6rem;
    border-left: 1px solid var(--amm-linea);
}
.navbar .nav-link.area-amm { color: var(--amm-testo) !important; }
.navbar .nav-link.area-amm:hover,
.navbar .nav-link.area-amm.active {
    color: var(--amm-forte) !important;
    border-bottom-color: var(--mist);
    background: var(--amm-velo);
}
.navbar .dropdown-menu.area-amm .dropdown-item:hover,
.navbar .dropdown-menu.area-amm .dropdown-item:focus { background: var(--amm-velo); color: var(--amm-forte); }
.navbar .dropdown-menu.area-amm .dropdown-item.active { background: var(--amm-velo-forte); color: var(--amm-forte); }

/* Card e pannelli */
.card {
    background: var(--bs-card-bg);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lift);
}
.card-header {
    background: var(--bs-card-cap-bg);
    border-bottom: 1px solid var(--line-soft);
    color: var(--ink);
    font-weight: 450;
    letter-spacing: .01em;
    font-size: 0.95rem;
}

/* Tabelle */
.table {
    --bs-table-bg: transparent;
    color: var(--graphite);
    border-color: var(--line-soft);
}
.table > :not(caption) > * > * { background-color: transparent; color: var(--graphite); border-bottom-color: var(--line-soft); }
.table thead th {
    color: var(--mist);
    font-weight: 450;
    font-size: 0.72rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--line);
}
.table-striped > tbody > tr:nth-of-type(odd) > * { background-color: var(--velo); }
.table-hover > tbody > tr:hover > * { background-color: var(--acid-veil); }

/* Form e bottoni */
.form-control, .form-select {
    background-color: var(--paper);
    color: var(--ink);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
}
.form-control::placeholder { color: var(--mist); }
.form-control:focus, .form-select:focus {
    background-color: var(--paper);
    color: var(--ink);
    border-color: var(--ink);
    box-shadow: 0 0 0 3px var(--acid-veil);
}
.form-select option { background: var(--paper); color: var(--ink); }
.form-label { color: var(--graphite); font-size: 0.72rem; letter-spacing: .12em; text-transform: uppercase; }
.form-text { color: var(--muted); }
.form-check-input { border-color: #c6c2b2; }
.form-check-input:checked { background-color: var(--acid); border-color: var(--acid-deep); }
.form-check-input:focus { border-color: var(--ink); box-shadow: 0 0 0 3px var(--acid-veil); }

.btn { font-weight: 450; letter-spacing: .03em; border-radius: var(--r-sm); }
.btn-primary {
    background: var(--acid);
    border: 1px solid var(--acid);
    color: var(--ink);
    box-shadow: 0 1px 0 rgba(20, 21, 15, .08);
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
    background: var(--acid-soft) !important;
    border-color: var(--acid-soft) !important;
    color: var(--ink) !important;
    box-shadow: 0 0 0 3px var(--acid-veil);
}
.btn-outline-primary, .btn-outline-secondary, .btn-secondary {
    background: var(--paper);
    border: 1px solid var(--line);
    color: var(--ink);
}
.btn-outline-primary:hover, .btn-outline-secondary:hover, .btn-secondary:hover {
    background: var(--paper);
    color: var(--ink);
    border-color: var(--ink);
}
.btn-outline-danger { color: var(--ink); border-color: var(--ink); }
.btn-outline-danger:hover { background: var(--ink); color: var(--porcelain); border-color: var(--ink); }
.btn-link { color: var(--graphite); }
.btn-link:hover { color: var(--ink); }

/* Alert */
.alert { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-sm); color: var(--ink); }
.alert-success { border-left: 3px solid var(--acid); }
.alert-danger { border-left: 3px solid var(--acid-deep); color: var(--acid-dark); background: var(--acid-wash); }
.alert-warning { border-left: 3px solid var(--acid); }

/* Footer */
footer { color: var(--muted); }

/* Attività: AGE = acido (pieno chiaro), CON = inchiostro (contorno) */
.tag-con, .tag-age {
    display: inline-block;
    border: 1px solid;
    padding: 0.08rem 0.5rem;
    font-size: 0.68rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    border-radius: var(--r-pill);
}
.tag-age { background: var(--acid-wash); border-color: var(--acid-soft); color: var(--acid-dark); }
.tag-con { background: var(--paper); border-color: var(--line); color: var(--ink); }
.badge-con, .testo-con { color: var(--ink); }
.badge-age, .testo-age { color: var(--acid-dark); }
.testo-con { color: var(--ink) !important; }
.testo-age { color: var(--acid-dark) !important; }
.bordo-con { border-top: 3px solid var(--ink) !important; }
.bordo-age { border-top: 3px solid var(--acid) !important; }

/* KPI */
.kpi {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: 0.9rem 1rem;
    height: 100%;
}
.kpi .etichetta { font-size: 0.68rem; text-transform: uppercase; letter-spacing: .16em; color: var(--mist); }
.kpi .valore { font-family: var(--display); font-size: 1.7rem; font-weight: 400; color: var(--ink); font-variant-numeric: tabular-nums; }
.kpi .sotto { font-size: 0.8rem; color: var(--muted); }
.kpi.con { border-top: 3px solid var(--ink); }
.kpi.age { border-top: 3px solid var(--acid); }
.kpi.con .valore { color: var(--ink); }
.kpi.age .valore { color: var(--acid-dark); }

/* Contenitore grafico */
.riquadro-grafico {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: 1rem;
    position: relative;
}
.riquadro-grafico h5 { font-size: 0.72rem; text-transform: uppercase; letter-spacing: .12em; margin-bottom: 0.8rem; color: var(--mist); font-family: var(--ui); font-weight: 450; }

/* Selettore periodo */
.periodo .btn { min-width: 2.4rem; }
.periodo .form-select, .periodo .form-control { width: auto; }

/* Import */
code { color: var(--acid-dark); background: var(--acid-wash); padding: 0 0.25rem; border-radius: var(--r-xs); }

.text-muted { color: var(--muted) !important; }

/* ---------- Barra e menu a tendina ---------- */
.barra { background: rgba(247, 246, 242, .9); border-bottom: 1px solid var(--line); margin-bottom: 1.5rem; backdrop-filter: blur(12px); }
@media (min-width: 992px) { .barra { margin-bottom: 0; } }
.barra-marchio { color: var(--ink); font-family: var(--display); font-size: 1.15rem; letter-spacing: .08em; text-decoration: none; }
.barra-marchio:hover { color: var(--acid-dark); }
.btn-menu { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 0.5rem 0.6rem; width: 2.6rem; display: flex; flex-direction: column; gap: 4px; cursor: pointer; }
.btn-menu span { display: block; height: 2px; background: var(--ink); border-radius: 2px; }
.btn-menu:hover { border-color: var(--ink); }
.menu-tendina { background: var(--paper) !important; border-left: 1px solid var(--line) !important; color: var(--ink); width: 320px; }
.menu-tendina .offcanvas-title { color: var(--ink); font-family: var(--display); }
.voce-gruppo { font-size: 0.66rem; text-transform: uppercase; letter-spacing: .18em; color: var(--mist); margin: 1rem 0 0.3rem; }
.voce { display: block; padding: 0.5rem 0.65rem; color: var(--graphite); text-decoration: none; border-radius: var(--r-sm); border-left: 2px solid transparent; }
.voce:hover, .voce:focus { background: var(--linen); color: var(--ink); border-left-color: var(--acid); }
.voce.attivo { background: var(--linen); color: var(--ink); border-left-color: var(--acid); font-weight: 450; }
.voce-esci { background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-sm); color: var(--muted); padding: 0.5rem 0.65rem; }

/* Menu a tendina: area Amministrazione su fascia grigia */
.menu-area-amm { background: var(--amm-banda); margin: 0.8rem -1rem 0; padding: 0.2rem 1rem 0.8rem; border-radius: var(--r-sm); }
.voce-gruppo.area-amm { color: var(--amm-testo); }
.voce.area-amm:hover, .voce.area-amm:focus,
.voce.area-amm.attivo { background: var(--amm-velo-forte); color: var(--amm-forte); border-left-color: var(--mist); }

/* Barra di navigazione desktop */
.navbar { padding-top: 0; padding-bottom: 0; position: relative; z-index: 1030; }
.navbar .nav-item { display: flex; }
.navbar .dropdown-menu {
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    box-shadow: var(--shadow-lift);
    margin-top: 0;
    min-width: 12rem;
}
.navbar .dropdown-item { color: var(--graphite); border-radius: var(--r-xs); }
.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus { background: var(--linen); color: var(--ink); }
.navbar .dropdown-item.active { background: var(--acid-wash); color: var(--acid-dark); }

/* Piè di pagina */
.footer-app { border-top: 1px solid var(--line); color: var(--muted); }

/* Stato vuoto delle tabelle */
td.vuoto, .vuoto { color: var(--muted); padding: 0.75rem 0.5rem; }

/* Importi e celle numeriche */
.table td.text-end, .table th.text-end { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Messaggi della validazione */
.errore-campo { color: var(--acid-dark); font-size: 0.8rem; }
span.errore-campo { display: block; margin-top: 0.15rem; }
input.errore-campo, select.errore-campo, textarea.errore-campo { border-color: var(--acid-deep) !important; box-shadow: 0 0 0 3px var(--acid-veil); }

/* Movimenti di cassa e scaduti (monocromo: entrata = acido, uscita/scaduto = inchiostro) */
.testo-entrata { color: var(--acid-dark) !important; font-weight: 450; }
.testo-uscita { color: var(--ink) !important; font-weight: 450; }

/* Timer attivo nella barra */
.timer-attivo { display: flex; align-items: center; gap: 0.5rem; border: 1px solid var(--line); border-radius: var(--r-pill); padding: 0.15rem 0.6rem; background: var(--paper); }
.timer-punto { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--acid); box-shadow: 0 0 0 3px var(--acid-veil); display: inline-block; }
.timer-etichetta { color: var(--muted); max-width: 14rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.timer-tempo { color: var(--ink); font-variant-numeric: tabular-nums; }
.timer-tempo-grande { color: var(--ink); font-size: 2rem; font-weight: 450; font-variant-numeric: tabular-nums; }
.tag-entrata, .tag-uscita {
    display: inline-block; border: 1px solid; padding: 0.08rem 0.5rem;
    font-size: 0.68rem; letter-spacing: .1em; text-transform: uppercase; border-radius: var(--r-pill);
}
.tag-entrata { color: var(--acid-dark); border-color: var(--acid-soft); background: var(--acid-wash); }
.tag-uscita { color: var(--porcelain); border-color: var(--ink); background: var(--ink); }

/* Pagina di accesso */
.accesso { max-width: 26rem; margin: 12vh auto 0; background: var(--paper); border: 1px solid var(--line); border-top: 3px solid var(--acid); border-radius: var(--r-md); padding: 2rem; box-shadow: var(--shadow-lift); }

/* Progetti: box senza bordo e nomi commessa senza sottolineatura */
.scheda-piatta { border: 0 !important; box-shadow: none; background: transparent; }
.scheda-piatta > .card-header { border-bottom: 0; background: transparent; padding-left: 0; }
.scheda-piatta > .card-body { padding-left: 0; padding-right: 0; }
.nome-commessa { text-decoration: none; color: var(--ink); }
.nome-commessa:hover { text-decoration: underline; text-decoration-color: var(--acid-deep); }

/* Progetti: task */
.spunta {
    width: 1.35rem; height: 1.35rem; line-height: 1; padding: 0; margin-right: 0.4rem;
    background: var(--paper); border: 1px solid #c6c2b2; border-radius: var(--r-xs); color: transparent; font-size: 0.8rem; cursor: pointer;
    transition: background .16s var(--ease), border-color .16s var(--ease), color .16s var(--ease);
}
.spunta:hover { border-color: var(--ink); color: var(--mist); }
.spunta.fatta { border-color: var(--acid-deep); background: var(--acid); color: var(--ink); }
.task-completato, .task-completato a { color: var(--mist) !important; text-decoration: none; }
.tabella-task td { padding-top: 0.3rem; padding-bottom: 0.3rem; }
.tabella-task a { text-decoration: none; }
.quadratino-colore {
    display: inline-block; width: 0.75rem; height: 0.75rem; border-radius: var(--r-xs);
    border: 1px solid var(--line); vertical-align: middle; margin-right: 0.35rem;
}
.form-control-color { width: 3rem; min-width: 3rem; padding: 0.2rem; cursor: pointer; }
.scelta-colore { display: flex; flex-wrap: wrap; gap: 0.3rem; max-width: 20rem; }
.pastiglia-colore {
    width: 1.6rem; height: 1.6rem; padding: 0; border: 1px solid var(--line); border-radius: var(--r-xs);
    cursor: pointer; background: #fff;
}
.pastiglia-colore.sel { outline: 2px solid var(--ink); outline-offset: 2px; box-shadow: 0 0 0 2px var(--paper); position: relative; }
.pastiglia-colore.sel:not(.nessuno)::after {
    content: "\2713"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    color: var(--ink); font-size: 0.95rem; font-weight: 700; line-height: 1; pointer-events: none;
}
.pastiglia-colore.nessuno { color: var(--muted); font-size: 0.8rem; line-height: 1; }
.pastiglia-colore.nessuno.sel { background: var(--linen); }
/* Schede comprimibili: a scheda chiusa il corpo (quindi la palette) non compare */
details.card:not([open]) > .card-body { display: none; }
.data-inline {
    border: 1px solid transparent; background: transparent; color: inherit; font: inherit;
    padding: 0.05rem 0.2rem; border-radius: var(--r-xs); width: 8rem; max-width: 100%; cursor: pointer;
}
.data-inline:hover { border-color: var(--line); background: var(--paper); }
.data-inline:focus { outline: none; border-color: var(--ink); background: var(--paper); box-shadow: 0 0 0 3px var(--acid-veil); }
.tag-bloccato {
    display: inline-block; margin-left: 0.4rem; border: 1px solid var(--ink); color: var(--porcelain); background: var(--ink);
    border-radius: var(--r-pill); padding: 0 0.4rem; font-size: 0.66rem; letter-spacing: .06em; text-transform: uppercase;
}
.riga-archiviata td { opacity: 0.6; }
.riga-sezione td { background: var(--linen) !important; border-bottom: 1px solid var(--line) !important; padding-top: 0.6rem !important; }
.nome-sezione { color: var(--ink); font-weight: 450; text-transform: uppercase; letter-spacing: .1em; font-size: 0.72rem; }
.azioni-sezione { display: inline-flex; gap: 0.6rem; align-items: center; font-size: 0.85rem; }
.toggle-sezione { cursor: pointer; user-select: none; }
.caret-sezione { display: inline-block; width: 1em; margin-right: 0.15rem; color: var(--acid-deep); font-size: 0.8em; }
.caret-sezione::before { content: "\25BE"; }
.riga-sezione.sezione-chiusa .caret-sezione::before { content: "\25B8"; }
.toggle-subtask { cursor: pointer; user-select: none; color: var(--acid-deep); }
.caret-task { display: inline-block; width: 1em; font-size: 0.8em; }
.caret-task::before { content: "\25BE"; }
.caret-task.chiuso::before { content: "\25B8"; }
.tag-modello {
    display: inline-block; border: 1px solid var(--line); color: var(--graphite); background: var(--linen);
    border-radius: var(--r-pill); padding: 0.08rem 0.5rem; font-size: 0.68rem; letter-spacing: .1em; text-transform: uppercase;
}
.testo-descrizione { white-space: pre-line; color: var(--graphite); }
details.card > summary { cursor: pointer; list-style: none; }
details.card > summary::-webkit-details-marker { display: none; }
details.card > summary::after { content: " \25BE"; }

/* Progetti: calendario a settimane */
.calendario { width: 100%; table-layout: fixed; border-collapse: collapse; min-width: 760px; }
.calendario th {
    color: var(--mist); font-weight: 450; font-size: 0.7rem; text-transform: uppercase; letter-spacing: .12em;
    padding: 0.35rem; border-bottom: 1px solid var(--line);
}
.calendario td { vertical-align: top; height: 7.5rem; padding: 0.3rem; border: 1px solid var(--line-soft); background: var(--paper); }
.calendario td.festivo { background: var(--porcelain); }
.calendario td.fuori-mese { opacity: 0.45; }
.calendario td.oggi { outline: 2px solid var(--acid); outline-offset: -2px; }
.numero-giorno { font-size: 0.8rem; color: var(--muted); margin-bottom: 0.2rem; }
.calendario td.oggi .numero-giorno { color: var(--acid-dark); font-weight: 600; }
.voce-cal {
    display: block; font-size: 0.75rem; line-height: 1.25; padding: 0.15rem 0.35rem; margin-bottom: 0.2rem;
    background: var(--linen); border-left: 3px solid var(--acid); border-radius: var(--r-xs); color: var(--graphite); text-decoration: none;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.voce-cal:hover { background: var(--acid-veil); color: var(--ink); }
.voce-cal.cal-con { border-left-color: var(--ink); }
.voce-cal.cal-inizio { background: transparent; color: var(--muted); }
.voce-cal.cal-commessa { background: var(--acid-wash); color: var(--acid-dark); font-weight: 450; }
.voce-cal.cal-fatto { text-decoration: line-through; color: var(--mist); }
.voce-cal.cal-scaduto { border-left-color: var(--ink); color: var(--ink); font-weight: 450; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
