/* SATI GEST — Style v2.0 */
:root {
  --bg:      #0d1b2e;
  --bg2:     #112240;
  --bg3:     #1a3358;
  --card:    #13294a;
  --border:  #1e4080;
  --accent:  #1565c0;   /* bleu SATI */
  --accent2: #1976d2;
  --orange:  #e64a19;   /* orange SATI */
  --orange2: #ff6d00;
  --success: #00c853;
  --warning: #ff9100;
  --danger:  #f44336;
  --text:    #e8edf5;
  --text2:   #90aac8;
  --text3:   #4a6fa5;
  --font:    'Sora', sans-serif;
  --mono:    'JetBrains Mono', monospace;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);overflow:hidden;-webkit-tap-highlight-color:transparent;user-select:none;}
input,textarea,select{user-select:text;}

/* LOADING */
.loading-screen{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:1000;}
.loader-content{text-align:center;padding:20px;}
.loader-logo-img{width:180px;margin-bottom:16px;filter:drop-shadow(0 0 20px rgba(21,101,192,0.5));}
.loader-title{font-family:var(--mono);font-size:1.6rem;font-weight:700;color:var(--orange);letter-spacing:6px;margin-bottom:20px;}
.loader-bar{width:220px;height:3px;background:var(--bg3);border-radius:99px;overflow:hidden;margin:0 auto 12px;}
.loader-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--orange));border-radius:99px;animation:loading 2.5s ease-in-out forwards;}
.loader-sub{color:var(--text2);font-size:0.8rem;}
@keyframes loading{from{width:0}to{width:100%}}

