/* ═══════════════════════════════════════════════════════════════════
   CecchinatoHR Workflow — Frontend CSS  v4.9.13
   Design System: tokens → base → components → layout → utilities → print
   ═══════════════════════════════════════════════════════════════════ */

/* ── 1. Design Tokens ────────────────────────────────────────────── */
/* Token: vedi assets/tokens.css (sorgente unica, caricato prima) */

/* ── 2. Base ─────────────────────────────────────────────────────── */
.chr-wrap,.chr-app-wrap,.chr-login-wrap {
    font-family: var(--chr-font);
    color: var(--chr-text);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
*,*::before,*::after { box-sizing: border-box; }

/* ── 3. Login ────────────────────────────────────────────────────── */
.chr-login-wrap {
    display: flex; align-items: center; justify-content: center;
    min-height: 100vh; padding: 20px;
    background: linear-gradient(145deg, var(--chr-primary-light) 0%, var(--chr-bg) 50%, #e8eef7 100%);
    position: relative; overflow: hidden;
}
.chr-login-wrap::before {
    content:''; position:absolute; top:-120px; right:-120px;
    width:400px; height:400px; border-radius:50%;
    background:radial-gradient(circle,rgba(26,74,110,.06) 0%,transparent 70%);
    pointer-events:none;
}
.chr-login-wrap::after {
    content:''; position:absolute; bottom:-80px; left:-80px;
    width:300px; height:300px; border-radius:50%;
    background:radial-gradient(circle,rgba(232,160,32,.07) 0%,transparent 70%);
    pointer-events:none;
}
.chr-login-box {
    background: var(--chr-surface);
    border-radius: var(--chr-radius-xl);
    padding: 44px 40px 36px;
    width: 100%; max-width: 400px;
    box-shadow: var(--chr-shadow-lg);
    border: 1px solid rgba(255,255,255,.8);
    position: relative; z-index: 1;
    animation: chrFadeUp .4s var(--chr-transition-slow) both;
}
@keyframes chrFadeUp { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:translateY(0)} }
.chr-login-logo { display:flex; flex-direction:column; align-items:center; gap:6px; margin-bottom:32px; }
.chr-login-icon { display:block; filter:drop-shadow(0 4px 8px rgba(26,74,110,.2)); }
.chr-logo-text  { font-size:22px; font-weight:800; color:var(--chr-primary); letter-spacing:-.4px; }
.chr-logo-sub   { font-size:11px; text-transform:uppercase; letter-spacing:2px; color:var(--chr-accent); font-weight:600; }
.chr-login-box h2 { text-align:center; margin:0 0 24px; font-size:18px; }

/* ── 4. App Header ───────────────────────────────────────────────── */
/* v4.9.13: la barra e ora unica per le tre app — vedi .chr-appbar in
   tokens.css. Qui resta solo il contenitore di pagina. */
.chr-app-wrap { background:var(--chr-bg); min-height:100vh; padding-bottom:48px; }

/* ── 5. Tabs ─────────────────────────────────────────────────────── */
.chr-tabs {
    background:var(--chr-surface); border-bottom:2px solid var(--chr-border);
    display:flex; padding:0 24px; overflow-x:auto; scrollbar-width:none; gap:4px;
}
.chr-tabs::-webkit-scrollbar { display:none; }
.chr-tab {
    background:none; border:none; padding:14px 18px;
    font-size:13px; font-weight:600; color:var(--chr-muted)!important;
    cursor:pointer; border-bottom:3px solid transparent; margin-bottom:-2px;
    white-space:nowrap; transition:color var(--chr-transition),border-color var(--chr-transition);
    position:relative; letter-spacing:.1px;
}
.chr-tab:hover { color:var(--chr-primary)!important; }
.chr-tab.active { color:var(--chr-primary)!important; border-bottom-color:var(--chr-accent); }

/* ── 6. Tab content ──────────────────────────────────────────────── */
.chr-tab-content { display:none; padding:24px; animation:chrFadeIn .2s ease; }
.chr-tab-content.active { display:block; }
@keyframes chrFadeIn { from{opacity:0} to{opacity:1} }

/* ── 7. Panel ────────────────────────────────────────────────────── */
.chr-panel {
    background:var(--chr-surface); border-radius:var(--chr-radius-lg);
    box-shadow:var(--chr-shadow); padding:24px; margin-bottom:20px;
    border:1px solid var(--chr-border-light);
    transition:box-shadow var(--chr-transition-slow);
}
.chr-panel:hover { box-shadow:var(--chr-shadow-md); }
.chr-panel-slim { padding:16px 20px; }
.chr-panel-success { border-left:4px solid var(--chr-success); }

/* ── 8. Grid ─────────────────────────────────────────────────────── */
.chr-row    { display:flex; gap:16px; align-items:flex-end; flex-wrap:wrap; }
.chr-row-sm { margin-bottom:16px; }
.chr-col-2  { flex:2; min-width:120px; }
.chr-col-3  { flex:3; min-width:160px; }
.chr-col-4  { flex:4; min-width:200px; }
.chr-col-6  { flex:6; min-width:200px; }

/* ── 9. Form Elements ────────────────────────────────────────────── */
.chr-label {
    display:block; font-size:11px; font-weight:700;
    text-transform:uppercase; letter-spacing:.6px;
    color:var(--chr-muted); margin-bottom:6px;
}
.chr-input,.chr-select {
    width:100%; box-sizing:border-box;
    border:1.5px solid var(--chr-border); border-radius:var(--chr-radius);
    padding:9px 12px; font-size:14px; color:var(--chr-text);
    background:var(--chr-surface); font-family:var(--chr-font);
    transition:border-color var(--chr-transition),box-shadow var(--chr-transition),background var(--chr-transition);
    outline:none;
}
.chr-input:hover,.chr-select:hover { border-color:var(--chr-gray-400); }
.chr-input:focus,.chr-select:focus {
    border-color:var(--chr-primary);
    box-shadow:0 0 0 3px rgba(26,74,110,.1);
    background:#fff;
}
.chr-input::placeholder { color:#b8c5d0; }
textarea.chr-input { resize:vertical; min-height:72px; line-height:1.5; }

.chr-input-wrap { position:relative; display:flex; align-items:center; }
.chr-input-icon  { position:absolute; left:11px; color:#9aa5b4; pointer-events:none; z-index:1; }
.chr-input-icon-left { padding-left:36px!important; }
.chr-pwd-toggle  {
    position:absolute; right:10px; background:none; border:none; cursor:pointer;
    color:#9aa5b4; padding:4px; border-radius:4px; display:flex; align-items:center;
    transition:color var(--chr-transition); z-index:1;
}
.chr-pwd-toggle:hover { color:var(--chr-primary); }

/* ── 10. Buttons ─────────────────────────────────────────────────── */
.chr-btn {
    display:inline-flex; align-items:center; justify-content:center; gap:6px;
    padding:9px 20px; border-radius:var(--chr-radius);
    font-size:14px; font-weight:600; font-family:var(--chr-font);
    border:none; cursor:pointer; text-decoration:none;
    transition:all var(--chr-transition); position:relative; overflow:hidden;
    white-space:nowrap; user-select:none;
}
.chr-btn::after { content:''; position:absolute; inset:0; background:rgba(255,255,255,0); transition:background .2s; }
.chr-btn:active::after { background:rgba(255,255,255,.15); }

.chr-btn-primary {
    background:linear-gradient(135deg,var(--chr-primary) 0%,var(--chr-primary-soft) 100%);
    color:#fff; box-shadow:0 2px 8px rgba(26,74,110,.28);
}
.chr-btn-primary:hover {
    background:linear-gradient(135deg,var(--chr-primary-dark) 0%,var(--chr-primary) 100%);
    box-shadow:0 4px 16px rgba(26,74,110,.36); transform:translateY(-1px); color:#fff;
}
.chr-btn-primary:active { transform:translateY(0); box-shadow:0 1px 4px rgba(26,74,110,.2); }

.chr-btn-secondary { background:#e8edf5; color:var(--chr-primary); }
.chr-btn-secondary:hover { background:#dce4f0; transform:translateY(-1px); }

.chr-btn-ghost { background:transparent; color:var(--chr-muted); border:1.5px solid var(--chr-border); }
.chr-btn-ghost:hover { background:var(--chr-bg); color:var(--chr-primary); border-color:var(--chr-gray-400); }

.chr-btn-excel { background:linear-gradient(135deg,var(--chr-success) 0%,#229154 100%); color:#fff; box-shadow:0 2px 8px rgba(26,122,74,.25); }
.chr-btn-excel:hover { background:linear-gradient(135deg,#155f39 0%,var(--chr-success) 100%); transform:translateY(-1px); }

.chr-btn-fic { background:linear-gradient(135deg,var(--chr-accent) 0%,#f0aa30 100%); color:#fff; box-shadow:0 2px 8px rgba(232,160,32,.3); }
.chr-btn-fic:hover { background:linear-gradient(135deg,var(--chr-accent-dark) 0%,var(--chr-accent) 100%); transform:translateY(-1px); }

.chr-btn-danger { background:linear-gradient(135deg,var(--chr-error) 0%,var(--chr-error) 100%); color:#fff; box-shadow:0 2px 8px rgba(192,57,43,.25); }
.chr-btn-danger:hover { background:linear-gradient(135deg,#a93226 0%,var(--chr-error) 100%); transform:translateY(-1px); }

.chr-btn-full { width:100%; }
.chr-btn-sm   { padding:5px 12px; font-size:12px; border-radius:6px; }
.chr-btn-xs   { padding:3px 8px; font-size:11px; border-radius:5px; }
.chr-link-btn { background:none; border:none; color:var(--chr-primary); text-decoration:underline; cursor:pointer; font-size:inherit; font-family:var(--chr-font); padding:0; }

/* ── 11. Table ───────────────────────────────────────────────────── */
.chr-table-wrap { overflow-x:auto; border-radius:var(--chr-radius-lg); }
.chr-table { width:100%; border-collapse:collapse; font-size:13.5px; }
.chr-table thead th {
    background:var(--chr-primary); color:#fff;
    padding:11px 14px; text-align:left;
    font-weight:700; font-size:11px;
    text-transform:uppercase; letter-spacing:.5px;
    white-space:nowrap; position:sticky; top:0;
}
.chr-table thead th:first-child { border-radius:var(--chr-radius) 0 0 0; }
.chr-table thead th:last-child  { border-radius:0 var(--chr-radius) 0 0; }
.chr-table tbody tr { transition:background var(--chr-transition); border-bottom:1px solid var(--chr-border-light); }
.chr-table td { padding:10px 14px; vertical-align:middle; color:var(--chr-text); }
.chr-table tbody tr:last-child { border-bottom:none; }
.chr-table tbody tr:hover { background:#f5f8fc; }
.chr-table tbody tr:nth-child(even) { background:#fafbfd; }
.chr-table tbody tr:nth-child(even):hover { background:#f0f4fa; }
.chr-table tbody tr.chr-row-highlight { background:var(--chr-accent-light)!important; }
.chr-table tfoot td { font-weight:700; background:#f0f4f8; padding:12px 14px; border-top:2px solid var(--chr-border); }
.chr-tfoot-label { text-align:right; text-transform:uppercase; font-size:11px; color:var(--chr-muted); }
.chr-tfoot-total { text-align:right; font-size:18px; color:var(--chr-primary); }

.chr-table td input[type=number],.chr-table td input[type=text] {
    border:1.5px solid var(--chr-border); border-radius:5px;
    padding:5px 8px; width:90px; font-size:13px; font-family:var(--chr-font);
    background:#fff; transition:border-color var(--chr-transition),box-shadow var(--chr-transition);
}
.chr-table td input:focus { outline:none; border-color:var(--chr-primary); box-shadow:0 0 0 2px rgba(26,74,110,.08); }
.chr-importo-input,.chr-qty-input { width:80px; text-align:right; }
.chr-qty-input    { width:54px; }
.chr-note-input   { font-size:12px; padding:4px 7px; border:1.5px solid var(--chr-border); border-radius:5px; }
.chr-th-check { width:40px; text-align:center; }
.chr-th-num,.chr-td-num { text-align:right; font-variant-numeric:tabular-nums; }
.chr-row-disabled-soft td { opacity:.45; }
.chr-table tbody tr.chr-row-disabled-soft:hover { background:transparent; }

/* ── 12. Badges ──────────────────────────────────────────────────── */
.chr-badge { display:inline-block; padding:3px 9px; border-radius:var(--chr-radius-pill); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; line-height:1.4; }
.chr-badge-ok        { background:#d4f0e0; color:#155f39; }
.chr-badge-off       { background:#f0d4d4; color:#8b1a1a; }
.chr-badge-warn      { background:#fdebd0; color:#a04010; }
.chr-badge-bozza     { background:#dbe9f5; color:var(--chr-primary); }
.chr-badge-esportata { background:#d4f0e0; color:#155f39; }
.chr-badge-inviata_fic { background:#ede8f5; color:#5a1a8e; }
.chr-badge-da_fare   { background:#fdebd0; color:#a04010; }
.chr-auto-badge      { font-size:9px!important; padding:1px 6px!important; }
.chr-badge-freq-mensile     { background:#dbe9f5; color:var(--chr-primary); }
.chr-badge-freq-bimestrale  { background:#d4f0e8; color:#1a6e4a; }
.chr-badge-freq-trimestrale { background:#f0e8d4; color:#6e4a1a; }
.chr-badge-freq-semestrale  { background:#ede8f5; color:#4a1a8e; }
.chr-badge-freq-annuale     { background:#f0d4d4; color:#6e1a1a; }

/* ── 13. Notices ─────────────────────────────────────────────────── */
.chr-notice { padding:12px 16px; border-radius:var(--chr-radius); font-size:13.5px; margin-top:12px; display:flex; align-items:flex-start; gap:10px; animation:chrFadeIn .2s ease; }
.chr-error          { background:var(--chr-error-bg); color:#7b1c10; border-left:3px solid var(--chr-error); }
.chr-success-notice { background:var(--chr-success-bg); color:#155f39; border-left:3px solid var(--chr-success); }
.chr-alert-warn     { background:var(--chr-warn-bg); color:#7c4a00; border-left:3px solid var(--chr-warn); }
.chr-alert-info     { background:var(--chr-info-bg); color:#1a4a8e; border-left:3px solid var(--chr-info); }

/* ── 14. Toast ───────────────────────────────────────────────────── */
.chr-toast {
    position:fixed; bottom:24px; right:24px; z-index:99999;
    padding:13px 20px; border-radius:var(--chr-radius-lg);
    font-size:14px; font-weight:600; font-family:var(--chr-font);
    box-shadow:var(--chr-shadow-lg);
    transform:translateY(16px) scale(.96); opacity:0;
    transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .25s ease;
    max-width:340px; pointer-events:none; display:flex; align-items:center; gap:10px;
}
.chr-toast.chr-toast-visible { transform:translateY(0) scale(1); opacity:1; }
.chr-toast-ok    { background:var(--chr-success-bg); color:#155f39; border-left:4px solid var(--chr-success); }
.chr-toast-error { background:var(--chr-error-bg);   color:#7b1c10; border-left:4px solid var(--chr-error); }
.chr-toast-warn  { background:var(--chr-warn-bg);    color:#7c4a00; border-left:4px solid var(--chr-warn); }

/* ── 15. Dropdown ────────────────────────────────────────────────── */
.chr-autocomplete-wrap { position:relative; }
.chr-dropdown {
    position:absolute; top:calc(100% + 4px); left:0; right:0; z-index:9999;
    background:var(--chr-surface); border:1.5px solid var(--chr-primary);
    border-radius:var(--chr-radius); box-shadow:var(--chr-shadow-md);
    max-height:240px; overflow-y:auto;
    animation:chrDropDown .15s ease;
}
@keyframes chrDropDown { from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:translateY(0)} }
.chr-dropdown-item { padding:10px 14px; font-size:13.5px; cursor:pointer; border-bottom:1px solid var(--chr-border-light); transition:background var(--chr-transition),color var(--chr-transition); }
.chr-dropdown-item:last-child { border-bottom:none; }
.chr-dropdown-item:hover,.chr-dropdown-item.chr-dropdown-active { background:var(--chr-primary-light); color:var(--chr-primary); font-weight:600; }

/* ── 16. Upload ──────────────────────────────────────────────────── */
.chr-upload-area { border:2.5px dashed var(--chr-border); border-radius:var(--chr-radius-lg); padding:52px 24px; text-align:center; cursor:pointer; transition:all var(--chr-transition-slow); margin-bottom:20px; background:var(--chr-bg); }
.chr-upload-area:hover,.chr-upload-area.dragover { border-color:var(--chr-primary); background:var(--chr-primary-light); box-shadow:inset 0 0 0 2px rgba(26,74,110,.08); }
.chr-upload-icon { font-size:48px; margin-bottom:12px; }
.chr-dropzone-slim { border:2px dashed #c5cfe0; border-radius:var(--chr-radius); padding:14px 20px; text-align:center; color:var(--chr-muted); font-size:13px; cursor:pointer; transition:all var(--chr-transition-slow); }
.chr-dropzone-slim:hover,.chr-dropzone-slim.dragover { border-color:var(--chr-primary); background:var(--chr-primary-light); color:var(--chr-primary); }
.chr-slim-upload-header { display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.chr-slim-upload-title  { font-weight:600; font-size:15px; }

/* ── 17. Modal ───────────────────────────────────────────────────── */
.chr-modal-overlay-wrap { display:none; position:fixed; inset:0; z-index:99999; background:rgba(15,25,40,.55); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); align-items:center; justify-content:center; }
.chr-modal-overlay-wrap.chr-modal-open { display:flex!important; animation:chrFadeIn .2s ease; }
.chr-modal-inner { background:var(--chr-surface); border-radius:var(--chr-radius-xl); padding:32px 36px; width:100%; max-width:560px; box-shadow:var(--chr-shadow-lg); position:relative; max-height:92vh; overflow-y:auto; animation:chrModalIn .25s cubic-bezier(.34,1.56,.64,1); border:1px solid var(--chr-border-light); }
@keyframes chrModalIn { from{opacity:0;transform:scale(.94) translateY(12px)} to{opacity:1;transform:scale(1) translateY(0)} }
.chr-modal-flex { display:flex!important; align-items:center; justify-content:center; }

/* ── 18. Loading ─────────────────────────────────────────────────── */
.chr-loading-bar { padding:20px; text-align:center; color:var(--chr-muted); font-size:14px; display:flex; align-items:center; justify-content:center; gap:8px; }
.chr-loading-bar::before { content:''; width:16px; height:16px; border:2px solid var(--chr-border); border-top-color:var(--chr-primary); border-radius:50%; animation:chrSpin .7s linear infinite; display:inline-block; flex-shrink:0; }
.chr-hint  { font-size:12.5px; color:var(--chr-muted); margin:4px 0 10px; line-height:1.5; }
.chr-empty { color:var(--chr-muted); font-style:italic; text-align:center; padding:40px 16px; }
.chr-skeleton { background:linear-gradient(90deg,var(--chr-gray-100) 25%,#e4e8ef 50%,var(--chr-gray-100) 75%); background-size:200% 100%; animation:chrSkeleton 1.4s ease infinite; border-radius:6px; }
@keyframes chrSkeleton { from{background-position:200% 0} to{background-position:-200% 0} }

/* ── 19. Spinner ─────────────────────────────────────────────────── */
.chr-spinner { display:inline-block; width:16px; height:16px; border:2px solid rgba(255,255,255,.3); border-top-color:currentColor; border-radius:50%; animation:chrSpin .7s linear infinite; vertical-align:middle; }
.chr-spinner-dark { border-color:var(--chr-border); border-top-color:var(--chr-primary); }
@keyframes chrSpin { to{transform:rotate(360deg)} }

/* v4.6.256: lampeggio evidente su campo mese/data dopo scelta dal banner soglia */
@keyframes chrFlashField {
    0%   { background:#fff9c4; box-shadow:0 0 0 0 rgba(245,158,11,.9); border-color:#f59e0b; }
    25%  { background:#fde68a; box-shadow:0 0 0 6px rgba(245,158,11,.0); border-color:var(--chr-warn); }
    50%  { background:#fff9c4; box-shadow:0 0 0 0 rgba(39,174,96,.9);  border-color:var(--chr-success); }
    75%  { background:#bbf7d0; box-shadow:0 0 0 6px rgba(39,174,96,.0);  border-color:#16a34a; }
    100% { background:#fff9c4; box-shadow:0 0 0 0 rgba(245,158,11,.9); border-color:#f59e0b; }
}
.chr-field-flash {
    animation:chrFlashField .55s ease-in-out 6 !important;
    border-width:2px !important; border-style:solid !important;
    border-radius:6px !important; font-weight:800 !important;
    position:relative; z-index:5;
}

/* ── 20. Misc components ─────────────────────────────────────────── */
#chr-client-badge { display:inline-flex; align-items:center; background:var(--chr-primary-light); border:1.5px solid var(--chr-primary); color:var(--chr-primary); border-radius:var(--chr-radius-pill); padding:4px 14px; font-size:13px; font-weight:600; margin-top:6px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; animation:chrFadeIn .2s ease; }
#chr-client-clear-btn { background:none; border:none; cursor:pointer; color:var(--chr-muted); font-size:18px; line-height:1; padding:0 4px; margin-top:6px; transition:color var(--chr-transition); }
#chr-client-clear-btn:hover { color:var(--chr-error); }

.chr-due-panel { background:var(--chr-surface); border-left:4px solid var(--chr-accent); margin:0 0 6px 0; box-shadow:var(--chr-shadow-xs); border-radius:0 var(--chr-radius) var(--chr-radius) 0; transition:box-shadow var(--chr-transition-slow); }
.chr-due-panel:hover { box-shadow:var(--chr-shadow); }
.chr-due-header { display:flex; align-items:center; justify-content:space-between; padding:13px 24px; background:linear-gradient(90deg,#fffdf5 0%,#fff 100%); border-radius:0 var(--chr-radius) 0 0; }
.chr-due-title  { font-weight:700; font-size:15px; color:var(--chr-primary); }
.chr-due-toggle { background:none; border:none; cursor:pointer; font-size:12px; color:var(--chr-muted); padding:4px 8px; border-radius:5px; transition:background var(--chr-transition); }
.chr-due-toggle:hover { background:var(--chr-bg); }
.chr-due-list   { display:flex; flex-wrap:wrap; gap:8px; padding:12px 24px 16px; }
.chr-due-card { display:flex; align-items:center; gap:10px; background:var(--chr-bg); border:1.5px solid var(--chr-border); border-radius:var(--chr-radius); padding:10px 14px; cursor:pointer; transition:all var(--chr-transition); min-width:220px; }
.chr-due-card:hover { border-color:var(--chr-primary); background:var(--chr-primary-light); transform:translateY(-1px); box-shadow:var(--chr-shadow-xs); }
.chr-due-card.chr-done { opacity:.45; cursor:default; }
.chr-due-card.chr-done:hover { border-color:var(--chr-border); background:var(--chr-bg); transform:none; box-shadow:none; }
.chr-due-card-name  { font-weight:600; font-size:13px; }
.chr-due-card-freq  { font-size:11px; color:var(--chr-muted); }
.chr-due-card-badge { margin-left:auto; }

.chr-services-search-bar { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.chr-services-search-bar .chr-input { max-width:320px; }
.chr-muted-label { font-size:12px; color:var(--chr-muted); white-space:nowrap; }
.chr-detail-header { display:flex; align-items:center; gap:16px; margin-bottom:16px; }
.chr-detail-header h3 { margin:0; font-size:16px; }
.chr-actions-bar  { display:flex; gap:12px; margin-top:20px; flex-wrap:wrap; }
.chr-gestita-status { display:inline-block; min-width:18px; text-align:center; font-size:14px; transition:color var(--chr-transition); }
#chr-clienti-refresh-btn { float:right; margin-top:-4px; }
.chr-new-client-box { background:var(--chr-bg); border-radius:var(--chr-radius); padding:16px; margin-bottom:16px; border:1px solid var(--chr-border-light); }
.chr-table-preview .chr-row-dubbia td { background:#fffbea; }
.chr-pdf-desc { width:100%!important; min-width:0; box-sizing:border-box; }
#tab-pdf .chr-table { width:100%; }
#tab-pdf .chr-table th:nth-child(1) { width:44px; }
#tab-pdf .chr-table th:nth-child(2) { min-width:180px; }
#tab-pdf .chr-table th:nth-child(3) { width:130px; }
#tab-pdf .chr-table th:nth-child(4) { width:80px; text-align:center; }
#tab-pdf .chr-table th:nth-child(5) { width:100px; }
#tab-pdf .chr-auto-col { text-align:center; }

.chr-first-install-notice { background:#fff8e8; border-left:4px solid var(--chr-accent); padding:14px 18px; border-radius:var(--chr-radius); margin-bottom:16px; font-size:13px; animation:chrFadeIn .3s ease; }
.chr-first-install-notice code { background:var(--chr-surface); border:1px solid var(--chr-border); padding:2px 8px; border-radius:5px; font-size:14px; font-weight:700; color:var(--chr-error); font-family:var(--chr-font-mono); letter-spacing:.5px; }
.chr-forgot-link { color:var(--chr-accent); text-decoration:none; font-weight:500; transition:color var(--chr-transition); }
.chr-forgot-link:hover { color:var(--chr-accent-dark); text-decoration:underline; }

/* ── 21. Responsive ──────────────────────────────────────────────── */
@media (max-width:640px) {
    .chr-tabs { padding:0 8px; }
    .chr-tab  { padding:11px 10px; font-size:12px; }
    .chr-tab-content { padding:12px; }
    .chr-panel { padding:16px; }
    .chr-row  { flex-direction:column; gap:10px; }
    .chr-col-2,.chr-col-3,.chr-col-4,.chr-col-6 { min-width:100%; }
    .chr-table td,.chr-table th { font-size:12px; padding:8px 10px; }
    .chr-table td input[type=number],.chr-table td input[type=text] { width:70px; }
    .chr-toast { right:12px; left:12px; max-width:none; bottom:16px; }
    .chr-modal-inner { padding:22px 18px; border-radius:var(--chr-radius-lg); }
    .chr-login-box { padding:32px 22px 26px; }
}
@media (max-width:480px) {
    .chr-due-list { flex-direction:column; }
    .chr-due-card { min-width:0; }
    .chr-actions-bar { flex-direction:column; }
}

/* ── 22. Print ───────────────────────────────────────────────────── */
@media print {
    * { box-sizing:border-box!important; -webkit-print-color-adjust:exact!important; print-color-adjust:exact!important; }
    body { font-family:Arial,Helvetica,sans-serif!important; font-size:9pt!important; color:#222!important; line-height:1.4!important; background:#fff!important; }
    p,div,span,li,td,th,label,a { font-size:9pt!important; font-family:Arial,Helvetica,sans-serif!important; }
    span[style*="border-radius"],.chr-badge,[class*="chr-badge-"] { font-size:7pt!important; padding:1px 5px!important; line-height:1.4!important; display:inline-block!important; }
    h1 { font-size:14pt!important; color:var(--chr-primary)!important; border-bottom:2px solid var(--chr-primary)!important; padding-bottom:4px!important; margin-bottom:10px!important; }
    h2,h3 { font-size:11pt!important; color:var(--chr-primary)!important; margin:10px 0 4px!important; }
    h4 { font-size:9pt!important; color:var(--chr-gray-700)!important; margin:8px 0 4px!important; }
    table { width:100%!important; border-collapse:collapse!important; page-break-inside:avoid!important; }
    thead { display:table-header-group!important; }
    th { background:var(--chr-primary)!important; color:#fff!important; font-size:8pt!important; padding:4px 8px!important; }
    td { font-size:8pt!important; padding:3px 8px!important; border-bottom:1px solid var(--chr-border-light)!important; vertical-align:top!important; }
    tr:nth-child(even) td { background:var(--chr-gray-50)!important; }
    .chr-app-header,.chr-tabs,.chr-btn,button,.chr-toast,.chr-modal-overlay-wrap,[id$="-export-btns"],.no-print { display:none!important; }
    .chr-tab-content,.chr-panel,[id$="-detail-body"] { display:block!important; }
    .chr-op-card,.chr-panel,.chr-due-panel { page-break-inside:avoid!important; }
    img.emoji { display:none!important; visibility:hidden!important; width:0!important; height:0!important; }
    @page { size:A4; margin:14mm 12mm; }
}

/* ── Quick Picks chips ───────────────────────────────────────────── */
.chr-qp-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.chr-qp-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 13px;
    background: var(--chr-surface);
    border: 1.5px solid var(--chr-border);
    border-radius: var(--chr-radius-pill);
    cursor: pointer;
    font-family: var(--chr-font);
    font-size: 12.5px;
    color: var(--chr-text);
    transition: all var(--chr-transition);
    white-space: nowrap;
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: var(--chr-shadow-xs);
}
.chr-qp-chip:hover {
    border-color: var(--chr-primary);
    background: var(--chr-primary-light);
    color: var(--chr-primary);
    transform: translateY(-1px);
    box-shadow: var(--chr-shadow);
}
.chr-qp-chip:active { transform: translateY(0); }

.chr-qp-chip--active {
    border-color: var(--chr-primary);
    background: var(--chr-primary);
    color: #fff;
    box-shadow: 0 3px 10px rgba(26,74,110,.3);
}
.chr-qp-chip--active .chr-qp-badge {
    background: rgba(255,255,255,.25);
    color: #fff;
}

.chr-qp-nome {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 150px;
}
.chr-qp-badge {
    flex-shrink: 0;
    background: var(--chr-primary-light);
    color: var(--chr-primary);
    border-radius: var(--chr-radius-pill);
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .2px;
    transition: all var(--chr-transition);
}

@media (max-width: 640px) {
    .chr-qp-chips { gap: 6px; }
    .chr-qp-chip  { font-size: 12px; padding: 6px 10px; max-width: 180px; }
    .chr-qp-nome  { max-width: 110px; }
}

/* ── CCNL clienti (v4.7.0) ─────────────────────────────────────────── */
.chr-stat{background:#f4f8fc;border:1px solid #e0e8f0;border-radius:12px;padding:14px 16px;text-align:center}
.chr-stat-n{display:block;font-size:26px;font-weight:800;color:var(--chr-primary);line-height:1.1}
.chr-stat-l{display:block;font-size:12px;color:#5a6a78;margin-top:4px}
#chr-ccnl-modal[hidden]{display:none!important}
.chr-ccnl-chip{display:inline-block;background:#eaf2f8;color:var(--chr-primary);border-radius:7px;padding:2px 7px;margin:1px 3px 1px 0;font-size:11px;font-weight:700}
.chr-ccnl-none{color:var(--chr-accent);font-size:12px;font-style:italic}
.chr-ccnl-edit{padding:2px 6px!important;margin-left:4px}
.chr-ccnl-nota-cell{min-width:230px}
.chr-ccnl-nota{display:block;margin-bottom:6px}
.chr-ccnl-unlink{white-space:nowrap}
#chr-ccnl-modal{position:fixed;inset:0;z-index:99999;background:rgba(16,28,48,.55);display:flex;align-items:center;justify-content:center;padding:20px}
#chr-ccnl-modal .chr-modal-content{background:#fff;border-radius:14px;padding:26px;width:100%;max-width:640px;max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}
#tab-ccnl .chr-table{width:100%;border-collapse:collapse}
#tab-ccnl .chr-table th,#tab-ccnl .chr-table td{padding:8px 10px;border-bottom:1px solid #eef2f6;text-align:left;vertical-align:top;font-size:14px}
@media(max-width:640px){
  #tab-ccnl .chr-table thead{display:none}
  #tab-ccnl .chr-table tr{display:block;border:1px solid #e0e8f0;border-radius:10px;padding:8px 10px;margin-bottom:10px}
  #tab-ccnl .chr-table td{display:block;border:0;padding:4px 0}
  #chr-ccnl-modal{padding:0;align-items:flex-end}
  #chr-ccnl-modal .chr-modal-content{border-radius:14px 14px 0 0;max-height:92vh}
}
.chr-ccnl-pickrow:hover{background:#f4f8fc}
@media(max-width:640px){#chr-ccnl-report .chr-col-3{width:50%}}

/* ── Tabella Clienti compatta + menu azioni (v4.9.3) ─────────────── */
.chr-clients-tbl{table-layout:fixed;width:100%}
.chr-clients-tbl th,.chr-clients-tbl td{vertical-align:middle;padding-left:10px;padding-right:10px}
.chr-clients-tbl th.chr-cli-name,.chr-clients-tbl td.chr-cli-name{width:19%}
.chr-clients-tbl th.chr-cli-mail,.chr-clients-tbl td.chr-cli-mail{width:17%}
.chr-clients-tbl th.chr-cli-freq,.chr-clients-tbl td.chr-cli-freq{width:10%}
.chr-clients-tbl th.chr-cli-gest,.chr-clients-tbl td.chr-cli-gest{width:14%}
.chr-clients-tbl th.chr-cli-ccnl,.chr-clients-tbl td.chr-cli-ccnl{width:12%}
.chr-clients-tbl th.chr-cli-stato,.chr-clients-tbl td.chr-cli-stato{width:8%}
.chr-clients-tbl th.chr-cli-az,.chr-clients-tbl td.chr-cli-az{width:20%;white-space:nowrap;text-align:right}
.chr-cli-rs{font-weight:700;color:var(--chr-primary);line-height:1.25;word-break:break-word}
.chr-cli-sub{font-size:11px;color:#7a8794;margin-top:2px;letter-spacing:.2px}
.chr-cli-mailtxt{display:block;font-size:12.5px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chr-clients-tbl .chr-gestita-select{max-width:100%}
.chr-clients-tbl .chr-ccnl-chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.chr-cli-az .chr-az-btn{margin:2px 0 2px 3px;font-size:11px;padding:4px 8px}
.chr-row-more{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;margin-left:5px;padding:0;
  border:1px solid var(--chr-border);border-radius:8px;background:#fff;
  color:var(--chr-primary);font-size:17px;line-height:1;font-weight:700;cursor:pointer;
  transition:background .15s,border-color .15s;vertical-align:middle
}
.chr-row-more:hover,.chr-row-more.is-open{background:#eaf2f8;border-color:var(--chr-primary)}
.chr-row-menu{
  position:fixed;z-index:100000;min-width:236px;
  background:#fff;border:1px solid var(--chr-border);border-radius:12px;
  box-shadow:0 12px 34px rgba(16,28,48,.20);padding:6px;
  font-family:inherit
}
.chr-row-menu-item{
  display:flex;align-items:center;gap:9px;width:100%;
  background:none;border:0;border-radius:8px;
  padding:9px 11px;text-align:left;cursor:pointer;
  font-size:13px;font-weight:600;color:var(--chr-primary);line-height:1.25
}
.chr-row-menu-item:hover{background:#eef4fa}
.chr-row-menu-ico{font-size:14px;width:18px;flex-shrink:0;text-align:center}
.chr-row-menu-item.chr-rowmenu-warn{color:#c47b17}
.chr-row-menu-item.chr-rowmenu-warn:hover{background:#fdf4e6}
.chr-row-menu-item.chr-rowmenu-danger{color:var(--chr-error)}
.chr-row-menu-item.chr-rowmenu-danger:hover{background:var(--chr-error-bg)}
@media(max-width:1240px){
  .chr-clients-tbl{min-width:1060px}
}
@media(max-width:640px){
  .chr-cli-az .chr-az-btn{font-size:11px;padding:4px 7px}
  .chr-row-menu{min-width:210px}
}

/* ── Carica Cliente: tabella clienti da importare (v4.9.4) ───────── */
.chr-pending-tbl{table-layout:fixed;width:100%}
.chr-pending-tbl th,.chr-pending-tbl td{vertical-align:middle;padding-left:10px;padding-right:10px}
.chr-pending-tbl th.chr-pnd-az,.chr-pending-tbl td.chr-pnd-az{width:24%}
.chr-pending-tbl th.chr-pnd-mail,.chr-pending-tbl td.chr-pnd-mail{width:20%}
.chr-pending-tbl th.chr-pnd-ccnl,.chr-pending-tbl td.chr-pnd-ccnl{width:24%}
.chr-pending-tbl th.chr-pnd-corr,.chr-pending-tbl td.chr-pnd-corr{width:16%}
.chr-pending-tbl th.chr-pnd-act,.chr-pending-tbl td.chr-pnd-act{width:16%;white-space:nowrap;text-align:right}
.chr-pnd-rs{font-weight:700;color:var(--chr-primary);line-height:1.25;word-break:break-word}
.chr-pnd-sub{font-size:11px;color:#7a8794;margin-top:2px;letter-spacing:.2px}
.chr-pnd-mailtxt{display:block;font-size:12.5px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chr-pending-tbl td.chr-pnd-ccnl{line-height:1.6}
.chr-pnd-dubbio{font-size:11px;color:#b32d2e;margin-top:4px;line-height:1.35}
.chr-pending-tbl td.chr-ccnl-nota-cell{min-width:0}
.chr-pending-tbl .chr-ccnl-nota{display:block;margin-bottom:6px;font-size:12px;line-height:1.35}
.chr-pending-tbl .chr-ccnl-unlink{font-size:11px;padding:3px 8px}
.chr-pending-tbl td.chr-pnd-act .chr-btn{margin:2px 0 2px 4px;font-size:11.5px;padding:5px 10px}
.chr-pending-tbl .chr-ccnl-pending-edit{padding:2px 7px!important;margin-left:4px;vertical-align:middle}
@media(max-width:1240px){
  .chr-pending-tbl{min-width:900px}
}

/* ── Riquadro "carica il listino" sotto la riga da importare (v4.9.5) ── */
.chr-pending-tbl tr.chr-pnd-listino:hover{background:transparent}
.chr-pnd-listino-td{padding:0!important;background:#fffdf6}
.chr-pnd-listino-box{
  border-top:2px solid var(--chr-accent);padding:14px 16px;
  display:flex;flex-wrap:wrap;align-items:center;gap:12px
}
.chr-pnd-listino-head{font-size:13px;font-weight:600;color:var(--chr-primary);flex:0 0 100%}
.chr-pnd-listino-head strong{color:#8a6d1a}
.chr-pnd-drop{flex:1 1 340px;min-width:280px}
.chr-pnd-dropzone{
  border:2px dashed #d9c08a;border-radius:10px;background:#fff;
  padding:14px 16px;text-align:center;font-size:13px;color:#5a6a78;
  transition:border-color .15s,background .15s
}
.chr-pnd-dropzone.dragover{border-color:var(--chr-primary);background:#eaf2f8}
.chr-pnd-dropzone.chr-pnd-busy{border-style:solid;color:#8a6d1a;font-weight:600}
.chr-pnd-dropicon{font-size:16px}
.chr-pnd-listino-act{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto}
.chr-pnd-listino-act .chr-btn{white-space:nowrap}
@media(max-width:820px){
  .chr-pnd-listino-box{flex-direction:column;align-items:stretch}
  .chr-pnd-listino-act{justify-content:flex-end}
}

/* ── Statistiche CCNL (v4.9.7) ───────────────────────────────────── */
.chr-ccnl-stats{background:#fff;border-radius:10px;padding:16px;margin-bottom:14px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.chr-ccnl-stats-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.chr-ccnl-stats-head h4{margin:0;color:var(--chr-primary);font-size:14px}
.chr-ccnl-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:14px}
.chr-ccnl-kpi{background:#f4f8fc;border:1px solid #e0e8f0;border-radius:10px;padding:12px 10px;text-align:center}
.chr-ccnl-kpi-n{display:block;font-size:22px;font-weight:800;color:var(--chr-primary);line-height:1.1}
.chr-ccnl-kpi-l{display:block;font-size:11px;color:#5a6a78;margin-top:4px;line-height:1.3}
.chr-ccnl-kpi.chr-k-ok{background:#eef8f1;border-color:#cbe8d6}
.chr-ccnl-kpi.chr-k-ok .chr-ccnl-kpi-n{color:#1e8449}
.chr-ccnl-kpi.chr-k-warn{background:#fdf6e8;border-color:#eddcb6}
.chr-ccnl-kpi.chr-k-warn .chr-ccnl-kpi-n{color:#b07d16}
.chr-ccnl-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.chr-ccnl-card{background:#fff;border:1px solid #e6ecf2;border-radius:10px;padding:14px}
.chr-ccnl-card-wide{margin-bottom:12px}
.chr-ccnl-card h5{margin:0 0 10px;font-size:12.5px;color:var(--chr-primary);font-weight:700;letter-spacing:.2px}
.chr-ccnl-canvas{position:relative;height:230px}
.chr-ccnl-canvas-tall{height:280px}
.chr-ccnlst-tbl{font-size:13px}
.chr-ccnlst-tbl th.chr-ccnlst-cod,.chr-ccnlst-tbl td.chr-ccnlst-cod{width:90px}
.chr-ccnlst-tbl th.chr-ccnlst-n,.chr-ccnlst-tbl td.chr-ccnlst-n{width:80px;text-align:center}
.chr-ccnlst-tbl td.chr-ccnlst-n{font-weight:700;color:var(--chr-primary)}
.chr-ccnlst-tbl th.chr-ccnlst-pct,.chr-ccnlst-tbl td.chr-ccnlst-pct{width:150px}
.chr-ccnlst-tbl td.chr-ccnlst-pct{white-space:nowrap}
.chr-ccnlst-bar{display:inline-block;width:66px;height:7px;background:#eef2f6;border-radius:4px;overflow:hidden;vertical-align:middle;margin-right:7px}
.chr-ccnlst-bar span{display:block;height:100%;background:var(--chr-accent);border-radius:4px}
.chr-ccnlst-pct em{font-style:normal;font-size:11.5px;color:#7a8794}
.chr-ccnl-nota-stampa{margin:6px 0 0;font-size:11px}
@media(max-width:820px){
  .chr-ccnl-charts{grid-template-columns:1fr}
}
/* stampa della sola sezione CCNL */
@media print{
  body.chr-print-ccnl *{visibility:hidden!important}
  body.chr-print-ccnl #chr-ccnl-stats,body.chr-print-ccnl #chr-ccnl-stats *{visibility:visible!important}
  body.chr-print-ccnl #chr-ccnl-stats{
    position:absolute!important;left:0;top:0;width:100%;
    margin:0;padding:0;box-shadow:none;background:#fff
  }
  body.chr-print-ccnl .chr-ccnl-print-btn{display:none!important}
  body.chr-print-ccnl .chr-ccnl-card,body.chr-print-ccnl .chr-ccnl-kpi{break-inside:avoid;page-break-inside:avoid}
  body.chr-print-ccnl .chr-table-wrap{overflow:visible!important}
}
.chr-pnd-listino-hint{display:block;font-weight:400;font-size:11.5px;color:#7a8794;margin-top:3px;line-height:1.4}

/* ── Statistiche CCNL: ripartizione per operatore (v4.9.12) ──────── */
.chr-opst-tbl{font-size:13px}
.chr-opst-tbl th.chr-opst-nome,.chr-opst-tbl td.chr-opst-nome{width:190px;font-weight:600;color:var(--chr-primary)}
.chr-opst-tbl th.chr-opst-n,.chr-opst-tbl td.chr-opst-n{width:82px;text-align:center}
.chr-opst-tbl td.chr-opst-n{font-weight:700;color:var(--chr-primary)}
.chr-opst-tbl td.chr-opst-todo{color:#b07d16}
.chr-opst-tbl td.chr-opst-cc{line-height:1.9}
.chr-opst-tbl tr.chr-op-none td.chr-opst-nome{color:#8a97a5;font-style:italic;font-weight:500}
