:root{
  --green:#2e7d32; --green-d:#1b5e20; --bg:#f4f6f4; --card:#fff;
  --line:#e0e4e0; --txt:#1f2a22; --muted:#7a857c; --accent:#f0f7f0; --amber:#fff8e1;
}
*{box-sizing:border-box}
body{margin:0;font-family:'Segoe UI',Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--txt);font-size:14px}
.hidden{display:none!important}
button{cursor:pointer;font-family:inherit}

/* LOGIN */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2e7d32,#1b5e20)}
.login-card{background:#fff;padding:36px 32px;border-radius:14px;width:340px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.login-card h1{margin:0;color:var(--green-d);font-size:24px;letter-spacing:1px}
.login-card .sub{margin:2px 0 22px;color:var(--muted)}
.login-card label{display:block;font-size:12px;font-weight:600;margin:12px 0 4px;color:var(--muted)}
.login-card input{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;font-size:14px}
.login-card button{width:100%;margin-top:22px;padding:12px;background:var(--green);color:#fff;border:0;border-radius:8px;font-size:15px;font-weight:600}
.login-card button:hover{background:var(--green-d)}
.error{color:#c62828;font-size:13px;margin-top:12px;min-height:18px}

/* TOPBAR */
.topbar{display:flex;justify-content:space-between;align-items:center;background:var(--green-d);color:#fff;padding:12px 20px}
.brand{font-weight:700;letter-spacing:1px}
.who{display:flex;align-items:center;gap:14px;font-size:13px}
.badge{background:rgba(255,255,255,.18);padding:4px 12px;border-radius:20px;font-weight:600}
.ghost{background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;padding:6px 12px;border-radius:6px}
.ghost:hover{background:rgba(255,255,255,.15)}

/* TABS */
.tabs{display:flex;gap:4px;background:#fff;padding:0 16px;border-bottom:1px solid var(--line)}
.tabs button{background:transparent;border:0;padding:14px 18px;font-size:14px;font-weight:600;color:var(--muted);border-bottom:3px solid transparent}
.tabs button.active{color:var(--green-d);border-bottom-color:var(--green)}

.view{padding:18px}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar input[type=text],#search,#filterCat{padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px}
#search{min-width:230px}
.chk{display:flex;align-items:center;gap:6px;color:var(--muted)}
.spacer{flex:1}
.hint{color:var(--muted);font-size:12.5px}

/* TABLES */
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
thead th{position:sticky;top:0;background:var(--accent);color:var(--green-d);font-size:11.5px;text-transform:uppercase;letter-spacing:.3px;z-index:2}
tbody tr:hover{background:#fafdf9}
.cat-row td{background:#eef4ee;font-weight:700;color:var(--green-d);text-transform:uppercase;font-size:12px;letter-spacing:.5px}
.num{text-align:right;font-variant-numeric:tabular-nums}
.retenu-input{width:80px;padding:6px;border:1px solid var(--green);border-radius:6px;text-align:right;font-size:13px}
.retenu-input:focus{outline:2px solid var(--green);outline-offset:1px}
td.franco{color:var(--green-d);font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
td.nd{color:#bbb;text-align:right;font-style:italic}
.meta{color:var(--muted);font-size:11px}
.editable{width:72px;padding:5px;border:1px solid var(--line);border-radius:5px;font-size:12.5px}
.editable.txt{width:150px}
.del{background:#fdecea;color:#c62828;border:0;border-radius:5px;padding:5px 9px;font-weight:600}
.del:hover{background:#f9d6d2}

/* ADMIN */
.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px}
.panel h2{margin:0 0 4px;font-size:16px;color:var(--green-d)}
.panel h3{font-size:13px;margin:18px 0 6px;color:var(--muted)}
.panel-head{display:flex;justify-content:space-between;align-items:center}
.muted{color:var(--muted);font-size:12.5px;margin:4px 0 12px}
.small{background:var(--green);color:#fff;border:0;border-radius:7px;padding:8px 14px;font-weight:600;font-size:13px}
.small:hover{background:var(--green-d)}
.panel label{display:block;font-size:12px;font-weight:600;margin:8px 0 4px;color:var(--muted)}
.panel input[type=date]{padding:8px;border:1px solid var(--line);border-radius:7px}

/* TOAST */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--green-d);color:#fff;padding:11px 20px;border-radius:8px;box-shadow:0 8px 20px rgba(0,0,0,.2);z-index:50;font-size:13.5px}
@media(max-width:900px){.admin-grid{grid-template-columns:1fr}}

/* ---- REPARTITION CLIENT ---- */
#repartitionTable th, #repartitionTable td { text-align:center; min-width:92px; }
#repartitionTable th.rep-corner, #repartitionTable td.rep-client { text-align:left; position:sticky; left:0; background:#fff; z-index:1; min-width:150px; }
#repartitionTable thead th.rep-corner { z-index:3; background:var(--accent); }
#repartitionTable td.rep-client { background:#fafdf9; }
#repartitionTable td.s-g { background:#c8e6c9; color:#1b5e20; font-weight:600; }
#repartitionTable td.s-o { background:#ffe0b2; color:#e65100; font-weight:600; }
#repartitionTable td.s-r { background:#ffcdd2; color:#b71c1c; font-weight:600; }
#repartitionTable td.rep-edit { padding:4px; }
#repartitionTable td.rep-edit.s-g { background:#e3f3e4; }
#repartitionTable td.rep-edit.s-o { background:#fff1e0; }
#repartitionTable td.rep-edit.s-r { background:#fde5e7; }
.rep-status { display:block; width:84px; margin:3px auto 0; font-size:11px; padding:2px; border:1px solid var(--line); border-radius:4px; }
.rep-legend { display:flex; gap:14px; align-items:center; flex-wrap:wrap; margin-bottom:12px; color:var(--muted); font-size:12.5px; }
.lg { padding:2px 9px; border-radius:4px; font-weight:700; font-size:12px; }
.lg.s-g { background:#c8e6c9; color:#1b5e20; }
.lg.s-o { background:#ffe0b2; color:#e65100; }
.lg.s-r { background:#ffcdd2; color:#b71c1c; }
.rep-input { width:84px; padding:5px; border:1px solid var(--line); border-radius:5px; font-size:12.5px; text-align:center; }
.rep-input:focus { outline:2px solid var(--green); border-color:var(--green); }
.delx { color:#c62828; cursor:pointer; font-weight:700; padding:0 4px; }
.delx:hover { color:#8e0000; }

/* ---- FAVORIS ---- */
.fav-star { cursor:pointer; color:#c9cfc9; font-size:16px; vertical-align:middle; user-select:none; }
.fav-star.on { color:#f5b301; }
.fav-star:hover { color:#f5b301; }

/* ---- COTATION ---- */
#cotationTable td, #cotationTable th { white-space:nowrap; }
#cotationTable tr.nd-row td { color:#bbb; }
#cotRegion { padding:7px 10px; border:1px solid var(--line); border-radius:8px; font-size:14px; }
#cotPdf { background:#1b5e20; }
