@import url('https://fonts.googleapis.com/css2?family=Syne:wght@400;500;600;700&family=Syne+Mono&family=Inter:wght@300;400;500&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#09090b;--surf:#111114;--surf2:#18181c;--surf3:#1e1e24;
  --border:rgba(255,255,255,.07);--border2:rgba(255,255,255,.13);
  --text:#f2f0ec;--muted:rgba(242,240,236,.5);--muted2:rgba(242,240,236,.25);
  --accent:#d4a853;--accent2:rgba(212,168,83,.12);--accent3:rgba(212,168,83,.06);
  --green:#3fb06a;--green2:rgba(63,176,106,.12);
  --red:#d95b4a;--red2:rgba(217,91,74,.12);
  --blue:#5b8dee;--blue2:rgba(91,141,238,.12);
  --gold:#e8a838;--gold2:rgba(232,168,56,.12);
  --r:8px;--r2:12px;--r3:20px;
  --sh:0 4px 24px rgba(0,0,0,.4);
  --D:'Syne',sans-serif;--M:'Syne Mono',monospace;--S:'Inter',sans-serif;
}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:var(--S);background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden;cursor:none}
a{color:inherit;text-decoration:none}
button{cursor:none;font-family:inherit}
input,select,textarea{font-family:inherit}
img{max-width:100%;display:block}

/* ── Cursor */
/* ── Curseur CSS pur — zéro JS ── */
body { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='4' fill='%23f2f0ec'/%3E%3C/svg%3E") 6 6, auto; }
a, button, input, select, textarea, label, .card-hover, [data-hover] {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='5' fill='%23d4a853'/%3E%3Ccircle cx='16' cy='16' r='13' fill='none' stroke='%23d4a853' stroke-width='1' opacity='0.4'/%3E%3C/svg%3E") 16 16, pointer;
}
#cur, #curR { display: none !important; }

/* ── Grain */
.grain{position:fixed;inset:0;pointer-events:none;z-index:997;opacity:.35;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E")}

/* ── Layout */
.wrap{max-width:1140px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}
.wrap-sm{max-width:560px;margin:0 auto;padding:0 2rem;position:relative;z-index:1}

/* ── Nav */
.nav{padding:1.4rem 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);position:sticky;top:0;background:rgba(9,9,11,.9);backdrop-filter:blur(20px);z-index:50}
.nav-logo{display:flex;align-items:center;gap:10px}
.nav-logo-mark{width:32px;height:32px;background:var(--accent);border-radius:6px;display:flex;align-items:center;justify-content:center;font-family:var(--D);font-weight:700;font-size:14px;color:var(--bg)}
.nav-logo-name{font-family:var(--D);font-weight:600;font-size:16px;letter-spacing:.02em}
.nav-links{display:flex;align-items:center;gap:1.75rem}
.nav-link{font-family:var(--M);font-size:11px;letter-spacing:.08em;color:var(--muted);transition:color .2s}
.nav-link:hover,.nav-link.active{color:var(--text)}
.nav-dot{width:4px;height:4px;border-radius:50%;background:var(--accent);opacity:.6}
.nav-user{display:flex;align-items:center;gap:8px}
.nav-avatar{width:28px;height:28px;border-radius:50%;background:var(--accent2);border:1px solid rgba(212,168,83,.3);display:flex;align-items:center;justify-content:center;font-family:var(--D);font-size:12px;color:var(--accent)}

/* ── Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--M);font-size:11px;letter-spacing:.1em;text-transform:uppercase;border-radius:var(--r3);padding:10px 24px;border:1px solid transparent;transition:all .2s;white-space:nowrap;text-decoration:none}
.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.btn-primary:hover{opacity:.88;transform:translateY(-1px)}
.btn-outline{background:transparent;color:var(--text);border-color:var(--border2)}
.btn-outline:hover{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.04)}
.btn-ghost{background:transparent;color:var(--muted);border-color:var(--border)}
.btn-ghost:hover{color:var(--text);border-color:var(--border2)}
.btn-danger{background:var(--red);color:#fff;border-color:var(--red)}
.btn-danger:hover{opacity:.85}
.btn-sm{padding:6px 14px;font-size:10px}
.btn-lg{padding:14px 32px;font-size:12px}
.btn-full{width:100%}
.btn:disabled{opacity:.4;pointer-events:none}

/* ── Forms */
.field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.85rem}
.field label{font-family:var(--M);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.field input,.field select,.field textarea{background:var(--surf);border:1px solid var(--border);border-radius:var(--r);padding:.7rem 1rem;font-family:var(--S);font-size:.9rem;color:var(--text);outline:none;transition:border-color .2s;width:100%;appearance:none}
.field input::placeholder,.field textarea::placeholder{color:var(--muted2)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.field textarea{resize:vertical;min-height:100px}
.field select{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='rgba(242,240,236,0.4)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}
.field select option{background:var(--surf2)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field-err{font-family:var(--M);font-size:11px;color:var(--red);margin-top:.4rem;display:none}
.field-err.show{display:block}

/* ── Cards */
.card{background:var(--surf);border:1px solid var(--border);border-radius:var(--r2);padding:1.5rem}
.card-hover{transition:background .25s,border-color .25s}
.card-hover:hover{background:var(--surf2);border-color:var(--border2)}

/* ── Badges */
.badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--M);font-size:9px;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:100px;border:1px solid}
.badge-attente,.badge-pending{color:var(--gold);border-color:rgba(232,168,56,.3);background:var(--gold2)}
.badge-yellow{color:#c9a227;border-color:rgba(201,162,39,.35);background:rgba(201,162,39,.1)}
.badge-cours,.badge-progress{color:var(--blue);border-color:rgba(91,141,238,.3);background:var(--blue2)}
.badge-ok,.badge-done{color:var(--green);border-color:rgba(63,176,106,.3);background:var(--green2)}
.badge-non,.badge-cancel{color:var(--red);border-color:rgba(217,91,74,.3);background:var(--red2)}
.badge-grey{color:var(--muted);border-color:var(--border);background:transparent}

/* ── Table */
.tbl-wrap{background:var(--surf);border:1px solid var(--border);border-radius:var(--r2);overflow:hidden}
.tbl{width:100%;border-collapse:collapse}
.tbl th{font-family:var(--M);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:.7rem 1rem;text-align:left;border-bottom:1px solid var(--border)}
.tbl td{padding:.85rem 1rem;border-bottom:1px solid var(--border);font-size:.88rem;color:var(--muted)}
.tbl td.str{color:var(--text);font-weight:500}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:rgba(255,255,255,.015)}
.tbl-actions{display:flex;gap:.4rem}

/* ── Stat cards */
.stat{background:var(--surf);border:1px solid var(--border);border-radius:var(--r2);padding:1.25rem 1.5rem}
.stat-label{font-family:var(--M);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.4rem}
.stat-value{font-family:var(--D);font-size:2.4rem;font-weight:600;color:var(--text);line-height:1}
.stat-value.accent{color:var(--accent)}
.stat-sub{font-family:var(--M);font-size:10px;color:var(--muted);margin-top:.3rem}

/* ── Modal */
.modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:1.5rem}
.modal.open{display:flex}
.modal-bg{position:absolute;inset:0;background:rgba(9,9,11,.85);backdrop-filter:blur(10px)}
.modal-box{position:relative;z-index:1;background:var(--surf);border:1px solid var(--border2);border-radius:var(--r2);width:100%;max-width:540px;max-height:90vh;overflow-y:auto;animation:mIn .3s cubic-bezier(.23,1,.32,1)}
@keyframes mIn{from{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:none}}
.modal-head{padding:1.4rem 1.6rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--surf);z-index:1}
.modal-head h3{font-family:var(--D);font-size:1.2rem;font-weight:600}
.modal-body{padding:1.4rem 1.6rem}
.modal-foot{padding:1rem 1.6rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.6rem}
.modal-close{width:30px;height:30px;border:1px solid var(--border);border-radius:50%;background:none;color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s}
.modal-close:hover{border-color:var(--border2);color:var(--text)}

