/* ============================================================
   Aggiunte del frontend Flask (non presenti nell'app Blazor)
   ============================================================ */

/* ----- Privacy: nascondi importi ----- */
.ag-privacy-btn {
    background: transparent;
    border: 1px solid var(--ag-border);
    color: var(--ag-text-soft);
    padding: 0.45rem 0.9rem;
    border-radius: var(--ag-radius-sm);
    cursor: pointer;
    font: inherit;
    font-size: 0.85rem;
}
.ag-privacy-btn:hover { color: var(--ag-text); border-color: var(--ag-text-dim); }
.ag-privacy-btn[aria-pressed="true"] { color: var(--ag-text); background: var(--ag-bg-3); }

html.ag-hide-money .ag-money {
    position: relative;
    display: inline-block;
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
    background: none !important;
    user-select: none;
}
html.ag-hide-money .ag-money::after {
    content: "•••••";
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    color: var(--ag-text-dim);
    -webkit-text-fill-color: var(--ag-text-dim);
    letter-spacing: 2px;
    font-weight: 400;
    font-size: 0.9em;
}

/* ----- Pagina Fatturato: stile sobrio ----- */
.rv-toolbar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.rv-toolbar-left { display: flex; align-items: flex-end; gap: 0.6rem; }
.rv-toolbar .bui-form-group { margin: 0; }

.rv-kpis {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    border: 1px solid var(--ag-border-soft);
    border-radius: var(--ag-radius);
    background: var(--ag-bg-2);
}
.rv-kpi { padding: 1rem 1.2rem; }
.rv-kpi + .rv-kpi { border-left: 1px solid var(--ag-border-soft); }
.rv-kpi-label {
    color: var(--ag-text-dim);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 600;
}
.rv-kpi-value {
    margin-top: 0.35rem;
    color: var(--ag-text);
    font-size: 1.45rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.rv-kpi-value small { font-size: 0.85rem; color: var(--ag-text-soft); font-weight: 500; margin-left: 0.15rem; }
.rv-kpi-value.alert { color: var(--ag-danger); }

.rv-table td, .rv-table th { white-space: nowrap; }
.rv-right { text-align: right; font-variant-numeric: tabular-nums; }
.rv-muted { color: var(--ag-text-dim); }
.rv-status { font-size: 0.85rem; color: var(--ag-text-soft); }
.rv-status.draft, .rv-status.cancelled { color: var(--ag-text-dim); }
.rv-status.paid { color: var(--ag-text); }
.rv-status.overdue, .rv-overdue { color: var(--ag-danger); }
.rv-actions { display: flex; gap: 0.25rem; justify-content: flex-end; }
.rv-action {
    background: transparent;
    border: 1px solid transparent;
    color: var(--ag-text-soft);
    padding: 0.25rem 0.55rem;
    border-radius: var(--ag-radius-sm);
    font: inherit;
    font-size: 0.82rem;
    cursor: pointer;
    text-decoration: none;
}
.rv-action:hover { color: var(--ag-text); border-color: var(--ag-border); }
.rv-action.danger:hover { color: var(--ag-danger); border-color: var(--ag-danger); }

/* ----- Dettaglio progetto ----- */
.pd-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1.5rem;
    padding: 0.2rem 0 0.4rem;
}
.pd-title-row { display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap; }
.pd-title { margin: 0; font-size: 1.5rem; font-weight: 600; color: var(--ag-text); letter-spacing: -0.01em; }
.pd-pill {
    font-size: 0.75rem;
    color: var(--ag-text-soft);
    border: 1px solid var(--ag-border);
    border-radius: 999px;
    padding: 0.12rem 0.6rem;
}
.pd-meta { display: flex; flex-wrap: wrap; gap: 0.4rem 1.4rem; margin-top: 0.5rem; color: var(--ag-text-dim); font-size: 0.88rem; }
.pd-meta a { font-weight: 500; }
.pd-desc { margin: 0.7rem 0 0; color: var(--ag-text-soft); max-width: 70ch; }
.pd-head-actions { display: flex; align-items: center; gap: 0.4rem; flex-shrink: 0; }