/* LOGIN */
.screen{position:fixed;inset:0;overflow-y:auto;}
.login-bg{position:fixed;inset:0;background:radial-gradient(ellipse at 20% 30%,rgba(21,101,192,0.25) 0%,transparent 60%),radial-gradient(ellipse at 80% 70%,rgba(230,74,25,0.15) 0%,transparent 60%),var(--bg);}
.login-wrap{position:relative;z-index:1;max-width:420px;width:100%;margin:0 auto;padding:40px 20px;min-height:100vh;display:flex;flex-direction:column;justify-content:center;}
.login-header{text-align:center;margin-bottom:40px;}
.login-logo-img{width:160px;margin-bottom:12px;}
.login-title{font-family:var(--mono);font-size:2rem;font-weight:700;color:var(--orange);letter-spacing:4px;}
.login-sub{color:var(--text2);font-size:0.85rem;margin-top:4px;}
.login-cards{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.role-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;cursor:pointer;transition:all 0.2s;width:100%;text-align:left;color:var(--text);}
.role-card:hover{transform:translateY(-2px);}
.worker-card:hover{border-color:var(--success);box-shadow:0 8px 24px rgba(0,200,83,0.1);}
.patron-card:hover{border-color:var(--orange);box-shadow:0 8px 24px rgba(230,74,25,0.15);}
.role-icon{font-size:1.8rem;}
.role-info h3{font-size:1rem;font-weight:600;}
.role-info p{color:var(--text2);font-size:0.8rem;margin-top:2px;}
.role-arrow{margin-left:auto;color:var(--text3);}
.patron-form{display:flex;flex-direction:column;gap:8px;}
.pw-input{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:12px 14px;color:var(--text);font-family:var(--font);font-size:0.95rem;outline:none;transition:border-color 0.2s;}
.pw-input:focus{border-color:var(--orange);}
.pw-error{color:#ef4444;font-size:0.83rem;text-align:center;line-height:1.45;padding:8px 12px;background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.25);border-radius:10px;}

/* APP */
.app{position:fixed;inset:0;display:flex;flex-direction:column;}
.hidden{display:none!important;}

/* HEADER */
.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;flex-shrink:0;border-bottom:1px solid var(--border);}
.worker-header{background:linear-gradient(135deg,#0a2010,var(--bg2));}
.patron-header{background:linear-gradient(135deg,#0d1b3e,var(--bg2));}
.header-brand{display:flex;align-items:center;gap:10px;}
.header-logo{height:28px;}
.header-app-name{font-family:var(--mono);font-weight:700;font-size:1rem;color:var(--orange);letter-spacing:2px;}
.header-role-badge{font-size:0.65rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;padding:3px 8px;border-radius:99px;}
.worker-badge{background:rgba(0,200,83,0.15);color:var(--success);border:1px solid var(--success);}
.header-right{display:flex;align-items:center;gap:10px;}
.header-date{font-size:0.75rem;color:var(--text2);}
.btn-logout{background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text3);padding:5px 10px;cursor:pointer;font-size:0.9rem;}

/* ALERT BANNERS (legacy conservés pour worker-alert-banner) */
.alert-banner,.locked-banner,.stock-alert-bar{padding:8px 14px;font-size:0.82rem;text-align:center;flex-shrink:0;}
.alert-banner{background:rgba(255,145,0,0.15);color:var(--warning);border-bottom:1px solid var(--warning);}
.locked-banner{background:rgba(244,67,54,0.15);color:var(--danger);border:1px solid rgba(244,67,54,0.3);border-radius:10px;margin:8px 14px 0;}
.stock-alert-bar{background:rgba(244,67,54,0.15);color:var(--danger);border-bottom:1px solid var(--danger);}

/* ── TICKER ALERTES UNIFIÉ ── */
.alert-ticker{display:flex;align-items:center;gap:9px;padding:7px 14px;font-size:0.8rem;min-height:36px;flex-shrink:0;transition:background .35s,border-color .35s;}
.alert-ticker.ticker-danger {background:rgba(244,67,54,0.14);color:var(--danger); border-bottom:1px solid rgba(244,67,54,0.35);}
.alert-ticker.ticker-warning{background:rgba(255,145,0,0.14);color:var(--orange); border-bottom:1px solid rgba(255,145,0,0.35);}
.alert-ticker.ticker-info   {background:rgba(99,102,241,0.10);color:#818cf8;       border-bottom:1px solid rgba(99,102,241,0.30);}
.alert-ticker.ticker-success{background:rgba(16,185,129,0.10);color:var(--success);border-bottom:1px solid rgba(16,185,129,0.30);}
#alert-ticker-text{flex:1;font-weight:500;transition:opacity .22s,transform .22s;}
#alert-ticker-text.ticker-out{opacity:0;transform:translateY(-5px);}
#alert-ticker-text.ticker-in {opacity:1;transform:translateY(0);}
.ticker-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;animation:tickerPulse 1.8s ease-in-out infinite;}
@keyframes tickerPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.7);opacity:.55}}
.ticker-dot.danger {background:var(--danger);}
.ticker-dot.warning{background:var(--orange);}
.ticker-dot.info   {background:#818cf8;}
.ticker-dot.success{background:var(--success);}
.ticker-count{font-size:0.65rem;opacity:.65;flex-shrink:0;background:rgba(255,255,255,.10);padding:2px 8px;border-radius:10px;white-space:nowrap;}

/* BOTTOM NAV */
.bottom-nav{display:flex;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg2);order:2;}
.patron-nav{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.patron-nav::-webkit-scrollbar{display:none;}
.nav-item{flex:1;width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;background:none;border:none;color:var(--text3);font-family:var(--font);font-size:0.6rem;cursor:pointer;transition:color 0.2s;text-align:center;}
.nav-item.active{color:var(--orange);}
.nav-icon{font-size:1.2rem;}

/* MAIN */
.app-main{flex:1;overflow-y:auto;padding:14px;padding-bottom:16px;}
.tab-content{display:none;animation:fadeIn 0.2s ease;}
.tab-content.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* DATE SELECTOR */
.date-selector-bar{display:flex;gap:6px;margin-bottom:12px;}
.date-btn{flex:1;background:var(--bg3);border:1px solid var(--border);border-radius:8px;color:var(--text2);padding:8px;font-family:var(--font);font-size:0.78rem;cursor:pointer;transition:all 0.2s;}
.date-btn.active{background:var(--orange);border-color:var(--orange);color:white;font-weight:600;}

/* SECTION HEADERS */
.section-header{margin-bottom:16px;}
.section-header h2{font-size:1.2rem;font-weight:700;}
.section-sub{color:var(--text2);font-size:0.8rem;margin-top:3px;}

/* FORM CARDS */
.form-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:10px;}
.highlight-card{border-color:var(--orange);}
.form-title{font-size:0.9rem;font-weight:600;margin-bottom:10px;}
.form-hint{color:var(--text2);font-size:0.78rem;margin-bottom:8px;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.form-group{display:flex;flex-direction:column;gap:5px;}
.form-group label{font-size:0.75rem;color:var(--text2);font-weight:500;}
.form-group input,.form-group select,.form-group textarea{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:9px 11px;color:var(--text);font-family:var(--font);font-size:0.9rem;outline:none;transition:border-color 0.2s;width:100%;}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--orange);}
.form-group input.error{border-color:var(--danger);}
.obs-textarea{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:9px 11px;color:var(--text);font-family:var(--font);font-size:0.85rem;outline:none;resize:vertical;}
.obs-textarea:focus{border-color:var(--orange);}
.required{color:var(--orange);font-size:0.8rem;}
.date-input{background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:9px 11px;color:var(--text);font-family:var(--font);font-size:0.9rem;outline:none;width:100%;}
.date-input:focus{border-color:var(--orange);}
.date-picker-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.date-picker-row label{color:var(--text2);font-size:0.85rem;white-space:nowrap;}

