:root{
  --bg:#f4f8fc;--card:#ffffff;--ink:#101828;--muted:#667085;--line:#e4e7ec;
  --navy:#121a45;--blue:#00a9e8;--yellow:#ffe100;--red:#ef233c;--green:#23b26d;
  --primary:#121a45;--accent:#00a9e8;--accent2:#ffe100;--danger:#dc2626;
  --shadow:0 18px 45px rgba(16,24,40,.10);--radius:22px
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:radial-gradient(circle at top right,rgba(0,169,232,.14),transparent 34%),linear-gradient(180deg,#f7fbff,#eef4fb);color:var(--ink)}a{text-decoration:none;color:inherit}.app{display:flex;min-height:100vh}
.sidebar{width:290px;background:linear-gradient(180deg,#121a45,#070b24);color:white;padding:20px;position:fixed;inset:0 auto 0 0;transition:.3s ease;z-index:5;box-shadow:12px 0 35px rgba(18,26,69,.18)}
.brand{display:flex;gap:12px;align-items:center;margin-bottom:26px;padding:12px;border-radius:20px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.10)}.brand b{font-size:14px;letter-spacing:.2px}.brand small{display:block;color:#cfeeff;margin-top:2px}.brand-logo{width:64px;height:48px;object-fit:contain;background:white;border-radius:14px;padding:4px;box-shadow:0 8px 24px rgba(0,0,0,.16)}.logo{width:48px;height:48px;border-radius:16px;background:linear-gradient(135deg,var(--accent),var(--primary));display:grid;place-items:center;font-weight:900}
.sidebar nav{display:grid;gap:8px}.sidebar a{padding:13px 14px;border-radius:15px;color:#fff;transition:.25s ease;border:1px solid transparent}.sidebar a:hover,.sidebar a.active{background:rgba(0,169,232,.18);border-color:rgba(255,255,255,.12);transform:translateX(5px)}.sidebar a:last-child{margin-top:14px;background:rgba(239,35,60,.14)}
.main{margin-left:290px;flex:1}.topbar{height:74px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 26px;position:sticky;top:0;z-index:3}.topbar strong{color:var(--primary)}.topbar span{display:block;color:var(--muted);font-size:13px}.menu-btn{display:none;border:0;background:linear-gradient(135deg,var(--primary),var(--accent));color:white;border-radius:13px;padding:10px 13px;cursor:pointer}.content{padding:28px}.content h1{margin:0;color:var(--primary);font-size:30px}.content h2{color:var(--primary);margin-top:0}.card{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);animation:rise .38s ease}.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:22px;border-radius:22px;background:linear-gradient(135deg,#fff,#eefaff);border:1px solid #c8efff;box-shadow:0 10px 28px rgba(0,169,232,.09);transition:.25s}.stat:hover{transform:translateY(-4px)}.stat span{color:var(--muted);font-weight:700}.stat b{font-size:36px;color:var(--primary)}
.btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:14px;padding:11px 16px;background:linear-gradient(135deg,var(--primary),#24318a);color:white;cursor:pointer;font-weight:800;transition:.22s;box-shadow:0 10px 22px rgba(18,26,69,.16)}.btn:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(18,26,69,.24)}.btn.secondary{background:linear-gradient(135deg,#475467,#1f2937)}.btn.light{background:#fff;color:var(--primary);border:1px solid #b9eaff;box-shadow:none}.btn.danger{background:linear-gradient(135deg,var(--danger),#991b1b)}.toolbar{display:flex;gap:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:18px}
table{width:100%;border-collapse:separate;border-spacing:0;background:white;border-radius:18px;overflow:hidden;border:1px solid var(--line)}th,td{padding:14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:linear-gradient(90deg,#121a45,#1c2a6e);color:white;font-size:13px;letter-spacing:.25px}tr:last-child td{border-bottom:0}tr:hover td{background:#f0faff}.form{display:grid;gap:14px}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}label{font-weight:800;font-size:13px;color:#344054;display:block;margin-bottom:6px}input,select,textarea{width:100%;padding:12px 13px;border:1px solid #d0d5dd;border-radius:14px;background:white;outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(0,169,232,.14)}
.badge{display:inline-block;padding:6px 11px;border-radius:999px;font-size:12px;font-weight:900}.badge.low{background:#ecfdf3;color:#027a48}.badge.medium{background:#fff8db;color:#8a6300}.badge.high{background:#fff1f3;color:#b42318}.alert{padding:13px 15px;border-radius:15px;margin-bottom:14px;border:1px solid transparent}.alert.success{background:#ecfdf3;color:#027a48;border-color:#abefc6}.alert.error{background:#fef3f2;color:#b42318;border-color:#fecdca}.muted{color:var(--muted)}
.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at top left,rgba(0,169,232,.32),transparent 32%),radial-gradient(circle at bottom right,rgba(255,225,0,.20),transparent 28%),linear-gradient(135deg,#070b24,#121a45)}.login-card{width:min(460px,92vw);background:white;border-radius:30px;padding:32px;box-shadow:0 35px 90px rgba(0,0,0,.35);animation:rise .45s ease}.login-logo-wrap{text-align:center;margin-bottom:12px}.login-logo{max-width:250px;width:80%;height:auto;object-fit:contain}.login-title{text-align:center;margin-bottom:18px}.login-title b{display:block;color:var(--primary);font-size:20px}.login-title small{display:block;color:var(--accent);font-weight:800;margin-top:3px}.print-area{background:white;padding:24px;border-radius:18px}.print-logo{max-width:180px;height:auto;margin-bottom:12px}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media(max-width:900px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.main{margin-left:0}.menu-btn{display:block}.grid-4,.grid-2,.form-row{grid-template-columns:1fr}.content{padding:16px}table{display:block;overflow-x:auto}.brand-logo{width:58px}}
@media print{body{background:white}.sidebar,.topbar,.toolbar,.btn{display:none!important}.main{margin:0}.content{padding:0}.card{box-shadow:none;border:0}.print-area{padding:0}th{background:#121a45!important;color:white!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;font-size:12px;margin-left:6px}.row-warning{background:#fff7ed}.notification{border:1px solid #e5e7eb;border-radius:14px;padding:14px;margin:10px 0;background:#fff}.notification.unread{border-color:#0ea5e9;background:#f0f9ff}.notification span{float:right;color:#64748b;font-size:12px}.inline-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.clean-list{list-style:none;padding-left:0}.clean-list li{padding:10px;border-bottom:1px solid #e5e7eb}.print-page{background:#fff}.print-doc{max-width:900px;margin:20px auto;background:#fff;padding:30px}.print-logo{max-height:90px;display:block;margin:auto}@media print{.sidebar,.topbar,.btn{display:none!important}.main,.content{margin:0!important;padding:0!important}.print-doc{margin:0;max-width:none}}


/* Impression professionnelle des tableaux */
.text-right{text-align:right}.empty-cell{text-align:center;color:#64748b;padding:18px!important}.cash-print{font-size:12px;color:#111827}.print-header{display:flex;align-items:center;gap:22px;border-bottom:3px solid var(--primary);padding-bottom:14px;margin-bottom:18px}.print-header .print-logo{margin:0;max-width:170px;max-height:90px}.print-header h1{margin:0;color:var(--primary);font-size:26px;text-transform:uppercase}.print-header p{margin:4px 0;color:#475569}.cash-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.cash-summary div{border:1px solid #cbd5e1;border-radius:12px;padding:12px;background:#f8fafc}.cash-summary span{display:block;color:#64748b;font-weight:700;margin-bottom:5px}.cash-summary strong{display:block;font-size:17px;color:var(--primary)}.print-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}.print-table th{background:var(--primary);color:#fff;text-transform:uppercase;font-size:10px;letter-spacing:.04em}.print-table th,.print-table td{border:1px solid #cbd5e1;padding:8px;vertical-align:top}.print-table tbody tr:nth-child(even){background:#f8fafc}.print-table tfoot td{font-weight:800;background:#eef2ff}.print-table .balance-row td{background:#dbeafe;color:var(--primary);font-size:12px}.print-badge{display:inline-block;padding:4px 8px;border-radius:999px;font-weight:800;font-size:10px}.print-badge.in{background:#dcfce7;color:#166534}.print-badge.out{background:#fee2e2;color:#991b1b}.amount{white-space:nowrap;font-weight:700}.signature-row{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin-top:55px}.signature-row div{border-top:1px solid #111827;text-align:center;padding-top:10px;font-weight:700}
@media print{.cash-print{padding:14mm!important;margin:0!important}.print-header,.cash-summary,.print-table th{-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-table{page-break-inside:auto}.print-table tr{page-break-inside:avoid;page-break-after:auto}.cash-summary div{break-inside:avoid}.signature-row{break-inside:avoid}}
