:root{--bg:#f5f3ee;--card:#fff;--primary:#6b4423;--primary-light:#a07855;--accent:#d4a574;--text:#2d2417;--muted:#7a6f5c;--border:#e0d8c8;--success:#4a7c3a;--warning:#d97706;--danger:#b91c1c}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.layout{min-height:100vh;display:flex}.sidebar{background:var(--primary);color:#fff;width:220px;padding:1.5rem 1rem}.sidebar h1{margin:0 0 2rem;font-size:1.2rem}.sidebar nav a{color:#fff;opacity:.85;border-radius:6px;margin-bottom:4px;padding:.6rem .8rem;display:block}.sidebar nav a.active,.sidebar nav a:hover{opacity:1;background:#ffffff26;text-decoration:none}.main{flex:1;min-width:0;max-width:1200px;padding:2rem}.topbar{display:none}.hamburger{color:#fff;background:0 0;border-radius:6px;margin:0;padding:4px 10px;font-size:1.5rem;line-height:1}.sidebar-backdrop{z-index:90;background:#00000073;position:fixed;inset:0}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:1.2rem;box-shadow:0 1px 2px #0000000a}.card h2,.card h3{color:var(--primary);margin-top:0}.grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;display:grid}.stat{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem}.stat .v{color:var(--primary);font-size:1.8rem;font-weight:700}.stat .l{color:var(--muted);margin-top:4px;font-size:.85rem}input,select,textarea{border:1px solid var(--border);font:inherit;background:#fff;border-radius:6px;margin:0 4px 6px 0;padding:.5rem .7rem}.card form label{color:#555;margin-bottom:12px;font-size:.85rem;display:block}.card form label input,.card form label select,.card form label textarea{box-sizing:border-box;width:100%;margin:4px 0 0;display:block}button{cursor:pointer;background:var(--primary);color:#fff;font:inherit;border:0;border-radius:6px;margin:0 4px 4px 0;padding:.5rem 1rem}button:hover{background:var(--primary-light)}button.secondary{color:var(--text);background:#e6dfd0}button.danger{background:var(--danger)}button.success{background:var(--success)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:.6rem}th{color:var(--muted);text-transform:uppercase;background:#faf7f1;font-size:.85rem;font-weight:600}.badge{border-radius:12px;padding:2px 8px;font-size:.75rem;display:inline-block}.badge.info{color:#1e40af;background:#dbeafe}.badge.urgent{color:#92400e;background:#fef3c7}.badge.retard{color:#991b1b;background:#fee2e2}.badge.success{color:#166534;background:#dcfce7}.badge.planifie{color:#3730a3;background:#e0e7ff}.badge.realise{color:#166534;background:#dcfce7}.badge.annule{color:#6b7280;background:#f3f4f6}.badge.emise{color:#92400e;background:#fef3c7}.badge.payee{color:#166534;background:#dcfce7}.msg{border-radius:6px;margin:.5rem 0;padding:.6rem .9rem}.msg.ok{color:#166534;background:#dcfce7}.msg.err{color:#991b1b;background:#fee2e2}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.calendar{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal-cell{background:var(--card);border:1px solid var(--border);border-radius:6px;min-height:90px;padding:6px;font-size:.78rem}.cal-cell .d{color:var(--muted);margin-bottom:4px;font-weight:700}.cal-cell.today{border-color:var(--accent);background:#fffaf2}.cal-cell .ev{background:var(--accent);color:#fff;cursor:pointer;border-radius:4px;margin-bottom:2px;padding:2px 4px}.login-wrap{background:linear-gradient(135deg,#6b4423 0%,#a07855 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:#fff;border-radius:12px;width:100%;max-height:95vh;padding:2rem;overflow-y:auto;box-shadow:0 12px 40px #0000002e}.login-card h1{text-align:center;color:var(--primary);margin-top:0}.login-card h3{color:var(--primary);margin-bottom:8px;font-size:.95rem}.login-card label{color:#555;margin-bottom:8px;font-size:.85rem;display:block}.login-card label input,.login-card label textarea{border:1px solid var(--border);box-sizing:border-box;border-radius:6px;width:100%;margin-top:3px;padding:8px;font-family:inherit}.banner{border-radius:6px;margin-bottom:12px;padding:10px 14px;font-size:.9rem}.banner.ok{color:#155724;background:#d4edda}.banner.err{color:#721c24;background:#f8d7da}@media (width<=768px){.layout{flex-direction:column}.topbar{z-index:80;background:var(--primary);color:#fff;align-items:center;gap:10px;padding:.6rem .8rem;display:flex;position:sticky;top:0}.topbar-title{font-size:1rem;font-weight:700}.sidebar{z-index:100;width:250px;max-width:80vw;transition:transform .25s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:4px 0 20px #0000004d}.main{max-width:100%;padding:1rem}.grid{grid-template-columns:1fr 1fr}.stat .v{font-size:1.4rem}table{white-space:nowrap;-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.calendar{-webkit-overflow-scrolling:touch;overflow-x:auto}.cal-cell{min-width:80px}.card form label input,.card form label select,.card form label textarea{font-size:16px}}@media (width<=480px){.grid{grid-template-columns:1fr}}