/* MACHINES WORKER */
.machines-list{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;}
.machine-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;}
.machine-name{font-weight:600;font-size:0.9rem;margin-bottom:2px;}
.machine-type{color:var(--text2);font-size:0.75rem;margin-bottom:10px;}
.machine-counters{display:flex;flex-direction:column;gap:8px;}
.counter-row{display:grid;grid-template-columns:110px 1fr 1fr;gap:6px;align-items:center;}
.counter-label{font-size:0.75rem;color:var(--text2);}
.counter-debut{background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:7px 9px;color:var(--text3);font-family:var(--mono);font-size:0.8rem;text-align:right;}
.counter-input{background:var(--bg3);border:1px solid var(--orange);border-radius:7px;padding:7px 9px;color:var(--text);font-family:var(--mono);font-size:0.8rem;text-align:right;outline:none;width:100%;}
.counter-input.invalid{border-color:var(--danger);background:rgba(244,67,54,0.05);}

/* BUTTONS */
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:white;border:none;border-radius:10px;padding:12px 18px;font-family:var(--font);font-size:0.9rem;font-weight:600;cursor:pointer;width:100%;transition:opacity 0.2s;}
.btn-primary:hover{opacity:0.88;}
.btn-ghost{background:transparent;color:var(--text2);border:1px solid var(--border);border-radius:10px;padding:12px 18px;font-family:var(--font);font-size:0.9rem;cursor:pointer;width:100%;}
.btn-logout{background:transparent;border:1px solid var(--border);border-radius:7px;color:var(--text3);padding:5px 10px;cursor:pointer;}
.btn-save-section{background:linear-gradient(135deg,var(--accent),var(--orange));color:white;border:none;border-radius:12px;padding:13px;width:100%;font-family:var(--font);font-size:0.95rem;font-weight:600;cursor:pointer;margin-top:6px;transition:opacity 0.2s;}
.btn-validate{background:linear-gradient(135deg,var(--success),#00e676);color:#001a00;border:none;border-radius:12px;padding:13px;width:100%;font-family:var(--font);font-size:0.95rem;font-weight:700;cursor:pointer;margin-top:8px;}
.btn-add{background:transparent;color:var(--orange);border:1px dashed var(--orange);border-radius:10px;padding:10px;width:100%;font-family:var(--font);font-size:0.85rem;cursor:pointer;margin-top:6px;}
.btn-export{background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:11px 14px;font-family:var(--font);font-size:0.85rem;cursor:pointer;flex:1;transition:border-color 0.2s;}
.btn-export:hover{border-color:var(--orange);}
.btn-today{background:var(--bg3);color:var(--text2);border:1px solid var(--border);border-radius:7px;padding:4px 10px;font-family:var(--font);font-size:0.75rem;cursor:pointer;}
.btn-icon{background:var(--bg3);border:1px solid var(--border);border-radius:7px;color:var(--text2);padding:5px 9px;font-size:0.78rem;cursor:pointer;}
.btn-icon.danger{color:var(--danger);border-color:rgba(244,67,54,0.3);}
.btn-icon.success{color:var(--success);border-color:rgba(0,200,83,0.3);}

/* KPI STRIP */
.kpi-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:16px;}
.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px;}
.kpi-label{font-size:0.68rem;color:var(--text2);text-transform:uppercase;letter-spacing:0.5px;}
.kpi-value{font-family:var(--mono);font-size:1.2rem;font-weight:700;margin-top:4px;}
.kpi-value.up{color:var(--success);}
.kpi-value.down{color:var(--danger);}
.kpi-value.neutral{color:var(--orange);}
.kpi-sub{font-size:0.7rem;color:var(--text3);margin-top:2px;}

