/* Maths'xp — feuille du bureau : l'administration, et la base des espaces parents, élève, intervenant et communication
   (carnet.css s'y ajoute). Dans l'ordre : repères de couleur, écrans de l'administration, charte « bureau » qui les redessine. */
/* Repères de couleur du bureau (administration et espaces), clair puis sombre. Au-delà des repères de la charte : rôle (bg fond, ink texte, line trait, shade ombre) + teinte, du plus clair au plus foncé ; -NN = même couleur en transparence (NN %). */
body.mx-bureau{
  --b-ink:#1F2A33;
  --b-ink-soft:#3D4750;
  --b-muted:#5B6770;
  --b-kicker:#6B5A3E;
  --b-bg:#F4F0E6;
  --b-bar:#FAF7F0;
  --b-card:#FFFDF8;
  --b-card-2:#FAF7F0;
  --b-line:#E3DACB;
  --b-line-soft:#EEE6D6;
  --b-field:#D8CDB8;
  --b-side:#1F2A33;
  --b-side-ink:#F6F1E7;
  --b-side-muted:#9FB0BC;
  --b-side-chip:#2E3D49;
  --b-accent:#2A6CB0;
  --b-accent-ink:#1E4166;
  --b-primary:#1F2A33;
  --b-primary-ink:#F6F1E7;
  --b-stamp:#B8322A;
  --b-ok:#1E5B3A;
  --b-ok-bg:#E3F0E7;
  --b-warn:#7A5410;
  --b-warn-bg:#FFF3D6;
  --b-err:#8E2A22;
  --b-err-bg:#FBE9E6;
  --b-shadow:0 1px 2px rgba(60,42,20,.06),0 6px 16px rgba(60,42,20,.06);
  --b-serif:var(--mx-font-title,Fraunces,Georgia,'Times New Roman',serif);
  --b-sans:var(--mx-font-text,'Atkinson Hyperlegible',system-ui,-apple-system,'Segoe UI',sans-serif);
  --b-bg-90:rgba(244,240,230,0.9);
  --b-bg-amber-1:#fffdf7;
  --b-bg-amber-2:#fffaf0;
  --b-bg-amber-3:#fff8e8;
  --b-bg-amber-4:#fff7dc;
  --b-bg-amber-5:rgba(255,247,220,0.9);
  --b-bg-amber-6:#fff5d8;
  --b-bg-amber-7:#fff0c8;
  --b-bg-amber-8:#f7e3a6;
  --b-bg-amber-9:#d9a62c;
  --b-bg-amber-10:#d09a19;
  --b-bg-blue-1:#edf7ff;
  --b-bg-blue-2:#e9f6fb;
  --b-bg-blue-3:#2f5d8a;
  --b-bg-green-1:#f2fbf6;
  --b-bg-green-2:#eaf7ef;
  --b-bg-green-3:#eaf7f0;
  --b-bg-green-4:#dff3e8;
  --b-bg-green-5:#cfeedd;
  --b-bg-green-6:#b7d3c1;
  --b-bg-green-7:#6fa886;
  --b-bg-green-8:#3bcf9b;
  --b-bg-green-9:#4f8a6b;
  --b-bg-green-10:#2e7d4f;
  --b-bg-green-11:#19724d;
  --b-bg-lime:#eef8dc;
  --b-bg-neutral-1:#fbfefc;
  --b-bg-neutral-2:#fffafa;
  --b-bg-neutral-3:#f8fffc;
  --b-bg-neutral-4:#fffdf8;
  --b-bg-orange-1:#fff8ef;
  --b-bg-orange-2:#fff7ee;
  --b-bg-orange-3:#8a5a2f;
  --b-bg-red-1:#fdf0f0;
  --b-bg-red-2:#b43c3c;
  --b-bg-red-3:#8e2a22;
  --b-bg-sand-1:#efe9dc;
  --b-bg-sand-2:#e6decd;
  --b-bg-sand-3:#9c8f78;
  --b-bg-slate:#1f2a33;
  --b-bg-yellow:#fffbdc;
  --b-card-0:rgba(255,253,248,0);
  --b-card-45:rgba(255,253,248,0.45);
  --b-card-62:rgba(255,253,248,0.62);
  --b-card-92:rgba(255,253,248,0.92);
  --b-card-93:rgba(255,253,248,0.93);
  --b-card-96:rgba(255,253,248,0.96);
  --b-card-99:rgba(255,253,248,0.99);
  --b-ink-amber-1:#8a650f;
  --b-ink-amber-2:#805f17;
  --b-ink-amber-3:#78560b;
  --b-ink-amber-4:#73520b;
  --b-ink-amber-5:#6f510c;
  --b-ink-green-1:#19724d;
  --b-ink-green-2:#215a3f;
  --b-ink-green-3:#145b3e;
  --b-ink-lime:#497a24;
  --b-ink-neutral-1:#ffffff;
  --b-ink-neutral-2:#6d7881;
  --b-ink-orange-1:#9a5b16;
  --b-ink-orange-2:#9a5b00;
  --b-ink-orange-3:#7c4b1b;
  --b-ink-red-1:#b43c3c;
  --b-ink-red-2:#9d3b36;
  --b-ink-red-3:#a33a2b;
  --b-ink-red-4:#983232;
  --b-ink-red-5:#8c3535;
  --b-ink-red-6:#8e2f2f;
  --b-ink-red-7:#902817;
  --b-line-amber-1:#ead9aa;
  --b-line-amber-2:#eed9a3;
  --b-line-amber-3:#efd9a2;
  --b-line-amber-4:#ecd396;
  --b-line-amber-5:#edd793;
  --b-line-amber-6:#e2bd69;
  --b-line-amber-7:#d4af66;
  --b-line-amber-8:#d0a84c;
  --b-line-amber-9:#e7aa16;
  --b-line-blue-1:#b9dff5;
  --b-line-blue-2:#20a6d8;
  --b-line-green-1:#b7e4d3;
  --b-line-green-2:#b8dfca;
  --b-line-green-3:#bad8c8;
  --b-line-green-4:#b9d8c5;
  --b-line-lime:#7abf3f;
  --b-line-orange:#edd6bd;
  --b-line-red-1:#efc4c4;
  --b-line-red-2:#e8c6c6;
  --b-line-red-3:#ad3b29;
  --b-line-sand-1:#eee6d6;
  --b-line-sand-2:#b9ae98;
  --b-line-slate-1:#dce3e7;
  --b-line-slate-2:#1f2a33;
  --b-line-slate-3:rgba(31,42,51,0.12);
  --b-line-slate-4:rgba(31,42,51,0.08);
  --b-line-yellow:#d8cc21;
  --b-shade-00:rgba(0,0,0,0);
  --b-shade-03:rgba(35,52,63,0.03);
  --b-shade-05:rgba(35,52,63,0.05);
  --b-shade-06:rgba(35,52,63,0.06);
  --b-shade-07:rgba(35,52,63,0.07);
  --b-shade-08:rgba(35,52,63,0.08);
  --b-shade-12-1:rgba(86,121,141,0.12);
  --b-shade-12-2:rgba(63,98,118,0.12);
  --b-shade-13-1:rgba(35,52,63,0.13);
  --b-shade-13-2:rgba(25,42,52,0.13);
  --b-shade-14:rgba(86,121,141,0.14);
  --b-shade-15:rgba(20,35,45,0.15);
  --b-shade-16-1:rgba(63,98,118,0.16);
  --b-shade-16-2:rgba(35,52,63,0.16);
  --b-shade-30:rgba(86,121,141,0.3);
  --b-shade-100-1:#dce3e7;
  --b-shade-100-2:#b9c5cc;
  --b-shadow-soft:0 8px 26px rgba(35,52,63,.055);
  --b-bg-blue:#E3EEFA;
  --b-ink-blue:#1F5A96;
  --b-bg-violet:#EEE7FA;
  --b-ink-violet:#5B3F9E;
  --b-bg-green:#E2F2E7;
  --b-ink-green:#1E6B3E;
  --b-bg-red:#FBE6E3;
  --b-ink-red:#A3352B;
  --b-bg-orange:#FCEBDD;
  --b-ink-orange:#A2541A;
  --b-bg-amber:#FBF1D9;
  --b-ink-amber:#8A6410;
  --b-bg-teal:#DFF2F0;
  --b-ink-teal:#1D6B66;
  --b-bg-pink:#FAE5EF;
  --b-ink-pink:#9C2F66;
}
@media screen and (prefers-color-scheme:dark){
  body.mx-bureau{
    --b-bg-blue:#1E3247;
    --b-ink-blue:#A9CBF0;
    --b-bg-violet:#2E2747;
    --b-ink-violet:#C9B8F2;
    --b-bg-green:#1D3A29;
    --b-ink-green:#A6DDB8;
    --b-bg-red:#47231F;
    --b-ink-red:#F2B3AA;
    --b-bg-orange:#47301E;
    --b-ink-orange:#F4C29C;
    --b-bg-amber:#44381A;
    --b-ink-amber:#EED38C;
    --b-bg-teal:#193C3A;
    --b-ink-teal:#9FDCD5;
    --b-bg-pink:#452238;
    --b-ink-pink:#F1B1D2;
    --b-ink:#EDE3D0;
    --b-ink-soft:#D6CBB6;
    --b-muted:#B9AD97;
    --b-kicker:#CDB68C;
    --b-bg:#1F1B16;
    --b-bar:#241F19;
    --b-card:#29231C;
    --b-card-2:#2C261F;
    --b-line:#3A3127;
    --b-line-soft:#332B22;
    --b-field:#4A3F32;
    --b-side:#12161A;
    --b-side-ink:#EDE3D0;
    --b-side-muted:#8C9AA5;
    --b-side-chip:#232C33;
    --b-accent:#8DB8EA;
    --b-accent-ink:#9CC2EC;
    --b-primary:#EDE3D0;
    --b-primary-ink:#1F1B16;
    --b-stamp:#F2A097;
    --b-ok:#8FD1A8;
    --b-ok-bg:#1D3326;
    --b-warn:#E9C77A;
    --b-warn-bg:#3A2F17;
    --b-err:#F2B4AB;
    --b-err-bg:#4A1F1A;
    --b-shadow:0 1px 2px rgba(0,0,0,.4),0 8px 20px rgba(0,0,0,.35);
    --b-bg-90:rgba(31,27,22,0.9);
    --b-bg-amber-1:#453c21;
    --b-bg-amber-2:#453921;
    --b-bg-amber-3:#453a21;
    --b-bg-amber-4:#453d21;
    --b-bg-amber-5:rgba(69,61,33,0.9);
    --b-bg-amber-6:#453c21;
    --b-bg-amber-7:#453b21;
    --b-bg-amber-8:#453c21;
    --b-bg-amber-9:#a2802e;
    --b-bg-amber-10:#987523;
    --b-bg-blue-1:#213545;
    --b-bg-blue-2:#213b45;
    --b-bg-blue-3:#3e6e9e;
    --b-bg-green-1:#214531;
    --b-bg-green-2:#21452f;
    --b-bg-green-3:#214532;
    --b-bg-green-4:#214531;
    --b-bg-green-5:#214531;
    --b-bg-green-6:#8bb098;
    --b-bg-green-7:#5a866b;
    --b-bg-green-8:#379e7a;
    --b-bg-green-10:#308252;
    --b-bg-green-11:#209263;
    --b-bg-lime:#384521;
    --b-bg-neutral-1:#21452d;
    --b-bg-neutral-2:#452121;
    --b-bg-neutral-3:#214536;
    --b-bg-neutral-4:#453b21;
    --b-bg-orange-1:#453521;
    --b-bg-orange-2:#453421;
    --b-bg-red-1:#452121;
    --b-bg-red-2:#863a3a;
    --b-bg-red-3:#902b22;
    --b-bg-sand-1:#352d24;
    --b-bg-sand-2:#3a3127;
    --b-bg-sand-3:#6b5e4c;
    --b-bg-slate:#3a4c5c;
    --b-bg-yellow:#454121;
    --b-card-0:rgba(41,35,28,0);
    --b-card-45:rgba(41,35,28,0.45);
    --b-card-62:rgba(41,35,28,0.62);
    --b-card-92:rgba(41,35,28,0.92);
    --b-card-93:rgba(41,35,28,0.93);
    --b-card-96:rgba(41,35,28,0.96);
    --b-card-99:rgba(41,35,28,0.99);
    --b-ink-amber-1:#e7d09d;
    --b-ink-amber-2:#e7cf9d;
    --b-ink-amber-3:#e7d09d;
    --b-ink-amber-4:#e7cf9d;
    --b-ink-amber-5:#e7d09d;
    --b-ink-green-1:#9de7c8;
    --b-ink-green-2:#a5dec3;
    --b-ink-green-3:#9de7c9;
    --b-ink-lime:#bde3a0;
    --b-ink-neutral-1:#fffdf8;
    --b-ink-orange-1:#e7c39d;
    --b-ink-orange-2:#e7c89d;
    --b-ink-orange-3:#e7c19d;
    --b-ink-red-1:#e0a3a3;
    --b-ink-red-2:#e0a7a4;
    --b-ink-red-3:#e5a79e;
    --b-ink-red-4:#e1a3a3;
    --b-ink-red-5:#dda6a6;
    --b-ink-red-6:#e1a3a3;
    --b-ink-red-7:#e7a79d;
    --b-line-amber-1:#675932;
    --b-line-amber-2:#675832;
    --b-line-amber-3:#675832;
    --b-line-amber-4:#675832;
    --b-line-amber-5:#675a32;
    --b-line-amber-6:#c09125;
    --b-line-amber-7:#b38832;
    --b-line-amber-8:#b68d30;
    --b-line-amber-9:#d29a14;
    --b-line-blue-1:#325467;
    --b-line-blue-2:#1e9ac8;
    --b-line-green-1:#326753;
    --b-line-green-2:#32674a;
    --b-line-green-3:#37624b;
    --b-line-green-4:#376248;
    --b-line-lime:#6ead39;
    --b-line-orange:#674e32;
    --b-line-red-1:#673232;
    --b-line-red-2:#673232;
    --b-line-red-3:#ba3f2c;
    --b-line-sand-1:#3a3127;
    --b-line-sand-2:#6b5e4c;
    --b-line-slate-2:#3e6e9e;
    --b-line-slate-3:rgba(62,110,158,0.12);
    --b-line-slate-4:rgba(62,110,158,0.08);
    --b-line-yellow:#c7bc1e;
    --b-shade-03:rgba(0,0,0,0.09);
    --b-shade-05:rgba(0,0,0,0.15);
    --b-shade-06:rgba(0,0,0,0.18);
    --b-shade-07:rgba(0,0,0,0.21);
    --b-shade-08:rgba(0,0,0,0.24);
    --b-shade-12-1:rgba(0,0,0,0.36);
    --b-shade-12-2:rgba(0,0,0,0.36);
    --b-shade-13-1:rgba(0,0,0,0.39);
    --b-shade-13-2:rgba(0,0,0,0.39);
    --b-shade-14:rgba(0,0,0,0.42);
    --b-shade-15:rgba(0,0,0,0.45);
    --b-shade-16-1:rgba(0,0,0,0.48);
    --b-shade-16-2:rgba(0,0,0,0.48);
    --b-shade-30:rgba(0,0,0,0.6);
    --b-shade-100-1:rgba(0,0,0,0.6);
    --b-shade-100-2:rgba(0,0,0,0.6);
  }
}
*{box-sizing:border-box}
html,body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--b-accent-ink);background:var(--b-bg)}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
.app-shell{min-height:100vh;display:flex}
.sidebar{width:255px;background:var(--b-card);border-right:1px solid var(--b-line);display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:10}
.brand{height:88px;padding:10px 20px;display:flex;align-items:center;border-bottom:1px solid var(--b-line)}
.sidebar nav{padding:15px 10px;overflow:auto}
.main{margin-left:255px;width:calc(100% - 255px)}
.topbar{min-height:92px;background:var(--b-card-92);backdrop-filter:blur(8px);border-bottom:1px solid var(--b-line);padding:20px 30px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:5}
.topbar h1{font-size:24px;margin:0 0 4px;letter-spacing:-.02em}
.content{padding:26px 30px 48px;max-width:1600px}
.flash{padding:12px 14px;border-radius:10px;margin-bottom:18px;border:1px solid}
.flash-success{background:var(--b-bg-green-3);border-color:var(--b-line-green-2);color:var(--b-ink-green-3)}
.flash-warning{background:var(--b-bg-amber-4);border-color:var(--b-line-amber-5);color:var(--b-ink-amber-4)}
.flash-error{background:var(--b-bg-red-1);border-color:var(--b-line-red-1);color:var(--b-ink-red-6)}
.grid-kpi{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}
.card{background:var(--b-card);border:1px solid var(--b-line);border-radius:15px;box-shadow:var(--b-shadow-soft)}
.kpi{padding:19px;position:relative;overflow:hidden}
.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--b-field)}
.kpi .label{font-size:12px;color:var(--b-ink-soft);font-weight:750;text-transform:uppercase;letter-spacing:.045em}
.kpi .value{font-size:29px;font-weight:850;margin-top:8px;letter-spacing:-.03em}
.kpi .hint{font-size:12px;color:var(--b-ink-soft);margin-top:4px}
.section{padding:20px;margin-bottom:20px}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}
.section h2{font-size:18px;margin:0;letter-spacing:-.015em}
.actions{display:flex;flex-wrap:wrap;gap:9px}
.btn{border:1px solid var(--b-line);background:var(--b-card);color:var(--b-accent-ink);padding:9px 13px;border-radius:9px;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.14s ease}
.btn:hover{background:var(--b-card-2);border-color:var(--b-field)}
.btn-primary{background:var(--b-bg-slate);border-color:var(--b-line-slate-2);color:var(--b-ink-neutral-1)}
.btn-primary:hover{background:var(--b-bg-slate);border-color:var(--b-line-slate-2)}
.btn-danger{background:var(--b-bg-red-1);border-color:var(--b-line-red-1);color:var(--b-ink-red-4)}
.btn-success{background:var(--b-bg-green-3);border-color:var(--b-line-green-2);color:var(--b-ink-green-3)}
.btn-small{padding:6px 9px;font-size:12px}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:15px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:12px;font-weight:750;color:var(--b-ink-soft)}
.input,.select,.textarea{border:1px solid var(--b-line);background:var(--b-card);border-radius:9px;padding:9px 11px;min-height:40px;outline:none;color:var(--b-accent-ink)}
.input:focus,.select:focus,.textarea:focus{border-color:var(--b-line-slate-2);box-shadow:0 0 0 3px var(--b-shade-14)}
.textarea{min-height:100px;resize:vertical}
.help{font-size:11px;color:var(--b-ink-soft);line-height:1.4}
.table-wrap{overflow:auto;border:1px solid var(--b-line);border-radius:12px}
.table{width:100%;border-collapse:collapse;background:var(--b-card)}
.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--b-line);text-align:left;white-space:nowrap;font-size:13px}
.table th{background:var(--b-card-2);color:var(--b-ink-soft);font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.table tr:last-child td{border-bottom:0}
.table tbody tr:hover{background:var(--b-card-2)}
.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}
.badge-active{background:var(--b-bg-green-4);color:var(--b-ink-green-3)}
.badge-archived{background:var(--b-bg);color:var(--b-ink-soft)}
.badge-review{background:var(--b-bg-amber-7);color:var(--b-ink-amber-3)}
.kind-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap;vertical-align:middle}
.kind-centre{background:var(--b-bg-green);color:var(--b-ink-green)}
.kind-exterieur{background:var(--b-bg-blue);color:var(--b-ink-blue)}
.kind-prof{background:var(--b-bg-violet);color:var(--b-ink-violet)}
.kind-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.kind-tabs a{display:inline-flex;gap:6px;align-items:center;padding:8px 13px;border:1px solid var(--b-line);border-radius:999px;background:var(--b-card);font-size:13px;font-weight:800;color:var(--b-ink-soft);text-decoration:none}
.kind-tabs a b{font-weight:800;color:inherit;opacity:.75}
.kind-tabs a.is-on.kind-centre{background:var(--b-bg-green);border-color:var(--b-ink-green);color:var(--b-ink-green)}
.kind-tabs a.is-on.kind-exterieur{background:var(--b-bg-blue);border-color:var(--b-ink-blue);color:var(--b-ink-blue)}
.kind-tabs a.is-on.kind-prof{background:var(--b-bg-violet);border-color:var(--b-ink-violet);color:var(--b-ink-violet)}
.muted{color:var(--b-ink-soft)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form-grid .full{grid-column:1/-1}
.empty{padding:35px;text-align:center;color:var(--b-ink-soft)}
.note{padding:14px;border-radius:10px;background:var(--b-card-2);border:1px solid var(--b-line);color:var(--b-ink-soft);font-size:13px;line-height:1.5}
.danger-note{background:var(--b-bg-orange-2);border-color:var(--b-line-orange);color:var(--b-ink-orange-3)}
.progress-list{display:grid;gap:10px}
.progress-item{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--b-line)}
.progress-item:last-child{border:0}
.count-pill{background:var(--b-bg-sand-1);border-radius:999px;padding:4px 8px;font-size:11px;color:var(--b-accent-ink);font-weight:750}
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.module-card{padding:18px}
.module-card strong{display:block;margin-bottom:8px}
.module-card span{font-size:12px;color:var(--b-ink-soft)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 18% 18%,var(--b-card) 0 12%,transparent 38%),linear-gradient(145deg,var(--b-bg),var(--b-card-2) 55%,var(--b-bg-sand-1))}
.login-card{width:min(440px,100%);background:var(--b-card);border:1px solid var(--b-line);border-radius:20px;padding:30px;box-shadow:0 24px 70px var(--b-shade-13-1)}
.login-logo{display:flex;justify-content:center;margin:-4px 0 18px}
.login-logo img{width:min(310px,90%);height:112px;object-fit:contain}
.login-card h1{font-size:21px;margin:0 0 8px;text-align:center}
.login-card>p{color:var(--b-ink-soft);font-size:13px;text-align:center;margin-bottom:22px}
.login-card .field{margin:12px 0}
.login-card .btn{width:100%;justify-content:center;margin-top:10px}
.login-version{text-align:center;font-size:11px;color:var(--b-ink-soft);margin-top:16px}
.source-note{font-size:11px;color:var(--b-ink-soft);margin-top:10px}
@media(max-width:1100px){
  .grid-kpi{grid-template-columns:repeat(2,1fr)}
  .module-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:780px){
  .sidebar{position:static;width:100%;height:auto}
  .app-shell{display:block}
  .brand{height:72px;justify-content:center}
  .sidebar nav{display:flex;overflow:auto;border-top:1px solid var(--b-line);padding:15px 10px}
  .main{margin:0;width:100%}
  .topbar{padding:16px 18px;position:sticky;min-height:auto}
  .content{padding:18px}
  .grid-kpi,.two-col,.form-grid,.module-grid{grid-template-columns:1fr}
  .table th,.table td{padding:9px}
  .login-card{padding:24px 20px}
  .login-logo img{height:96px}
}
/* Planning, réservations et espace élève */
.tab{padding:9px 13px;border:1px solid var(--b-line);border-radius:9px;background:var(--b-card);font-size:13px;font-weight:750;color:var(--b-ink-soft)}
.tab.active{background:var(--b-bg-slate);border-color:var(--b-line-slate-2);color:var(--b-ink-neutral-1)}
.inline-form{display:flex;align-items:end;gap:9px;flex-wrap:wrap}
.inline-form>label{font-size:12px;font-weight:750;color:var(--b-ink-soft);align-self:center}
.slot-time{font-size:10px;font-weight:850;letter-spacing:.03em;color:var(--b-accent-ink)}
.slot-count{display:flex;justify-content:space-between;align-items:center;gap:7px;margin-top:9px;padding-top:7px;border-top:1px solid var(--b-line-slate-4);font-size:11px}
.slot-count b{font-size:12px}
.slot-count em{font-style:normal;font-size:9px;background:var(--b-card-62);padding:3px 5px;border-radius:999px}
.theme-blue{background:var(--b-bg-blue-2);border-left-color:var(--b-line-blue-2)}
.theme-gold{background:var(--b-bg-amber-6);border-left-color:var(--b-line-amber-9)}
.theme-green{background:var(--b-bg-lime);border-left-color:var(--b-line-lime)}
.theme-slate{background:var(--b-bg-sand-1);border-left-color:var(--b-line-sand-2)}
.theme-lemon{background:var(--b-bg-yellow);border-left-color:var(--b-line-yellow)}
.theme-cream{background:var(--b-bg-amber-3);border-left-color:var(--b-line-amber-7)}
.theme-steel{background:var(--b-card-2);border-left-color:var(--b-line-slate-2)}
.slot-closed{opacity:.55;filter:grayscale(.2)}
.theme-border-blue{border-top:4px solid var(--b-line-blue-2)}
.theme-border-gold{border-top:4px solid var(--b-line-amber-9)}
.theme-border-green{border-top:4px solid var(--b-line-lime)}
.theme-border-slate{border-top:4px solid var(--b-line-sand-2)}
.theme-border-lemon{border-top:4px solid var(--b-line-yellow)}
.theme-border-cream{border-top:4px solid var(--b-line-amber-7)}
.theme-border-steel{border-top:4px solid var(--b-line-slate-2)}
.subcard{border:1px solid var(--b-line);border-radius:12px;padding:15px;background:var(--b-card-2)}
.subcard h3{margin:0 0 12px;font-size:14px}
.check-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--b-accent-ink)}
.choice-grid{display:flex;flex-wrap:wrap;gap:8px}
.check-chip{display:flex;align-items:center;gap:6px;border:1px solid var(--b-line);background:var(--b-card);border-radius:999px;padding:6px 9px;font-size:12px;color:var(--b-accent-ink)}
.check-chip:has(input:checked){background:var(--b-bg-sand-1);border-color:var(--b-field);color:var(--b-accent-ink)}
.student-body{background:var(--b-bg)}
.student-main{max-width:1360px;margin:auto;padding:24px 22px 44px}
.student-footer{padding:20px;text-align:center;color:var(--b-muted);font-size:11px}
.student-slot-action{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:9px}
.student-slot-action form{margin:0}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--b-ink-soft)}
.legend span{display:flex;gap:5px;align-items:center}
.legend-dot{width:8px;height:8px;border-radius:50%;background:var(--b-bg-sand-3)}
.legend-dot.booked{background:var(--b-bg-green-11)}
.legend-dot.waiting{background:var(--b-bg-amber-10)}
.legend-dot.available{background:var(--b-bg-blue-3)}
.student-narrow{max-width:620px;margin:auto}
.login-links{text-align:center;margin-top:14px;font-size:12px;color:var(--b-accent-ink)}
@media(max-width:780px){
  .student-main{padding:16px 12px 34px}
  .choice-grid{gap:6px}
  .check-chip{font-size:11px}
  .session-summary .two-col{grid-template-columns:1fr}
  .legend{margin-top:8px}
}
/* Grille 8h–21h et calendrier automatique */
.btn-tiny{padding:4px 6px;font-size:9px;border-radius:7px}
.planning-title-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.planning-week-actions{align-items:center}
.timeline-wrap{overflow-x:auto;padding-bottom:10px}
.weekly-timeline{display:grid;grid-template-columns:72px repeat(6,minmax(235px,1fr));gap:9px;min-width:1510px}
.timeline-axis,.timeline-day{background:var(--b-card);border:1px solid var(--b-line);border-radius:13px;overflow:hidden}
.timeline-axis-head{height:68px;display:grid;place-items:center;background:var(--b-card-2);border-bottom:1px solid var(--b-line);font-size:11px;font-weight:850;color:var(--b-ink-soft);text-transform:uppercase;letter-spacing:.04em}
.timeline-axis-body,.timeline-day-body{height:650px;position:relative;background:var(--b-card)}
.axis-label{position:absolute;left:0;right:0;border-bottom:1px solid var(--b-line);display:flex;align-items:flex-start;justify-content:center;padding-top:5px;color:var(--b-ink-soft);font-size:10px;font-weight:750}
.axis-label.axis-break{background:var(--b-bg);color:var(--b-muted)}
.timeline-day.is-today{box-shadow:inset 0 0 0 2px var(--b-shade-30)}
.timeline-day-head{height:44px;display:flex;align-items:center;justify-content:space-between;padding:7px 9px;background:var(--b-card);border-bottom:1px solid var(--b-line)}
.timeline-day-head>div{display:flex;flex-direction:column;gap:2px}
.timeline-day-head strong{font-size:12px}
.timeline-day-head span{font-size:10px;color:var(--b-ink-soft)}
.timeline-day-sub{height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:5px 8px;background:var(--b-card-2);border-bottom:1px solid var(--b-line);font-size:9px;color:var(--b-ink-soft)}
.day-mode{font-size:8px!important;font-weight:850!important;padding:3px 6px;border-radius:999px;white-space:nowrap}
.mode-school{background:var(--b-bg-sand-1);color:var(--b-accent-ink)}
.mode-holiday{background:var(--b-bg-lime);color:var(--b-ink-lime)}
.mode-closed{background:var(--b-bg);color:var(--b-ink-soft)}
.timeline-band{position:absolute;left:0;right:0;border-bottom:1px solid var(--b-line);display:flex;align-items:center;justify-content:center;z-index:0;font-size:9px;color:var(--b-muted)}
.timeline-band.is-unavailable{background:repeating-linear-gradient(-45deg,var(--b-card-2),var(--b-card-2) 8px,var(--b-bg) 8px,var(--b-bg) 16px)}
.timeline-band.is-break{background:var(--b-bg-sand-1);color:var(--b-muted);font-weight:800}
.timeline-band.has-course{background:var(--b-card)}
.timeline-slot{position:absolute;top:var(--slot-top);height:var(--slot-height);left:calc((100% / var(--lanes)) * var(--lane) + 4px);width:calc((100% / var(--lanes)) - 8px);z-index:2;border:1px solid var(--b-line-slate-3);border-left:4px solid var(--b-line-slate-2);border-radius:9px;padding:6px 7px;box-shadow:0 2px 8px var(--b-shade-05);transition:.12s ease;overflow:hidden}
.timeline-slot:hover{z-index:4;box-shadow:0 7px 18px var(--b-shade-16-2);transform:translateY(-1px)}
.timeline-slot .slot-time{font-size:8px}
.timeline-slot strong{display:block;font-size:11px;line-height:1.1;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-slot>span{display:block;font-size:9px;color:var(--b-accent-ink);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-slot small{display:block;font-size:8px;color:var(--b-accent-ink);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.timeline-slot .slot-count{margin-top:4px;padding-top:3px;font-size:8px}
.timeline-slot .slot-count b{font-size:9px;margin-right:auto}
.timeline-slot .slot-count em{font-size:7px;padding:2px 4px}
.day-closed-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;padding:15px;background:var(--b-bg-90);color:var(--b-ink-soft);z-index:1}
.day-closed-overlay strong{font-size:13px;max-width:180px}
.day-closed-overlay span{font-size:10px}
.student-timeline-slot .student-slot-action{min-width:0;margin-top:auto;flex-wrap:wrap;align-items:flex-end;gap:4px;position:absolute;left:6px;right:6px;bottom:5px;z-index:5;width:auto;margin:0;padding:0;background:linear-gradient(to bottom,var(--b-card-0),var(--b-card-96) 28%,var(--b-card-99));padding-top:7px}
.student-timeline-slot .student-slot-action .badge{font-size:7px;padding:2px 4px;white-space:normal;line-height:1.1}
.student-timeline-slot .student-slot-action form{margin:0}
.student-timeline-slot .muted{font-size:8px}
.legend-dot.unavailable{background:var(--b-field)}
.student-weekly-timeline{min-width:1510px}
@media(max-width:1100px){
  .weekly-timeline,.student-weekly-timeline{grid-template-columns:68px repeat(6,minmax(220px,1fr));min-width:1400px}
  .timeline-axis-body,.timeline-day-body{height:620px}
}
@media(max-width:780px){
  .planning-week-actions{width:100%;justify-content:space-between}
  .planning-week-actions .btn{font-size:10px;padding:6px 7px}
  .weekly-timeline,.student-weekly-timeline{grid-template-columns:62px repeat(6,minmax(205px,1fr));min-width:1300px}
  .timeline-axis-body,.timeline-day-body{height:600px}
  .timeline-slot{padding:5px}
  .timeline-slot strong{font-size:10px}
  .timeline-slot>span{font-size:8px}
  .timeline-slot small{display:none}
  .timeline-day-sub{font-size:8px}
}
.slot-legacy{display:block;margin-top:2px;font-style:normal;font-size:7px;font-weight:850;color:var(--b-ink-amber-1);background:var(--b-bg-amber-5);border-radius:999px;padding:2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Créneaux permanents et absences/remplacements */
.slot-closed small{opacity:.8}
/* Classes lisibles + profils Première/Terminale */
.timeline-axis-body,.timeline-day-body{height:780px}
.timeline-slot strong{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15}
.timeline-slot>span.slot-audience{display:block;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.22;font-size:9px;font-weight:750;color:var(--b-accent-ink);margin-top:2px;overflow-wrap:anywhere}
.wrap-cell{white-space:normal!important;min-width:190px;line-height:1.35}
.specialty-field{padding:12px;border:1px solid var(--b-line);border-radius:11px;background:var(--b-card-2)}
@media(max-width:1100px){
  .timeline-axis-body,.timeline-day-body{height:780px}
}
@media(max-width:780px){
  .timeline-axis-body,.timeline-day-body{height:780px}
  .timeline-slot>span.slot-audience{font-size:8px;line-height:1.2}
  .timeline-slot strong{font-size:10px}
}
/* Présences et heures réelles */
.badge-danger{background:var(--b-bg-red-1);color:var(--b-ink-red-4)}
.badge-neutral{background:var(--b-bg);color:var(--b-ink-soft)}
.presence-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.presence-days{display:grid;gap:18px}
.presence-day{border-top:1px solid var(--b-line);padding-top:15px}
.presence-day:first-child{border-top:0;padding-top:0}
.presence-day-title{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.presence-session-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.presence-session{display:block;background:var(--b-card);border:1px solid var(--b-line);border-left:4px solid var(--b-line-slate-2);border-radius:11px;padding:12px;transition:.14s ease}
.presence-session:hover{background:var(--b-card-2);box-shadow:0 7px 18px var(--b-shade-08);transform:translateY(-1px)}
.presence-session-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.presence-session-head>div{min-width:0}
.presence-session-head strong{display:block;margin-top:3px;font-size:14px}
.presence-session .slot-audience{display:block;white-space:normal;line-height:1.35;font-size:12px;font-weight:750;color:var(--b-accent-ink);margin-top:7px}
.presence-session small{display:block;margin-top:5px;color:var(--b-ink-soft)}
.presence-session-stats{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:9px;border-top:1px solid var(--b-line)}
.presence-session-stats span{font-size:10px;border-radius:999px;background:var(--b-bg);padding:4px 7px;color:var(--b-ink-soft);font-weight:750}
.attendance-table .select,.attendance-table .input{min-height:34px;padding:6px 8px;font-size:12px}
.attendance-table td{vertical-align:middle}
.attendance-mini{font-style:normal;border-radius:999px}
.attendance-mini.done{background:var(--b-bg-green-4);color:var(--b-ink-green-3)}
.attendance-mini.pending{background:var(--b-bg-amber-7);color:var(--b-ink-amber-3)}
@media(max-width:1250px){
  .presence-kpis{grid-template-columns:repeat(3,1fr)}
  .presence-session-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .presence-kpis,.presence-session-grid{grid-template-columns:1fr}
  .attendance-table{min-width:980px}
}
/* Matière / classe / spécialité séparées */
.timeline-slot .slot-audience{display:block;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
.timeline-slot .slot-audience .slot-class-line,.timeline-slot .slot-audience .slot-profile-line{display:block;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.timeline-slot .slot-audience .slot-class-line{font-weight:800;color:var(--b-accent-ink)}
.timeline-slot .slot-audience .slot-profile-line{font-weight:900;color:var(--b-accent-ink);margin-top:2px}
.student-timeline-slot .slot-audience .slot-profile-line{font-size:8px}
@media(max-width:780px){
  .timeline-slot .slot-audience .slot-profile-line{font-size:8px}
  .timeline-slot .slot-audience .slot-class-line{font-size:8px}
}
/* Édition visuelle des créneaux permanents */
.permanent-toolbar-card{padding-bottom:16px}
.permanent-mode-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}
.permanent-mode-btn{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border:1px solid var(--b-line);border-radius:12px;background:var(--b-card);padding:12px 14px;color:var(--b-accent-ink);transition:.14s ease}
.permanent-mode-btn:hover{background:var(--b-card-2);border-color:var(--b-field)}
.permanent-mode-btn.active{background:var(--b-bg-slate);border-color:var(--b-line-slate-2);color:var(--b-ink-neutral-1);box-shadow:0 8px 20px var(--b-shade-16-1)}
.permanent-mode-btn>span{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;opacity:.78}
.permanent-mode-btn strong{font-size:14px}
.permanent-mode-btn small{font-size:10px;opacity:.75}
.permanent-summary-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:14px;padding-top:14px;border-top:1px solid var(--b-line)}
.permanent-status-tabs .tab{display:flex;gap:6px;align-items:center}
.permanent-status-tabs .tab span{font-size:10px;opacity:.72}
.permanent-help-inline{font-size:11px;text-align:right;max-width:610px;line-height:1.45}
.permanent-weekly-timeline{grid-template-columns:72px repeat(6,minmax(235px,1fr));min-width:1510px}
.permanent-day-head{height:44px}
.permanent-day-sub{height:24px}
.permanent-add-btn{position:absolute;right:5px;z-index:6;border:1px dashed var(--b-line-sand-2);background:var(--b-card-93);color:var(--b-accent-ink);font-size:8px;font-weight:900;padding:3px 6px;border-radius:7px;box-shadow:0 2px 7px var(--b-shade-07);transition:.12s ease}
.permanent-add-btn:hover{background:var(--b-bg-slate);border-color:var(--b-line-slate-2);color:var(--b-ink-neutral-1);transform:translateY(-1px)}
.permanent-slot{padding-right:7px}
.permanent-slot-ended{opacity:.68;filter:saturate(.65)}
.permanent-slot-archived{opacity:.52;filter:grayscale(.35)}
.permanent-slot-foot{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px;padding-top:3px;border-top:1px solid var(--b-line-slate-4)}
.permanent-slot-foot .badge{font-size:7px;padding:2px 4px}
.permanent-slot-foot em{font-size:7px;font-style:normal;color:var(--b-ink-soft);line-height:1.2}
.permanent-band.is-unavailable{background:repeating-linear-gradient(-45deg,var(--b-card-2),var(--b-card-2) 8px,var(--b-card-2) 8px,var(--b-card-2) 16px)}
.permanent-band.has-course{background:var(--b-card)}
.permanent-day .timeline-slot:hover{z-index:7}
.permanent-day .timeline-slot .slot-audience{padding-right:28px}
.btn:disabled{opacity:.48;cursor:not-allowed;filter:grayscale(.2)}
.btn:disabled:hover{background:inherit;border-color:inherit}
@media(max-width:1100px){
  .permanent-summary-row{align-items:flex-start;flex-direction:column}
  .permanent-help-inline{text-align:left;max-width:none}
  .permanent-weekly-timeline{grid-template-columns:68px repeat(6,minmax(220px,1fr));min-width:1400px}
}
@media(max-width:780px){
  .permanent-mode-switch{grid-template-columns:1fr}
  .permanent-mode-btn{grid-template-columns:auto 1fr}
  .permanent-mode-btn small{grid-column:2}
  .permanent-weekly-timeline{grid-template-columns:62px repeat(6,minmax(205px,1fr));min-width:1300px}
  .permanent-add-btn{font-size:7px;padding:3px 5px}
}
/* Calcul hebdomadaire à reporter dans Facture.net */
.billing-state-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--b-line);font-size:12px;color:var(--b-ink-soft)}
.billing-kpis{grid-template-columns:repeat(6,minmax(0,1fr))}
.billing-family-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.billing-family-card{border:1px solid var(--b-line);border-radius:12px;padding:14px;background:var(--b-card)}
.billing-family-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--b-line)}
.billing-family-head>div:first-child{min-width:0}
.billing-family-head strong{display:block;font-size:14px}
.billing-family-head small{display:block;color:var(--b-ink-soft);font-size:10px;margin-top:3px}
.billing-family-total{font-size:19px;font-weight:900;color:var(--b-accent-ink);white-space:nowrap}
.billing-family-lines{display:grid;gap:8px;margin:10px 0}
.billing-family-line{display:flex;justify-content:space-between;gap:10px;align-items:center}
.billing-family-line>div{min-width:0}
.billing-family-line strong{display:block;font-size:12px}
.billing-family-line span{display:block;font-size:10px;color:var(--b-ink-soft);margin-top:2px}
.billing-family-line em{display:inline-block;font-size:9px;font-style:normal;color:var(--b-ink-amber-3);background:var(--b-bg-amber-7);border-radius:999px;padding:2px 5px;margin-top:3px}
.billing-family-line b{font-size:12px;white-space:nowrap}
.billing-copy{width:100%;justify-content:center}
.billing-table{min-width:1250px}
.billing-row-pending{background:var(--b-bg-amber-2)}
@media(max-width:1250px){
  .billing-kpis{grid-template-columns:repeat(3,1fr)}
  .billing-family-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .billing-kpis,.billing-family-grid{grid-template-columns:1fr}
  .billing-state-row{align-items:flex-start;flex-direction:column}
}
/* Aides de saisie Facture.net */
.billing-family-line-article{align-items:flex-start}
.billing-article-name{color:var(--b-accent-ink);line-height:1.25}
.billing-article-meta{color:var(--b-accent-ink);font-size:10px}
.billing-article-meta b{font-size:10px}
.billing-article-missing{color:var(--b-ink-red-3)}
.article-ref{display:inline-block;padding:3px 7px;border-radius:999px;background:var(--b-bg-sand-1);color:var(--b-accent-ink);white-space:nowrap}
.billing-table-articles{min-width:1620px}
/* Planning neutre, accès libre et autonomie */
.timeline-slot.theme-blue,.timeline-slot.theme-gold,.timeline-slot.theme-green,.timeline-slot.theme-slate,.timeline-slot.theme-lemon,.timeline-slot.theme-cream,.timeline-slot.theme-steel{background:var(--b-card);border-left-color:var(--b-line-slate-2)}
.theme-border-blue,.theme-border-gold,.theme-border-green,.theme-border-slate,.theme-border-lemon,.theme-border-cream,.theme-border-steel{border-top-color:var(--b-line-slate-2)}
.planning-slot-neutral{background:var(--b-card);border-left-color:var(--b-line-sand-2)}
.student-timeline-slot.is-recommended{border:2px solid var(--b-line-slate-2);border-left-width:5px;box-shadow:0 6px 18px var(--b-shade-12-2);background:var(--b-card)}
.student-timeline-slot.is-autonomy-option{background:var(--b-card);border-left-color:var(--b-field)}
.slot-top-badges{display:flex;justify-content:flex-end;gap:4px;margin:-2px 0 1px}
.slot-profile-badge{font-size:7px;font-weight:900;border-radius:999px;padding:2px 5px;white-space:nowrap}
.slot-profile-badge.recommended{background:var(--b-bg-slate);color:var(--b-ink-neutral-1)}
.slot-profile-badge.autonomy{background:var(--b-bg);color:var(--b-ink-soft)}
.btn-autonomy{background:var(--b-card);border-color:var(--b-line-sand-2);color:var(--b-accent-ink)}
.btn-autonomy:hover{background:var(--b-card-2);border-color:var(--b-line-slate-2)}
.legend-dot.recommended{background:var(--b-bg-slate)}
.legend-dot.autonomy{background:var(--b-bg-sand-3)}
/* Statistiques avancées */
.stats-toolbar-card{padding-bottom:16px}
.stats-period-note{font-size:12px;color:var(--b-ink-soft);padding-top:12px;border-top:1px solid var(--b-line)}
.stats-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}
.stats-trend-grid{display:grid;gap:10px}
.stats-trend-row{display:grid;grid-template-columns:115px 1fr auto;gap:14px;align-items:center;padding:11px 0;border-bottom:1px solid var(--b-line)}
.stats-trend-row:last-child{border-bottom:0}
.stats-trend-label strong{display:block;font-size:12px}
.stats-trend-label span{display:block;color:var(--b-ink-soft);font-size:10px;margin-top:3px}
.stats-trend-bars{display:grid;gap:5px}
.stats-trend-bars>div{display:grid;grid-template-columns:80px minmax(80px,1fr) 85px;gap:8px;align-items:center;font-size:10px}
.stats-trend-bars span{color:var(--b-ink-soft)}
.stats-trend-bars i{display:block;height:7px;background:var(--b-bg-blue-3);border-radius:999px;min-width:2px}
.stats-trend-bars b{text-align:right;font-size:10px}
.stats-trend-mode{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.stat-bars{display:grid;gap:12px}
.stat-bar-row{display:grid;gap:5px}
.stat-bar-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.stat-bar-head strong{font-size:12px;min-width:0}
.stat-bar-head span{font-size:10px;color:var(--b-ink-soft);white-space:nowrap}
.stat-bar-track{height:8px;background:var(--b-bg);border-radius:999px;overflow:hidden}
.stat-bar-track i{display:block;height:100%;background:var(--b-bg-blue-3);border-radius:999px}
.stat-bar-row small{font-size:9px;color:var(--b-ink-soft)}
.stat-bars.compact{gap:9px}
.stats-two-col{align-items:start}
@media(max-width:1250px){
  .stats-kpis{grid-template-columns:repeat(3,1fr)}
  .stats-trend-row{grid-template-columns:100px 1fr}
  .stats-trend-mode{grid-column:2;justify-content:flex-start}
}
@media(max-width:780px){
  .stats-kpis{grid-template-columns:1fr}
  .stats-trend-row{grid-template-columns:1fr}
  .stats-trend-mode{grid-column:1}
  .stats-trend-bars>div{grid-template-columns:72px 1fr 74px}
}
/* Boutons d'autonomie lisibles dans les cartes étroites */
.student-timeline-slot .student-slot-action .btn{text-align:left;white-space:normal;overflow-wrap:anywhere;line-height:1.12;min-height:23px;max-width:100%;padding:3px 5px;font-size:8px}
/* Lisibilité des cartes élève dans la grille horaire */
.student-weekly-timeline{grid-template-columns:72px repeat(6,minmax(310px,1fr));min-width:1990px}
.student-weekly-timeline .timeline-axis-body,.student-weekly-timeline .timeline-day-body{height:960px}
.student-timeline-slot{display:flex;flex-direction:column;min-height:0;padding:7px 8px;overflow:hidden}
.student-timeline-slot .slot-top-badges{flex:0 0 auto;min-height:13px;margin:-1px 0 2px}
.student-timeline-slot .slot-profile-badge{font-size:7px;padding:2px 5px}
.student-timeline-slot .slot-time,.student-timeline-slot strong,.student-timeline-slot .slot-audience,.student-timeline-slot small,.student-timeline-slot .slot-count{flex:0 0 auto}
.student-timeline-slot strong{margin:2px 0 1px}
.student-timeline-slot .slot-audience{line-height:1.16}
.student-timeline-slot small{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15;overflow-wrap:anywhere}
.student-timeline-slot .slot-count{margin-top:4px;padding-top:3px}
.student-timeline-slot .student-slot-action>form:only-child{width:100%}
.student-timeline-slot .student-slot-action>form:only-child .btn{width:100%;justify-content:center;text-align:center}
@media(max-width:1100px){
  .student-weekly-timeline{grid-template-columns:68px repeat(6,minmax(295px,1fr));min-width:1880px}
  .student-weekly-timeline .timeline-axis-body,.student-weekly-timeline .timeline-day-body{height:940px}
}
@media(max-width:780px){
  .student-weekly-timeline{grid-template-columns:62px repeat(6,minmax(280px,1fr));min-width:1770px}
  .student-weekly-timeline .timeline-axis-body,.student-weekly-timeline .timeline-day-body{height:1080px}
  .student-timeline-slot{padding:6px}
  .student-timeline-slot small{display:block;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .student-timeline-slot .student-slot-action .btn{font-size:7.5px;padding:3px 4px}
}
/* Auto-création encadrée des comptes élèves */
.login-secondary-btn{width:100%;justify-content:center;margin-top:9px!important;background:var(--b-card-2)}
.register-card{width:min(680px,100%)}
.register-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.register-grid .full{grid-column:1/-1}
.registration-note{margin:16px 0 5px}
.registration-success{display:grid;gap:8px;padding:17px;border:1px solid var(--b-line-green-2);background:var(--b-bg-green-2);border-radius:12px;color:var(--b-ink-green-2)}
.registration-success strong{font-size:16px}
.registration-success span{font-size:12px;line-height:1.55}
.register-actions{margin-top:15px}
.account-request-tabs{margin-bottom:14px}
.request-table{min-width:1180px}
.request-sub{display:block;color:var(--b-ink-soft);font-size:9px;margin-top:3px}
.request-compare{display:grid;gap:3px;white-space:normal;min-width:300px}
.request-compare span{font-size:10px;color:var(--b-ink-soft)}
.request-compare em{justify-self:start;font-size:9px;font-style:normal;font-weight:850;background:var(--b-bg-amber-7);color:var(--b-ink-amber-3);border-radius:999px;padding:2px 5px}
.request-compare em.ok{background:var(--b-bg-green-4);color:var(--b-ink-green-3)}
.request-actions{flex-wrap:nowrap}
@media(max-width:780px){
  .register-grid{grid-template-columns:1fr}
  .register-grid .full{grid-column:auto}
  .register-card{width:min(500px,100%)}
  .request-table{min-width:1020px}
}
/* Espace parents / familles */
.parent-main{max-width:1500px}
.parent-child-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.parent-child-card{border:1px solid var(--b-line);border-radius:13px;padding:16px;background:var(--b-card);display:grid;gap:13px}
.parent-child-card>div:first-child strong{display:block;font-size:15px}
.parent-child-card>div:first-child span{display:block;font-size:11px;color:var(--b-ink-soft);margin-top:3px;line-height:1.35}
.parent-child-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}
.parent-child-kpis>div{background:var(--b-card);border:1px solid var(--b-line);border-radius:9px;padding:9px;text-align:center}
.parent-child-kpis b{display:block;font-size:15px}
.parent-child-kpis span{display:block;font-size:9px;color:var(--b-ink-soft);margin-top:2px}
.parent-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){
  .parent-child-grid{grid-template-columns:1fr 1fr}
  .parent-kpis{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .parent-child-grid,.parent-kpis{grid-template-columns:1fr}
  .parent-child-kpis{grid-template-columns:repeat(3,1fr)}
}
/* Checklist Facture.net */
.billing-kpis-v161{grid-template-columns:repeat(7,minmax(0,1fr))}
.billing-view-tabs{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.billing-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;margin-left:5px;border-radius:999px;background:var(--b-card-45);font-size:10px;font-weight:900}
.billing-family-card-done{border-color:var(--b-line-green-4);background:var(--b-bg-neutral-1)}
.billing-family-card-review{border-color:var(--b-line-amber-6);background:var(--b-bg-amber-1)}
.billing-check-status{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:10px 0 2px}
.billing-mark-detail{font-size:10px;color:var(--b-ink-soft)}
.billing-card-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:10px}
.billing-card-actions .billing-copy{width:auto}
.billing-card-actions .inline-form{margin:0}
.billing-checklist-head{align-items:flex-start}
@media(max-width:1450px){
  .billing-kpis-v161{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:900px){
  .billing-kpis-v161{grid-template-columns:repeat(2,1fr)}
  .billing-checklist-head{display:grid;gap:12px}
  .billing-view-tabs{justify-content:flex-start}
}
@media(max-width:560px){
  .billing-kpis-v161{grid-template-columns:1fr}
  .billing-view-tabs{display:grid;grid-template-columns:1fr}
  .billing-card-actions{display:grid}
  .billing-card-actions>*{width:100%}
  .billing-card-actions .btn{width:100%;justify-content:center}
}
/* Paiements & espace intervenants */
.staff-main{max-width:1500px}
.input-small{min-width:115px;max-width:180px}
/* Facturation native */
.invoice-selection-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.invoice-email-error{color:var(--b-ink-red-2)}
.billing-family-card .btn-primary{white-space:nowrap}
/* RIB et paiements multi-modes */
.payment-method-section{margin-top:20px;padding-top:18px;border-top:1px solid var(--b-line)}
.payment-method-section h3{margin:0 0 12px}
.payment-method-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.payment-method-option{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--b-line);border-radius:12px;padding:13px;background:var(--b-card);cursor:pointer}
.payment-method-option:has(input:checked){border-color:var(--b-line-slate-2);background:var(--b-bg-sand-1)}
.payment-method-option input{margin-top:3px}
.payment-method-option span{display:grid;gap:3px}
.payment-method-option strong{font-size:13px}
.payment-method-option small{font-size:10px;color:var(--b-ink-soft);line-height:1.35}
.payment-method-panel{display:none;margin-top:12px;border:1px solid var(--b-line);border-radius:12px;padding:14px;background:var(--b-card);gap:12px}
.payment-method-panel-active{display:grid}
.bank-details{display:grid;gap:5px;padding:12px;border:1px solid var(--b-line);border-radius:10px;background:var(--b-card)}
.bank-details strong{font-size:13px}
.bank-details span{font-size:11px;overflow-wrap:anywhere}
.payment-pending-box{border-left:4px solid var(--b-line-amber-8)}
.payment-request-list{display:grid;gap:10px}
.payment-request-card{display:grid;grid-template-columns:1fr auto;gap:8px 14px;padding:13px;border:1px solid var(--b-line);border-radius:11px;background:var(--b-bg-neutral-4)}
.payment-request-card>div:first-child{display:grid;gap:3px}
.payment-request-card>div:first-child span{font-size:10px;color:var(--b-ink-soft)}
.payment-request-invoices{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}
.payment-request-invoices span{display:inline-flex;padding:5px 8px;border-radius:999px;background:var(--b-bg);font-size:10px;font-weight:750}
.admin-payment-request-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.admin-payment-request-card{display:grid;gap:10px;border:1px solid var(--b-line-amber-6);border-radius:12px;padding:14px;background:var(--b-bg-amber-1)}
.admin-payment-request-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.admin-payment-request-head>div{display:grid;gap:3px}
.admin-payment-request-head>div span{font-size:11px;color:var(--b-ink-soft)}
@media(max-width:1050px){
  .payment-method-grid{grid-template-columns:repeat(2,1fr)}
  .admin-payment-request-grid{grid-template-columns:1fr}
}
@media(max-width:650px){
  .payment-method-grid{grid-template-columns:1fr}
  .payment-request-card{grid-template-columns:1fr}
  .payment-request-card>.badge{justify-self:start}
}
/* Restauration DA + finitions rémunérations */
.compensation-page{display:grid;gap:0}
.compensation-page .grid-kpi{grid-template-columns:repeat(4,minmax(0,1fr))}
.compensation-page .note{line-height:1.55}
.compensation-page .table-wrap{border:1px solid var(--b-line);border-radius:13px;background:var(--b-card);max-width:100%}
.compensation-page .table{min-width:1050px}
.compensation-page .table td{vertical-align:top;white-space:normal}
.compensation-page .table td:nth-child(1) strong{font-size:14px}
.compensation-page .table td:nth-child(5) strong{color:var(--b-accent-ink)}
.compensation-page .field label{font-size:10px;font-weight:800;color:var(--b-ink-soft);text-transform:uppercase;letter-spacing:.035em}
.compensation-page .flash{margin:10px 0 0}
.compensation-page .actions .btn{white-space:nowrap}
.compensation-page .section:first-child{border-top:3px solid var(--b-field)}
@media(max-width:1250px){
  .compensation-page .grid-kpi{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .compensation-page .grid-kpi{grid-template-columns:1fr}
  .compensation-page .section-head{align-items:flex-start;flex-direction:column}
  .compensation-page .actions{width:100%}
  .compensation-page .actions .btn{flex:1;justify-content:center}
}
/* Statut des heures intervenants directement sur le planning */
.timeline-slot .slot-count{flex-wrap:wrap;justify-content:flex-start}
.timeline-slot .slot-count .attendance-mini{flex:0 0 auto;white-space:nowrap}
/* Validation puis règlement des rémunérations */
.compensation-page input[type="checkbox"]{width:17px;height:17px;accent-color:var(--b-accent-ink)}
/* Vue admin des factures parents */
.invoice-admin-kpis .kpi .value{font-variant-numeric:tabular-nums}
.invoice-admin-toolbar{align-items:end}
.invoice-family-balance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.invoice-family-balance-card{display:flex;align-items:center;gap:14px;padding:14px 15px;border:1px solid var(--b-line);border-radius:13px;background:var(--b-card);min-width:0}
.invoice-family-balance-card>div:first-child{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.invoice-family-balance-card>div:first-child strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.invoice-family-balance-card>div:first-child span{font-size:12px;color:var(--b-ink-soft)}
.invoice-family-balance-amount{font-size:20px;font-weight:800;white-space:nowrap;color:var(--b-accent-ink)}
.invoice-admin-table .invoice-due-amount{color:var(--b-ink-orange-2)}
.invoice-admin-table td{vertical-align:top}
.invoice-admin-table .actions{min-width:180px}
@media(max-width:1150px){
  .invoice-family-balance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .invoice-family-balance-grid{grid-template-columns:1fr}
  .invoice-admin-toolbar{align-items:stretch}
  .invoice-family-balance-card{align-items:flex-start;flex-wrap:wrap}
}
/* Simplification de la navigation et hubs métier */
.hub-hero{display:flex;align-items:center;justify-content:space-between;gap:24px}
.hub-hero h2{margin:5px 0 7px;font-size:22px}
.eyebrow{display:block;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--b-accent-ink)}
.compact-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}
.dashboard-columns{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}
.mini-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mini-metrics div{padding:15px;border:1px solid var(--b-line);border-radius:11px;background:var(--b-card)}
.mini-metrics span{display:block;font-size:11px;color:var(--b-ink-soft);margin-bottom:5px}
.mini-metrics strong{font-size:18px}
@media(max-width:1100px){
  .compact-kpis{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .hub-hero{display:flex;flex-direction:column;align-items:stretch}
  .hub-hero .actions{margin-top:14px;width:100%}
  .dashboard-columns,.compact-kpis{grid-template-columns:1fr}
}
/* UX complète et responsive */
.mobile-nav-toggle{display:none;border:1px solid var(--b-line);background:var(--b-card);border-radius:9px;width:40px;height:40px;font-size:18px;color:var(--b-accent-ink);cursor:pointer}
.global-search{width:min(520px,46vw);display:flex;align-items:center;border:1px solid var(--b-line);border-radius:11px;background:var(--b-card);overflow:hidden;box-shadow:0 2px 12px var(--b-shade-03)}
.global-search:focus-within{border-color:var(--b-line-slate-2);box-shadow:0 0 0 3px var(--b-shade-12-1)}
.global-search input{border:0;outline:0;min-width:0;flex:1;padding:10px 9px;background:transparent}
.global-search button{border:0;border-left:1px solid var(--b-line);background:var(--b-card-2);color:var(--b-accent-ink);padding:10px 13px;font-weight:800;cursor:pointer}
.global-search button:hover{background:var(--b-bg-sand-1)}
.page-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.tabs{display:flex;gap:5px;flex-wrap:wrap;border-bottom:1px solid var(--b-line);margin:0 0 18px}
.tab{padding:10px 12px;border-radius:9px 9px 0 0;font-size:12px;font-weight:800;color:var(--b-ink-soft);border:1px solid transparent;border-bottom:0}
.tab:hover{background:var(--b-card-2);color:var(--b-accent-ink)}
.tab.active{background:var(--b-card);border-color:var(--b-line);color:var(--b-accent-ink);position:relative;top:1px}
.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:19px;height:19px;padding:0 5px;margin-left:5px;border-radius:999px;background:var(--b-bg);font-size:9px}
.entity-header{padding:20px 22px}
.entity-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.entity-title{display:flex;align-items:center;gap:13px;min-width:0}
.entity-avatar{width:48px;height:48px;border-radius:14px;background:var(--b-bg-sand-1);display:flex;align-items:center;justify-content:center;color:var(--b-accent-ink);font-size:20px;font-weight:900;flex:0 0 auto}
.entity-title h2{margin:0 0 4px;font-size:23px;line-height:1.15}
.entity-subtitle{font-size:12px;color:var(--b-ink-soft);line-height:1.45}
.entity-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:18px}
.entity-kpi{padding:13px 14px;border:1px solid var(--b-line);border-radius:11px;background:var(--b-card)}
.entity-kpi span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--b-ink-soft);font-weight:800}
.entity-kpi strong{display:block;font-size:19px;margin-top:5px}
.entity-kpi.warning strong{color:var(--b-ink-orange-2)}
.entity-kpi.success strong{color:var(--b-ink-green-1)}
.action-menu{position:relative}
.action-menu>summary{list-style:none}
.action-menu>summary::-webkit-details-marker{display:none}
.action-menu[open]>summary{background:var(--b-bg-sand-1)}
.action-menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:230px;padding:7px;background:var(--b-card);border:1px solid var(--b-line);border-radius:11px;box-shadow:0 12px 30px var(--b-shade-13-2)}
.action-menu-pop a,.action-menu-pop button{width:100%;display:flex;align-items:center;text-align:left;border:0;background:transparent;padding:9px 10px;border-radius:7px;color:var(--b-accent-ink);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.action-menu-pop a:hover,.action-menu-pop button:hover{background:var(--b-card-2)}
.action-menu-pop .danger{color:var(--b-ink-red-1)}
.action-menu-sep{height:1px;background:var(--b-bg-sand-2);margin:5px}
.overview-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:start}
.stack{display:grid;gap:18px}
.list-clean{display:grid}
.list-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--b-line)}
.list-row:last-child{border-bottom:0}
.list-row-main{min-width:0}
.list-row-main strong{display:block;font-size:13px}
.list-row-main span,.list-row-main small{display:block;color:var(--b-ink-soft);font-size:11px;margin-top:2px;line-height:1.4}
.list-row-side{text-align:right;flex:0 0 auto}
.list-row-side strong{display:block}
.list-row-side small{display:block;color:var(--b-ink-soft);font-size:10px;margin-top:3px}
.alert-card{border-color:var(--b-line-amber-3);background:var(--b-bg-amber-1)}
.inline-alert{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:10px;background:var(--b-bg-amber-4);border:1px solid var(--b-line-amber-5);color:var(--b-ink-amber-5)}
.inline-alert strong{font-size:12px}
.empty-state{padding:28px 20px;text-align:center;color:var(--b-ink-soft)}
.search-results{display:grid;gap:18px}
.search-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.search-section-head h2{font-size:16px;margin:0}
.search-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.search-card{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--b-line);border-radius:12px;background:var(--b-card)}
.search-card:hover{border-color:var(--b-field);background:var(--b-card)}
.search-card-icon{width:38px;height:38px;border-radius:10px;background:var(--b-card-2);color:var(--b-accent-ink);display:flex;align-items:center;justify-content:center;font-weight:900}
.search-card>div{min-width:0;flex:1}
.search-card strong{display:block}
.search-card span{display:block;color:var(--b-ink-soft);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-card b{color:var(--b-muted)}
.family-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.family-card{padding:16px}
.family-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.family-card h3{margin:0;font-size:15px}
.family-card .meta{font-size:11px;color:var(--b-ink-soft);margin-top:4px;line-height:1.45}
.family-card-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:13px}
.family-card-kpis div{border:1px solid var(--b-line);border-radius:9px;padding:8px;background:var(--b-card)}
.family-card-kpis span{display:block;font-size:9px;color:var(--b-ink-soft)}
.family-card-kpis strong{display:block;font-size:14px;margin-top:2px}
.family-card .actions{margin-top:12px}
.timeline-quick-filters{display:flex;gap:6px;flex-wrap:wrap}
.timeline-quick-filters .btn.active{background:var(--b-bg-slate);color:var(--b-ink-neutral-1);border-color:var(--b-line-slate-2)}
.subtle-danger-zone{border:1px dashed var(--b-line-red-2);border-radius:12px;padding:14px;background:var(--b-bg-neutral-2)}
.subtle-danger-zone h3{margin:0 0 6px;font-size:13px;color:var(--b-ink-red-5)}
.subtle-danger-zone p{font-size:11px;color:var(--b-ink-soft);margin:0 0 10px;line-height:1.45}
.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}
.status-dot.active{background:var(--b-bg-green-11)}
.status-dot.archived{background:var(--b-bg-sand-3)}
.status-dot.pending{background:var(--b-bg-amber-9)}
.status-dot.error{background:var(--b-bg-red-2)}
.compensation-page .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.compensation-page .input,.compensation-page .select{max-width:100%}
.hub-hero .actions{max-width:48%;justify-content:flex-end}
@media(max-width:1200px){
  .global-search{width:min(420px,42vw)}
  .entity-kpis{grid-template-columns:repeat(2,1fr)}
  .overview-grid{grid-template-columns:1fr}
  .hub-hero .actions{max-width:100%}
  .family-grid{grid-template-columns:1fr}
  .search-cards{grid-template-columns:1fr}
}
@media(max-width:900px){
  .topbar{padding:14px 18px;gap:12px;flex-wrap:wrap}
  .global-search{width:100%;order:2}
  .content{padding:18px}
  .entity-title-row{flex-direction:column}
  .page-actions{justify-content:flex-start}
  .search-cards{grid-template-columns:1fr}
  .compensation-page .form-grid{grid-template-columns:1fr}
}
@media(max-width:780px){
  .sidebar{transform:translateX(-100%);transition:.2s ease;box-shadow:0 0 0 var(--b-shade-00)}
  body.nav-open .sidebar{transform:translateX(0);box-shadow:12px 0 30px var(--b-shade-15)}
  .main{margin-left:0;width:100%}
  .mobile-nav-toggle{display:inline-flex;align-items:center;justify-content:center}
  .topbar h1{font-size:20px}
  .global-search button{display:none}
  .entity-kpis{grid-template-columns:1fr 1fr}
  .family-card-kpis{grid-template-columns:1fr 1fr}
  .tabs{overflow-x:auto;flex-wrap:nowrap}
  .tab{white-space:nowrap}
  .hub-hero .actions .btn{flex:1}
  .action-menu-pop{position:fixed;right:14px;left:14px;top:auto;bottom:14px}
  .compensation-page .table{min-width:900px}
}
@media(max-width:500px){
  .entity-kpis{grid-template-columns:1fr}
  .family-card-kpis{grid-template-columns:1fr}
  .content{padding:14px}
  .topbar{padding:12px 14px}
  .entity-header{padding:16px}
  .entity-avatar{width:42px;height:42px}
  .entity-title h2{font-size:20px}
}
/* Actions multiples familles + reprise historique Facture.net */
.family-bulk-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 14px;margin-bottom:12px;position:sticky;top:76px;z-index:12;box-shadow:0 5px 18px var(--b-shade-06)}
.family-bulk-select-all{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:800;cursor:pointer}
.family-bulk-select-all input,.family-card-check input{width:17px;height:17px;accent-color:var(--b-accent-ink);cursor:pointer}
.family-bulk-bar>strong{font-size:12px;color:var(--b-accent-ink)}
.family-bulk-actions{display:flex;gap:7px;flex-wrap:wrap;margin-left:auto}
.family-card-identity{display:flex;align-items:flex-start;gap:10px;min-width:0}
.family-card-check{display:flex;align-items:center;padding-top:1px;cursor:pointer}
.family-card:has(.family-select:checked){border-color:var(--b-line-sand-2);box-shadow:0 0 0 2px var(--b-shade-12-1)}
.facturenet-legacy{width:100%;border-top:1px dashed var(--b-line);padding-top:9px;margin-top:2px}
.facturenet-legacy>summary{list-style:none;width:max-content}
.facturenet-legacy>summary::-webkit-details-marker{display:none}
.facturenet-legacy[open]>summary{margin-bottom:9px}
.facturenet-legacy-form{display:grid;grid-template-columns:1.25fr 1fr .8fr auto;gap:7px;align-items:end;padding:10px;border:1px solid var(--b-line-amber-1);background:var(--b-bg-amber-2);border-radius:10px}
.facturenet-legacy-form .field{gap:4px}
.facturenet-legacy-form .field label{font-size:9px}
.facturenet-legacy-form .input{min-height:34px;padding:6px 8px;font-size:11px}
.facturenet-legacy-note{grid-column:1/-1;font-size:10px;color:var(--b-ink-amber-3);line-height:1.4}
.legacy-invoice-meta{font-size:10px;color:var(--b-ink-soft);display:inline-flex;gap:5px;flex-wrap:wrap;align-items:center}
@media(max-width:780px){
  .family-bulk-bar{top:64px;align-items:stretch}
  .family-bulk-actions{width:100%;margin-left:0}
  .family-bulk-actions .btn{flex:1;justify-content:center}
  .facturenet-legacy-form{grid-template-columns:1fr 1fr}
  .facturenet-legacy-form .btn{width:100%;justify-content:center}
}
@media(max-width:520px){
  .facturenet-legacy-form{grid-template-columns:1fr}
}
/* Chiffre d'affaires + tableaux individuels de rémunération */
.table-main-link{color:var(--text);text-decoration:none}
.table-main-link:hover{text-decoration:underline}
.row-selected{background:var(--b-card-2)}
.amount-due{color:var(--b-ink-orange-1)}
.revenue-table tfoot th{border-top:2px solid var(--b-line);background:var(--b-card-2);font-weight:900}
.revenue-table td,.revenue-table th{white-space:nowrap}
.compensation-config-form{grid-template-columns:minmax(220px,1.5fr) minmax(150px,.8fr) minmax(150px,.8fr) auto}
.compensation-detail-table{min-width:1180px}
.compensation-pay-form{display:grid;gap:7px}
.compensation-pay-form .field{margin:0}
.compensation-pay-form label{display:block;margin-bottom:3px}
.compensation-settings-disclosure summary{cursor:pointer;list-style:none}
.compensation-settings-disclosure summary::-webkit-details-marker{display:none}
.compensation-settings-disclosure summary:after{content:'+';float:right;font-size:20px}
.compensation-settings-disclosure[open] summary:after{content:'−'}
@media(max-width:1050px){
  .compensation-config-form{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
  .compensation-config-form{grid-template-columns:1fr}
  .revenue-table{min-width:760px}
}
/* Réductions de facture + avoirs */
.invoice-discount-box,.credit-note-box{position:relative}
.invoice-discount-box>summary,.credit-note-box>summary{list-style:none}
.invoice-discount-box>summary::-webkit-details-marker,.credit-note-box>summary::-webkit-details-marker{display:none}
.invoice-discount-box[open],.credit-note-box[open]{width:100%}
.invoice-discount-form,.credit-note-form{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(150px,.8fr) minmax(220px,1.4fr);gap:9px;align-items:end;margin-top:9px;padding:11px;border:1px solid var(--b-line);border-radius:10px;background:var(--b-card-2)}
.invoice-discount-form .actions,.invoice-discount-form .muted,.invoice-discount-preview{grid-column:1/-1}
.invoice-discount-preview{font-size:11px;padding:8px 10px;border-radius:8px;background:var(--b-card);border:1px solid var(--b-line)}
.credit-note-form{grid-template-columns:minmax(150px,.7fr) minmax(250px,1.5fr) auto;min-width:520px}
.credit-note-form .field{margin:0}
.credit-sub{color:var(--b-ink-amber-2)}
.invoice-admin-table .credit-note-box{display:inline-block}
.invoice-admin-table .credit-note-box[open]{display:block;margin-top:7px}
.invoice-admin-table .credit-note-form{min-width:min(560px,80vw)}
@media(max-width:780px){
  .invoice-discount-form,.credit-note-form{grid-template-columns:1fr;min-width:0}
  .invoice-discount-form .actions,.invoice-discount-form .muted,.invoice-discount-preview{grid-column:auto}
  .credit-note-form .btn{width:100%;justify-content:center}
}
/* Mensualisation autonome parents */
.subscription-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(135deg,var(--b-card) 0%,var(--b-card-2) 100%)}
.subscription-hero h2{margin:4px 0 8px;font-size:24px}
.subscription-recommended{min-width:240px;padding:18px 20px;border:1px solid var(--b-line);border-radius:14px;background:var(--b-card);display:flex;flex-direction:column;gap:4px}
.subscription-recommended span,.subscription-recommended small{color:var(--b-accent-ink)}
.subscription-recommended strong{font-size:30px;color:var(--b-accent-ink)}
.subscription-form-grid{display:grid;gap:18px;max-width:760px}
.subscription-amount-input{display:flex;align-items:center;gap:8px}
.subscription-amount-input .input{max-width:180px;font-size:22px;font-weight:800}
.subscription-amount-input span{font-weight:800;color:var(--b-accent-ink)}
.subscription-activation-points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px;border-radius:12px;background:var(--b-card-2);color:var(--b-accent-ink)}
.subscription-terms{align-items:flex-start}
.subscription-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.subscription-suggestion{display:flex;justify-content:space-between;align-items:center;gap:20px;border-color:var(--b-line-amber-2);background:var(--b-bg-amber-2)}
.subscription-suggestion h2{margin:8px 0 6px}
.subscription-suggestion p{margin:0}
.subscription-manage-grid{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:14px}
.subscription-change-form,.subscription-actions-box{border:1px solid var(--b-line);border-radius:12px;padding:16px;background:var(--b-card)}
.subscription-actions-box p{margin:7px 0 14px}
.subscription-balance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.subscription-balance-grid>div{border:1px solid var(--b-line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:6px}
.subscription-balance-grid span{color:var(--b-accent-ink);font-size:13px}
.subscription-balance-grid strong{font-size:24px}
.subscription-credit{background:var(--b-bg-green-1)}
.subscription-debit{background:var(--b-bg-orange-1)}
.subscription-review-box{margin-top:16px;padding:16px;border:1px solid var(--b-line-amber-4);border-radius:12px;background:var(--b-bg-amber-2);display:flex;justify-content:space-between;align-items:center;gap:18px}
.subscription-review-box strong{display:block;margin-top:7px}
.subscription-review-box p{margin:6px 0 0}
.subscription-home-tip{padding:8px 10px;border-radius:10px;background:var(--b-card-2);color:var(--b-accent-ink)}
.flash-info{background:var(--b-bg-blue-1);border-color:var(--b-line-blue-1);color:var(--b-accent-ink)}
.billing-family-card-monthly{border-color:var(--b-line-green-3);background:var(--b-bg-neutral-1)}
@media(max-width:900px){
  .subscription-hero,.subscription-suggestion,.subscription-review-box{align-items:flex-start;flex-direction:column}
  .subscription-kpis,.subscription-manage-grid,.subscription-balance-grid{grid-template-columns:1fr 1fr}
  .subscription-activation-points{grid-template-columns:1fr}
}
@media(max-width:620px){
  .subscription-kpis,.subscription-manage-grid,.subscription-balance-grid{grid-template-columns:1fr}
  .subscription-recommended{width:100%;min-width:0}
}
/* Simulateur de mensualisation */
.simulator-family-head{display:flex;align-items:center;justify-content:space-between;gap:18px}
.simulator-family-head h2{margin:4px 0 5px}
.simulator-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.simulator-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:16px}
.subscription-parent-preview{max-width:420px;padding:18px 20px;border:1px solid var(--b-line);border-radius:14px;background:var(--b-card);display:flex;flex-direction:column;gap:5px}
.subscription-parent-preview span,.subscription-parent-preview small{color:var(--b-accent-ink)}
.subscription-parent-preview strong{font-size:32px;color:var(--b-accent-ink)}
.inline-filters{display:flex;gap:10px;align-items:center}
.inline-filters .input{max-width:520px}
@media(max-width:900px){
  .simulator-family-head{align-items:flex-start;flex-direction:column}
  .simulator-kpis{grid-template-columns:1fr 1fr}
  .simulator-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .simulator-kpis{grid-template-columns:1fr}
  .inline-filters{align-items:stretch;flex-direction:column}
  .inline-filters .input{max-width:none}
}
/* Explication concise + FAQ mensualisation */
.subscription-explainer{padding-top:18px}
.subscription-explainer-summary{margin:0 0 14px;line-height:1.65;color:var(--b-accent-ink);max-width:950px}
.subscription-faq{border-top:1px solid var(--b-line)}
.subscription-faq details{border-bottom:1px solid var(--b-line);padding:0}
.subscription-faq summary{cursor:pointer;list-style:none;padding:13px 4px;font-weight:800;color:var(--b-accent-ink);display:flex;align-items:center;justify-content:space-between;gap:14px}
.subscription-faq summary::-webkit-details-marker{display:none}
.subscription-faq summary:after{content:'+';font-size:20px;line-height:1;color:var(--b-accent-ink);font-weight:700}
.subscription-faq details[open] summary:after{content:'−'}
.subscription-faq details p{margin:0;padding:0 32px 14px 4px;color:var(--b-accent-ink);line-height:1.55;font-size:13px}
.subscription-faq details[open] summary{color:var(--b-accent-ink)}
/* Fiche facture / workflow */
.invoice-process{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px}
.invoice-process-step{position:relative;border:1px solid var(--b-line);border-radius:14px;padding:14px;background:var(--b-card);display:flex;flex-direction:column;gap:5px;min-height:92px}
.invoice-process-step span{width:28px;height:28px;border-radius:999px;background:var(--b-bg-sand-1);display:grid;place-items:center;font-weight:800;color:var(--b-accent-ink)}
.invoice-process-step.done{border-color:var(--b-line-green-1);background:var(--b-bg-neutral-3)}
.invoice-process-step.done span{background:var(--b-bg-green-8);color:var(--b-ink-neutral-1)}
.invoice-process-step strong{font-size:.98rem}
.invoice-process-step small{color:var(--b-ink-soft)}
.invoice-detail-list{display:grid;gap:10px;margin-top:14px}
.invoice-detail-list>div{display:flex;justify-content:space-between;gap:18px;padding-bottom:10px;border-bottom:1px solid var(--b-line-sand-1)}
.invoice-detail-list span{color:var(--b-ink-soft)}
.invoice-detail-list strong{text-align:right}
.invoice-mail-compose{display:grid;gap:14px}
.invoice-mail-compose textarea.input{min-height:230px;resize:vertical;line-height:1.5}
@media(max-width:900px){
  .invoice-process{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .invoice-process{grid-template-columns:1fr}
  .invoice-detail-list>div{display:block}
  .invoice-detail-list strong{display:block;text-align:left;margin-top:4px}
}
/* Actions de réservation toujours visibles dans les cartes parent/élève */
.student-timeline-slot{padding-bottom:35px}
.student-timeline-slot.is-recommended .student-slot-action{background:linear-gradient(to bottom,var(--b-card-0),var(--b-card-96) 28%,var(--b-card-99))}
.student-timeline-slot .student-slot-action>form:only-child,.student-timeline-slot .student-slot-action>form:only-child .btn{width:100%}
@media(max-width:780px){
  .student-timeline-slot{padding:6px 6px 34px}
  .student-timeline-slot strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
  .student-timeline-slot .slot-audience .slot-class-line{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}
  .student-timeline-slot .slot-audience .slot-profile-line{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
  .student-timeline-slot .student-slot-action{left:5px;right:5px;bottom:4px}
}
/* Campagnes SMS */
.sub-row td{padding-top:4px!important;padding-bottom:12px!important;background:var(--b-card);border-top:0!important}
.sub-row .muted{font-size:11px;line-height:1.45}
/* Compte parent et comptes enfants */
.login-forgot-link{display:block;margin-top:12px;text-align:center;font-weight:700;text-decoration:none;color:var(--brand,var(--b-accent-ink))}
.parent-child-account-list{display:grid;gap:14px;margin-top:14px}
.parent-child-account-form{margin:0}
.parent-account-grid{align-items:start}
@media(max-width:760px){
  .parent-account-grid{grid-template-columns:1fr}
  .parent-child-account-form .section-head{align-items:flex-start}
}
/* Communication / QR SMS */
.communication-draft-list,.template-list{display:grid;gap:12px}
.comm-draft{padding:16px}
.comm-preview{margin-top:12px;padding:12px 14px;background:var(--b-card-2);border:1px solid var(--b-line);border-radius:12px;line-height:1.45}
.communication-message-grid{align-items:start}
.qr-sms-card{text-align:center}
.qr-sms-card .section-head{text-align:left}
.qr-box{display:flex;justify-content:center;align-items:center;min-height:280px;margin-top:14px}
.qr-box svg{max-width:100%;height:auto;border:1px solid var(--b-line);border-radius:12px;padding:10px;background:var(--b-card)}
.template-edit .field{margin-top:10px}
.template-edit code{font-size:12px;color:var(--b-accent-ink)}
@media(max-width:760px){
  .communication-message-grid{grid-template-columns:1fr}
  .qr-box{min-height:230px}
  .qr-box svg{width:220px;height:220px}
}
/* Bibliothèque de ressources pédagogiques */
.resource-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.resource-tags span{font-size:9px;text-transform:uppercase;letter-spacing:.035em;font-weight:850;color:var(--b-accent-ink);background:var(--b-card-2);padding:3px 6px;border-radius:999px}
.resource-pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin:8px 0 24px;color:var(--b-ink-soft);font-size:12px}
.resource-admin-top{align-items:start}
.resource-admin-list{display:grid}
.resource-admin-row{display:grid;grid-template-columns:52px minmax(240px,1fr) auto auto;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--b-line)}
.resource-admin-row:last-child{border-bottom:0}
.resource-admin-icon{width:48px;height:48px;border-radius:12px;background:var(--b-card-2);color:var(--b-accent-ink);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:950}
.resource-admin-main{min-width:0}
.resource-admin-main strong{display:block;font-size:14px;margin-bottom:4px}
.resource-admin-main small{display:block;color:var(--b-ink-soft);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.resource-admin-main .resource-tags{margin-bottom:5px}
.resource-admin-stats{display:flex;gap:12px;color:var(--b-ink-soft);font-size:10px;white-space:nowrap}
.resource-admin-stats b{color:var(--b-accent-ink);font-size:12px}
.resource-admin-row>.actions{justify-content:flex-end}
.resource-admin-row>.actions form{margin:0}
.resource-edit-card{border-color:var(--b-field)}
.resource-edit-card .section-head{align-items:flex-start}
@media(max-width:1100px){
  .resource-search{grid-column:1/-1}
  .resource-admin-row{grid-template-columns:48px 1fr auto}
  .resource-admin-stats{grid-column:2}
  .resource-admin-row>.actions{grid-column:3;grid-row:1/3;max-width:220px}
}
@media(max-width:700px){
  .resource-search{grid-column:auto}
  .resource-admin-top{grid-template-columns:1fr}
  .resource-admin-row{grid-template-columns:44px 1fr}
  .resource-admin-stats{grid-column:2}
  .resource-admin-row>.actions{grid-column:1/-1;grid-row:auto;justify-content:flex-start;max-width:none}
  .resource-admin-main small{white-space:normal}
}
/* Retour visuel pendant génération + anti-répétition */
@keyframes mxp-generator-spin{to{transform:rotate(360deg)}}
/* Entraînement plus fluide + codes de chapitre visibles */
#entrainement-result{scroll-margin-top:118px}
@media(max-width:620px){
  #entrainement-result{scroll-margin-top:18px}
}
/* Composited mathematics, readable Python, and print fallback. */
.mxp-math-warning{border:2px solid var(--b-line-red-3)!important;color:var(--b-ink-red-7)!important}
mjx-container{max-width:100%}
@media print{
  html,body{background:var(--b-card)!important}
  mjx-container{break-inside:avoid}
  details{display:block}
  details>summary{display:none}
}
/* Keep intrinsic formula/code widths inside narrow grid tracks, not the page. */
.mxp-math-scroll-hint{display:block;color:var(--b-accent-ink);font:11px/1.5 sans-serif;margin:1px 0 7px}
.mxp-math-scroll:focus{outline:2px solid var(--b-line-slate-2)}
@media print{
  .mxp-math-scroll-hint{display:none!important}
}
/* Coordonnées multiples et crédit familial */
.phone-editor-row{display:flex;gap:12px;align-items:end;margin:10px 0;flex-wrap:wrap}
.phone-editor-row label{flex:1;min-width:150px;font-size:14px;display:grid;gap:6px}
.phone-editor-row button{margin-bottom:2px}
.credit-ledger .mini-metrics{display:flex;flex-wrap:wrap;gap:20px}
.credit-ledger .mini-metrics>div{min-width:150px;flex:1}
.credit-ledger .mini-metrics span,.credit-ledger .mini-metrics strong{display:block}
@media(max-width:600px){
  .phone-editor-row label{min-width:100%}
  .phone-editor-row button{margin-left:auto}
}
/* Resource library: class > subject/track > chapter > documents. */
.resource-search-disclosure{margin:0 0 20px}
.resource-search-disclosure summary{cursor:pointer;color:var(--b-accent-ink);font-size:13px;padding:8px 0;width:fit-content}
.resource-search-disclosure[open] summary{margin-bottom:12px}
.resource-search-disclosure summary:focus-visible{outline:3px solid var(--b-line-slate-2);outline-offset:3px}
.resource-browser{max-width:1120px;margin:0 auto 28px}
.resource-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;list-style:none;padding:0;margin:0 0 18px;gap:8px;font-size:12px;line-height:1.7}
.resource-breadcrumb li{display:flex;align-items:baseline;gap:8px;min-width:0;overflow-wrap:anywhere}
.resource-breadcrumb li+li:before{content:"/";color:var(--b-ink-soft)}
.resource-breadcrumb a,.resource-text-link{color:var(--b-accent-ink);text-decoration:underline;text-underline-offset:3px}
.resource-breadcrumb [aria-current]{font-weight:750}
.resource-find{display:flex;align-items:end;gap:10px;margin:0 0 24px;max-width:660px}
.resource-find .field{margin:0;flex:1;min-width:0}
.resource-find label{display:block;font-size:12px;margin-bottom:7px}
.resource-find button{flex:0 0 auto;min-height:42px}
.resource-find input{width:100%;min-width:0}
.resource-browser-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:21px}
.resource-browser-heading h2{font-size:21px;line-height:1.35;margin:5px 0 8px;overflow-wrap:anywhere}
.resource-browser-heading p{margin:0;line-height:1.5;font-size:13px}
.resource-browser-heading .resource-text-link{font-size:12px;flex-shrink:0}
.resource-folders{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.resource-class-folders{grid-template-columns:repeat(3,minmax(0,1fr))}
.resource-folder{display:flex;align-items:center;gap:14px;min-width:0;padding:20px 18px;border:1px solid var(--b-line);border-radius:13px;background:var(--b-card);color:var(--b-accent-ink);text-decoration:none;transition:background .15s,border-color .15s}
.resource-folder:hover{background:var(--b-card-2);border-color:var(--b-line-sand-2)}
.resource-folder-icon{display:flex;align-items:center;justify-content:center;flex:0 0 42px;width:42px;height:42px;border-radius:11px;background:var(--b-bg);color:var(--b-accent-ink)}
.resource-folder-icon svg{width:24px;height:24px}
.resource-folder-label{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1;overflow-wrap:anywhere}
.resource-folder-label strong{font-size:15px;line-height:1.4}
.resource-class-folders .resource-folder-label strong{font-size:19px}
.resource-folder-label>span{font-size:11px;color:var(--b-ink-soft);line-height:1.5}
.resource-folder-label>small{font-size:10px;letter-spacing:.025em;color:var(--b-accent-ink);font-weight:750}
.resource-folder-arrow{color:var(--b-accent-ink);font-size:20px}
.resource-browser a:focus-visible,.resource-browser input:focus-visible,.resource-browser button:focus-visible{outline:3px solid var(--b-line-slate-2);outline-offset:3px}
.resource-documents{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.resource-document{display:flex;align-items:start;gap:14px;padding:19px;border:1px solid var(--b-line);border-radius:12px;min-width:0}
.resource-document-icon{display:flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:52px;background:var(--b-bg);color:var(--b-accent-ink);border-radius:9px;font-weight:850;font-size:11px}
.resource-document-body{min-width:0;flex:1;overflow-wrap:anywhere}
.resource-document h3{font-size:16px;line-height:1.4;margin:0 0 9px}
.resource-document p{font-size:12px;line-height:1.6;color:var(--b-ink-soft);margin:0 0 10px}
.resource-document-body>small{font-size:10px;color:var(--b-ink-soft)}
.resource-document .actions{margin-top:16px;gap:8px}
.resource-document .btn{min-height:36px}
.resource-type-links{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 20px}
.resource-type-links a{color:var(--b-accent-ink);text-decoration:none;border:1px solid var(--b-line);border-radius:999px;padding:8px 14px;font-size:12px}
.resource-type-links a[aria-current]{background:var(--b-bg-slate);color:var(--b-ink-neutral-1);border-color:var(--b-line-slate-2)}
.resource-browser-empty{padding:20px 0;line-height:1.6;color:var(--b-ink-soft)}
.resource-browser-empty h3{color:var(--b-accent-ink)}
@media(max-width:900px){
  .resource-class-folders{grid-template-columns:1fr}
  .resource-documents{grid-template-columns:1fr}
  .resource-browser-heading{align-items:start;flex-direction:column;gap:10px}
}
@media(max-width:600px){
  .resource-folders{grid-template-columns:1fr}
  .resource-browser .section{padding:18px}
  .resource-folder{padding:16px 13px;gap:11px}
  .resource-find{flex-wrap:wrap}
  .resource-find .field{flex-basis:100%}
  .resource-find button{width:100%}
  .resource-document{padding:15px;gap:10px}
  .resource-document .actions{gap:7px}
  .resource-document .btn{min-height:40px}
  .resource-document-icon{flex-basis:34px;width:34px;height:43px;font-size:10px}
  .resource-browser .resource-pagination{gap:8px}
  .resource-browser .resource-pagination .btn{padding:9px}
  .resource-browser-heading h2{font-size:19px}
}
/* Facturation : finaliser, envoyer, encaisser et retirer depuis la carte */
.billing-inline-box{position:relative}
.billing-inline-box>summary{list-style:none;cursor:pointer}
.billing-inline-box>summary::-webkit-details-marker{display:none}
.billing-inline-box[open]{width:100%;order:10}
.billing-inline-form{display:flex;flex-direction:column;gap:8px;margin-top:9px;padding:11px;border:1px solid var(--b-line);border-radius:10px;background:var(--b-card-2)}
.billing-inline-form .field{margin:0;gap:4px}
.billing-inline-form textarea.input{min-height:120px;font-size:12px;line-height:1.45}
.billing-inline-form .btn{align-self:flex-start}
.billing-inline-form .muted{font-size:11px}
.billing-inline-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btn.btn-link{background:transparent;border-color:transparent;box-shadow:none;text-decoration:underline;text-underline-offset:3px;color:var(--b-ink-soft)}
.billing-dismiss{margin-left:auto}
.billing-dismiss[open]{margin-left:0}
.billing-family-card-flash{animation:billFlash 1.6s ease}
@keyframes billFlash{0%,40%{box-shadow:0 0 0 3px #D9822B}100%{box-shadow:none}}
@media(max-width:520px){
  .billing-inline-row{grid-template-columns:1fr}
}
.billing-done-btn{border-color:#1E5B3A;color:#1E5B3A;font-weight:800}
.billing-done-btn:hover{background:#1E5B3A;color:#fff}
/* Grille des créneaux permanents : glisser-déposer, redimensionner, dupliquer, édition rapide */
body.pg-dragging{user-select:none;cursor:grabbing}
body.pg-dragging .timeline-slot{transition:none}
.timeline-slot.is-ghost{pointer-events:none;z-index:9;background:var(--b-bg-sand-1)!important;border:2px dashed var(--b-line-slate-2)!important;border-left-width:4px!important;opacity:.92;box-shadow:0 10px 24px var(--b-shade-16-1)}
.timeline-slot.is-ghost .ghost-time{position:absolute;left:4px;right:4px;bottom:4px;font-size:9px;font-weight:900;color:var(--b-accent-ink);background:var(--b-card-93);border-radius:6px;padding:2px 5px;text-align:center}
.timeline-slot.is-ghost.is-copy{background:var(--b-bg-lime)!important;border-color:#1E5B3A!important}
.timeline-slot.is-ghost.is-copy .ghost-time{color:#1E5B3A}
.timeline-slot.is-ghost.is-copy .ghost-time::before{content:"Copie · "}
.timeline-slot.is-ghost.is-invalid{background:#fbeaea!important;border-color:#b33a3a!important}
.timeline-slot.is-ghost.is-invalid .ghost-time{color:#b33a3a}
.permanent-resize{position:absolute;left:0;right:0;bottom:0;height:9px;cursor:ns-resize;z-index:3;border-radius:0 0 8px 8px}
.permanent-resize::after{content:"";position:absolute;left:50%;bottom:2px;width:26px;height:3px;margin-left:-13px;border-radius:3px;background:var(--b-line-sand-2);opacity:0;transition:.12s ease}
.permanent-slot:hover .permanent-resize::after{opacity:1}
.permanent-slot.is-focus{animation:pgFocus 1.4s ease 2;z-index:8}
@keyframes pgFocus{0%,45%{box-shadow:0 0 0 3px #D9822B,0 7px 18px var(--b-shade-16-2)}100%{box-shadow:0 2px 8px var(--b-shade-05)}}
.pg-dialog{border:0;border-radius:16px;padding:20px 22px;max-width:min(520px,calc(100vw - 32px));width:100%;box-shadow:0 24px 60px var(--b-shade-16-2)}
.pg-dialog::backdrop{background:rgba(17,24,32,.45)}
.pg-dialog h3{margin:0 0 6px;font-size:16px}
.pg-dialog .muted{font-size:11px}
.pg-dialog .actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}
.pg-dialog-wide{max-width:min(760px,calc(100vw - 32px))}
.pg-dialog-wide .form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.pg-dialog-wide .field.full{grid-column:1 / -1}
.pg-confirm-bookings{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#fff6e8;border:1px solid #f0cf9a;font-size:11px;line-height:1.45}
.pg-confirm-bookings[hidden]{display:none}
.pg-quick-more{margin-top:12px;border-top:1px solid var(--b-line);padding-top:10px}
.pg-quick-more>summary{cursor:pointer;font-size:11px;font-weight:800;color:var(--b-accent-ink)}
.pg-quick-block{margin-top:12px;padding:12px;border:1px solid var(--b-line);border-radius:12px;background:var(--b-card-2)}
.pg-quick-block .section-head{margin-bottom:8px}
.pg-quick-block form{display:inline-block;margin:0 6px 6px 0}
@media(max-width:780px){
  .pg-dialog-wide .form-grid{grid-template-columns:1fr 1fr}
}
body.mx-bureau{background:var(--b-bg);color:var(--b-ink);font-family:var(--b-sans);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;color-scheme:light}
@media screen and (prefers-color-scheme:dark){
  body.mx-bureau{color-scheme:dark}
}
/* ---------- Charte « bureau » (issue du pupitre) : redessine les écrans ci-dessus, dans l'administration et les espaces (body.mx-bureau) ---------- */
body.mx-bureau h1,body.mx-bureau h2,body.mx-bureau h3{font-family:var(--b-serif);font-weight:650;letter-spacing:-.01em}
body.mx-bureau h1{font-size:30px}
body.mx-bureau .section h2,body.mx-bureau .card h2{font-size:20px}
body.mx-bureau a{color:inherit}
body.mx-bureau .content a:not(.btn):not(.tab):not(.card):not([class*="card"]):not([class*="row"]):not([class*="item"]){color:var(--b-accent-ink)}
body.mx-bureau :focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}
.mx-skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--b-card);color:var(--b-ink);padding:10px 14px;border-radius:8px}
.mx-skip:focus{left:8px}
/* ---- menu latéral ---- */
body.mx-bureau .sidebar.mx-side{width:248px;background:var(--b-side);color:var(--b-side-ink);border-right:0;padding:20px 12px 14px;box-sizing:border-box;gap:14px;display:flex;flex-direction:column;overflow:hidden}
.mx-brand{display:flex;color:var(--b-side-ink)!important;align-items:center;gap:10px;padding:4px 8px 10px}
.mx-brand-sub{font-size:11.5px;color:var(--b-side-muted);text-transform:uppercase;letter-spacing:.08em}
.mx-nav{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:0 0 10px;scrollbar-width:thin;scrollbar-color:var(--b-side-chip) transparent}
.mx-group summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:4px 10px;font-size:11.5px;color:var(--b-side-muted);text-transform:uppercase;letter-spacing:.08em;border-radius:6px}
.mx-group summary::-webkit-details-marker{display:none}
.mx-group summary::after{content:'›';font-size:14px;transition:transform .15s;margin-left:6px}
.mx-group[open] summary::after{transform:rotate(90deg)}
.mx-group summary:hover{color:var(--b-side-ink)}
.mx-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;margin:1px 0;border-radius:8px;font-size:14.5px;color:var(--b-side-ink)!important;transition:background .12s}
.mx-link:hover{background:var(--b-side-chip)}
.mx-link.is-current{background:var(--b-side-ink);color:var(--b-side)!important;font-weight:700}
.mx-badge{flex-shrink:0;min-width:20px;text-align:center;font-size:12px;font-weight:700;border-radius:999px;padding:1px 7px;background:var(--b-side-chip);color:var(--b-side-ink)}
.mx-badge.is-alert{background:#B8322A;color:#fff}
.mx-link.is-current .mx-badge{background:var(--b-side);color:var(--b-side-ink)}
.mx-badge.is-quiet{background:transparent;border:1px solid var(--b-side-chip)}
.mx-side-foot{border-top:1px solid var(--b-side-chip);padding:12px 10px 0;display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--b-side-muted)}
.mx-side-foot a{color:var(--b-side-ink)!important;font-weight:700}
/* ---- barre du haut ---- */
body.mx-bureau .main{margin-left:248px;width:calc(100% - 248px)}
body.mx-bureau .topbar.mx-top{min-height:64px;padding:0 32px;background:var(--b-bar);border-bottom:1px solid var(--b-line);backdrop-filter:none;gap:16px}
.mx-crumbs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;font-size:14px;color:var(--b-muted);min-width:0}
.mx-crumbs a{color:var(--b-muted)!important}
.mx-crumbs a:hover{color:var(--b-ink)!important;text-decoration:underline}
.mx-crumbs b{color:var(--b-ink);font-weight:700}
.mx-crumb-sep{margin:0 4px}
body.mx-bureau .global-search.mx-search{display:flex;align-items:center;gap:8px;width:min(440px,40vw);height:40px;padding:0 6px 0 12px;border:1px solid var(--b-field);border-radius:10px;background:var(--b-card);color:var(--b-muted);box-shadow:none}
body.mx-bureau .mx-search input{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:14px;color:var(--b-ink);outline:none;height:auto;padding:0;box-shadow:none}
body.mx-bureau .mx-search button{height:30px;border:0;border-radius:7px;background:transparent;color:var(--b-muted);font:inherit;font-size:13px;font-weight:700;padding:0 8px;cursor:pointer}
body.mx-bureau .mx-search .mxp-kbd{margin-right:0}
.mx-menu-btn{display:none}
body.mx-bureau .content{padding:22px 32px 48px;max-width:1520px}
.mx-page-title{margin:0 0 18px;font-size:30px!important;line-height:1.15}
/* ---- composants existants, redessinés ---- */
body.mx-bureau .card{background:var(--b-card);border:1px solid var(--b-line);border-radius:14px;box-shadow:var(--b-shadow)}
body.mx-bureau .subcard{background:var(--b-card-2);border-color:var(--b-line)}
body.mx-bureau .kpi:before{background:var(--b-line)}
body.mx-bureau .kpi .label{color:var(--b-muted);font-family:var(--b-sans)}
body.mx-bureau .kpi .value{font-family:var(--b-serif);font-weight:650;letter-spacing:-.02em}
body.mx-bureau .muted,body.mx-bureau .help{color:var(--b-muted)}
body.mx-bureau .btn{border-radius:10px;border:1px solid var(--b-field);background:var(--b-card);color:var(--b-ink);font-family:var(--b-sans);font-weight:700;min-height:40px}
body.mx-bureau .btn:hover{background:var(--b-card-2);border-color:var(--b-muted)}
body.mx-bureau .btn-primary{background:var(--b-primary);border-color:var(--b-primary);color:var(--b-primary-ink)}
body.mx-bureau .btn-primary:hover{background:var(--b-ink-soft);border-color:var(--b-ink-soft);color:var(--b-primary-ink)}
body.mx-bureau .btn-small{min-height:32px;border-radius:8px}
body.mx-bureau .btn-tiny{min-height:0}
body.mx-bureau .btn-danger{background:var(--b-err-bg);border-color:transparent;color:var(--b-err)}
body.mx-bureau .btn-success{background:var(--b-ok-bg);border-color:transparent;color:var(--b-ok)}
body.mx-bureau .input,body.mx-bureau .select,body.mx-bureau .textarea,body.mx-bureau input[type=text],body.mx-bureau input[type=email],body.mx-bureau input[type=number],body.mx-bureau input[type=date],body.mx-bureau input[type=time],body.mx-bureau input[type=search],body.mx-bureau input[type=tel],body.mx-bureau input[type=password],body.mx-bureau select,body.mx-bureau textarea{background:var(--b-card);color:var(--b-ink);border-color:var(--b-field);border-radius:10px;font-family:var(--b-sans)}
body.mx-bureau .input:focus,body.mx-bureau .select:focus,body.mx-bureau .textarea:focus{border-color:var(--b-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--b-accent) 20%,transparent)}
body.mx-bureau .table{background:transparent}
body.mx-bureau .table-wrap{border-color:var(--b-line);border-radius:12px;background:var(--b-card)}
body.mx-bureau .table th{background:var(--b-card-2);color:var(--b-muted);border-color:var(--b-line)}
body.mx-bureau .table td{border-color:var(--b-line-soft)}
body.mx-bureau .table tbody tr:hover{background:var(--b-card-2)}
body.mx-bureau .tab{border-radius:9px;border-color:var(--b-line);background:var(--b-card);color:var(--b-ink-soft)}
body.mx-bureau .tab.active{background:var(--b-primary);border-color:var(--b-primary);color:var(--b-primary-ink)}
body.mx-bureau .note{background:var(--b-card-2);border-color:var(--b-line);color:var(--b-ink-soft)}
body.mx-bureau .flash{border-radius:12px}
body.mx-bureau .empty{color:var(--b-muted)}
body.mx-bureau .count-pill{background:var(--b-card-2);color:var(--b-ink-soft);border:1px solid var(--b-line)}
/* ---- onglets du bas (téléphone) ---- */
.mx-tabbar{display:none}
@media(max-width:900px){
  body.mx-bureau .topbar.mx-top{padding:10px 14px;flex-wrap:wrap;min-height:0;gap:8px 10px}
  body.mx-bureau .global-search.mx-search{width:100%;order:3}
  .mx-crumbs{flex:1}
  body.mx-bureau .content{padding:16px 14px 110px}
  .mx-page-title{font-size:25px!important;margin-bottom:14px}
}
@media(max-width:780px){
  body.mx-bureau .sidebar.mx-side{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);height:100%;transform:translateX(-102%);transition:transform .2s ease,visibility 0s .2s;visibility:hidden;z-index:60;box-shadow:none}
  body.mx-bureau.nav-open .sidebar.mx-side{transform:translateX(0);visibility:visible;transition:transform .2s ease;box-shadow:12px 0 40px rgba(0,0,0,.35)}
  body.mx-bureau .main{margin-left:0;width:100%}
  .mx-menu-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;border:1px solid var(--b-field);background:var(--b-card);color:var(--b-ink)}
  body.mx-bureau .mobile-nav-toggle{display:grid}
  .mx-tabbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--b-side);border-top:1px solid var(--b-side-chip);padding:6px 6px calc(8px + env(safe-area-inset-bottom))}
  .mx-tabbar a,.mx-tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;border:0;background:transparent;color:var(--b-side-muted)!important;font:inherit;font-size:12px;border-radius:10px;cursor:pointer}
  .mx-tabbar [aria-current="page"]{color:var(--b-side-ink)!important;font-weight:700}
  .mx-tab-badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:999px;background:#B8322A;color:#fff;font-size:11px}
  .mxp-pal-back{padding-top:6vh}
}
@media print{
  .mx-side,.mx-top,.mx-tabbar,.mx-skip{display:none!important}
  body.mx-bureau .main{margin:0;width:100%}
}
/* ---- éléments communs ---- */
.mx-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mx-kicker{font-size:12.5px;font-weight:700;color:var(--b-kicker);text-transform:uppercase;letter-spacing:.08em}
.mx-lead{margin:4px 0 0;font-size:15px;color:var(--b-ink-soft)}
.mx-status{flex-shrink:0;font-size:12.5px;font-weight:700;border-radius:999px;padding:4px 10px;white-space:nowrap}
.mx-status.is-todo{background:var(--b-warn-bg);color:var(--b-warn)}
.mx-status.is-done{background:var(--b-ok-bg);color:var(--b-ok)}
.mx-status.is-info{background:var(--b-card-2);color:var(--b-ink-soft);border:1px solid var(--b-line)}
.mx-status.is-full{background:color-mix(in srgb,var(--b-accent) 16%,transparent);color:var(--b-accent-ink)}
.mx-status.is-late{background:var(--b-err-bg);color:var(--b-err)}
/* ---- appel du jour ---- */
.mx-appel{display:flex;flex-direction:column;gap:16px;max-width:880px}
.mx-appel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}
.mx-appel-date{display:flex;gap:8px;align-items:center}
.mx-appel-date .input{min-height:44px}
.mx-late{padding:0}
.mx-late summary{cursor:pointer;padding:14px 16px;color:var(--b-ink)}
.mx-late summary b{color:var(--b-err)}
.mx-late ul{list-style:none;margin:0;padding:0 16px 10px}
.mx-late li{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--b-line-soft);font-size:14.5px}
.mx-late li span{color:var(--b-muted)}
.mx-session{padding:16px}
.mx-session-head{display:flex;align-items:center;gap:14px}
.mx-session-time{font-family:var(--b-serif);font-size:24px;font-weight:650;line-height:1;display:flex;flex-direction:column;min-width:64px}
.mx-session-time small{font-family:var(--b-sans);font-size:12.5px;font-weight:400;color:var(--b-muted);margin-top:4px}
.mx-session-what{flex:1;min-width:0;display:flex;flex-direction:column}
.mx-session-what b{font-size:16.5px}
.mx-session-what span{font-size:13.5px;color:var(--b-muted)}
.mx-session-tools{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
.mx-roll{list-style:none;margin:0;padding:0}
.mx-roll li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--b-line-soft)}
.mx-roll-who{min-width:0;display:flex;flex-direction:column}
.mx-roll-who b{font-size:16px}
.mx-roll-who span{font-size:13px;color:var(--b-muted)}
.mx-seg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;border:0;margin:0;padding:0;min-width:220px}
.mx-seg label{position:relative;cursor:pointer}
.mx-seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.mx-seg span{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:10px;border:1px solid var(--b-field);background:var(--b-card);color:var(--b-ink-soft);font-weight:700;font-size:15px;transition:background .1s}
.mx-seg input:focus-visible+span{outline:2px solid var(--b-accent);outline-offset:2px}
.mx-seg .is-present input:checked+span{background:#1E5B3A;border-color:#1E5B3A;color:#fff}
.mx-seg .is-absent input:checked+span{background:#8E2A22;border-color:#8E2A22;color:#fff}
.mx-session-foot{display:flex;justify-content:flex-end;padding-top:12px;border-top:1px solid var(--b-line-soft)}
.mx-save{min-height:48px!important;padding:0 22px!important;font-size:16px!important}
@media(max-width:620px){
  .mx-roll li{flex-direction:column;align-items:stretch;gap:8px}
  .mx-seg{min-width:0}
  .mx-session-foot{position:sticky;bottom:calc(76px + env(safe-area-inset-bottom));background:var(--b-card);margin:0 -16px -16px;padding:12px 16px;border-radius:0 0 14px 14px}
  .mx-save{width:100%}
}
/* ---- planning : vue agenda ---- */
.mx-viewswitch{display:inline-flex;gap:4px;padding:3px;border-radius:11px;background:var(--b-card-2);border:1px solid var(--b-line)}
.mx-viewswitch .btn{border:0;min-height:32px}
.mx-viewswitch .btn.active{background:var(--b-primary);color:var(--b-primary-ink)}
body.mx-bureau .timeline-quick-filters .btn.active{background:var(--b-primary);border-color:var(--b-primary);color:var(--b-primary-ink)}
/* Emploi du temps (app/timetable.php) : planning de l'administration, des parents et des intervenants */
.tt{--tt-axis:46px;position:relative;max-width:100%;overflow-x:auto;border:1px solid var(--b-line);border-radius:16px;background:var(--b-card);scroll-snap-type:x proximity}
.tt-grid{display:grid;grid-template-columns:var(--tt-axis) repeat(var(--tt-days),minmax(132px,1fr));min-width:calc(var(--tt-axis) + var(--tt-days) * 132px)}
.tt-corner,.tt-dh{background:var(--b-card);border-bottom:1px solid var(--b-line)}
.tt-corner{position:sticky;left:0;z-index:4}
.tt-dh{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;padding:9px 10px 8px;border-left:1px solid var(--b-line-soft);scroll-snap-align:start;scroll-margin-left:var(--tt-axis)}
.tt-dh b{font-size:15px}
.tt-dh span{font-size:13px;color:var(--b-muted)}
.tt-dh em{font-style:normal;font-size:11px;font-weight:700;padding:1px 8px;border-radius:99px;background:var(--b-bg-amber);color:var(--b-ink-amber)}
.tt-dh.is-closed em{background:var(--b-bg-red);color:var(--b-ink-red)}
.tt-dh.is-today{box-shadow:inset 0 -3px 0 var(--b-accent)}
.tt-dh.is-today b{color:var(--b-accent)}
.tt-axis{position:sticky;left:0;z-index:2;height:calc(var(--tt-n) * var(--tt-h));background:var(--b-card)}
.tt-axis span{position:absolute;right:7px;top:calc(var(--i) * var(--tt-h));transform:translateY(-50%);font-size:11.5px;color:var(--b-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.tt-axis span:first-child{transform:translateY(3px)}
.tt-axis span:last-child{transform:translateY(-100%)}
.tt-col{position:relative;height:calc(var(--tt-n) * var(--tt-h));border-left:1px solid var(--b-line-soft);background:repeating-linear-gradient(to bottom,var(--b-line-soft) 0 1px,transparent 1px var(--tt-h))}
.tt-col.is-holiday{background-color:color-mix(in srgb,var(--b-bg-amber) 55%,transparent)}
.tt-col.is-today{background-color:color-mix(in srgb,var(--b-accent) 6%,transparent)}
.tt-col.is-closed{background:repeating-linear-gradient(135deg,var(--b-line-soft) 0 8px,transparent 8px 16px)}
.tt-closed{position:absolute;top:38%;left:8px;right:8px;margin:0;text-align:center;font-weight:700;font-size:13px;color:var(--b-muted)}
.tt-now{position:absolute;left:0;right:0;z-index:2;top:calc(var(--s) * var(--tt-h));height:2px;background:var(--b-stamp);pointer-events:none}
.tt-now::before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--b-stamp)}
.tt-ev{position:absolute;z-index:1;top:calc(var(--s) * var(--tt-h) + 2px);height:calc(var(--d) * var(--tt-h) - 4px);left:calc(var(--lane) * 100% / var(--lanes) + 3px);width:calc(100% / var(--lanes) - 6px);display:flex;flex-direction:column;gap:1px;padding:5px 7px 5px 9px;border-radius:9px;border-left:4px solid var(--tt-ink);background:var(--tt-bg);color:var(--b-ink);font-size:12.5px;line-height:1.25;overflow:hidden;text-decoration:none}
a.tt-ev:hover,.tt-ev.has-more:hover,.tt-ev:focus-within{z-index:3;box-shadow:0 6px 18px var(--b-shade-15)}
.tt-ev.c-blue{--tt-bg:var(--b-bg-blue);--tt-ink:var(--b-ink-blue)}
.tt-ev.c-violet{--tt-bg:var(--b-bg-violet);--tt-ink:var(--b-ink-violet)}
.tt-ev.c-green{--tt-bg:var(--b-bg-green);--tt-ink:var(--b-ink-green)}
.tt-ev.c-red{--tt-bg:var(--b-bg-red);--tt-ink:var(--b-ink-red)}
.tt-ev.c-orange{--tt-bg:var(--b-bg-orange);--tt-ink:var(--b-ink-orange)}
.tt-ev.c-amber{--tt-bg:var(--b-bg-amber);--tt-ink:var(--b-ink-amber)}
.tt-ev.c-teal{--tt-bg:var(--b-bg-teal);--tt-ink:var(--b-ink-teal)}
.tt-ev.c-pink{--tt-bg:var(--b-bg-pink);--tt-ink:var(--b-ink-pink)}
.tt-ev.c-lime{--tt-bg:var(--b-bg-lime);--tt-ink:var(--b-ink-lime)}
.tt-t{font-size:11.5px;font-weight:700;color:var(--tt-ink);font-variant-numeric:tabular-nums}
.tt-s{font-size:13.5px;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tt-a{font-size:11.5px;color:var(--b-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tt-f{display:flex;align-items:center;gap:6px;margin-top:auto;font-size:12px;font-weight:700}
.tt-f i{flex:1;height:5px;border-radius:9px;background:var(--b-shade-15);overflow:hidden}
.tt-f i b{display:block;height:100%;background:var(--tt-ink)}
.tt-f small{font-weight:400;color:var(--b-warn)}
.tt-chips{display:flex;flex-wrap:wrap;gap:3px}
.tt-chip{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:99px;background:var(--b-card);color:var(--b-ink);white-space:nowrap}
.tt-chip.is-todo{background:var(--b-stamp);color:#fff}
.tt-chip.is-ok{background:var(--b-ok);color:#fff}
.tt-chip.is-warn{background:var(--b-warn);color:#fff}
.tt-ev.is-short .tt-a,.tt-ev.is-narrow .tt-a{display:none}
.tt-ev.is-narrow{padding:4px 4px 4px 6px;font-size:11.5px}
.tt-ev.is-narrow .tt-t{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tt-ev.is-closed{opacity:.6;background-image:repeating-linear-gradient(135deg,transparent 0 6px,var(--b-shade-15) 6px 8px)}
.tt-ev.is-past{opacity:.72}
.tt-ev.is-auto{border-left-style:dashed;background:color-mix(in srgb,var(--tt-bg) 60%,var(--b-card))}
.tt-ev.is-mine{box-shadow:inset 0 0 0 2px var(--b-ok)}
.tt-ev.is-call{box-shadow:inset 0 0 0 2px var(--b-stamp)}
.tt-open{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:1px;width:100%;height:100%;cursor:pointer}
.tt-open:focus-visible{outline:2px solid var(--b-accent);outline-offset:2px}
.tt-empty{margin:10px 2px 0;color:var(--b-muted)}
.tt-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 2px 0;font-size:13px;color:var(--b-muted)}
.tt-legend span{display:inline-flex;align-items:center;gap:6px}
.tt-legend i{width:14px;height:14px;border-radius:4px;background:var(--b-card-2);border:1px solid var(--b-line)}
.tt-legend i.is-target{background:var(--b-bg-blue);border-left:4px solid var(--b-ink-blue)}
.tt-legend i.is-mine{box-shadow:inset 0 0 0 2px var(--b-ok)}
.tt-legend i.is-holiday{background:var(--b-bg-amber)}
.tt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:12px 16px}
.tt-bar-week{display:flex;align-items:center;gap:8px}
.tt-bar-week h2{margin:0 4px;font-size:18px}
.tt-bar-week .btn[aria-label]{min-width:36px;justify-content:center;font-size:18px}
.tt-bar-stats{color:var(--b-muted)}
.tt-bar-links{display:flex;gap:6px;margin-left:auto}
.tt-dialog{width:min(440px,calc(100vw - 32px));border:0;border-radius:18px;padding:20px 22px;background:var(--b-card);color:var(--b-ink);box-shadow:0 24px 70px rgba(0,0,0,.25)}
.tt-dialog::backdrop{background:rgba(20,28,34,.45)}
.tt-x{position:absolute;top:10px;right:12px;width:34px;height:34px;border:0;border-radius:50%;background:var(--b-card-2);font-size:20px;cursor:pointer;color:var(--b-ink)}
.tt-dlg-body h3{margin:0 40px 4px 0;font-size:20px}
.tt-dlg-body p{margin:6px 0}
.tt-dlg-body form{margin-top:14px}
.tt-dlg-body .btn{width:100%;justify-content:center;min-height:44px}
@media(max-width:700px){
  .tt-grid{grid-template-columns:var(--tt-axis) repeat(var(--tt-days),minmax(150px,74vw))}
}
/* ---- actions de ligne : action principale + menu « … » ---- */
html{background:#F4F0E6}
@media screen and (prefers-color-scheme:dark){
  html{background:#1F1B16}
}
/* documents scolaires et fiches imprimables : toujours sur papier clair, lisibles aussi en mode sombre */
body.mx-bureau :is(.mxp-school-table,.mxp-school-track,.mxp-school-x,.mxp-school-point,.calc-choices span,.calc-print-document){color:#1F2A33;color-scheme:light}
.mx-row-actions{display:flex;justify-content:flex-end;align-items:center;gap:6px;white-space:nowrap}
.mx-more{position:relative}
.mx-more>summary{list-style:none;min-width:34px;justify-content:center;font-size:17px;line-height:1}
.mx-more>summary::-webkit-details-marker{display:none}
.mx-more-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:230px;max-height:calc(100vh - 16px);overflow:auto;padding:6px;border-radius:12px;background:var(--b-card);border:1px solid var(--b-field);box-shadow:0 14px 30px rgba(20,14,6,.22);display:flex;flex-direction:column;white-space:normal;text-align:left}
.mx-more-menu>a,.mx-more-danger>summary{display:block;padding:9px 12px;border-radius:8px;color:var(--b-ink)!important;font-size:14px;cursor:pointer;list-style:none}
.mx-more-menu>a:hover,.mx-more-danger>summary:hover{background:var(--b-card-2)}
.mx-more-danger{border-top:1px solid var(--b-line-soft);margin-top:4px;padding-top:4px}
.mx-more-danger>summary{color:var(--b-err)!important}
.mx-more-danger>summary::-webkit-details-marker{display:none}
.mx-more-danger form{padding:8px 12px;display:flex;flex-direction:column;gap:8px}
.mx-more-menu .credit-note-form{min-width:0;margin:0;border:0;background:transparent;padding:8px 12px}
.mx-more-menu .credit-note-form .input{width:100%}
/* ---- connexion ---- */
.mx-login{min-height:100vh;display:grid;place-items:center;padding:24px 16px;box-sizing:border-box;background:var(--b-bg)}
.mx-login-card{width:min(420px,100%);background:var(--b-card);border:1px solid var(--b-line);border-radius:18px;box-shadow:var(--b-shadow);padding:30px 28px}
.mx-login-card h1{font-size:24px;margin:0 0 6px}
.mx-login-lead{margin:0 0 18px;color:var(--b-muted)}
.mx-login-card .field{margin:12px 0}
.mx-login-card .field label{font-size:13.5px;color:var(--b-ink-soft)}
.mx-login-card .input{min-height:46px;font-size:16px}
.mx-login-card .btn{width:100%;justify-content:center;min-height:48px;margin-top:8px;font-size:16px}
.mx-login-foot{margin-top:18px;text-align:center;font-size:12.5px;color:var(--b-muted)}
.mx-more-menu .credit-note-form .field{display:flex;flex-direction:column;align-items:stretch;text-align:left}
/* ---- choix de la police (Paramètres) ---- */
.mx-fonts{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.mx-font{position:relative;display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:14px;border:1px solid var(--b-line);background:var(--b-card);cursor:pointer}
.mx-font:has(input:checked){border:2px solid var(--b-ink);padding:15px}
.mx-font input{position:absolute;top:14px;right:14px;width:18px;height:18px;accent-color:var(--b-ink)}
.mx-font-name{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--b-kicker)}
.mx-font-title{font-size:22px;font-weight:700;line-height:1.2}
.mx-font-text{font-size:15px;line-height:1.45;color:var(--b-ink-soft)}
/* Logo en pastille blanche */
.mx-logo{display:inline-flex;align-items:center;justify-content:center;background:#fff;border-radius:10px;line-height:0;flex:none;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.mx-logo img{display:block;width:auto;height:100%}
.mx-logo-bar{height:48px;padding:3px 10px;box-sizing:border-box}
.mx-logo-lg{height:84px;padding:8px 16px;box-sizing:border-box}
.mx-logo-xl{height:120px;padding:12px 22px;box-sizing:border-box;border-radius:16px}
.mx-pbrand{align-items:center!important}
.mx-login-logo{margin-bottom:18px}
body.mx-auth .login-logo{display:flex;justify-content:center;margin-bottom:10px}
body.mx-auth .login-logo .mx-logo img{filter:none;width:auto;height:100%;object-fit:contain}
@media(max-width:780px){
  .mx-phead .mx-logo-bar{height:36px;padding:3px 8px}
  .mx-pbrand .mx-brand-sub{display:none}
}
.mx-update-card{width:min(520px,100%)}
.mx-update-list{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.mx-update-list span{font-weight:700;font-size:13.5px;padding:4px 10px;border-radius:999px;background:var(--b-card-2);border:1px solid var(--b-line)}
.mx-update-done{display:flex;flex-direction:column;gap:4px;padding:12px 14px;margin:0 0 14px;border-radius:12px;background:var(--b-warn-bg);color:var(--b-ink)}
.mx-update-done span{font-size:14px;color:var(--b-ink-soft)}
.mx-update-card .btn+.btn{margin-top:8px}
/* Demandes d'entretien */
.mx-requests{display:flex;flex-direction:column;gap:14px;max-width:880px}
.mx-request{padding:18px;display:flex;flex-direction:column;gap:12px}
.mx-request-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.mx-request-head b{display:block;font-size:18px}
.mx-request-head span:not(.mx-status){font-size:13px;color:var(--b-muted)}
.mx-request-contact{display:flex;gap:8px;flex-wrap:wrap}
.mx-request-info{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px;margin:0}
.mx-request-info .full{grid-column:1/-1}
.mx-request-info dt{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--b-muted)}
.mx-request-info dd{margin:2px 0 0}
.mx-request-edit{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--b-line)}
.mx-request-edit label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--b-muted)}
.mx-request-edit label:first-child{flex:1;min-width:200px}
@media(max-width:700px){
  .mx-request-info{grid-template-columns:1fr}
  .mx-request-edit .btn{width:100%;justify-content:center}
}
/* Communication : SMS libre, parents ajoutés en étiquettes (assets/sms-free.js) */
.sms-to{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:46px;padding:6px 8px;border:1px solid var(--b-field);border-radius:10px;background:var(--b-card);cursor:text}
.sms-to:focus-within{border-color:var(--b-accent);box-shadow:0 0 0 3px var(--b-bg-blue)}
.sms-tags{display:contents}
.sms-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;border-radius:99px;background:var(--b-bg-blue);color:var(--b-ink-blue);font-size:13.5px}
.sms-tag small{color:var(--b-ink-soft);font-size:12px}
.sms-x{width:22px;height:22px;border:0;border-radius:50%;background:var(--b-card);color:var(--b-ink);cursor:pointer;line-height:1;font-size:15px}
body.mx-bureau .sms-to input{flex:1;min-width:200px;border:0;outline:0;box-shadow:none;background:none;padding:6px 4px;font-size:15px;color:var(--b-ink)}
.sms-sug{position:absolute;z-index:20;top:100%;left:0;right:0;margin:4px 0 0;padding:4px;list-style:none;background:var(--b-card);border:1px solid var(--b-line);border-radius:12px;box-shadow:0 14px 34px var(--b-shade-15);max-height:320px;overflow:auto}
.sms-opt{display:flex;flex-direction:column;padding:8px 10px;border-radius:8px;cursor:pointer}
.sms-opt span{font-size:12.5px;color:var(--b-muted)}
.sms-opt.is-on,.sms-opt:hover{background:var(--b-bg-blue)}
.sms-none{padding:8px 10px;color:var(--b-muted)}
.sms-quick{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:13px}
