/* ============ École Connect — design system ============ */
:root{
  --bg:#f5f7fa;--card:#fff;--ink:#0f1b24;--mut:#64748b;--line:#e6eaf0;
  --pri:#006093;--pri2:#004a73;--pri-soft:#e6f1f7;--on-pri:#fff;
  --ok:#15803d;--ok-bg:#e8f7ee;--warn:#b45309;--warn-bg:#fdf3e2;--bad:#b91c1c;--bad-bg:#fdecec;
  --side-a:#00395a;--side-b:#00263f;--acc:#7cc4ec;--shadow:0 1px 2px rgba(16,24,40,.05),0 6px 20px rgba(16,24,40,.05);
  --r:16px;color-scheme:light;
}
/* Apparence : CLAIR par défaut (même si le téléphone est en mode sombre) ; le mode sombre est un choix du parent (Confort de lecture) */
:root[data-mode="dark"]{--bg:#0a1116;--card:#111b22;--ink:#e8eef3;--mut:#9db0be;--line:#2a3d4b;--pri:#5db4e6;--pri2:#8cccef;--pri-soft:rgba(93,180,230,.13);--on-pri:#04141f;--ok:#4ade80;--ok-bg:rgba(74,222,128,.12);--warn:#fbbf24;--warn-bg:rgba(251,191,36,.12);--bad:#f87171;--bad-bg:rgba(248,113,113,.13);--side-a:#0d1b26;--side-b:#09131b;--shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.25);color-scheme:dark}
@media(prefers-color-scheme:dark){:root[data-mode="auto"]{--bg:#0a1116;--card:#111b22;--ink:#e8eef3;--mut:#9db0be;--line:#2a3d4b;--pri:#5db4e6;--pri2:#8cccef;--pri-soft:rgba(93,180,230,.13);--on-pri:#04141f;--ok:#4ade80;--ok-bg:rgba(74,222,128,.12);--warn:#fbbf24;--warn-bg:rgba(251,191,36,.12);--bad:#f87171;--bad-bg:rgba(248,113,113,.13);--side-a:#0d1b26;--side-b:#09131b;--shadow:0 1px 2px rgba(0,0,0,.4),0 6px 20px rgba(0,0,0,.25);color-scheme:dark}}
:root[data-contrast="1"]{--ink:#000;--mut:#33404f;--line:#b8c2cc}
:root[data-mode="dark"][data-contrast="1"]{--ink:#fff;--mut:#d3dde6;--line:#4a6173}
:root[data-size="2"]{font-size:112.5%}:root[data-size="3"]{font-size:125%}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:.9375rem/1.5 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0 0 .6rem;letter-spacing:-.01em}h1{font-size:1.5rem}h2{font-size:1.08rem}h3{font-size:.98rem}
p{margin:.35rem 0}hr{border:0;border-top:1px solid var(--line);margin:14px 0}
code{background:var(--bg);border:1px solid var(--line);padding:1px 6px;border-radius:6px;font-size:.82rem}
.ic{flex:none;vertical-align:-4px}
button,input,select,textarea{font:inherit;color:inherit}

/* ---- Formulaires ---- */
label{display:block;font-size:.78rem;font-weight:600;color:var(--mut);margin-bottom:2px}
label small{font-weight:400}
input,select,textarea{width:100%;padding:.62rem .8rem;border:1px solid var(--line);border-radius:10px;background:var(--card);margin:.2rem 0 .8rem;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--pri);box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 22%,transparent)}
input::placeholder,textarea::placeholder{color:var(--mut);opacity:.7}
input[type=checkbox]{width:auto}
textarea{resize:vertical}

/* ---- Boutons ---- */
button{cursor:pointer;border:1px solid transparent;border-radius:10px;padding:.6rem 1.05rem;background:var(--pri);color:var(--on-pri);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:transform .06s,background .15s,box-shadow .15s,border-color .15s;box-shadow:0 1px 2px rgba(0,96,147,.25)}
@media(hover:hover){button:hover{background:var(--pri2)}}button:active{transform:translateY(1px)}
button:focus-visible{outline:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 30%,transparent)}
button.sec{background:var(--card);color:var(--ink);border-color:var(--line);box-shadow:none}
button.sec:hover{background:var(--pri-soft);border-color:color-mix(in srgb,var(--pri) 35%,var(--line))}
button.sm{padding:.32rem .7rem;font-size:.82rem;border-radius:8px}
button:disabled{opacity:.5;cursor:not-allowed}
.icon-btn{background:transparent;border:0;box-shadow:none;padding:6px;color:inherit;border-radius:8px;opacity:.8}
.icon-btn:hover{background:rgba(255,255,255,.12);opacity:1}

/* ---- Cartes & grilles ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.card>h2:first-child,.card>h3:first-child{margin-bottom:.9rem}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:16px}
.two{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start}
.two>.card{margin-bottom:0}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.row>*{flex:1;min-width:140px}.row>button,.row>.pill{flex:0 0 auto;min-width:0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.stat small{color:var(--mut);font-size:.78rem;font-weight:600}.stat div{font-size:1.45rem;font-weight:700;letter-spacing:-.02em}
.mut{color:var(--mut)}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}.r{text-align:right}

/* ---- Tableaux ---- */
.tw{overflow-x:auto;margin:0 -4px;padding:0 4px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th{text-align:left;color:var(--mut);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover td,table tr:not(:first-child):hover td{background:color-mix(in srgb,var(--pri) 4%,transparent)}
th.r,td.r{text-align:right}
td small{font-size:.78rem}

/* ---- Pastilles & avatars ---- */
.badge,.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:99px;font-size:.74rem;font-weight:600;background:var(--line);color:var(--ink);white-space:nowrap}
.badge.ok,.pill.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn,.pill.warn{background:var(--warn-bg);color:var(--warn)}
.badge.bad,.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.mut{background:var(--line);color:var(--mut)}
.avatar{width:38px;height:38px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;background:var(--pri-soft);color:var(--pri)}
.avatar.lgn{width:48px;height:48px;font-size:1.1rem}

/* ---- Coquille : barre latérale (bureau) / barre du bas (mobile) ---- */
.app{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.side{background:linear-gradient(180deg,var(--side-a),var(--side-b));color:#e6f2f0;display:flex;flex-direction:column;padding:20px 14px;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:11px;align-items:center;padding:4px 8px 22px}
.brand-mark{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--acc),color-mix(in srgb,var(--acc) 70%,var(--pri)));color:#04141f;box-shadow:0 4px 14px color-mix(in srgb,var(--acc) 35%,transparent)}
.brand b{display:block;font-size:1rem;line-height:1.2;color:#fff}.brand small{color:#8fb9b3;font-size:.74rem}
.side nav{display:flex;flex-direction:column;gap:3px;flex:1;overflow-y:auto}
.side nav button{background:transparent;color:#a9c9c4;justify-content:flex-start;padding:.62rem .85rem;border-radius:10px;box-shadow:none;font-weight:500;position:relative}
.side nav button:hover{background:rgba(255,255,255,.07);color:#fff}
.side nav button.on{background:rgba(255,255,255,.13);color:#fff;font-weight:600}
.side nav button.on::before{content:"";position:absolute;left:-14px;top:9px;bottom:9px;width:4px;border-radius:0 4px 4px 0;background:var(--acc)}
nav button[data-n]:not([data-n=""])::after{content:attr(data-n);margin-left:auto;background:#ef4444;color:#fff;border-radius:99px;font-size:.7rem;font-weight:700;padding:1px 7px;line-height:1.4}
.user{display:flex;align-items:center;gap:10px;padding:12px 8px 0;border-top:1px solid rgba(255,255,255,.1);margin-top:12px}
.user .avatar{background:rgba(255,255,255,.14);color:#fff}.user b{display:block;font-size:.88rem;color:#fff;line-height:1.2}.user small{color:#8fb9b3;font-size:.74rem}
.user>div{flex:1;min-width:0}.user b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.content{min-width:0}
.topbar{display:none}
main{max-width:1180px;margin:0 auto;padding:30px 32px 48px}
.page-head{margin-bottom:22px}.page-head h1{margin:0}.page-head p{margin:2px 0 0;color:var(--mut);font-size:.9rem}

@media(max-width:900px){
  .app{display:block}
  .topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:6;background:var(--card);color:var(--ink);border-bottom:1px solid var(--line);padding:10px 16px;box-shadow:0 2px 12px rgba(16,24,40,.05)}
  .topbar .brand b{color:var(--ink)}.topbar .brand small{color:var(--mut)}.topbar .icon-btn{color:var(--ink)}.topbar .brand-mark{box-shadow:none}
  .topbar .brand{padding:0}.topbar .brand-mark{width:34px;height:34px;border-radius:10px}
  .side{position:fixed;inset:auto 0 0 0;height:auto;z-index:7;padding:0;background:var(--card);border-top:1px solid var(--line);box-shadow:0 -6px 24px rgba(16,24,40,.08)}
  .side .brand,.side .user{display:none}
  .side nav{flex-direction:row;overflow-x:auto;gap:2px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));scrollbar-width:none}
  .side nav::-webkit-scrollbar{display:none}
  .side nav button{flex:1 0 auto;min-width:68px;flex-direction:column;gap:3px;padding:.4rem .5rem;font-size:.68rem;color:var(--mut);border-radius:12px;justify-content:center}
  .side nav button:hover{background:transparent;color:var(--ink)}
  .side nav button.on{background:var(--pri-soft);color:var(--pri)}.side nav button.on::before{display:none}
  .side nav button[data-n]:not([data-n=""])::after{position:absolute;top:1px;right:10px;margin:0}
  main{padding:18px 16px 110px}
  .page-head h1{font-size:1.3rem}
}

/* ---- Connexion ---- */
.login-wrap{display:grid;grid-template-columns:1.05fr 1fr;min-height:100vh}
.login-art{background:linear-gradient(150deg,var(--side-a) 0%,color-mix(in srgb,var(--side-a) 55%,var(--side-b)) 55%,var(--side-b) 100%);color:#e6f2f0;padding:56px;display:flex;flex-direction:column;justify-content:center;gap:26px;position:relative;overflow:hidden}
.login-art::after{content:"";position:absolute;width:520px;height:520px;right:-180px;bottom:-200px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--acc) 28%,transparent),transparent 68%)}
.login-art h2{font-size:2rem;line-height:1.2;color:#fff;margin:0;max-width:440px}
.login-art ul{list-style:none;padding:0;margin:0;display:grid;gap:14px;max-width:440px;position:relative;z-index:1}
.login-art li{display:flex;gap:12px;align-items:flex-start;color:#bcd9d4}.login-art li b{color:#fff;display:block}
.login-art li .ic{background:rgba(255,255,255,.1);padding:8px;border-radius:10px;width:38px;height:38px;color:#8cccef}
.login-form{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.login-card{width:100%;max-width:380px}
.login-card .brand-mark{margin-bottom:18px}
.login-card h1{font-size:1.6rem}.login-card>p{color:var(--mut);margin:0 0 22px}
.login-card button{width:100%;padding:.72rem}
@media(max-width:900px){.login-wrap{display:block}.login-art{display:none}.login-form{min-height:100vh}}

/* ---- Tableau de bord ---- */
.kpis{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;display:flex;gap:14px;align-items:flex-start;box-shadow:var(--shadow)}
.kpi-ic{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex:none}
.kpi-ic.t-ok{background:var(--ok-bg);color:var(--ok)}.kpi-ic.t-pri{background:var(--pri-soft);color:var(--pri)}
.kpi-ic.t-bad{background:var(--bad-bg);color:var(--bad)}.kpi-ic.t-warn{background:var(--warn-bg);color:var(--warn)}
.kpi small{color:var(--mut);font-size:.78rem;font-weight:600}.kpi b{display:block;font-size:1.65rem;letter-spacing:-.02em;line-height:1.2}
.kpi em{font-style:normal;color:var(--mut);font-size:.78rem}.kpi>div:last-child{min-width:0;flex:1}
.progress{height:8px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:8px}
.progress i{display:block;height:100%;border-radius:99px;background:var(--pri);transition:width .5s}
.hb{margin:0 0 12px}.hb:last-child{margin-bottom:0}
.hb-top{display:flex;justify-content:space-between;gap:10px;font-size:.88rem;margin-bottom:5px}.hb-top b{font-variant-numeric:tabular-nums}
.hb-track{height:8px;border-radius:99px;background:var(--line);overflow:hidden}.hb-track i{display:block;height:100%;border-radius:0 4px 4px 0;background:var(--pri)}
.hb small{color:var(--mut)}
.chart{position:relative;height:190px;display:flex;align-items:flex-end;gap:10px;padding:0 0 22px 36px}
.chart .gl{position:absolute;left:36px;right:0;border-top:1px dashed var(--line)}
.chart .gl span{position:absolute;left:-36px;top:-9px;font-size:.68rem;color:var(--mut);width:30px;text-align:right}
.chart .col{flex:1;height:100%;position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:center}
.chart .col i{display:block;width:100%;max-width:46px;border-radius:5px 5px 0 0;background:color-mix(in srgb,var(--pri) 38%,transparent);min-height:3px;transition:background .15s}
.chart .col.cur i{background:var(--pri)}.chart .col:hover i{background:var(--pri)}
.chart .col span{position:absolute;bottom:-20px;font-size:.7rem;color:var(--mut);white-space:nowrap}
.chart .col::after{content:attr(data-tip);position:absolute;bottom:calc(var(--h,0%) + 6px);left:50%;transform:translateX(-50%);background:var(--ink);color:var(--card);padding:3px 8px;border-radius:6px;font-size:.74rem;font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s;z-index:3}
.chart .col:hover::after{opacity:1}
.empty{text-align:center;color:var(--mut);padding:18px 8px}
.srow{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line)}
.srow:last-child{border-bottom:0}.srow .info{flex:1;min-width:0}.srow .info b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.srow .bal{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}

/* ---- Parent ---- */
.kid{border-left:0;padding:0;overflow:hidden}
.kid-head{display:flex;align-items:center;gap:14px;padding:18px 20px;background:linear-gradient(120deg,var(--pri-soft),transparent)}
.kid-head h2{margin:0}.kid-head small{color:var(--mut)}
.kid-body{padding:6px 20px 20px}
.kid-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.kid-sum div{background:var(--bg);border-radius:12px;padding:10px 12px}.kid-sum small{display:block;color:var(--mut);font-size:.72rem;font-weight:600}.kid-sum b{font-size:1.15rem;letter-spacing:-.01em}
.kid h3{margin:18px 0 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
@media(max-width:480px){.kid-sum{grid-template-columns:1fr 1fr 1fr}.kid-sum b{font-size:1rem}}

/* ---- Bordereau de paiement ---- */
.bp-banner{margin:12px 0;padding:10px 14px;border:2px dashed var(--pri);border-radius:10px;background:color-mix(in srgb,var(--pri) 6%,#fff);color:var(--pri);text-align:center;font-weight:800;letter-spacing:.08em;text-transform:uppercase;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.bp-banner small{display:block;font-weight:500;letter-spacing:0;text-transform:none;color:#475569;font-size:.78rem;margin-top:2px}
.bp-table{width:100%;border-collapse:collapse;margin:6px 0;color:#14212b}.bp-table th{background:#f1f5f9;color:#475569;padding:7px 10px;font-size:.7rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.bp-table td{padding:8px 10px;border-bottom:1px solid #e2e8f0}.bp-table .total td{font-weight:800;font-size:1.05rem;border-top:2px solid #14212b;border-bottom:0}.bp-table tr:hover td{background:transparent}

.recov{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:16px;border-left:4px solid var(--bad)}

/* ---- Espace parent : accueil « Aujourd'hui », menu du bas, feuilles de saisie ---- */
.ph-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:14px;padding:22px 20px 18px;border-radius:24px;color:#fff;background:linear-gradient(135deg,var(--pri),color-mix(in srgb,var(--pri) 68%,var(--acc)));box-shadow:0 14px 34px color-mix(in srgb,var(--pri) 30%,transparent)}
.ph-hero::after{content:"";position:absolute;width:220px;height:220px;right:-70px;top:-90px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--acc) 40%,transparent),transparent 70%)}
.ph-hero small{display:block;font-size:.8rem;opacity:.8}.ph-hero h1{margin:2px 0 2px;font-size:1.5rem;letter-spacing:-.02em;color:#fff}.ph-hero p{margin:0;opacity:.82;font-size:.88rem}
.ph-sum{position:relative;z-index:1;align-self:flex-start;padding:7px 14px;border-radius:99px;background:rgba(255,255,255,.17);font-weight:700;font-size:.84rem;backdrop-filter:blur(6px)}
.ph-sec{margin-top:26px}.ph-sec h2{margin:0 0 10px;font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mut)}
.ph-sec-h{display:flex;align-items:center;justify-content:space-between}.ph-sec-h h2{margin:0}
.ph-todo{display:grid;gap:9px}
.ph-it,.ph-new,.pk-tile,.more-item{font:inherit;cursor:pointer;text-align:left;box-shadow:none}
.ph-it{display:flex;align-items:center;gap:12px;width:100%;min-height:62px;padding:11px 14px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--pri);border-radius:16px;font-weight:400;box-shadow:var(--shadow)}
.ph-it .ic:last-child{margin-left:auto;color:var(--mut)}
.ph-ic{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--pri-soft);color:var(--pri)}
.ph-tx{flex:1;min-width:0}.ph-tx b{display:block;font-size:.95rem;line-height:1.25}.ph-tx small{display:block;color:var(--mut);font-size:.82rem;margin-top:1px;white-space:normal}
.ph-it.bad{border-left-color:var(--bad)}.ph-it.bad .ph-ic{background:var(--bad-bg);color:var(--bad)}
.ph-it.warn{border-left-color:var(--warn)}.ph-it.warn .ph-ic{background:var(--warn-bg);color:var(--warn)}
.ph-it.ok{border-left-color:var(--ok)}.ph-it.ok .ph-ic{background:var(--ok-bg);color:var(--ok)}
.pk-grid{display:grid;gap:16px}
.pk{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}
.pk-h{display:flex;align-items:center;gap:13px;padding:16px 16px 10px}
.pk-av{flex:none;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:var(--on-pri);background:linear-gradient(135deg,var(--pri),var(--pri2));font-size:1rem}
.pk-id b{display:block;font-size:1.08rem;letter-spacing:-.01em}.pk-id small{color:var(--mut)}
.pk-st{display:flex;align-items:center;gap:8px;margin:0 16px;padding:9px 13px;border-radius:13px;font-weight:700;font-size:.86rem;background:var(--line);color:var(--mut)}
.pk-st.ok{background:var(--ok-bg);color:var(--ok)}.pk-st.warn{background:var(--warn-bg);color:var(--warn)}.pk-st.bad{background:var(--bad-bg);color:var(--bad)}
.pk-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:12px 16px 4px}
.pk-tile{display:block;min-width:0;padding:11px 10px 10px;background:var(--bg);color:var(--ink);border:0;border-radius:15px;font-weight:400}
.pk-tile small{display:block;color:var(--mut);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.pk-tile b{display:block;margin-top:3px;font-size:1.18rem;letter-spacing:-.02em;line-height:1.2}.pk-tile b span{font-size:.7rem;color:var(--mut);font-weight:600;margin-left:1px}
.pk-tile em{display:block;font-style:normal;color:var(--mut);font-size:.68rem;margin-top:2px;line-height:1.3}
.pk-bar{height:5px;border-radius:9px;background:var(--line);margin-top:7px;overflow:hidden}.pk-bar i{display:block;height:100%;background:var(--pri);border-radius:9px}
.pk-abs{margin:10px 16px 0;padding:10px 13px;background:var(--warn-bg);border-radius:15px}
.pk-abs-h{display:flex;align-items:center;gap:7px;color:var(--warn);font-size:.84rem;margin-bottom:4px}
.pk-abs-r{display:flex;align-items:center;justify-content:space-between;padding:5px 0;font-weight:600}
.link-btn{background:none;border:0;box-shadow:none;color:var(--pri);font-weight:700;padding:8px 16px;width:auto;font-size:.84rem;display:inline-flex;align-items:center;gap:6px}
.pk-abs .link-btn{padding:6px 0 0}
.pk-act{display:flex;gap:8px;padding:12px 16px 16px}.pk-act button{flex:1;min-height:46px;border-radius:14px;justify-content:center;white-space:nowrap}
.ph-news{padding:4px 14px}.ph-new{display:flex;align-items:center;gap:12px;width:100%;background:none;color:var(--ink);border:0;border-top:1px solid var(--line);padding:12px 0;font-weight:400}.ph-new:first-child{border-top:0}
.ph-new .ph-tx b{font-size:.92rem}.ph-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ef4444;margin-right:7px;vertical-align:1px}
.ab-r{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-top:1px solid var(--line)}.ab-r:first-of-type{border-top:0}.ab-r small{display:block;color:var(--mut);font-size:.8rem}
.rs-row{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
.rs{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:99px;padding:8px 13px;font-size:.84rem;font-weight:600;box-shadow:none}.rs.on{background:var(--pri-soft);border-color:var(--pri);color:var(--pri)}
.modal.sheet{align-items:flex-end;padding:0}
.modal.sheet>div{max-width:560px;width:100%;border-radius:24px 24px 0 0;padding:10px 18px calc(22px + env(safe-area-inset-bottom));animation:sheet .24s ease-out}
@keyframes sheet{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.sheet-grip{width:42px;height:4px;border-radius:9px;background:var(--line);margin:0 auto 14px}
.more-list{display:grid}.more-item{display:flex;align-items:center;gap:13px;width:100%;padding:12px 2px;background:none;color:var(--ink);border:0;border-top:1px solid var(--line);font-weight:400;border-radius:0}.more-item:first-child{border-top:0}
.more-ic{flex:none;width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:var(--pri-soft);color:var(--pri)}
.more-tx{flex:1;min-width:0}.more-tx b{display:block}.more-tx small{display:block;color:var(--mut);font-size:.78rem}
.more-n{font-style:normal;background:#ef4444;color:#fff;border-radius:99px;font-size:.72rem;font-weight:800;padding:1px 8px}.more-item .ic:last-child{color:var(--mut)}
.more-foot{display:flex;gap:8px;margin-top:14px}.more-foot button{flex:1;min-height:46px;justify-content:center}
#more{display:none}
@media(max-width:900px){
  [data-more]{display:none!important}
  .side nav:has(#more) button{flex:1 1 0;min-width:0;padding:.45rem .2rem}
  .side nav #more{display:flex}
  .side nav:has(#more) button[data-n]:not([data-n=""])::after{right:calc(50% - 22px)}
  main:has(.ph-hero){padding-top:14px}
}
@media(min-width:700px){.pk-grid{grid-template-columns:repeat(2,1fr)}}

/* ---- Réunions, sondages, transparence ---- */
.ph-h{margin:0 0 10px;font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mut)}
.mt-card{display:flex;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;margin-bottom:12px;box-shadow:var(--shadow)}.mt-card.annulee{opacity:.6}
.mt-date{flex:none;width:54px;height:60px;border-radius:14px;background:var(--pri-soft);color:var(--pri);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.mt-date b{font-size:1.45rem}.mt-date small{font-size:.72rem;text-transform:uppercase;font-weight:700;margin-top:3px}
.mt-date.big{width:60px;height:66px;background:linear-gradient(135deg,var(--pri),var(--pri2));color:var(--on-pri)}
.mt-body{flex:1;min-width:0}.mt-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:space-between}.mt-top b{font-size:1rem}
.mt-bar{display:flex;height:9px;border-radius:9px;background:var(--line);overflow:hidden;margin:10px 0 6px}.mt-bar i{display:block;height:100%}
.mt-leg{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.78rem;color:var(--mut)}.mt-leg i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}
.pl-card{margin-bottom:12px}.pl-opt{margin:10px 0 2px}.pl-l{display:flex;justify-content:space-between;gap:10px;font-size:.9rem}.pl-b{height:10px;border-radius:9px;background:var(--line);overflow:hidden;margin:4px 0}.pl-b i{display:block;height:100%;border-radius:9px;transition:width .5s}
.pl-opt.mine .pl-l{font-weight:700;color:var(--pri)}.po-i{margin:0 0 8px}
.pm-grid{display:grid;gap:14px}@media(min-width:760px){.pm-grid{grid-template-columns:repeat(2,1fr)}}
.pm{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:16px;box-shadow:var(--shadow)}
.pm-h{display:flex;gap:14px;align-items:center}.pm-t{flex:1;min-width:0}.pm-t b{display:block;font-size:1.04rem;line-height:1.25}.pm-t small{display:block;color:var(--ink);font-size:.84rem;margin-top:2px}.pm-t small.mut{color:var(--mut)}
.pm-ag{margin:12px 0 0;padding:10px 12px;background:var(--bg);border-radius:12px;font-size:.88rem;white-space:pre-wrap}
.pm-ans{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.pm-b{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:62px;padding:10px 4px;background:var(--bg);color:var(--ink);border:2px solid transparent;border-radius:15px;font-size:.78rem;font-weight:700;box-shadow:none;text-align:center;line-height:1.15}
.pm-b.on.oui{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}.pm-b.on.peut_etre{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}.pm-b.on.non{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}
.pm-ok{display:flex;align-items:center;gap:6px;margin:10px 0 0;color:var(--ok);font-size:.82rem;font-weight:600}
.pl-vote{display:grid;gap:8px;margin-top:12px}.pl-ob{min-height:50px;background:var(--bg);color:var(--ink);border:2px solid var(--line);border-radius:14px;font-weight:700;box-shadow:none;justify-content:center}.pl-ob:hover,.pl-ob:active{border-color:var(--pri);color:var(--pri)}
.pm-min summary{cursor:pointer;list-style:none}.pm-min{margin-bottom:10px}
.ph-tr{display:flex;align-items:center;gap:13px;width:100%;text-align:left;font:inherit;min-height:66px;padding:12px 14px;background:linear-gradient(120deg,var(--pri-soft),var(--card));color:var(--ink);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);font-weight:400;cursor:pointer}.ph-tr .ic:last-child{margin-left:auto;color:var(--mut)}
.tf-bar{display:flex;height:16px;border-radius:99px;overflow:hidden;background:var(--line);margin:14px 0 12px}.tf-bar i{display:block;height:100%}
.tf-leg{display:grid;gap:8px}.tf-leg>div{display:flex;align-items:center;gap:9px;font-size:.88rem}.tf-dot{flex:none;width:11px;height:11px;border-radius:50%}.tf-l{flex:1;min-width:0}.tf-leg em{font-style:normal;color:var(--mut);font-size:.78rem;width:38px;text-align:right}
.tr-row{display:flex;gap:8px;align-items:center;margin-bottom:6px}.tr-row .tl{margin:0;flex:1}.tr-row .tp{display:flex;align-items:center;gap:4px;width:92px}.tr-row .tpv{margin:0}
.chip-b{border-radius:99px;font-size:.74rem;padding:.25rem .6rem}

/* ---- Vie de l'élève : agenda, devoirs, sorties, courbes, installation ---- */
.ag-row{display:flex;gap:13px;align-items:center;padding:12px 0;border-top:1px solid var(--line);width:100%;text-align:left;font:inherit;background:none;color:var(--ink);font-weight:400;border-left:0;border-right:0;border-bottom:0;border-radius:0;box-shadow:none}.ag-row:first-child{border-top:0}
.ag-link{cursor:pointer}.ag-d{flex:none;width:46px;height:50px;border-radius:13px;background:var(--pri-soft);color:var(--pri);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.ag-d b{font-size:1.2rem}.ag-d small{font-size:.66rem;text-transform:uppercase;font-weight:700;margin-top:3px}.ag-d.past{background:var(--line);color:var(--mut)}
.ag-t{flex:1;min-width:0}.ag-t b{font-size:.94rem}.ag-t small{display:block;font-size:.82rem;margin-top:2px;white-space:normal}.ev-k{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:99px;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);margin-left:4px;vertical-align:1px}
.hw-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--line)}.hw-row:first-child{border-top:0}.hw-row.done .ag-t{opacity:.55}.hw-row.done .ag-t b{text-decoration:line-through}
.hw-ck{flex:none;width:30px;height:30px;min-height:0;padding:0;border-radius:50%;background:var(--card);border:2px solid var(--line);color:#fff;box-shadow:none;justify-content:center;margin-top:1px}.hw-ck.on{background:var(--ok);border-color:var(--ok)}
.pk-res{border:1px solid var(--line);border-radius:16px;padding:8px 12px;margin-top:10px}.pk-who{display:grid;gap:8px;margin:4px 0 8px}
.pk-p{display:block;width:100%;text-align:left;min-height:54px;padding:10px 14px;background:var(--pri-soft);color:var(--ink);border:2px solid transparent;border-radius:14px;box-shadow:none;font-weight:400}.pk-p b{display:block}.pk-p small{color:var(--mut)}.pk-p:active,.pk-p:hover{border-color:var(--pri)}
.pk-other summary{cursor:pointer;color:var(--pri);font-weight:700;font-size:.88rem;padding:6px 0}
.pg-hero{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:flex-end;padding:18px;border-radius:22px;margin-bottom:14px;background:linear-gradient(135deg,var(--pri),color-mix(in srgb,var(--pri) 68%,var(--acc)));color:#fff}.pg-hero small{display:block;opacity:.8;font-size:.76rem}.pg-hero b{font-size:2rem;letter-spacing:-.03em}.pg-hero b span{font-size:.9rem;opacity:.75;margin-left:2px}.pg-hero b.mut{opacity:.85;color:#fff}
.pg-diff{flex-basis:100%;font-weight:700;font-size:.88rem;padding:7px 12px;border-radius:99px;background:rgba(255,255,255,.17);align-self:flex-start;width:fit-content}
.pg-chart{width:100%;height:auto;display:block;margin-top:6px}.pg-b{position:relative;height:10px;border-radius:9px;background:var(--line);margin:4px 0 8px}.pg-b i{display:block;height:100%;border-radius:9px}.pg-b u{position:absolute;top:-3px;width:3px;height:16px;background:var(--ink);border-radius:2px;text-decoration:none;opacity:.65}
.ph-inst{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;background:var(--pri-soft);border:1px solid color-mix(in srgb,var(--pri) 25%,transparent)}.ph-inst .icon-btn{color:var(--mut)}
.more-g{margin:16px 0 4px;font-size:.74rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mut)}.more-install{background:var(--pri-soft);border-radius:16px;padding:12px;border:0;margin-top:4px}
.inst-steps{padding-left:22px;line-height:1.7;margin:0 0 14px}.modal.sheet>div{max-height:88vh}

/* ---- Application sur téléphone : tableaux en fiches, boutons et champs au pouce, cartes cliquables ---- */
.kpi-go,.ov-go{cursor:pointer;transition:transform .08s,box-shadow .15s}.kpi-go:active,.ov-go:active{transform:scale(.99)}.kpi-go:hover,.ov-go:hover{box-shadow:0 8px 24px rgba(16,24,40,.1)}
.kpi-go:focus-visible,.ov-go:focus-visible{outline:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 35%,transparent)}
@media(min-width:901px){.pbar.staff{display:none}}
@media(max-width:900px){
  button{min-height:44px}.sm,button.sm{min-height:38px}.icon-btn{min-height:0}
  input,select,textarea{font-size:1rem;min-height:46px}textarea{min-height:90px}input[type=checkbox],input[type=radio]{min-height:0}
  .kpis{grid-template-columns:1fr 1fr}.kpi{padding:12px;gap:10px}.kpi b{font-size:1.25rem}
  .two{grid-template-columns:1fr}.card{padding:16px}.row>*{min-width:120px}
}
@media(max-width:700px){
  .tw:has(table.rt){overflow:visible;margin:0;padding:0}
  table.rt{display:block;width:100%;border:0}.rt tbody{display:block}.rt tr.rt-h{display:none}
  .rt tr{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:6px 14px;margin:0 0 10px;box-shadow:var(--shadow)}
  .rt td{display:flex;justify-content:space-between;align-items:center;gap:14px;border:0!important;padding:7px 0;text-align:right;min-height:0;word-break:break-word}
  .rt td+td{border-top:1px solid var(--line)!important}
  .rt td::before{content:attr(data-label);flex:none;max-width:42%;text-align:left;color:var(--mut);font-weight:600;font-size:.76rem}
  .rt td[data-label=""]::before{display:none}.rt td[data-label=""]{justify-content:flex-end}
  .rt td:empty{display:none}.rt td>*{max-width:100%}.rt td .row{justify-content:flex-end}
  .rt td.r{text-align:right}.rt td input,.rt td select{width:auto;max-width:60%;margin:0}
  .rt td small{display:block}
}

/* ---- Navigation parent : retour, éléments « vus », page Plus, notes en échec ---- */
.pbar{margin:-4px 0 10px}.pback{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:.4rem .9rem .4rem .5rem;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:99px;font-weight:700;box-shadow:none}.pback:hover,.pback:active{background:var(--pri-soft);color:var(--ink)}
.ph-row{position:relative}.ph-row .ph-it{padding-right:62px}
.ph-x{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:42px;height:42px;min-height:0;padding:0;border-radius:50%;background:var(--card);color:var(--ok);border:2px solid var(--line);box-shadow:none;justify-content:center;font-size:1.1rem;font-weight:800}
.ph-x:hover,.ph-x:active{background:var(--ok-bg);color:var(--ok);border-color:var(--ok)}
.ph-row.is-seen .ph-it{opacity:.55}.ph-row.is-seen .ph-x{color:var(--mut)}
.ph-sum{border:0;color:#fff;cursor:pointer;font:inherit;font-weight:700;font-size:.84rem;text-align:left}
.pk-h{display:flex;align-items:center;gap:13px;width:100%;text-align:left;background:none;color:var(--ink);border:0;box-shadow:none;border-radius:0;padding:16px 16px 10px;font-weight:400}.pk-h .pk-id{flex:1;min-width:0}.pk-h .ic:last-child{color:var(--mut)}
.pk-st{width:calc(100% - 32px);margin:0 16px;border:0;cursor:pointer;text-align:left;justify-content:flex-start;box-shadow:none}.pk-st .ic:last-child{margin-left:auto}
.pk-tile b.bad,.pk-tile b.bad span{color:var(--bad)}
.bad{color:var(--bad)}.bul .bad{color:#b91c1c;font-weight:800}
.pm-ag b{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin-bottom:3px}.pm-ag p{margin:0}
.fk-hi{background:var(--pri-soft)!important;transition:background 1s}
.more-list{padding:2px 14px}
.pref{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}.pref:first-of-type{border-top:0}.pref>span{flex:1;min-width:0}.pref b{display:block}.pref small{display:block;color:var(--mut);font-size:.8rem}
.swt{appearance:none;-webkit-appearance:none;flex:none;width:52px;height:30px;margin:0;padding:0;border-radius:99px;background:var(--line);position:relative;cursor:pointer;transition:background .15s;border:0}
.swt::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .15s}.swt:checked{background:var(--ok)}.swt:checked::after{transform:translateX(22px)}

/* ---- Barre du haut (blanche) et menu du bas : comme avant ; le nom de l'école ne passe jamais à la ligne ---- */
@media(max-width:900px){
  .topbar .brand{min-width:0;flex:1}.topbar .brand>div{min-width:0}.topbar .brand b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
  .topbar>span{display:flex;flex:none;align-items:center;flex-wrap:nowrap}
  /* Barre du haut et menu du bas de même hauteur */
  :root{--bar-h:70px}
  .topbar{min-height:calc(var(--bar-h) + env(safe-area-inset-top));padding-top:calc(10px + env(safe-area-inset-top));padding-bottom:10px;align-items:center}
  .side{height:calc(var(--bar-h) + env(safe-area-inset-bottom))}
  .side nav{height:100%;align-items:center}
  .side nav button{height:calc(var(--bar-h) - 14px);padding-top:.3rem;padding-bottom:.3rem;line-height:1.15}
  /* Menu du bas aux couleurs de l'école */
  .side{background:color-mix(in srgb,var(--pri) 9%,var(--card));border-top:1px solid color-mix(in srgb,var(--pri) 22%,var(--line))}
  .side nav button{color:color-mix(in srgb,var(--ink) 68%,transparent)}
  .side nav button.on{background:var(--pri);color:var(--on-pri)}
}
/* ---- Page d'un enfant et cartes de frais aérées ---- */
.kd-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:26px 20px 22px;border-radius:26px;margin-bottom:22px;color:#fff;background:linear-gradient(135deg,var(--pri),color-mix(in srgb,var(--pri) 68%,var(--acc)));box-shadow:0 14px 34px color-mix(in srgb,var(--pri) 28%,transparent)}
.kd-hero h1{margin:8px 0 0;color:#fff;font-size:1.55rem;letter-spacing:-.02em}.kd-hero p{margin:0;opacity:.9}
.pk-av.xl{width:76px;height:76px;font-size:1.5rem;background:#fff;color:var(--pri);box-shadow:0 8px 22px rgba(0,0,0,.18),0 0 0 5px rgba(255,255,255,.25)}
.kd-st{display:inline-flex;align-items:center;gap:8px;margin-top:14px;padding:9px 16px;border-radius:99px;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.35);font-weight:700;font-size:.9rem}
.kd-sec{margin:0 0 24px}.kd-sec>h3{margin:0 0 12px;font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--mut)}
.kd-card{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:var(--shadow);font-weight:400;color:var(--ink)}
.kd-link{display:flex;align-items:center;gap:14px}.kd-link .ic:last-child{margin-left:auto;color:var(--mut)}
.kd-avg{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.kd-avg small{display:block;color:var(--mut);font-weight:600;font-size:.8rem}.kd-avg b{font-size:2.3rem;letter-spacing:-.03em;line-height:1.1}.kd-avg b span{font-size:1rem;color:var(--mut);font-weight:600;margin-left:3px}.kd-avg b.bad{color:var(--bad)}
.kd-warn{display:flex;align-items:center;gap:8px;margin:14px 0 0;padding:10px 14px;border-radius:14px;background:var(--bad-bg);color:var(--bad);font-weight:600;font-size:.88rem}
.kd-subs{margin-top:16px}.kd-subs>div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.kd-subs b{font-variant-numeric:tabular-nums}.kd-subs b.bad{color:var(--bad)}
.kd-btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:18px}.kd-btns button{min-height:50px;border-radius:14px;justify-content:center}
.kd-hw{padding:12px 0;border-top:1px solid var(--line)}.kd-hw:first-child{border-top:0;padding-top:0}.kd-hw b{display:block}.kd-hw small{color:var(--mut)}
.kd{margin-bottom:30px}
.kd-h{display:flex;align-items:center;gap:14px;margin-bottom:20px}.kd-h>div{flex:1;min-width:0}.kd-h h2{margin:0;font-size:1.25rem;letter-spacing:-.01em}.kd-h small{color:var(--mut)}
.kd .kd-sec{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:var(--shadow)}
.kd-money{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.kd-money>div{background:var(--bg);border-radius:16px;padding:14px 12px}.kd-money small{display:block;color:var(--mut);font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.kd-money b{display:block;margin-top:4px;font-size:1.2rem;letter-spacing:-.02em}
.kd-pr{height:10px;margin:18px 0 8px}.kd-pc{margin:0 0 6px;color:var(--mut);font-size:.88rem}
.kd-lines{margin-top:12px}.kd-line{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 0;border-top:1px solid var(--line)}.kd-ln{min-width:0}.kd-ln b{display:block;font-size:1rem}.kd-ln small{display:block;color:var(--mut);font-size:.82rem;margin-top:4px;line-height:1.45}
.kd-la{text-align:right;flex:none}.kd-la b{display:block;font-size:1.05rem;font-variant-numeric:tabular-nums}.kd-la small{display:block;margin-top:4px;font-size:.82rem;font-weight:700}
.kd-note{display:flex;align-items:center;gap:8px;margin:14px 0 0}.kd-act{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:18px}.kd-act button{min-height:52px;border-radius:15px;justify-content:center}.kd-hint{margin:12px 0 0;color:var(--mut);font-size:.84rem;line-height:1.5}
.kd-days{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}.kd-day{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:14px;background:var(--ok-bg);color:var(--ok)}.kd-day b{font-size:.88rem;color:var(--ink)}.kd-day i{font-style:normal;font-size:.78rem;font-weight:700}.kd-day.absent{background:var(--bad-bg);color:var(--bad)}.kd-day.retard{background:var(--warn-bg);color:var(--warn)}
.kd-pay{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.kd-pay:first-of-type{border-top:0}.kd-pay>div:first-child{flex:1;min-width:0}.kd-pay b{display:block}.kd-pay small{color:var(--mut);font-size:.82rem}.kd-pa{text-align:right;flex:none}.kd-pa b{white-space:nowrap}.kd-pa .pill{margin-top:4px}

/* ---- Transport scolaire ---- */
.bus-top{display:grid;gap:10px;margin-bottom:12px}
.bus-line{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:16px;background:var(--pri-soft);color:var(--ink);margin-bottom:12px}.bus-line .ic{color:var(--pri);margin-top:2px}.bus-line b{display:block}.bus-line small{display:block;color:var(--mut);font-size:.82rem}
.bus-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.bus-sum span{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:8px 6px;text-align:center;font-size:.72rem;color:var(--mut)}.bus-sum b{display:block;font-size:1.3rem;color:var(--ink)}.bus-sum .ok b{color:var(--ok)}.bus-sum .bad b{color:var(--bad)}
.bus-all{width:100%;min-height:58px;margin-bottom:14px;border-radius:18px;font-size:1.05rem;font-weight:800;background:linear-gradient(135deg,var(--ok),color-mix(in srgb,var(--ok) 70%,#000));color:#fff}
.bus-r{background:var(--card);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:18px;padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
.bus-r.monte,.bus-r.arrive,.bus-r.depose{border-left-color:var(--ok)}.bus-r.absent{border-left-color:var(--bad)}
.bus-id{display:flex;align-items:center;gap:12px}.bus-id>div{flex:1;min-width:0}.bus-id b{display:block}.bus-id small{display:block;color:var(--mut);font-size:.8rem}
.bus-when{margin:8px 0 0;font-size:.86rem;color:var(--mut)}
.bus-act{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.bus-act button{min-height:52px;font-size:.98rem;justify-content:center;border-radius:14px}.bus-act .link-btn{min-height:40px}
.pk-bus{display:flex;align-items:center;gap:8px;width:calc(100% - 32px);margin:8px 16px 0;padding:9px 13px;border-radius:13px;background:var(--pri-soft);color:var(--ink);border:0;box-shadow:none;font-weight:600;font-size:.86rem;text-align:left;justify-content:flex-start}.pk-bus .ic:first-child{color:var(--pri)}.pk-bus .ic:last-child{margin-left:auto;color:var(--mut)}.pk-bus span{flex:1;min-width:0}
.tl-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tl-cols h5{margin:0 0 6px;font-size:.84rem}
.tl{list-style:none;margin:0;padding:0 0 0 12px;border-left:2px solid var(--line)}.tl-i{position:relative;padding:0 0 12px 14px}.tl-i .tl-dot{position:absolute;left:-19px;top:3px;width:12px;height:12px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--card)}.tl-i.absent .tl-dot{background:var(--bad)}.tl-i.none .tl-dot{background:var(--line)}
.tl-i b{display:block;font-size:.88rem;line-height:1.25}.tl-i small{color:var(--mut);font-size:.78rem}
.tr-trip{border-top:1px solid var(--line);padding:8px 0}.tr-trip summary{cursor:pointer;padding:6px 0}
@media(max-width:380px){.tl-cols{grid-template-columns:1fr}}

/* ---- Choix de la couleur d'une école ---- */
button.sw{width:34px;height:34px;min-height:0;padding:0;border-radius:50%;border:3px solid var(--card);box-shadow:0 0 0 1px var(--line);cursor:pointer}
button.sw.on{box-shadow:0 0 0 2px var(--ink)}button.sw:hover{filter:none;transform:scale(1.08)}
.sw-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:6px}.sw-row input[type=color]{width:42px;height:34px;padding:2px;margin:0;border-radius:8px}

/* ---- Communiqués côté parent et convocations ---- */
.news-item{display:flex;gap:12px;padding:14px 0;border-top:1px solid var(--line)}.news-item:first-of-type{border-top:0;padding-top:4px}
.news-ic{flex:none;width:38px;height:38px;border-radius:50%;background:var(--line);display:grid;place-items:center;font-size:1.15rem}
.news-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.news-top b{font-size:1rem}
.news-body{white-space:pre-wrap;margin:.35rem 0 .45rem;line-height:1.5}
.news-item.conv .news-ic{background:var(--warn-bg)}
.conv-row{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line)}.conv-row:first-of-type{border-top:0}

/* ---- Navigation guidée : sommaire de page, halo de mise en évidence, bandeau d'étape ---- */
[data-anchor]{scroll-margin-top:84px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:.9rem}.card-head h2{margin:0}
.secnav{display:flex;gap:6px;overflow-x:auto;padding:2px 0 14px;scrollbar-width:thin}
.secnav .chip{white-space:nowrap;flex:none}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot.ok{background:var(--ok)}.dot.todo{background:var(--warn)}
.spot{animation:spot 1.3s ease-in-out 3;border-color:var(--pri)!important}
@keyframes spot{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--pri) 0%,transparent)}45%{box-shadow:0 0 0 7px color-mix(in srgb,var(--pri) 30%,transparent)}}
#guidebar{position:sticky;top:8px;z-index:6}
.guidebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--pri);color:var(--on-pri);padding:10px 14px;border-radius:14px;margin-bottom:16px;box-shadow:0 8px 24px color-mix(in srgb,var(--pri) 35%,transparent)}
.guidebar small{display:block;opacity:.8;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em}.guidebar b{display:block;line-height:1.25}
.guidebar .sec{background:rgba(255,255,255,.16);color:inherit;border-color:rgba(255,255,255,.3)}.guidebar .sec:hover{background:rgba(255,255,255,.28)}
.guidebar button:not(.sec):not(.icon-btn){background:#fff;color:#0f1b24}.guidebar .icon-btn{color:inherit!important}
@media(max-width:900px){#guidebar{top:64px}[data-anchor]{scroll-margin-top:160px}}

/* ---- Vue d'ensemble de l'école ---- */
.ovgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.ov{background:var(--bg);border-radius:12px;padding:12px 14px}
.ov h4{margin:0 0 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);display:flex;gap:6px;align-items:center}
.ov .big{display:block;font-size:1.8rem;letter-spacing:-.02em;line-height:1.1}.ov small{display:block;color:var(--mut);font-size:.78rem;margin-top:3px;line-height:1.35}
.ovrow{display:flex;justify-content:space-between;gap:8px;padding:3px 0;font-size:.86rem}.ovrow b{font-variant-numeric:tabular-nums}

/* ---- Tableau « qui fait quoi » ---- */
.matrix th.c,.matrix td.c{text-align:center;white-space:normal;font-size:.7rem;padding:8px 4px}.matrix td.c{font-size:1rem}
.matrix td:first-child{min-width:230px}.matrix tr:hover td{background:color-mix(in srgb,var(--pri) 5%,transparent)}

/* ---- Choix des profils ---- */
.rolegrid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.rolebox{display:flex;gap:10px;align-items:flex-start;margin:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;color:var(--ink);font-weight:400;font-size:.9rem;transition:border-color .15s,background .15s}
.rolebox:hover{background:var(--pri-soft)}.rolebox:has(input:checked){border-color:var(--pri);background:var(--pri-soft)}
.rolebox input{margin:3px 0 0;flex:none}.rolebox b{display:block}.rolebox small{display:block;color:var(--mut);font-size:.78rem;line-height:1.35;font-weight:400}

/* ---- Assistant de démarrage et fiches de rôle ---- */
.stepitem{display:flex;gap:14px;align-items:flex-start;padding:14px 10px;border-radius:12px;border:1px solid transparent}
.stepitem+.stepitem{border-top:1px solid var(--line);border-radius:0}
.stepitem.next{background:var(--warn-bg);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);border-radius:12px}
.stepdot{width:30px;height:30px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;background:var(--line);color:var(--mut)}
.stepitem.done .stepdot{background:var(--ok-bg);color:var(--ok)}.stepitem.next .stepdot{background:var(--warn);color:#fff}
.stepbody{flex:1;min-width:0}.stepbody p{margin:3px 0 4px;font-size:.88rem}.stepbody small{font-weight:600}
.stepact{display:flex;flex-direction:column;gap:6px;flex:none}
@media(max-width:700px){.stepitem{flex-wrap:wrap}.stepact{flex-direction:row;width:100%;padding-left:44px}}
nav em.mini{font-style:normal;margin-left:auto;font-size:.68rem;font-weight:700;background:rgba(255,255,255,.18);color:#fff;border-radius:99px;padding:1px 7px}
@media(max-width:900px){nav em.mini{display:none}}
.fiche-head{display:flex;gap:14px;align-items:center;margin-bottom:6px}
.fiche h3{margin:18px 0 6px;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.fiche ul{margin:4px 0;padding-left:20px}.fiche li{margin:3px 0}
.fiche-grp{margin:10px 0;padding:10px 14px;border:1px solid var(--line);border-radius:12px;break-inside:avoid}
.fiche ul.todo{list-style:none;padding-left:0}.fiche ul.todo li{padding-left:26px;position:relative}.fiche ul.todo li::before{content:"☐";position:absolute;left:0;color:var(--pri);font-size:1.05rem;line-height:1.35}

/* ---- Notes ---- */
.quote{margin-top:4px;padding:6px 10px;border-left:3px solid var(--pri);background:var(--pri-soft);border-radius:0 8px 8px 0;color:var(--ink);font-size:.85rem;font-style:italic;white-space:normal}
input.sc:disabled{opacity:.4}
@media(max-width:600px){td input.cm{min-width:150px}}

/* ---- Import ---- */
.tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.tile{display:flex;gap:12px;align-items:flex-start;text-align:left;background:var(--card);color:var(--ink);border:1.5px solid var(--line);border-radius:14px;padding:14px;box-shadow:none;font-weight:400;transition:border-color .15s,background .15s,box-shadow .15s}
.tile:hover{background:var(--pri-soft);border-color:color-mix(in srgb,var(--pri) 40%,var(--line))}
.tile.on{border-color:var(--pri);background:var(--pri-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 18%,transparent)}
.tile-ic{width:42px;height:42px;border-radius:12px;background:var(--pri-soft);color:var(--pri);display:flex;align-items:center;justify-content:center;flex:none}
.tile.on .tile-ic{background:var(--pri);color:var(--on-pri)}
.tile-tx b{display:flex;align-items:center;gap:7px;font-size:.95rem}.tile-tx b em{font-style:normal;font-size:.7rem;background:var(--pri);color:var(--on-pri);border-radius:99px;width:19px;height:19px;display:inline-flex;align-items:center;justify-content:center}
.tile-tx small{display:block;color:var(--mut);font-size:.8rem;line-height:1.4;margin-top:3px}
.notice{display:flex;gap:12px;align-items:flex-start;background:var(--warn-bg);color:var(--ink);border-radius:12px;padding:12px 14px;font-size:.88rem}
.notice>.ic{color:var(--warn);margin-top:2px}
.steps{display:grid;gap:22px}.step{display:flex;gap:14px;align-items:flex-start}.step p{margin:2px 0 10px;font-size:.88rem}
.stepnum{width:28px;height:28px;border-radius:50%;background:var(--pri);color:var(--on-pri);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex:none}
.dz{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;margin-top:8px;padding:28px 16px;border:2px dashed color-mix(in srgb,var(--pri) 45%,var(--line));border-radius:14px;background:var(--pri-soft);color:var(--mut);cursor:pointer;transition:background .15s,border-color .15s}
.dz:hover,.dz.over{border-color:var(--pri);background:color-mix(in srgb,var(--pri) 14%,transparent)}.dz .ic{color:var(--pri)}.dz b{color:var(--ink)}.dz.busy{opacity:.7;pointer-events:none}
.opts{margin-top:12px;display:grid;gap:8px}.chk{display:flex;gap:9px;align-items:center;font-size:.88rem;font-weight:500;color:var(--ink);margin:0;cursor:pointer}.chk input{margin:0}
.pills{display:flex;gap:6px;flex-wrap:wrap}
button.selected{background:var(--pri-soft);border-color:var(--pri);color:var(--pri)}
.result{text-align:center;max-width:620px;margin-left:auto;margin-right:auto}.result .row{justify-content:center}.result .notice{text-align:left;margin-top:14px;background:var(--pri-soft)}.result .notice>.ic{color:var(--pri)}
.result-ic{width:64px;height:64px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}

/* ---- Fenêtres, notifications ---- */
.modal{position:fixed;inset:0;background:rgba(8,16,22,.55);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;z-index:20;animation:fade .15s}
.modal>div{background:var(--card);border-radius:18px;padding:22px;max-width:440px;width:100%;max-height:92vh;overflow:auto;box-shadow:0 24px 60px rgba(0,0,0,.35);animation:pop .18s ease-out}
.modal>div.wide{max-width:560px}
@keyframes fade{from{opacity:0}}@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}}
#toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:#0f1b24;color:#fff;padding:11px 18px;border-radius:12px;display:none;z-index:30;max-width:90vw;box-shadow:0 10px 30px rgba(0,0,0,.3);font-weight:500;animation:pop .2s}
@media(min-width:901px){#toast{bottom:28px}}
.bubble{max-width:85%;padding:9px 13px;border-radius:14px 14px 14px 4px;margin:6px 0;white-space:pre-wrap;background:var(--bg)}
.bubble.me{margin-left:auto;background:var(--pri);color:var(--on-pri);border-radius:14px 14px 4px 14px}.bubble small{display:block;opacity:.7;font-size:.72rem;margin-bottom:2px}

/* ---- Reçu : toujours sur fond blanc, aussi en mode sombre et à l'impression ---- */
.rc{background:#fff;color:#14212b;border:1px solid #cbd5e1;border-radius:14px;overflow:hidden;font-size:.9rem}
.rc-head{background:var(--pri);color:#fff;padding:14px 18px;text-align:center;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rc-school{font-size:1.15rem;font-weight:700}.rc-title{letter-spacing:.18em;font-size:.72rem;opacity:.9;margin-top:2px}
.rc-body{padding:14px 18px}
.rc-ref{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:#64748b;font-size:.8rem;padding-bottom:10px;border-bottom:1px dashed #cbd5e1}
.rc-ref b{color:#14212b;font-family:ui-monospace,Consolas,monospace}
.rc-amount{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#eef6fb;border:1px solid #a9d3ec;border-radius:10px;padding:12px 14px;margin:12px 0;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rc-amount small{display:block;color:#64748b;font-size:.75rem}.rc-amount b{font-size:1.6rem;color:var(--pri);line-height:1.2}.rc-amount em{display:block;font-style:normal;color:#64748b;font-size:.8rem}
.rc-stamp{border:2px solid #15803d;color:#15803d;font-weight:800;letter-spacing:.15em;padding:3px 10px;border-radius:6px;transform:rotate(-8deg);font-size:.9rem}
.rc-stamp.cancel{border-color:#b91c1c;color:#b91c1c}
.rc-cancel{background:#fef2f2;border:1px solid #fecaca;color:#7f1d1d;border-radius:10px;padding:10px 12px;margin:0 0 12px;font-size:.84rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:0 0 12px}
.rc-grid dt{color:#64748b;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.rc-grid dd{margin:1px 0 0;font-weight:600}
.rc-balance{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;padding:9px 0}
.rc-balance .due{color:#b45309}.rc-balance .clear{color:#15803d}
.rc-foot{display:flex;gap:14px;align-items:center;margin-top:14px}
.rc-qr{width:104px;flex:none;padding:6px;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.rc-qr svg{display:block;width:100%;height:auto}
.rc-verify{flex:1;font-size:.76rem;color:#64748b}.rc-verify b{display:block;color:#14212b;font-size:.82rem;margin-bottom:2px}
.rc-sign{flex:none;width:110px;height:78px;border:1px dashed #cbd5e1;border-radius:8px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:4px}
.rc-sign span{font-size:.66rem;color:#94a3b8}
.rc-thanks{background:#f8fafc;text-align:center;color:#64748b;font-size:.76rem;padding:8px;border-top:1px solid #e2e8f0}
@media(max-width:480px){.rc-grid{grid-template-columns:1fr}.rc-sign{display:none}}
@page{size:A5;margin:10mm}
@media print{body *{visibility:hidden}.modal,.modal *{visibility:visible}.modal{position:absolute;inset:0 auto auto 0;width:100%;background:#fff;padding:0;display:block;backdrop-filter:none}.modal>div{max-width:none;padding:0;max-height:none;overflow:visible;box-shadow:none}.noprint{display:none!important}.rc-sign{display:flex!important}.rc-grid{grid-template-columns:1fr 1fr!important}}

/* ============ Configuration, bulletins, emploi du temps ============ */
.brand-mark.has-logo{background:#fff;padding:3px}
.brand-logo{width:100%;height:100%;object-fit:contain;border-radius:8px;display:block}
.logo-prev{display:flex;align-items:center;justify-content:center;width:140px;height:140px;border:1px dashed var(--line);border-radius:14px;background:var(--bg);overflow:hidden}
.logo-prev img{max-width:100%;max-height:100%;object-fit:contain}
.rc-logo{height:48px;max-width:130px;object-fit:contain;background:#fff;border-radius:8px;padding:3px;margin:0 auto 6px;display:block}
.rc-contact{font-size:.74rem;opacity:.92}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip{font-family:ui-monospace,Consolas,monospace}
.tpl-text{font-size:.9rem}
.bul{background:#fff;color:#14212b;border:1px solid #cbd5e1;border-radius:14px;overflow:hidden;font-size:.88rem;margin-bottom:14px}
.bul-body{padding:16px 20px}
.bul table{width:100%;border-collapse:collapse;margin:8px 0}
.bul th,.bul td{border:1px solid #cbd5e1;padding:6px 8px;font-size:.84rem;text-align:left;color:#14212b}
.bul th{background:#f1f5f9;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:#475569;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.bul .num{text-align:right;white-space:nowrap}
.bul-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.bul-sum div{border:1px solid #cbd5e1;border-radius:10px;padding:8px 10px}.bul-sum small{display:block;color:#64748b;font-size:.68rem;text-transform:uppercase}.bul-sum b{font-size:1.02rem}
.bul-box{border:1px solid #cbd5e1;border-radius:10px;padding:8px 12px;margin-top:10px;min-height:48px;color:#14212b}.bul-box small{color:#64748b;text-transform:uppercase;font-size:.68rem;display:block;margin-bottom:2px}
.bul-sign{display:flex;justify-content:space-between;gap:16px;margin-top:16px}.bul-sign div{flex:1;border-top:1px solid #94a3b8;padding-top:4px;font-size:.72rem;color:#64748b;text-align:center;min-height:54px}
.bul-break{break-after:page;page-break-after:always}.bul-break:last-child{break-after:auto;page-break-after:auto}
@media(max-width:600px){.bul-sum{grid-template-columns:1fr 1fr}}
.tt{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.tt-day{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--card)}
.tt-day h4{margin:0 0 8px;font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.tt-slot{background:var(--pri-soft);border-left:3px solid var(--pri);border-radius:8px;padding:6px 9px;margin-bottom:6px;font-size:.84rem}
.tt-slot b{display:block}.tt-slot small{color:var(--mut)}
/* ============ Guide allégé et assistant de mise en place (administration) ============ */
.fold{border:1px solid var(--line);border-radius:12px;padding:0 14px;margin:10px 0;background:var(--card)}
.fold>summary{cursor:pointer;padding:11px 0;font-weight:600;color:var(--mut);list-style:none;display:flex;align-items:center;gap:8px}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::before{content:"▸";display:inline-block;transition:transform .15s}
.fold[open]>summary::before{transform:rotate(90deg)}.fold[open]{padding-bottom:10px}
.wz{display:grid;grid-template-columns:320px 1fr;min-height:100vh;background:var(--bg)}
.wz-rail{background:linear-gradient(180deg,var(--side-a),var(--side-b));color:#cfe5e1;padding:22px 16px;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}
.wz-brand{display:flex;gap:11px;align-items:center;padding:2px 6px 16px}
.wz-brand b{display:block;color:#fff;line-height:1.2}.wz-brand small{color:#8fb9b3;font-size:.74rem}
.wz-prog{background:rgba(255,255,255,.07);border-radius:12px;padding:10px 12px;margin-bottom:14px}
.wz-prog-top{display:flex;gap:8px;align-items:baseline;font-size:.8rem;margin-bottom:6px}.wz-prog-top b{color:#fff;font-size:1.1rem}
.wz-prog .progress{background:rgba(255,255,255,.15);margin:0}.wz-prog .progress i{background:var(--acc)}
.wz-nav{display:flex;flex-direction:column;gap:2px;flex:1}
.wz-phase{margin:14px 8px 4px;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#6fa39b;font-weight:700}
.wz-step{display:flex;align-items:center;gap:10px;background:transparent;color:#b9d6d1;box-shadow:none;justify-content:flex-start;text-align:left;padding:.5rem .6rem;border-radius:10px;font-weight:500;width:100%}
.wz-step:hover{background:rgba(255,255,255,.07);color:#fff}.wz-step.on{background:rgba(255,255,255,.14);color:#fff;font-weight:600}
.wz-dot{flex:none;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.74rem;font-weight:700;background:rgba(255,255,255,.12);color:#cfe5e1}
.wz-step.done .wz-dot{background:var(--acc);color:#04141f}.wz-step.locked{opacity:.55}
.wz-t{flex:1;line-height:1.25}.wz-t em{display:block;font-style:normal;font-size:.68rem;color:#7fb1a9;font-weight:500}
.wz-foot{margin-top:14px;border-top:1px solid rgba(255,255,255,.1);padding-top:10px}.wz-link{display:block;margin:10px 8px 0;color:#8fb9b3;font-size:.82rem;text-decoration:none}
.wz-content{min-width:0}.wz-top{display:none}
.wz-main{max-width:1000px;margin:0 auto;padding:34px 36px 60px}
.wz-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px 30px;box-shadow:var(--shadow)}
.wz-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.wz-head h1{margin:2px 0 6px;font-size:1.55rem}.wz-lead{margin:0;color:var(--mut);max-width:680px}
.wz-phase-l{color:var(--pri);font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.wz-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:22px;align-items:start}
.wz-sub-card{border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:color-mix(in srgb,var(--pri) 2%,var(--card))}
.wz-actions{display:flex;gap:10px;align-items:center;margin-top:26px;padding-top:18px;border-top:1px solid var(--line);flex-wrap:wrap}
.wz-card h3{margin:0 0 8px;font-size:1rem}
.wz-lock{text-align:center;padding:50px 30px}.wz-lock-ic{display:inline-flex;width:64px;height:64px;border-radius:50%;background:var(--warn-bg);color:var(--warn);align-items:center;justify-content:center;margin-bottom:10px}
.wz-lock ul{list-style:none;padding:0;margin:14px auto;max-width:520px;text-align:left}.wz-lock li{padding:8px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;align-items:center}
.wz-matrix table th.c,.wz-matrix table td.c{text-align:center}.wz-matrix td:first-child,.wz-matrix th:first-child{position:sticky;left:0;background:var(--card);z-index:1}
.wz-matrix input.fee{width:92px;margin:2px auto;text-align:right}.wz-matrix input.coef{width:64px;margin:2px auto;display:block;text-align:right}
.wz-checks{display:flex;gap:8px 18px;flex-wrap:wrap}.wz-preview{margin:10px 0}
.wz-radio{display:flex;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px}.wz-radio input{width:auto;margin:0}
.wz-next{display:flex;justify-content:space-between;gap:14px;align-items:center;background:var(--pri-soft);border:1px solid color-mix(in srgb,var(--pri) 30%,var(--line));border-radius:14px;padding:14px 18px;margin-bottom:18px}
.wz-next small{display:block;text-transform:uppercase;letter-spacing:.06em;color:var(--pri);font-weight:700;font-size:.7rem}.wz-next b{display:block;font-size:1.05rem}.wz-next span{color:var(--mut);font-size:.88rem}
.wz-phase-card{margin-top:16px}.wz-phase-card h3{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);margin:0 0 6px}
.wz-row{display:flex;align-items:center;gap:12px;width:100%;background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none;justify-content:flex-start;text-align:left;padding:.7rem .9rem;border-radius:12px;margin-bottom:6px;font-weight:500}
.wz-row:hover{background:var(--pri-soft)}.wz-row.locked{opacity:.6}.wz-row .wz-dot{background:var(--line);color:var(--mut)}.wz-row.done .wz-dot{background:var(--ok-bg);color:var(--ok)}
.wz-rt{flex:1}.wz-rt small{display:block;color:var(--mut);font-weight:400}.wz-rt em{font-style:normal;font-size:.7rem;color:var(--mut);margin-left:6px}
.wz-card #wz-sub .card{box-shadow:none}
@media(max-width:960px){.wz{display:block}.wz-rail{display:none}.wz-top{display:flex;gap:10px;align-items:center;padding:12px 16px;background:linear-gradient(135deg,var(--side-a),var(--side-b))}.wz-top select{margin:0;flex:1}.wz-back{color:#cfe5e1;text-decoration:none;font-size:.85rem;white-space:nowrap}.wz-main{padding:18px 14px 60px}.wz-card{padding:20px 16px}.wz-head{flex-direction:column}}
.wz-card .chip[data-add]{font-family:inherit}

/* ============ Paramètres du Promoteur et du Préfet : une section à la fois ============ */
.set-wrap{display:grid;grid-template-columns:270px 1fr;gap:22px;align-items:start}
.set-nav{display:flex;flex-direction:column;gap:6px;position:sticky;top:18px}
.set-nav button{display:flex;gap:12px;align-items:center;justify-content:flex-start;text-align:left;background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none;padding:.7rem .85rem;border-radius:12px;font-weight:500}
.set-nav button span{display:flex;flex-direction:column;line-height:1.25}.set-nav button small{color:var(--mut);font-weight:400;font-size:.76rem}
.set-nav button:hover{background:var(--pri-soft)}.set-nav button.on{background:var(--pri-soft);border-color:color-mix(in srgb,var(--pri) 45%,var(--line));color:var(--pri2)}.set-nav button.on b{color:var(--pri2)}
.set-body{min-width:0}.set-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 24px;margin-bottom:16px;box-shadow:var(--shadow)}
.set-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}.set-head h2{margin:0 0 4px}.set-head p{margin:0;max-width:640px}
.prof-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:6px 0 12px}
.prof-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;justify-content:flex-start;background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none;padding:14px 16px;border-radius:14px;font-weight:500}
.prof-card b{font-size:1rem}.prof-card small{color:var(--mut);font-weight:400;line-height:1.35}.prof-card:hover{background:var(--pri-soft);border-color:color-mix(in srgb,var(--pri) 40%,var(--line))}.prof-card.hint{border-color:color-mix(in srgb,var(--pri) 45%,var(--line));background:color-mix(in srgb,var(--pri) 4%,var(--card))}
.todo-chip{margin:2px 2px}
@media(max-width:900px){.set-wrap{display:block}.set-nav{flex-direction:row;overflow-x:auto;position:static;margin-bottom:14px;gap:8px}.set-nav button{flex:0 0 auto}.set-nav button small{display:none}.set-card{padding:18px 16px}.set-head{flex-direction:column}}

.todo-chip{font-family:inherit}

/* ============ Connexion premium (mobile d'abord) ============ */
.lgn{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}
.lg-hero{position:relative;overflow:hidden;color:#fff;padding:max(16px,env(safe-area-inset-top)) 22px 70px;background:radial-gradient(120% 90% at 88% -12%,color-mix(in srgb,var(--acc) 60%,transparent),transparent 62%),linear-gradient(160deg,var(--pri),var(--pri2) 72%,color-mix(in srgb,var(--pri2) 65%,#000))}
.lg-hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.2) 1.3px,transparent 1.5px);background-size:24px 24px;-webkit-mask-image:linear-gradient(180deg,#000,transparent 82%);mask-image:linear-gradient(180deg,#000,transparent 82%);opacity:.55}
.lg-b1,.lg-b2{position:absolute;border-radius:50%;filter:blur(2px);pointer-events:none}.lg-b1{width:240px;height:240px;left:-90px;bottom:-60px;background:radial-gradient(circle,rgba(255,255,255,.2),transparent 70%)}.lg-b2{width:180px;height:180px;right:-50px;top:30px;background:radial-gradient(circle,color-mix(in srgb,var(--acc) 50%,transparent),transparent 70%)}
.lg-aa{position:absolute;top:max(14px,env(safe-area-inset-top));right:16px;z-index:3;width:46px;height:46px;min-height:0;padding:0;border-radius:50%;background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.4);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-weight:800;font-size:1rem;box-shadow:none;justify-content:center}
.lg-brand{position:relative;z-index:1;text-align:center;padding-top:30px}
.lg-logo{width:92px;height:92px;margin:0 auto 18px;border-radius:28px;background:#fff;display:grid;place-items:center;color:var(--pri);box-shadow:0 16px 36px rgba(0,0,0,.26),0 0 0 7px rgba(255,255,255,.2)}.lg-logo img{max-width:74%;max-height:74%;object-fit:contain}.lg-logo .ic{width:42px;height:42px}
.lg-brand h1{color:#fff;font-size:1.7rem;letter-spacing:-.025em;margin:0 0 8px;line-height:1.12;text-wrap:balance}
.lg-brand p{margin:0 auto;max-width:310px;color:#fff;opacity:.92;font-size:.98rem;line-height:1.45}
.lg-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:18px}.lg-chips span{display:inline-flex;gap:5px;align-items:center;padding:6px 10px;border-radius:99px;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.3);font-size:.74rem;font-weight:700;white-space:nowrap}.lg-chips span .ic{width:14px;height:14px}
.lg-list{display:none}
.lg-card{position:relative;z-index:2;margin-top:-38px;background:var(--card);border-radius:32px 32px 0 0;padding:30px 22px 20px;flex:1;display:flex;flex-direction:column;box-shadow:0 -14px 34px rgba(16,24,40,.14)}
.lg-card>*{width:100%;max-width:440px;margin-left:auto;margin-right:auto}
.lg-card h2{font-size:1.45rem;letter-spacing:-.02em;margin:0 0 2px}.lg-card h1{font-size:1.4rem;letter-spacing:-.02em;margin:0 0 4px}.lg-sub{color:var(--mut);margin:0 auto 20px;font-size:.95rem}
.lg-card label{font-size:.82rem;color:var(--ink);font-weight:700;margin-bottom:0}
.lg-card input{font-size:1.02rem}
.lg-field{position:relative;margin:7px auto 16px}.lg-field>.ic{position:absolute;left:17px;top:50%;transform:translateY(-50%);color:var(--mut);pointer-events:none}
.lg-field input{height:58px;margin:0;padding:0 16px 0 50px;border-radius:17px;background:var(--bg);border:1.5px solid var(--line);font-size:1.05rem}.lg-field input:focus{background:var(--card)}
.lg-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:46px;height:46px;min-height:0;padding:0;background:none;color:var(--mut);border:0;box-shadow:none;justify-content:center;border-radius:50%}
.lg-go{display:flex;align-items:center;justify-content:center;gap:8px;height:60px;border-radius:19px;font-size:1.06rem;font-weight:800;letter-spacing:.01em;background:linear-gradient(135deg,var(--pri),var(--pri2));color:var(--on-pri);border:0;box-shadow:0 12px 26px color-mix(in srgb,var(--pri) 38%,transparent);transition:transform .12s,box-shadow .12s}
.lg-go:active{transform:scale(.985);box-shadow:0 6px 14px color-mix(in srgb,var(--pri) 30%,transparent)}
.lg-err{min-height:1.3em;margin:-6px auto 8px;font-size:.88rem;font-weight:600}
.lg-or{display:flex;align-items:center;gap:12px;color:var(--mut);font-size:.8rem;margin:18px auto}.lg-or::before,.lg-or::after{content:"";flex:1;height:1px;background:var(--line)}
.lg-card .sec{height:56px;border-radius:17px;width:100%;font-weight:700;background:var(--card);border:1.5px solid var(--line);color:var(--ink);justify-content:center}
.lg-help{text-align:center;color:var(--mut);font-size:.88rem;margin:20px auto 0}.lg-help a{color:var(--pri);font-weight:700;text-decoration:none;white-space:nowrap}
.lg-foot{margin:auto auto 0;padding-top:22px;display:flex;align-items:center;justify-content:center;gap:6px;color:var(--mut);font-size:.76rem;text-align:center}.lg-foot b{color:var(--ink)}
.lgn.compact .lg-hero{padding-bottom:56px}.lgn.compact .lg-chips,.lgn.compact .lg-brand p{display:none}.lgn.compact .lg-logo{width:68px;height:68px;border-radius:21px;margin-bottom:12px}.lgn.compact .lg-brand{padding-top:18px}.lgn.compact .lg-brand h1{font-size:1.3rem}
.lg-brand>*{animation:lgUp .7s cubic-bezier(.2,.8,.2,1) both}.lg-brand>*:nth-child(2){animation-delay:.08s}.lg-brand>*:nth-child(3){animation-delay:.16s}.lg-brand>*:nth-child(4){animation-delay:.24s}
.lg-card{animation:lgSheet .75s cubic-bezier(.2,.8,.2,1) .1s both}
@keyframes lgUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes lgSheet{from{opacity:.4;transform:translateY(34px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.lg-brand>*,.lg-card{animation:none}}
@media(min-width:900px){
  .lgn{flex-direction:row}.lg-hero{flex:1.12;padding:56px 64px;display:flex;flex-direction:column;justify-content:center}
  .lg-brand{text-align:left;padding-top:0;max-width:520px}.lg-logo{margin:0 0 28px;width:104px;height:104px}.lg-brand h1{font-size:2.5rem;margin-bottom:12px}.lg-brand p{margin:0;max-width:440px;font-size:1.1rem}.lg-chips{display:none}
  .lg-list{display:grid;gap:16px;list-style:none;padding:0;margin:36px 0 0;max-width:460px;position:relative;z-index:1}.lg-list li{display:flex;gap:14px;align-items:flex-start;color:#fff}.lg-list li b{display:block}.lg-list li span{opacity:.88;font-size:.92rem}
  .lg-list .ic{flex:none;width:44px;height:44px;padding:11px;border-radius:14px;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.28)}
  .lg-card{flex:1;margin:0;border-radius:0;box-shadow:none;justify-content:center;padding:48px 56px;max-width:none;animation:lgUp .7s both}.lg-card>*{max-width:420px}
  .lg-aa{right:24px}.lg-foot{margin-top:28px}
}

/* ---- Confort de lecture ---- */
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px;margin:6px 0 6px}
.seg button{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:56px;background:var(--bg);color:var(--ink);border:2px solid var(--line);border-radius:15px;box-shadow:none;font-weight:700;justify-content:center;padding:6px}.seg button small{font-weight:500;color:var(--mut);font-size:.7rem}
.seg button.on{border-color:var(--pri);background:var(--pri-soft);color:var(--pri)}.seg button.on small{color:var(--pri)}
.modal.sheet .chk input{width:24px;height:24px;flex:none;accent-color:var(--pri)}
.cf-prev{margin:12px 0 14px;padding:14px;border-radius:15px;background:var(--bg);border:1px solid var(--line);line-height:1.5}
.icon-btn.aa{font-weight:800;font-size:.95rem;letter-spacing:-.02em;width:auto;padding:0 8px}

/* Mode sombre choisi par le parent : textes des bandeaux lisibles */
:root[data-mode="dark"] .ph-hero,:root[data-mode="dark"] .pg-hero{color:var(--on-pri)}:root[data-mode="dark"] .ph-hero h1,:root[data-mode="dark"] .pg-hero b,:root[data-mode="dark"] .pg-hero small{color:var(--on-pri)}:root[data-mode="dark"] .ph-sum{background:rgba(0,0,0,.14)}:root[data-mode="dark"] .lg-hero{background:radial-gradient(120% 90% at 88% -12%,color-mix(in srgb,var(--acc) 35%,transparent),transparent 62%),linear-gradient(160deg,var(--side-a),var(--side-b))}
@media(prefers-color-scheme:dark){:root[data-mode="auto"] .ph-hero,:root[data-mode="auto"] .pg-hero{color:var(--on-pri)}:root[data-mode="auto"] .ph-hero h1,:root[data-mode="auto"] .pg-hero b,:root[data-mode="auto"] .pg-hero small{color:var(--on-pri)}:root[data-mode="auto"] .ph-sum{background:rgba(0,0,0,.14)}:root[data-mode="auto"] .lg-hero{background:radial-gradient(120% 90% at 88% -12%,color-mix(in srgb,var(--acc) 35%,transparent),transparent 62%),linear-gradient(160deg,var(--side-a),var(--side-b))}}

/* Boutons-cartes : jamais de fond sombre au toucher ou au survol (le texte reste lisible) */
.ph-it:hover,.ph-it:active,.ph-new:hover,.ph-new:active,.pk-tile:hover,.pk-tile:active,.more-item:hover,.more-item:active,.ph-tr:hover,.ph-tr:active,.ag-row:hover,.ag-row:active,.pm-b:hover,.pm-b:active,.pl-ob:hover,.pl-ob:active,.rs:hover,.rs:active,.hw-ck:hover,.hw-ck:active,.lg-eye:hover,.lg-eye:active,.link-btn:hover,.link-btn:active,.seg button:hover,.seg button:active,.pk-p:hover,.pk-p:active{background:var(--pri-soft);color:var(--ink)}
.link-btn:hover,.link-btn:active,.lg-eye:hover,.lg-eye:active{background:none}.ph-it:active,.ph-new:active,.more-item:active{transform:none}
.pm-b.on.oui:hover,.pm-b.on.oui:active{background:var(--ok-bg);color:var(--ok)}.pm-b.on.peut_etre:hover,.pm-b.on.peut_etre:active{background:var(--warn-bg);color:var(--warn)}.pm-b.on.non:hover,.pm-b.on.non:active{background:var(--bad-bg);color:var(--bad)}
.seg button.on:hover,.rs.on:hover,.seg button.on:active,.rs.on:active{background:var(--pri-soft);color:var(--pri)}.hw-ck.on:hover,.hw-ck.on:active{background:var(--ok);color:#fff}.hw-ck:hover,.hw-ck:active{color:#fff}
.lg-aa:hover,.lg-aa:active{background:rgba(255,255,255,.3);color:#fff}.pk-p:hover,.pk-p:active{border-color:var(--pri)}.pl-ob:hover,.pl-ob:active{color:var(--pri);border-color:var(--pri)}

/* Bulletin lisible en entier sur téléphone : l'appréciation passe sous le nom de la matière (le tableau complet reste à l'impression) */
.bul .bul-ap{display:none}
@media(max-width:600px){.bul-body{padding:14px 12px}.bul th.ap,.bul td.ap{display:none}.bul .bul-ap{display:block;color:#64748b;font-size:.72rem;margin-top:2px}.bul th,.bul td{padding:7px 6px;font-size:.82rem}.bul th{font-size:.62rem;letter-spacing:.02em}.bul th.num{white-space:normal;text-align:right}.bul td:first-child{width:46%}.rc-grid{grid-template-columns:1fr 1fr}.bul-sign div{font-size:.66rem}}
@media print{.bul th.ap,.bul td.ap{display:table-cell!important}.bul .bul-ap{display:none!important}}

.pk-act{flex-wrap:wrap}.pk-act button{flex:1 1 30%;min-width:0;padding:.55rem .5rem;white-space:normal;font-size:.86rem;gap:5px;text-align:center;line-height:1.2}

.kd-st,.kd-st.ok,.kd-st.warn,.kd-st.bad,.kd-st.mut{color:#fff}

/* Pastille de présence : le nombre d'éléments à justifier remplace le bloc de boutons */
.pk-flag{margin-left:auto;font-style:normal;font-size:.74rem;font-weight:800;background:var(--warn);color:#fff;border-radius:99px;padding:3px 11px;white-space:nowrap}

/* Logo Educ Future : en haut à gauche de la connexion, et dans l'en-tête */
.lg-edu{position:absolute;top:max(14px,env(safe-area-inset-top));left:16px;z-index:3;width:62px;height:62px;object-fit:contain}
@media(min-width:901px){.lg-edu{left:24px;top:24px}}

/* ===== Paie du personnel ===== */
.prtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px;padding:5px;background:var(--card);border:1px solid var(--line);border-radius:14px;width:max-content;max-width:100%}
.prtabs button{background:transparent;color:var(--ink);box-shadow:none;border:0;padding:.55rem 1rem;border-radius:10px;font-weight:600}
.prtabs button:hover{background:var(--pri-soft)}.prtabs button.on{background:var(--pri);color:var(--on-pri)}
.pr-bars{display:grid;grid-template-columns:repeat(12,1fr);gap:8px;align-items:end;height:170px;margin-top:6px}
.pr-bar{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative}
.pr-bar i{display:block;width:100%;max-width:34px;border-radius:7px 7px 2px 2px;background:var(--pri-soft);border:1px solid var(--line);min-height:2px}
.pr-bar i.ok{background:linear-gradient(180deg,var(--pri),var(--pri2));border-color:transparent}
.pr-bar small{margin-top:6px;color:var(--mut);font-size:.72rem}.pr-v{font-size:.68rem;color:var(--mut);margin-bottom:3px}
.ps-t{width:100%;border-collapse:collapse;margin:10px 0}.ps-t th,.ps-t td{padding:7px 4px;border-bottom:1px solid var(--line);text-align:left}.ps-t .r{text-align:right}.ps-t .ps-sum td{font-weight:800;background:var(--bg)}
@media(max-width:700px){.pr-bars{gap:4px;height:130px}.pr-v{display:none}}