/* DATE NAV */
.date-nav{display:flex;align-items:center;gap:8px;margin-top:8px;flex-wrap:wrap;}
.date-nav button{background:var(--bg3);border:1px solid var(--border);border-radius:7px;color:var(--text);padding:4px 10px;cursor:pointer;font-size:0.85rem;}
#dashboard-date-label{color:var(--text2);font-size:0.82rem;}

/* DASH SECTIONS */
.dash-section{margin-bottom:18px;}
.dash-section-title{font-size:0.8rem;font-weight:600;color:var(--text2);margin-bottom:8px;text-transform:uppercase;letter-spacing:0.5px;}
.data-table{display:flex;flex-direction:column;gap:5px;}
.data-row{display:flex;justify-content:space-between;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:9px;padding:9px 12px;}
.data-row-label{font-size:0.82rem;color:var(--text2);}
.data-row-value{font-family:var(--mono);font-size:0.85rem;font-weight:600;}
.data-row-value.positive{color:var(--success);}
.data-row-value.negative{color:var(--danger);}
.data-row-value.warning{color:var(--warning);}
.data-row-value.neutral{color:var(--orange);}
.data-row.highlight{border-color:var(--orange);background:rgba(230,74,25,0.05);}

/* TOTAL GENERAL */
.total-general-card{background:linear-gradient(135deg,rgba(21,101,192,0.2),rgba(230,74,25,0.1));border:1px solid var(--orange);border-radius:14px;padding:18px;margin-top:14px;}

/* COPIES ANALYSIS */
.copies-grid{display:flex;flex-direction:column;gap:6px;}
.copy-row{display:flex;justify-content:space-between;align-items:center;background:var(--bg3);border-radius:8px;padding:8px 12px;}
.copy-info{font-size:0.82rem;}
.copy-label{color:var(--text2);}
.copy-count{font-family:var(--mono);font-weight:600;}
.copy-tarif{font-size:0.7rem;color:var(--text3);}
.copy-total{font-family:var(--mono);font-size:0.85rem;font-weight:700;color:var(--success);}
.copies-total-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border);padding-top:8px;margin-top:4px;}
.ecart-badge{padding:4px 10px;border-radius:99px;font-size:0.75rem;font-weight:600;}
.ecart-ok{background:rgba(0,200,83,0.15);color:var(--success);}
.ecart-warn{background:rgba(255,145,0,0.15);color:var(--warning);}
.ecart-bad{background:rgba(244,67,54,0.15);color:var(--danger);}

/* MONTHLY RECAP */
.monthly-table{width:100%;border-collapse:collapse;}
.monthly-table th{background:var(--bg3);color:var(--text2);padding:7px 10px;font-size:0.72rem;text-align:left;font-weight:600;}
.monthly-table td{padding:7px 10px;border-bottom:1px solid var(--border);font-size:0.78rem;}
.monthly-table td:not(:first-child){font-family:var(--mono);}
.monthly-table tr.current-month td{background:rgba(230,74,25,0.08);color:var(--text);}
.monthly-table .positive{color:var(--success);}
.monthly-table .negative{color:var(--danger);}
.rent-badge{display:inline-block;padding:2px 7px;border-radius:99px;font-size:0.7rem;}

/* REMARKABLE STATS */
.remarkable-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.remarkable-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px;}
.remarkable-label{font-size:0.7rem;color:var(--text2);margin-bottom:4px;}
.remarkable-value{font-size:0.85rem;font-weight:600;}
.remarkable-sub{font-family:var(--mono);font-size:0.75rem;color:var(--orange);margin-top:2px;}

/* TRÉSORERIE */
.comptes-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;}
.compte-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px;}
.compte-card-name{font-size:0.75rem;color:var(--text2);margin-bottom:4px;}
.compte-card-solde{font-family:var(--mono);font-size:1.1rem;font-weight:700;}
.tresorerie-summary{background:linear-gradient(135deg,var(--accent),var(--orange));border-radius:14px;padding:20px;margin-bottom:16px;text-align:center;}
.tresorerie-summary .s-label{font-size:0.8rem;opacity:0.85;margin-bottom:6px;}
.tresorerie-summary .s-value{font-family:var(--mono);font-size:1.8rem;font-weight:700;}
.period-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;}
.period-btn{background:var(--bg3);border:1px solid var(--border);border-radius:8px;color:var(--text2);padding:7px 14px;font-family:var(--font);font-size:0.8rem;cursor:pointer;transition:all 0.2s;}
.period-btn.active{background:var(--orange);border-color:var(--orange);color:white;}
.export-buttons{display:flex;gap:8px;margin-top:12px;}
.cat-bar{margin-bottom:8px;}
.cat-bar-label{display:flex;justify-content:space-between;font-size:0.78rem;color:var(--text2);margin-bottom:4px;}
.cat-bar-track{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden;}
.cat-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--orange));border-radius:99px;transition:width 0.5s;}

