/* CFG MODAL */
.cfg-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(10,10,10,.65);z-index:300;display:none;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto}
.cfg-overlay.open{display:flex}
.cfg-card{background:var(--surface);border-radius:8px;box-shadow:0 16px 56px rgba(0,0,0,.32);width:100%;max-width:480px;overflow:hidden;margin:auto}
.cfg-head{background:var(--blue);color:#fff;padding:16px 22px;display:flex;align-items:center;justify-content:space-between}
.cfg-head h2{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.12em}
.cfg-tabbar{display:flex;border-bottom:2px solid var(--border);background:#f9fafb}
.cfg-tab{flex:1;padding:10px 0;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap;min-width:0;transition:color .15s}
.cfg-tab:hover{color:var(--blue)}
.cfg-tab-active{color:var(--blue)!important;font-weight:700;border-bottom-color:var(--blue)!important}
.cfg-body{padding:24px 22px}
.cfg-body-scroll{max-height:75vh;overflow-y:auto}
.cfg-row.col2{grid-template-columns:1fr 1fr}
.cfg-row.col3{grid-template-columns:1fr 1fr 1fr}
.cfg-section{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--blue);margin:18px 0 10px;padding-bottom:4px;border-bottom:1px solid var(--border)}
.cfg-section:first-child{margin-top:0}
.cfg-row{display:grid;gap:12px;margin-bottom:12px}
.cfg-field label{display:block;font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.cfg-inp{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--r);font-family:var(--mono);font-size:12px;background:var(--surface);outline:none;transition:border-color .15s}
.cfg-inp:focus{border-color:var(--blue)}
.cfg-foot{padding:16px 22px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}
.cfg-btn{padding:7px 18px;border:none;border-radius:var(--r);font-family:var(--mono);font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}
.cfg-btn-primary{background:var(--blue);color:#fff}.cfg-btn-primary:hover{background:var(--blue-dk)}
.cfg-btn-ghost{background:var(--surface);color:var(--text);border:1px solid var(--border)}.cfg-btn-ghost:hover{background:var(--bg)}
.flash{padding:10px 14px;border-radius:var(--r);font-size:12px;font-weight:500;margin-bottom:16px}
.flash-ok{background:var(--grn-lt);color:var(--green);border-left:3px solid var(--green)}
.flash-err{background:var(--red-lt);color:var(--red);border-left:3px solid var(--red)}

/* MOBILE DASHBOARD */
.dash-mobile{display:none}
/* Badge Ticket Mobile nella dashboard */
.badge-mobile-dash{background:#6d28d9;color:#fff;font-size:10px}
.badge-prog-dash{background:#0369a1;color:#fff;font-size:10px}

/* TOPBAR extras */
.tb-nav{display:flex;gap:4px}
.tb-sub-mob{display:none}
.btn-logout{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);color:#fff;padding:5px 14px;border-radius:var(--r);font-family:var(--mono);font-size:11px;cursor:pointer;transition:background .15s}
.btn-logout:hover{background:rgba(255,255,255,.25)}

/* LOGIN */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:40px;width:320px;box-shadow:0 4px 24px rgba(0,0,0,.1);text-align:center}
.login-hero{}
.login-body{}
.login-logo img{height:60px;margin-bottom:20px}
.login-title{font-size:20px;font-weight:700;color:var(--blue);letter-spacing:.08em;text-transform:uppercase}
.login-sub{font-size:11px;color:var(--muted);margin-top:4px;margin-bottom:28px;letter-spacing:.06em}
.login-form{display:flex;flex-direction:column;gap:12px}
.inp-pw{padding:10px 14px;border:1px solid var(--border);border-radius:var(--r);font-family:var(--mono);font-size:14px;text-align:center;letter-spacing:.2em;outline:none;transition:border .15s}
.inp-pw:focus{border-color:var(--blue)}
.btn-login{padding:10px;background:var(--blue);color:#fff;border:none;border-radius:var(--r);font-family:var(--mono);font-size:13px;font-weight:600;cursor:pointer;letter-spacing:.06em;text-transform:uppercase;transition:background .15s}
.btn-login:hover{background:var(--blue-dk)}
.flash-err{background:var(--red-lt);border-left:3px solid var(--red);color:var(--red);padding:8px 12px;border-radius:var(--r);font-size:12px;margin-bottom:12px;text-align:left}

/* LAYOUT */
.wrap{max-width:1100px;margin:0 auto;padding:32px 24px 60px}
.page-title{font-size:18px;font-weight:700;color:var(--text);margin-bottom:24px;letter-spacing:.04em}
.section-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin:32px 0 12px;border-bottom:1px solid var(--border);padding-bottom:8px}

/* MODULE CARDS */
.module-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:8px}
.module-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:6px;text-decoration:none;color:var(--text);transition:box-shadow .15s,transform .1s;box-shadow:var(--sh)}
.module-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.12);transform:translateY(-1px)}
.mc-icon{font-size:28px;line-height:1;flex-shrink:0}
.mc-name{font-size:14px;font-weight:700;color:var(--text);margin-bottom:4px}
.mc-desc{font-size:11px;color:var(--muted)}
.mc-red{border-top:3px solid var(--red)}
.mc-blue{border-top:3px solid var(--blue)}
.mc-green{border-top:3px solid var(--green)}
.mc-teal{border-top:3px solid #0b5345}
.mc-ser{border-top:3px solid #14532d}

/* STATS */
.riepilogo-header{display:flex;gap:16px;align-items:baseline;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin:32px 0 10px;border-bottom:1px solid var(--border);padding-bottom:8px}
.riepilogo-header span:first-child{flex:1;min-width:0}
.riepilogo-header span:last-child{width:150px;flex-shrink:0}
.riepilogo-wrap{display:flex;gap:16px;align-items:stretch}
.riepilogo-ticket{flex:1;min-width:0}
.riepilogo-prev{width:150px;flex-shrink:0;display:flex}
.rp-card{flex:1;display:flex;flex-direction:column;justify-content:center}
@media(max-width:700px){.riepilogo-wrap{flex-direction:column}.riepilogo-prev{width:100%;padding-top:12px;margin-top:12px}}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;text-align:center;box-shadow:var(--sh)}
.stat-val{font-size:28px;font-weight:700;color:var(--text)}
.stat-label{font-size:11px;color:var(--muted);margin-top:4px;text-transform:uppercase;letter-spacing:.08em}
.sc-warn .stat-val{color:var(--yellow)}
.sc-info .stat-val{color:var(--blue)}
.sc-ok  .stat-val{color:var(--green)}
.sc-muted .stat-val{color:var(--muted)}
.sc-red  .stat-val{color:#c0392b}
.sc-grn  .stat-val{color:#27ae60}
.sc-blue .stat-val{color:#1565c0}

/* RECENT LIST */
.recent-list{display:flex;flex-direction:column;gap:6px}
.recent-item{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);text-decoration:none;color:var(--text);font-size:12px;transition:background .1s}
.recent-item:hover{background:var(--blue-lt)}
.ri-num{font-weight:600;color:var(--blue);min-width:110px;flex-shrink:0}
.ri-client{font-weight:500;min-width:140px;flex-shrink:0}
.ri-title{color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ri-date{color:var(--muted);font-size:11px;flex-shrink:0}

/* BADGES */
.badge{padding:2px 8px;border-radius:999px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;flex-shrink:0}
.badge-t-open     {background:#e74c3c;color:#fff}
.badge-t-standby  {background:#1565c0;color:#fff}
.badge-t-done     {background:#27ae60;color:#fff}
.badge-t-annullato{background:#5a5a5a;color:#fff}
.badge-t-pagato      {background:#2e7d32;color:#fff;cursor:pointer;user-select:none}
.badge-t-nonpagato   {background:#ededea;color:#6b6760;cursor:pointer;user-select:none}
.badge-t-gratuito-on  {background:#0891b2;color:#fff;cursor:pointer;user-select:none}
.badge-t-fatturato-on {background:#2e7d32;color:#fff;cursor:pointer;user-select:none}
.badge-giornata      {background:#e8a000;color:#fff}

/* STAT BAR */
.stat-bar{height:3px;background:var(--border);border-radius:2px;margin-top:8px;overflow:hidden}
.stat-bar>div{height:100%;background:var(--muted);border-radius:2px}
.sc-warn  .stat-bar>div{background:var(--yellow)}
.sc-info  .stat-bar>div,.sc-blue .stat-bar>div{background:#1565c0}
.sc-ok    .stat-bar>div,.sc-grn  .stat-bar>div{background:#27ae60}
.sc-muted .stat-bar>div{background:var(--muted)}
.sc-red   .stat-bar>div{background:#c0392b}

/* BADGE CHIAMATA ESITI (activity feed) */
.badge-ch-risolto     {background:#27ae60;color:#fff;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em}
.badge-ch-callback    {background:#e8a000;color:#fff;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em}
.badge-ch-ticket_aperto{background:#7c3aed;color:#fff;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em}
.badge-ch-in_lavorazione{background:#e65c00;color:#fff;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em}

/* ACTIVITY FEED EXTRAS */
.ri-type{font-size:14px;flex-shrink:0;width:22px;text-align:center}
.c-red{color:var(--red)!important}
.c-blue{color:var(--blue)!important}
.c-teal{color:#0891b2!important}
.ri-urgent{border-left:3px solid var(--red);padding-left:11px}
.ri-warn  {border-left:3px solid var(--yellow);padding-left:11px}
.ri-closed{opacity:.5}
.ri-closed:hover{opacity:.75}
.ri-section-lbl{font-size:10px;font-weight:700;color:#9ca3af;text-transform:uppercase;letter-spacing:.08em;padding:6px 4px 2px}
.ri-chain-parent{border-left:3px solid #9ca3af;padding-left:11px;border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-6px}
.ri-chain-child {border-left:3px solid #9ca3af;padding-left:11px;border-top-left-radius:0;border-top-right-radius:0}
.badge-days{background:#e3f2fd;color:#1565c0;font-size:10px;padding:2px 6px;border-radius:999px;font-weight:600;flex-shrink:0}
.days-warn{background:var(--ylw-lt)!important;color:var(--yellow)!important}
.days-urgent{background:var(--red-lt)!important;color:var(--red)!important}

/* CHART + REPAIR WRAPPER */
.chart-repair-wrap{display:flex;gap:16px;align-items:stretch}
.chart-repair-wrap .chart-card{flex:1;min-width:0}
.repair-side{width:260px;flex-shrink:0;display:flex;flex-direction:column}
.repair-side .repair-card:first-child{flex:1}
@media(max-width:800px){.chart-repair-wrap{flex-direction:column}.repair-side{width:100%}}

/* CHART */
.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:20px 16px 10px;box-shadow:var(--sh)}
.chart-legend{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--muted);margin-top:8px;letter-spacing:.04em}
.chart-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c0392b;opacity:.8}

/* ALERTS ROW */
.alerts-row{display:flex;gap:16px;margin-bottom:24px}
.alerts-row-item{flex:1;min-width:0;margin-bottom:0!important}
@media(max-width:700px){.alerts-row{flex-direction:column}}

/* CALLBACK IN SOSPESO */
.cb-alert{background:#fffbeb;border:2px solid #e8a000;border-radius:8px;margin-bottom:24px;overflow:hidden}
.cb-alert-urgent{background:#fff5f5;border-color:var(--red)}
.cb-alert-empty{background:var(--surface);border-color:var(--border)}
.cb-alert-header{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fef3c7;border-bottom:1px solid #f8d76a}
.cb-alert-urgent .cb-alert-header{background:#fee2e2;border-bottom-color:#fca5a5}
.cb-alert-empty .cb-alert-header{background:var(--bg);border-bottom-color:var(--border)}
.cb-alert-icon{font-size:18px;line-height:1}
.cb-alert-title{font-size:13px;font-weight:700;color:#92400e;letter-spacing:.04em;text-transform:uppercase;flex:1}
.cb-alert-urgent .cb-alert-title{color:#991b1b}
.cb-alert-empty .cb-alert-title{color:var(--muted)}
.cb-count{background:#e8a000;color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:2px 8px;letter-spacing:.04em}
.cb-alert-urgent .cb-count{background:var(--red)}
.cb-subscribe-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;background:#fff;border:1px solid #d1a000;border-radius:999px;font-size:11px;font-weight:600;color:#92400e;text-decoration:none;white-space:nowrap;transition:background .15s}
.cb-subscribe-btn:hover{background:#fef3c7}
.cb-alert-empty .cb-subscribe-btn{border-color:var(--border);color:var(--muted)}
.cb-alert-empty .cb-subscribe-btn:hover{background:var(--blue-lt);color:var(--blue);border-color:var(--blue)}
.cb-empty{padding:12px 16px;font-size:12px;color:var(--muted);font-style:italic}
.callback-list{display:flex;flex-direction:column;gap:0;padding:6px 10px 10px}
.cb-item{display:flex;align-items:center;gap:12px;padding:10px 10px;background:transparent;border:1px solid transparent;border-radius:var(--r);text-decoration:none;color:var(--text);font-size:12px;transition:background .1s;margin-top:4px}
.cb-item:hover{background:rgba(0,0,0,.04)}
.cb-overdue{background:var(--red-lt)!important;border-color:#fca5a5!important}
.cb-today{background:#fff3e0!important;border-color:#fed7aa!important}
.cb-icon{font-size:14px;flex-shrink:0;width:22px;text-align:center}
.cb-client{font-weight:700;min-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-tel{color:var(--muted);font-size:11px;min-width:60px;flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-problema{color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-date-wrap{flex-shrink:0}
.cb-badge{padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em}
.cb-badge-late{background:var(--red-lt);color:var(--red);outline:1px solid var(--red)}
.cb-badge-today{background:#fff3e0;color:#e65100;outline:1px solid #e65100}
.cb-badge-ok{background:#e8f5e9;color:#2e7d32}
.cb-badge-nodate{background:var(--border);color:var(--muted)}

/* MOBILE */
@media(max-width:640px){
  .module-grid{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .recent-item{flex-wrap:wrap;gap:6px 12px}
  .ri-title{order:5;width:100%;min-width:0;white-space:normal}
  .cb-item{flex-wrap:wrap;gap:6px 12px}
  .cb-problema{order:5;width:100%;min-width:0;white-space:normal}
}

.lav-alert{background:#fff8f5;border:2px solid #e65c00;border-radius:8px;margin-bottom:24px;overflow:hidden}
.lav-alert-empty{background:var(--surface);border-color:var(--border)}
.lav-alert-header{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fff0e8;border-bottom:1px solid #f5c4a8}
.lav-alert-empty .lav-alert-header{background:var(--bg);border-bottom-color:var(--border)}
.lav-alert-title{font-size:13px;font-weight:700;color:#7c2d00;letter-spacing:.04em;text-transform:uppercase;flex:1}
.lav-alert-empty .lav-alert-title{color:var(--muted)}
.lav-count{background:#e65c00;color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:2px 8px;letter-spacing:.04em}

/* CALLBACK OVERDUE BADGE */
.cb-overdue-badge{background:var(--red);color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:2px 10px;letter-spacing:.04em}

/* REPAIR TIME STATS */
.repair-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-bottom:8px}
.repair-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;box-shadow:var(--sh)}
.repair-card-alert{border-color:#fca5a5;border-top:3px solid var(--red)}
.repair-card-title{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.repair-alert-badge{background:var(--red);color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:1px 7px}
.repair-table{width:100%;border-collapse:collapse;font-size:12px}
.repair-table th{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:0 0 8px;text-align:left}
.repair-table th:not(:first-child){text-align:right}
.repair-table td{padding:5px 0;border-top:1px solid var(--border)}
.repair-table td:not(:first-child){text-align:right}
.repair-num{font-weight:600}
.repair-ok  {color:#27ae60;font-weight:700}
.repair-warn{color:#e8a000;font-weight:700}
.repair-late{color:var(--red);font-weight:700}
.repair-long-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--border);text-decoration:none;color:var(--text);font-size:12px;transition:background .1s}
.repair-long-item:first-of-type{border-top:none}
.repair-long-id{font-weight:600;color:var(--red);flex-shrink:0;min-width:36px}
.repair-long-client{font-weight:500;flex:1;min-width:9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.repair-long-brand{color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.repair-long-gg{flex-shrink:0;font-weight:700;padding:1px 8px;border-radius:999px;font-size:11px;background:var(--red-lt);color:var(--red)}

@media(max-width:600px){
  .wrap{padding:12px 10px 40px}
  /* topbar: safe-area-inset-top per notch/dynamic island iOS */
  .topbar{
    height:calc(52px + env(safe-area-inset-top,0px));
    padding-top:env(safe-area-inset-top,0px);
    align-items:flex-end;
    padding-bottom:10px;
  }
  /* login mobile — stile simile al desktop */
  .login-wrap{padding:24px 20px}
  .login-card{width:100%;max-width:360px;padding:32px 28px}
  .login-body .inp-pw{font-size:16px;padding:12px 14px;width:100%}
  .login-body .btn-login{
    font-size:14px;padding:12px;width:100%;
    touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  }
  .login-body .btn-login:active{filter:brightness(.9)}
  input,select,textarea{font-size:16px!important}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  /* topbar: tieni solo brand + esci */
  .topbar .tb-nav,.topbar .tb-sp{display:none!important}
  .tb-sub-desk{display:none}
  .tb-sub-mob{display:inline}
  .btn-impostazioni{display:none!important}
  .tb-help{display:none!important}
  form.tb-logout-form{margin-left:auto}
  /* main: solo mobile panel + attività recente */
  .page-title,.alerts-row,.section-title,
  .module-grid,.riepilogo-header,.riepilogo-wrap,
  .chart-repair-wrap{display:none!important}
  .dash-mobile{display:block!important;margin-bottom:20px}
  .dash-activity{display:block!important}
  .dash-activity .section-title{display:block!important}
  /* contatori rapidi */
  .dm-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
  .dm-stat{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 6px;text-decoration:none;color:var(--text);box-shadow:var(--sh)}
  .dm-stat-alert{border-color:#e74c3c;background:#fdf0ee}
  .dm-num{font-size:32px;font-weight:700;line-height:1;color:var(--red);font-family:var(--mono)}
  .dm-stat-alert .dm-num{color:#c0392b}
  .dm-lbl{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-top:5px;text-align:center;font-family:var(--mono)}
  /* bottoni azione */
  .dm-actions{display:flex;flex-direction:column;gap:10px}
  .dm-btn{display:block;padding:15px 16px;border-radius:var(--r);font-size:15px;font-weight:600;text-decoration:none;text-align:center;font-family:var(--mono);touch-action:manipulation;-webkit-tap-highlight-color:transparent}
  .dm-btn-primary{background:var(--red);color:#fff}
  .dm-btn-primary:active{background:var(--red-dk)}
  .dm-btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}
  .dm-btn-secondary:active{background:var(--bg)}
}