.pd-summary {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) 2fr;
    border: 1px solid var(--ag-border-soft);
    border-radius: var(--ag-radius);
    background: var(--ag-bg-2);
}
.pd-progress { padding: 1rem 1.2rem; border-right: 1px solid var(--ag-border-soft); }
.pd-progress-top { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.pd-progress-val { font-size: 0.85rem; color: var(--ag-text-soft); font-variant-numeric: tabular-nums; }
.pd-bar { height: 4px; margin-top: 0.45rem; background: var(--ag-bg-3); border-radius: 2px; overflow: hidden; }
.pd-bar-fill { height: 100%; background: var(--ag-text-soft); border-radius: 2px; }
.pd-counts { display: grid; grid-template-columns: repeat(3, 1fr); }
.pd-count {
    display: flex; align-items: center; gap: 0.5rem;
    padding: 0.75rem 1.2rem;
    border-bottom: 1px solid var(--ag-border-soft);
}
.pd-count:nth-child(n+4) { border-bottom: none; }
.pd-count + .pd-count:not(:nth-child(3n+1)) { border-left: 1px solid var(--ag-border-soft); }
.pd-count-l { color: var(--ag-text-dim); font-size: 0.82rem; }
.pd-count-v { margin-left: auto; color: var(--ag-text); font-weight: 600; font-variant-numeric: tabular-nums; }

/* Indicatore di stato: puntino a bassa saturazione */
.pd-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ag-text-dim); flex-shrink: 0; }
.pd-dot.s1 { background: #6b8fb8; }
.pd-dot.s2 { background: #6aa287; }
.pd-dot.s3 { background: #4b5563; }
.pd-dot.s4 { background: #b0925a; }

.pd-filter { display: inline-flex; border: 1px solid var(--ag-border); border-radius: var(--ag-radius-sm); overflow: hidden; }
.pd-filter button {
    background: transparent; border: none; color: var(--ag-text-soft);
    padding: 0.35rem 0.8rem; font: inherit; font-size: 0.82rem; cursor: pointer;
}
.pd-filter button + button { border-left: 1px solid var(--ag-border); }
.pd-filter button.on { background: var(--ag-bg-3); color: var(--ag-text); }

.pd-list { display: flex; flex-direction: column; }
.pd-row {
    display: grid;
    grid-template-columns: 118px minmax(0, 1fr) 130px 96px 120px 130px;
    align-items: center;
    gap: 0.8rem;
    padding: 0.45rem 0.4rem;
    border-bottom: 1px solid var(--ag-border-soft);
    font-size: 0.9rem;
}
.pd-row:not(.pd-row-head):hover { background: var(--ag-bg-hover); }
.pd-row-head {
    color: var(--ag-text-dim);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
    padding-top: 0;
}
.pd-row.st2 .pd-name { color: var(--ag-text-soft); }
.pd-row.st3 .pd-name { color: var(--ag-text-dim); text-decoration: line-through; }
.pd-muted { color: var(--ag-text-dim); }

.pd-status {
    width: 100%;
    background: transparent;
    border: 1px solid var(--ag-border);
    border-radius: var(--ag-radius-sm);
    color: var(--ag-text-soft);
    font: inherit;
    font-size: 0.8rem;
    padding: 0.22rem 0.35rem;
    cursor: pointer;
}
.pd-status option { background: var(--ag-bg-2); color: var(--ag-text); }
.pd-status.st1 { border-color: #6b8fb8; color: var(--ag-text); }
.pd-status.st2 { border-color: #4c7a64; }
.pd-status.st4 { border-color: #8a7446; }
.pd-status.st3 { color: var(--ag-text-dim); }

.pd-title-cell { display: flex; align-items: center; gap: 0.35rem; min-width: 0; }
/* Il titolo ha la precedenza: in poco spazio si restringono le etichette, non il nome */
.pd-title-cell .pd-name { flex: 0 1 auto; min-width: 5rem; }
.pd-title-cell .pd-tag, .pd-title-cell .pd-prio { flex-shrink: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pd-caret {
    width: 18px; flex-shrink: 0;
    background: none; border: none; padding: 0;
    color: var(--ag-text-dim); cursor: pointer; font-size: 0.8rem;
}
.pd-caret.empty { cursor: default; }
.pd-name {
    background: none; border: none; padding: 0; font: inherit;
    color: var(--ag-text); cursor: pointer; text-align: left;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pd-name:hover { text-decoration: underline; text-underline-offset: 3px; }
.pd-prio, .pd-tag {
    flex-shrink: 0;
    font-size: 0.7rem;
    padding: 0.05rem 0.4rem;
    border-radius: 3px;
    border: 1px solid var(--ag-border);
    color: var(--ag-text-soft);
}
.pd-prio.urgent { border-color: rgba(255,107,107,0.5); color: var(--ag-danger); }
.pd-hours { font-variant-numeric: tabular-nums; }
/* Numerazione 1 / 1.1 / 1.1.1 e ore sommate dei padri */
.pd-num {
    flex-shrink: 0; min-width: 2.2rem;
    color: var(--ag-text-dim); font-size: 0.8rem; font-variant-numeric: tabular-nums;
}
.pd-sum { font-weight: 600; }
.pd-sum::before { content: "Σ "; color: var(--ag-text-dim); font-weight: 400; }
.pd-repo { text-decoration: none; }
/* Gerarchia: padre in evidenza, sotto-attività rientrate con ramo e testo più leggero */
/* Gruppo = attività principale aperta + le sue sotto-attività: blocco unico con barra a sinistra */
.pd-row.pd-grp { box-shadow: inset 3px 0 0 color-mix(in srgb, var(--ag-brand-1) 45%, transparent); background: rgba(255,255,255,0.02); }
.pd-row.pd-grp.pd-parent { box-shadow: inset 3px 0 0 var(--ag-brand-1); background: rgba(255,255,255,0.05); border-bottom-color: transparent; }
.pd-row.d0.pd-parent { margin-top: 0.5rem; border-top: 1px solid var(--ag-border); }
.pd-row.pd-grp:not(.pd-grp-end) { border-bottom-color: transparent; }
.pd-row.pd-grp-end { margin-bottom: 0.5rem; border-bottom: 1px solid var(--ag-border); }
.pd-row.pd-parent .pd-name { font-weight: 600; font-size: 0.95rem; color: var(--ag-text); }
.pd-row.d1 .pd-name, .pd-row.d2 .pd-name { font-size: 0.86rem; color: var(--ag-text-soft); }
.pd-row.d1.pd-parent .pd-name { font-size: 0.88rem; }
.pd-row.d1 .pd-status, .pd-row.d2 .pd-status { font-size: 0.75rem; padding: 0.15rem 0.3rem; }
/* Linee ad albero: la cella titolo occupa tutta l'altezza della riga così le linee si uniscono */
.pd-title-cell { position: relative; align-self: stretch; margin: -0.45rem 0; padding-top: 0.45rem; padding-bottom: 0.45rem; }
.pd-rail, .pd-elbow { position: absolute; top: 0; bottom: 0; border-left: 1px solid color-mix(in srgb, var(--ag-brand-1) 55%, transparent); pointer-events: none; }
.pd-elbow.last { bottom: 50%; }
.pd-elbow::after { content: ""; position: absolute; top: 50%; left: 0; width: 15px; border-top: 1px solid color-mix(in srgb, var(--ag-brand-1) 55%, transparent); }
.pd-elbow.last::after { top: 100%; }
.pd-hidden { background: none; cursor: pointer; font: inherit; font-size: 0.7rem; color: var(--ag-text-dim); border-style: dashed; }
.pd-hidden:hover { color: var(--ag-text); }
.pd-repo:hover { color: var(--ag-text); border-color: var(--ag-text-dim); }

/* Resoconto attività: scelta delle attività da esportare in PDF */
.rp-export-bar { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }
.rp-export-bar .bui-input { width: auto; }
.rp-sel { width: 28px; }
.rp-title { display: flex; align-items: center; gap: 0.4rem; }
.rp-title .pd-num { min-width: 2.6rem; }
tr.rp-top td { font-weight: 600; }
tr.rp-off td { opacity: 0.5; }
.rp-print-head { display: none; }

/* ===== Scheda cliente: progetti con attività ad albero ===== */
.ct-prj { margin-bottom: 1.4rem; }
.ct-prj-head { display: flex; align-items: center; gap: 0.5rem; padding: 0.3rem 0 0.5rem; border-bottom: 2px solid var(--ag-border); }
.ct-prj-name { font-weight: 700; font-size: 1.02rem; color: var(--ag-text); text-decoration: none; }
.ct-prj-name:hover { text-decoration: underline; text-underline-offset: 3px; }
.ct-prj-tot { font-weight: 600; color: var(--ag-brand-1); font-variant-numeric: tabular-nums; }
.ct-empty { margin: 0.6rem 0 0; }
.ct-tbl th:first-child { width: auto; }
.ct-tbl th.rp-sel, .ct-tbl td.rp-sel { width: 34px; }

/* Albero dentro le tabelle (stesse linee della pagina progetto) */
.ag-bill-task-tbl td.bt-title { position: relative; padding-top: 0; padding-bottom: 0; }
.bt-title-in { display: flex; align-items: center; gap: 0.4rem; min-height: 2.3rem; }
.bt-name { color: inherit; text-decoration: none; }
.bt-name:hover { text-decoration: underline; text-underline-offset: 3px; }
.ag-bill-task-tbl tr.bt-grp td { background: rgba(255,255,255,0.02); }
.ag-bill-task-tbl tr.bt-grp td:first-child { box-shadow: inset 3px 0 0 color-mix(in srgb, var(--ag-brand-1) 45%, transparent); }
.ag-bill-task-tbl tr.bt-parent.bt-d0 td { background: rgba(255,255,255,0.05); border-top: 1px solid var(--ag-border); }
.ag-bill-task-tbl tr.bt-parent.bt-d0 td:first-child { box-shadow: inset 3px 0 0 var(--ag-brand-1); }
.ag-bill-task-tbl tr.bt-parent .bt-name { font-weight: 600; }
.ag-bill-task-tbl tr.bt-grp:not(.bt-grp-end) td { border-bottom-color: transparent; }
.ag-bill-task-tbl tr.bt-grp-end td { border-bottom: 1px solid var(--ag-border); }
.ag-bill-task-tbl tr.bt-d1 td, .ag-bill-task-tbl tr.bt-d2 td { font-size: 0.84rem; color: var(--ag-text-soft); }
.ag-bill-task-tbl tr.bt-context td { color: var(--ag-text-dim); }
.ag-bill-task-tbl tr.bt-context td.rp-sel input { opacity: 0.6; }

/* Barra azioni di Fine mese: resta visibile in basso mentre scorri */
.ct-actionbar {
    position: sticky; bottom: 0.8rem; z-index: 5;
    display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem;
    margin: 0.8rem 0; padding: 0.7rem 1rem;
    background: var(--ag-bg-2); border: 1px solid var(--ag-border); border-radius: var(--ag-radius);
    box-shadow: var(--ag-shadow-lg);
}
.ct-actionbar-sum { display: flex; flex-direction: column; margin-right: auto; font-variant-numeric: tabular-nums; }
.ct-actionbar-sum span { font-size: 0.78rem; color: var(--ag-text-dim); }

/* Stampa del resoconto: solo il riepilogo, su carta bianca, tabelle leggibili */
@media print {
    @page { size: A4; margin: 14mm 12mm; }
    .ag-no-print, .ag-privacy-btn, .rp-sel { display: none !important; }
    .bui-card { break-inside: auto !important; background: none !important; margin: 0 !important; }
    .rp-print-card > .bui-card-header { display: none !important; }
    .rp-print-card > .bui-card-body { padding: 0 !important; }
    .rp-print-head {
        display: flex; justify-content: space-between; align-items: flex-end;
        border-bottom: 2px solid #000; padding-bottom: 6px; margin-bottom: 12px; font-size: 10pt;
    }
    .rp-print-title { font-size: 16pt; font-weight: 700; }
    .rp-print-meta { text-align: right; font-size: 9pt; }
    .ag-report-summary { gap: 6px; margin-bottom: 12px; }
    .ag-prj-stat { background: none !important; border: 1px solid #999 !important; border-radius: 3px; padding: 5px 8px; }
    .ag-prj-stat .v { font-size: 14pt; }
    .ag-prj-stat .l { font-size: 7pt; }
    .ag-section-title { font-size: 11pt; margin: 6px 0; }
    .ag-report-prj { background: none !important; border: none !important; border-radius: 0; padding: 0; margin: 0 0 14px; }
    .ag-report-prj-head { border-bottom: 1px solid #000; padding-bottom: 3px; margin-bottom: 2px; break-after: avoid; }
    .ag-report-prj-head .ag-prj-status, .ag-color-dot { display: none !important; }
    .ag-bill-task-tbl { font-size: 9pt; }
    .ag-bill-task-tbl thead { display: table-header-group; }
    .ag-bill-task-tbl tr { break-inside: avoid; }
    .ag-bill-task-tbl th { font-size: 7.5pt; border-bottom: 1px solid #000; padding: 3px 5px; }
    .ag-bill-task-tbl td { border-bottom: 1px solid #ddd; padding: 3px 5px; background: none !important; }
    .ag-bill-task-tbl tr.billed, tr.rp-off td { opacity: 1 !important; }
    .pd-tag, .pd-repo { border: none; padding: 0; font-size: 7.5pt; }
    .pd-repo { display: none; }
    .pd-sum::before { content: "Σ "; }
}
.pd-row-actions { display: flex; justify-content: flex-end; }
.pd-row-actions .rv-action { opacity: 0; }
.pd-row:hover .pd-row-actions .rv-action { opacity: 1; }

.pd-check { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--ag-text-soft); font-size: 0.85rem; cursor: pointer; }

/* ----- Board Scrum/Kanban ----- */
.kb-board {
    display: grid;
    gap: 0.8rem;
    align-items: start;
    overflow-x: auto;
    padding-bottom: 0.3rem;
}
.kb-col {
    display: flex;
    flex-direction: column;
    min-height: 240px;
    background: var(--ag-bg);
    border: 1px solid var(--ag-border-soft);
    border-radius: var(--ag-radius);
    transition: border-color 0.12s, background 0.12s;
}
.kb-col.over { border-color: var(--ag-text-dim); background: var(--ag-bg-2); }
.kb-col-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.7rem 0.8rem;
    border-bottom: 1px solid var(--ag-border-soft);
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ag-text-soft);
}
.kb-col-count {
    color: var(--ag-text-dim);
    font-weight: 500;
    background: var(--ag-bg-3);
    border-radius: 999px;
    padding: 0 0.45rem;
    font-size: 0.75rem;
}
.kb-col-hours { margin-left: auto; color: var(--ag-text-dim); font-weight: 400; font-size: 0.75rem; font-variant-numeric: tabular-nums; }
.kb-cards { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.6rem; flex: 1; }
.kb-card {
    background: var(--ag-bg-2);
    border: 1px solid var(--ag-border-soft);
    border-radius: var(--ag-radius-sm);
    padding: 0.6rem 0.7rem;
    cursor: grab;
    transition: border-color 0.12s;
}
.kb-card:hover { border-color: var(--ag-border); }
.kb-card.dragging { opacity: 0.4; }
.kb-parent { font-size: 0.72rem; color: var(--ag-text-dim); margin-bottom: 0.2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-title { color: var(--ag-text); font-size: 0.9rem; line-height: 1.35; }
.kb-tags { display: flex; gap: 0.3rem; flex-wrap: wrap; margin-top: 0.35rem; }
.kb-tags:empty { display: none; }
.kb-foot {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 0.55rem;
    font-size: 0.75rem;
    color: var(--ag-text-dim);
    font-variant-numeric: tabular-nums;
}
.kb-assignee { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kb-hours { margin-left: auto; white-space: nowrap; }
.kb-empty {
    text-align: center;
    color: var(--ag-text-dim);
    font-size: 0.8rem;
    padding: 1.2rem 0;
    border: 1px dashed var(--ag-border-soft);
    border-radius: var(--ag-radius-sm);
}
.kb-add {
    margin: 0 0.6rem 0.6rem;
    background: transparent;
    border: 1px dashed var(--ag-border);
    border-radius: var(--ag-radius-sm);
    color: var(--ag-text-dim);
    padding: 0.4rem;
    font: inherit;
    font-size: 0.82rem;
    cursor: pointer;
}
.kb-add:hover { color: var(--ag-text); border-color: var(--ag-text-dim); }

@media (max-width: 1100px) {
    .pd-head { flex-direction: column; }
    .pd-summary { grid-template-columns: 1fr; }
    .pd-progress { border-right: none; border-bottom: 1px solid var(--ag-border-soft); }
    .pd-row { grid-template-columns: 110px minmax(0, 1fr) 90px 100px; }
    .pd-row > :nth-child(3), .pd-row > :nth-child(6) { display: none; }
}

@media (max-width: 900px) {
    .rv-kpis { grid-template-columns: repeat(2, 1fr); }
    .rv-kpi:nth-child(3) { border-left: none; }
    .rv-kpi:nth-child(n+3) { border-top: 1px solid var(--ag-border-soft); }
}

/* Registro ore della task */
.te-box { border: 1px solid var(--ag-border); border-radius: var(--ag-radius-sm); padding: 0.7rem 0.8rem; }
.te-head { display: flex; align-items: baseline; gap: 0.8rem; margin-bottom: 0.4rem; }
.te-total { font-weight: 600; font-variant-numeric: tabular-nums; }
.te-tbl { width: 100%; border-collapse: collapse; font-size: 0.84rem; margin-bottom: 0.5rem; }
.te-tbl th { text-align: left; font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ag-text-dim); padding: 0.25rem 0.35rem; border-bottom: 1px solid var(--ag-border); }
.te-tbl td { padding: 0.3rem 0.35rem; border-bottom: 1px solid var(--ag-border-soft); font-variant-numeric: tabular-nums; }
.te-tbl .r { text-align: right; }
.te-note { color: var(--ag-text-soft); max-width: 12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.te-del { background: none; border: none; color: var(--ag-text-dim); cursor: pointer; font-size: 0.85rem; }
.te-del:hover { color: var(--ag-danger); }
.te-byop { display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; font-size: 0.82rem; color: var(--ag-text-soft); margin-bottom: 0.5rem; }
.te-add { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr) 5.5rem; gap: 0.4rem; align-items: center; }
.te-add input[type="text"] { grid-column: 1 / 3; }
.te-add .bui-input { width: 100%; }
.te-hint { font-size: 0.78rem; color: var(--ag-text-dim); margin: 0.4rem 0 0; }
.te-ops { margin-bottom: 0.9rem; }

/* ⏱ Registra ore */
.qh-btn {
    flex-shrink: 0; cursor: pointer; font: inherit; font-size: 0.75rem; white-space: nowrap;
    background: color-mix(in srgb, var(--ag-brand-1) 14%, transparent); color: var(--ag-text);
    border: 1px solid color-mix(in srgb, var(--ag-brand-1) 45%, transparent); border-radius: 999px; padding: 0.1rem 0.55rem;
}
.qh-btn:hover { background: color-mix(in srgb, var(--ag-brand-1) 30%, transparent); }
.pd-row-actions { gap: 0.4rem; align-items: center; }
.kb-foot .qh-btn { padding: 0 0.4rem; }
.qh-modal { max-width: 440px; }
.qh-modal .bui-modal-body { display: flex; flex-direction: column; gap: 0.7rem; }
.qh-hours { display: flex; align-items: baseline; gap: 0.5rem; }
.qh-hours .bui-input { font-size: 2rem; font-weight: 700; width: 8rem; text-align: right; padding: 0.2rem 0.6rem; }
.qh-hours span { color: var(--ag-text-soft); font-size: 1.1rem; }
.qh-chips, .qh-days { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.qh-chip {
    cursor: pointer; font: inherit; font-size: 0.85rem; padding: 0.25rem 0.7rem; border-radius: 999px;
    background: var(--ag-bg-3); color: var(--ag-text); border: 1px solid var(--ag-border);
}
.qh-chip:hover, .qh-chip.on { border-color: var(--ag-brand-1); background: color-mix(in srgb, var(--ag-brand-1) 18%, transparent); }
.qh-chip.ghost { background: none; color: var(--ag-text-dim); }
.qh-row { display: grid; grid-template-columns: minmax(0, 1fr) 9rem; gap: 0.5rem; align-items: center; }
.qh-days .bui-input { width: 9.5rem; }
.qh-error { color: var(--ag-danger); margin: 0; font-size: 0.85rem; }

/* Ore fatte / stima nella finestra dell'attività */
.te-of { color: var(--ag-text-dim); font-size: 0.85rem; }
.te-est { width: 4.5rem; padding: 0.15rem 0.4rem; text-align: right; }
.te-bar { margin: 0.2rem 0 0.6rem; }
.pd-bar-fill.over { background: var(--ag-warning); }

/* Fine mese: righe delle singole ore */
.fm-older { display: flex; gap: 0.5rem; align-items: center; margin: 0 0 0.8rem; font-size: 0.88rem; color: var(--ag-warning); }
.ag-bill-task-tbl tr.fm-entry td { font-size: 0.82rem; color: var(--ag-text-soft); background: rgba(255,255,255,0.01); }
.fm-entry-in { min-height: 1.8rem; gap: 0.8rem; }
.fm-date { font-variant-numeric: tabular-nums; color: var(--ag-text); }

/* Dashboard: ore */
.dh-filters { display: flex; flex-direction: row; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.dh-filters .bui-input { width: auto; }
.dh-users { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.7rem; margin-bottom: 1rem; }
.dh-user {
    text-align: left; cursor: pointer; font: inherit; color: var(--ag-text);
    background: var(--ag-bg-3); border: 1px solid var(--ag-border-soft); border-radius: var(--ag-radius-sm); padding: 0.7rem 0.9rem;
}
.dh-user.on { border-color: var(--ag-brand-1); }
.dh-user-h { font-size: 1.5rem; margin: 0.3rem 0; }
.dh-user-s { display: flex; flex-direction: column; font-size: 0.78rem; color: var(--ag-text-soft); }
.dh-tbl td { vertical-align: middle; }
.pd-tag.dh-billed { color: var(--ag-success); border-color: color-mix(in srgb, var(--ag-success) 50%, transparent); }
.pd-tag.dh-tobill { color: var(--ag-warning); border-color: color-mix(in srgb, var(--ag-warning) 50%, transparent); }

/* Scheda cliente: intestazione semplice */
.ct-head { display: flex; align-items: flex-end; gap: 1rem; margin-bottom: 0.8rem; }
.ct-title { margin: 0; font-size: 1.5rem; }
.ct-head-tobill { font-weight: 600; color: var(--ag-warning); }

/* Finestra attività semplificata */
.te-status { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.te-add { grid-template-columns: 5rem 9.5rem minmax(7rem, 1fr) !important; }
.te-add .bui-btn { grid-column: 1 / -1; }
.te-add input[type="text"] { grid-column: auto; }
.te-more { margin-top: 0.4rem; }
.te-more summary { cursor: pointer; color: var(--ag-text-soft); font-size: 0.88rem; padding: 0.3rem 0; }
.te-more[open] summary { margin-bottom: 0.6rem; }

/* Link con stile pulsante (es. "Fine mese ›") */
a.bui-btn { text-decoration: none; }


/* ============================================================
   Cellulare e tablet
   ============================================================ */
.ag-menu-btn, .ag-nav-overlay { display: none; }

@media (max-width: 1100px) {
    /* Lista attività del progetto: resta il pulsante ⏱ (colonna azioni) */
    .pd-row { grid-template-columns: 110px minmax(0, 1fr) 70px auto; }
    .pd-row > :nth-child(3), .pd-row > :nth-child(4) { display: none; }
    .pd-row > :nth-child(6) { display: flex; }
}

@media (max-width: 900px) {
    /* Menu a scomparsa */
    .ag-menu-btn {
        display: inline-flex; align-items: center; justify-content: center;
        width: 2.4rem; height: 2.4rem; flex-shrink: 0; cursor: pointer;
        background: none; border: 1px solid var(--ag-border); border-radius: var(--ag-radius-sm);
        color: var(--ag-text); font-size: 1.2rem;
    }
    .ag-sidebar {
        position: fixed; left: 0; top: 0; z-index: 60; height: 100dvh;
        transform: translateX(-100%); transition: transform 0.2s ease;
    }
    body.ag-nav-open .ag-sidebar { transform: none; }
    body.ag-nav-open .ag-nav-overlay { display: block; position: fixed; inset: 0; z-index: 55; background: rgba(0,0,0,0.5); }

    .ag-topbar { padding: 0.55rem 0.8rem; gap: 0.5rem; }
    .ag-topbar-user { gap: 0.5rem; }
    .ag-user-name, .ag-privacy-btn { display: none; }
    .ag-content { padding: 0.8rem; }
    .ag-page { gap: 1rem; }

    /* Campi a 16px: il telefono non zooma quando ci scrivi */
    .bui-input, input, select, textarea { font-size: 16px !important; }

    /* Tabelle: scorrono in orizzontale invece di uscire dallo schermo */
    .ag-bill-task-tbl, .bui-table, .te-tbl { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .ag-tabs { overflow-x: auto; flex-wrap: nowrap; }
    .ag-tab { white-space: nowrap; padding: 0.7rem 0.9rem; }

    /* Finestre a tutto schermo */
    .bui-modal-backdrop { padding: 0 !important; align-items: stretch !important; }
    .bui-modal { width: 100vw !important; max-width: 100vw !important; max-height: 100dvh !important; height: 100dvh; border-radius: 0 !important; }

    .ag-grid-2, .ag-grid-3 { grid-template-columns: 1fr; }
    .ct-head { flex-wrap: wrap; align-items: flex-start; }
    .ct-actionbar { bottom: 0; margin: 0.6rem -0.8rem 0; border-radius: 0; padding: 0.6rem 0.8rem; }
    .ct-actionbar .bui-btn { flex: 1 1 auto; }
    .rp-export-bar { width: 100%; }
}

@media (max-width: 600px) {
    /* Lista attività: nome, ore e ⏱ */
    .pd-row { grid-template-columns: minmax(0, 1fr) 50px auto; gap: 0.5rem; }
    .pd-row > :nth-child(1) { display: none; }
    /* Lavoro / Fine mese: niente colonne Stato e Chi */
    .ct-tbl { display: table; }
    .ct-tbl th:nth-child(2), .ct-tbl td:nth-child(2), .ct-tbl th:nth-child(3), .ct-tbl td:nth-child(3) { display: none; }
    .ct-tbl th.rp-sel ~ th:nth-child(2), .ct-tbl td.rp-sel ~ td:nth-child(2) { display: table-cell; }
    .te-add { grid-template-columns: 5rem minmax(0, 1fr) !important; }
    .te-add select { grid-column: 1 / -1; }
    .dh-tbl td:nth-child(5), .dh-tbl th:nth-child(5) { display: none; }
    .qh-row { grid-template-columns: 1fr; }
}