/* STOCK */
.stock-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:10px;}
.stock-card.alert{border-color:var(--danger);}
.stock-name{font-weight:600;font-size:0.9rem;margin-bottom:4px;}
.stock-bar-wrap{display:flex;align-items:center;gap:10px;margin:8px 0;}
.stock-bar-track{flex:1;height:8px;background:var(--bg3);border-radius:99px;overflow:hidden;}
.stock-bar-fill{height:100%;border-radius:99px;transition:width 0.5s;}
.stock-fill-ok{background:linear-gradient(90deg,var(--success),#69f0ae);}
.stock-fill-warn{background:linear-gradient(90deg,var(--warning),#ffcc02);}
.stock-fill-alert{background:linear-gradient(90deg,var(--danger),#ff5252);}
.stock-qty{font-family:var(--mono);font-size:0.85rem;font-weight:600;}
.stock-actions{display:flex;gap:6px;margin-top:8px;}

/* CRÉDITS CLIENTS */
.credit-item{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:8px;}
.credit-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.credit-name{font-weight:600;font-size:0.9rem;}
.credit-amount{font-family:var(--mono);font-weight:700;color:var(--danger);}
.credit-meta{font-size:0.75rem;color:var(--text3);}
.credit-actions{display:flex;gap:6px;margin-top:8px;}

/* TRANSFERTS */
.transfert-item{background:var(--bg3);border-radius:8px;padding:10px 12px;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center;}
.transfert-info{font-size:0.82rem;}
.transfert-amount{font-family:var(--mono);font-weight:600;color:var(--orange);}

/* SETTINGS */
.settings-tabs{display:flex;gap:4px;margin-bottom:14px;flex-wrap:wrap;}
.stab{background:var(--bg3);border:1px solid var(--border);border-radius:8px;color:var(--text2);padding:7px 10px;font-family:var(--font);font-size:0.75rem;cursor:pointer;}
.stab.active{background:var(--orange);border-color:var(--orange);color:white;}
.stab-content{display:none;}
.stab-content.active{display:block;}
.settings-section{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:12px;}
.settings-section h3{font-size:0.9rem;font-weight:600;margin-bottom:10px;}
.settings-item{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);}
.settings-item:last-child{border-bottom:none;}
.settings-item-name{font-size:0.85rem;}
.settings-item-sub{font-size:0.72rem;color:var(--text2);margin-top:2px;}
.settings-item-actions{display:flex;gap:6px;}

/* DÉPENSES */
.depense-item{display:flex;justify-content:space-between;align-items:center;background:var(--bg3);border:1px solid var(--border);border-radius:9px;padding:9px 12px;margin-bottom:6px;}
.depense-info .depense-cat{font-size:0.7rem;color:var(--text3);}
.depense-info .depense-desc{font-size:0.85rem;}
.depense-right{display:flex;align-items:center;gap:8px;}
.depense-montant{font-family:var(--mono);font-weight:600;color:var(--danger);font-size:0.85rem;}
.depense-delete{background:none;border:none;color:var(--text3);cursor:pointer;font-size:0.9rem;}

/* ACTIVITY LOG */
.log-item{font-size:0.75rem;color:var(--text2);padding:6px 0;border-bottom:1px solid var(--border);}
.log-item:last-child{border-bottom:none;}
.log-time{color:var(--text3);font-family:var(--mono);font-size:0.7rem;}

/* PATRON EDIT */
.edit-section-title{font-size:0.8rem;font-weight:600;color:var(--orange);text-transform:uppercase;letter-spacing:0.5px;margin:14px 0 8px;}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.75);display:flex;align-items:flex-end;justify-content:center;z-index:500;backdrop-filter:blur(4px);}
.modal{background:var(--bg2);border:1px solid var(--border);border-radius:20px 20px 0 0;width:100%;max-width:480px;padding:18px;max-height:85vh;overflow-y:auto;animation:slideUp 0.25s ease;}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.modal-header h3{font-size:1rem;font-weight:600;}
.modal-close{background:none;border:none;color:var(--text2);font-size:1.1rem;cursor:pointer;}
.modal-body{margin-bottom:14px;}
.modal-footer{display:flex;gap:8px;}

/* TOAST */
.toast{position:fixed;bottom:72px;left:50%;transform:translateX(-50%);background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:10px 18px;font-size:0.85rem;z-index:1000;white-space:nowrap;max-width:90vw;text-align:center;}
.toast.success{border-color:var(--success);color:var(--success);}
.toast.error{border-color:var(--danger);color:var(--danger);}
.toast.warning{border-color:var(--warning);color:var(--warning);}
@keyframes toastIn{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* WORKER HISTORY */
.w-history-day{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:8px;}
.w-history-date{font-size:0.82rem;font-weight:600;color:var(--orange);}
.w-history-row{display:flex;justify-content:space-between;font-size:0.78rem;color:var(--text2);margin-top:4px;}
.w-history-locked{display:inline-block;font-size:0.65rem;background:rgba(0,200,83,0.15);color:var(--success);border-radius:99px;padding:2px 8px;margin-left:6px;}

/* EMPTY STATE */
.empty-state{text-align:center;padding:32px 16px;color:var(--text3);}
.empty-icon{font-size:2rem;margin-bottom:10px;}

/* ============================
   PROGRESS BAR TRAVAILLEUR
   ============================ */
.progress-bar-wrap {
  display: flex; align-items: center; justify-content: center;
  padding: 10px 16px; background: var(--bg2);
  border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.progress-step { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.progress-dot {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--bg3); border: 2px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.75rem; font-weight: 700; color: var(--text3);
  transition: all 0.3s;
}
.progress-step.done .progress-dot { background: var(--success); border-color: var(--success); color: white; }
.progress-label { font-size: 0.6rem; color: var(--text3); }
.progress-step.done .progress-label { color: var(--success); }
.progress-line { width: 40px; height: 2px; background: var(--border); margin: 0 4px; margin-bottom: 12px; transition: background 0.3s; }
.progress-line.done { background: var(--success); }

/* ONLINE DOT */
.online-dot { font-size: 0.7rem; }

/* RÈGLE COULEURS STRICTE */
.val-in { color: var(--success) !important; }      /* argent qui rentre */
.val-out { color: var(--danger) !important; }       /* argent qui sort */
.val-info { color: var(--orange) !important; }      /* neutre/info */
.val-alert { color: var(--warning) !important; }    /* alerte/écart */
.val-auto { color: var(--text3) !important; }       /* calculé auto */

/* TENDANCE */
.trend-up { color: var(--success); font-size: 0.75rem; font-weight: 600; }
.trend-down { color: var(--danger); font-size: 0.75rem; font-weight: 600; }
.trend-neutral { color: var(--text3); font-size: 0.75rem; }

/* KPI AMÉLIORÉ */
.kpi-card { position: relative; overflow: hidden; }
.kpi-trend { font-size: 0.68rem; margin-top: 4px; font-weight: 600; }

/* TAUX CRÉDIT */
.taux-credit-bar { height: 6px; background: var(--bg3); border-radius: 99px; margin-top: 6px; overflow: hidden; }
.taux-credit-fill { height: 100%; border-radius: 99px; transition: width 0.5s; }

/* PRÉVISION STOCK */
.prevision-badge {
  display: inline-block; padding: 3px 10px; border-radius: 99px;
  font-size: 0.72rem; font-weight: 600; margin-top: 4px;
}
.prev-ok { background: rgba(0,200,83,0.15); color: var(--success); }
.prev-warn { background: rgba(255,145,0,0.15); color: var(--warning); }
.prev-alert { background: rgba(244,67,54,0.15); color: var(--danger); }

/* POINT 7 — Bouton Copier hier */
.btn-copier-hier{background:none;border:1px solid var(--border);border-radius:6px;padding:3px 7px;cursor:pointer;color:var(--text2);font-size:0.8rem;margin-left:4px;transition:color 0.2s,border-color 0.2s;}
.btn-copier-hier:hover{color:var(--orange);border-color:var(--orange);}
