:root { --navy:#062f6f; --purple:#5c3b8e; --ink:#162235; --muted:#6a7483; --line:#e6eaf0; --panel:#fff; --canvas:#f4f7fb; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; color:var(--ink); background:var(--canvas); font-family:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif; }
.auth-shell { display:grid; min-height:100vh; place-items:center; padding:24px; background:linear-gradient(135deg,#062f6f,#5c3b8e); }.auth-card { width:min(440px,100%); padding:32px; border-radius:20px; color:white; background:#ffffff14; box-shadow:0 24px 60px #00000035; backdrop-filter:blur(10px); }.auth-card label { display:block; margin-top:16px; font-size:.85rem; font-weight:700; }.auth-card input { width:100%; margin-top:6px; padding:12px; border:1px solid #ffffff44; border-radius:9px; color:var(--ink); background:#fff; }.auth-submit,.auth-toggle { width:100%; margin-top:16px; padding:12px; border:0; border-radius:9px; font-weight:800; cursor:pointer; }.auth-submit { color:var(--navy); background:#fff; }.auth-toggle { color:#fff; background:transparent; }.hero-actions { display:flex; max-width:780px; margin-left:auto; gap:10px; align-items:center; justify-content:flex-end; flex-wrap:wrap; }.hero-actions > span { flex-basis:100%; padding-right:2px; text-align:right; font-size:.82rem; opacity:.85; }.logout-button { border:1px solid #ffffff88; border-radius:10px; padding:11px; color:#fff; background:transparent; font-weight:700; }
.page-shell { width:min(1440px, calc(100% - 48px)); margin:0 auto; padding:42px 0 64px; }
.hero { display:flex; justify-content:space-between; gap:24px; align-items:flex-end; padding:34px; border-radius:22px; color:white; background:linear-gradient(118deg, #062f6f, #114c9a); box-shadow:0 18px 38px #18396d36; }
.eyebrow { margin:0 0 7px; letter-spacing:.11em; font-size:.72rem; font-weight:800; opacity:.78; }
h1,h2 { margin:0; letter-spacing:-.04em; } h1 { font-size:clamp(2rem, 4vw, 3.15rem); } h2 { font-size:1.55rem; }
.subtitle { margin:12px 0 0; opacity:.86; max-width:600px; }
button,input,select { font:inherit; } button { cursor:pointer; }
.primary-button,.secondary-button { border:0; border-radius:10px; padding:12px 17px; font-weight:750; transition:transform .15s ease, box-shadow .15s ease; }
.primary-button { color:#062f6f; background:#fff; box-shadow:0 4px 10px #001d4f38; } .primary-button:hover { transform:translateY(-1px); }
.admin-button { border:1px solid #ffffff88; border-radius:10px; padding:11px; color:#fff; background:#ffffff18; font-weight:700; }
.dialog-actions .primary-button { background:var(--navy); color:white; box-shadow:none; }
.secondary-button { background:#edf1f6; color:#3d4a5b; }
.metrics { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin:26px 0; }
.metrics article { background:var(--panel); border:1px solid var(--line); border-radius:15px; padding:18px 20px; box-shadow:0 4px 10px #102a4b08; }
.metrics span { display:block; color:var(--muted); font-size:.86rem; font-weight:650; }.metrics strong { display:block; margin-top:6px; color:var(--navy); font-size:2rem; }
.toolbar { display:flex; gap:16px; justify-content:flex-end; margin:0 0 13px; }.toolbar label { color:var(--muted); font-size:.77rem; font-weight:750; }.toolbar input,.toolbar select { display:block; min-width:195px; margin-top:5px; padding:10px 11px; border:1px solid #d9e0ea; border-radius:9px; background:#fff; color:var(--ink); }
.table-card { overflow:hidden; border:1px solid var(--line); border-radius:16px; background:white; box-shadow:0 6px 17px #102a4b09; }.table-scroll { overflow-x:auto; }table { width:100%; border-collapse:collapse; min-width:1060px; }th { padding:15px 16px; color:#fff; background:var(--purple); text-align:left; white-space:nowrap; font-size:.82rem; }td { padding:14px 16px; border-bottom:1px solid var(--line); vertical-align:middle; font-size:.9rem; }tbody tr:last-child td { border-bottom:0; }tbody tr:hover { background:#f7faff; }.date { white-space:nowrap; }.stage-name { min-width:240px; font-weight:700; }.notes { color:var(--muted); white-space:nowrap; }
.badge { display:inline-flex; align-items:center; justify-content:center; min-width:132px; padding:5px 10px; border-radius:999px; font-size:.8rem; font-weight:750; }.termine { color:#13713f; background:#c8efce; }.non-paye { color:#a30000; background:#ffd1d1; }.pas-commence { color:#1e5d9c; background:#cfeaff; }.en-cours { color:#a25f00; background:#ffebbc; }.paiement { color:#8b5b00; background:#fff4c8; }
.row-actions { display:flex; gap:7px; }.small-button,.icon-button { border:0; border-radius:8px; background:#eff2f6; color:#405064; font-weight:750; }.small-button { padding:7px 9px; }.small-button.danger { color:#a20000; background:#fff0f0; }.empty-state { padding:32px; text-align:center; color:var(--muted); }
dialog { width:min(560px, calc(100% - 28px)); padding:0; border:0; border-radius:18px; box-shadow:0 25px 80px #0e1f3f6e; }dialog::backdrop { background:#091a35aa; }dialog form { padding:28px; }.dialog-heading { display:flex; justify-content:space-between; align-items:start; margin-bottom:22px; }.dialog-heading .eyebrow { color:var(--purple); opacity:1; }.icon-button { width:34px; height:34px; font-size:1.5rem; line-height:1; }dialog label { display:block; margin:14px 0 0; color:#4b5666; font-size:.83rem; font-weight:750; }dialog input,dialog select { width:100%; margin-top:6px; padding:11px; border:1px solid #d9e0ea; border-radius:9px; color:var(--ink); background:white; }.two-columns { display:grid; grid-template-columns:1fr 1fr; gap:14px; }.payment-hint { margin:18px 0 0; padding:10px 12px; border-radius:9px; background:#eef5ff; color:#24558c; font-size:.84rem; }.dialog-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:22px; }
.admin-dialog-content { padding:28px; }.admin-table table { min-width:620px; }.admin-table td { font-size:.84rem; }.admin-status { min-height:1.2em; color:var(--muted); font-weight:650; }.admin-status.error { color:#a30000; }
.pdf-import { display:grid; grid-template-columns:1fr auto; align-items:center; gap:10px; margin:0 0 18px; padding:14px; border:1px dashed #9e8bbc; border-radius:12px; background:#faf8ff; }.pdf-import strong { color:#4c2f79; }.pdf-import p { margin:4px 0 0; color:#6c6480; font-size:.78rem; }.file-button { margin:0; padding:9px 11px; border-radius:8px; color:white !important; background:var(--purple); cursor:pointer; }.file-button input { display:none; }.import-status { grid-column:1 / -1; min-height:1em; font-weight:650; }.import-status.error { color:#a30000; }.import-status.success { color:#187040; }
@media (max-width:720px) { .page-shell { width:min(100% - 28px, 1440px); padding-top:18px; }.hero { align-items:start; flex-direction:column; padding:26px; }.hero-actions { width:100%; margin-left:0; justify-content:flex-start; }.hero-actions > span { text-align:left; }.metrics { grid-template-columns:repeat(2,1fr); }.toolbar { justify-content:stretch; flex-direction:column; }.toolbar input,.toolbar select { width:100%; }.two-columns { grid-template-columns:1fr; } }

.filter-button { align-self:end; padding:10px 13px; }.attachment-link { color:#24558c; font-weight:750; white-space:nowrap; }.dialog-content { padding:32px; }.stats-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }.stats-grid article { padding:18px; border-radius:13px; background:#edf4ff; }.stats-grid span { display:block; color:var(--muted); font-size:.8rem; font-weight:700; }.stats-grid strong { display:block; margin-top:5px; color:var(--navy); font-size:2rem; }.next-payment { margin:22px 0 0; padding:15px; border-radius:12px; background:#faf8ff; color:#4c2f79; }.next-payment strong,.next-payment span { display:block; }.next-payment span { margin-top:5px; }.admin-dialog-content { padding:36px; }#admin-dialog { width:min(1040px, calc(100% - 48px)); max-height:calc(100vh - 48px); overflow:auto; }#admin-dialog .admin-table table { min-width:880px; }#stats-dialog { width:min(760px, calc(100% - 28px)); }
@media (max-width:720px) { .stats-grid { grid-template-columns:1fr; }.filter-button { align-self:stretch; } }