/* ── Toast */
#toasts{position:fixed;bottom:1.5rem;right:1.5rem;z-index:500;display:flex;flex-direction:column;gap:.5rem}
.toast{font-family:var(--M);font-size:11px;letter-spacing:.05em;background:var(--surf2);border:1px solid var(--border2);border-radius:var(--r);padding:.75rem 1.1rem;display:flex;align-items:center;gap:8px;animation:tIn .3s ease;max-width:300px}
.toast.ok{border-color:rgba(63,176,106,.4);color:var(--green)}
.toast.err{border-color:rgba(217,91,74,.4);color:var(--red)}
.toast.info{border-color:rgba(212,168,83,.4);color:var(--accent)}
@keyframes tIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}

/* ── Animations */
@keyframes up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.anim-up{opacity:0;animation:up .7s ease forwards}
.anim-up-1{animation-delay:.05s}.anim-up-2{animation-delay:.12s}.anim-up-3{animation-delay:.19s}.anim-up-4{animation-delay:.26s}

/* ── Section label */
.s-label{font-family:var(--M);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:1rem;padding:2.5rem 0 1.5rem}
.s-label::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── Page title */
.page-h{font-family:var(--D);font-size:clamp(2.2rem,5vw,3.5rem);font-weight:700;line-height:1.05;letter-spacing:-.02em}
.page-h span{color:var(--accent)}
.page-sub{font-size:1rem;font-weight:300;color:var(--muted);line-height:1.8;margin-top:.75rem}

/* ── Empty state */
.empty{text-align:center;padding:3rem 1rem;color:var(--muted)}
.empty-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.4}
.empty p{font-size:.9rem}

/* ── Divider */
.divider{display:flex;align-items:center;gap:1rem;color:var(--muted);font-family:var(--M);font-size:10px;letter-spacing:.1em;margin:1.25rem 0}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border)}

/* ── Footer */
.footer{border-top:1px solid var(--border);padding:1.5rem 0;display:flex;align-items:center;justify-content:space-between;margin-top:4rem}
.footer p{font-family:var(--M);font-size:10px;color:var(--muted)}
.footer-links{display:flex;gap:1.5rem}
.footer-links a{font-family:var(--M);font-size:10px;color:var(--muted);transition:color .2s}
.footer-links a:hover{color:var(--accent)}

/* ── Scrollbar */
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}

/* ── Responsive */
@media(max-width:768px){
  .wrap,.wrap-sm{padding:0 1.25rem}
  .field-row{grid-template-columns:1fr}
  .nav-links .nav-link:not(.nav-link-keep){display:none}
}