/* Charte « carnet » : espaces parents, élève, intervenant et communication (s'ajoute à bureau.css).
   Même identité que l'administration, en plus aéré : texte plus grand, gros boutons, onglets en bas sur téléphone. */
body.mx-carnet{font-size:16px;background:var(--b-bg)}
body.mx-carnet .student-main.mx-pmain{max-width:1120px;margin:0 auto;padding:26px 24px 60px;box-sizing:border-box}
/* ---- en-tête ---- */
.mx-phead{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:22px;height:68px;padding:0 max(20px,calc((100vw - 1120px)/2));background:var(--b-side);color:var(--b-side-ink)}
.mx-pbrand{display:flex;align-items:baseline;gap:8px;color:var(--b-side-ink)!important;white-space:nowrap}
.mx-pbrand .mx-brand-sub{color:var(--b-side-muted)}
.mx-pnav{display:flex;gap:4px;flex:1}
.mx-pnav a{padding:9px 14px;border-radius:10px;color:var(--b-side-ink)!important;font-weight:700;font-size:15px}
.mx-pnav a:hover{background:var(--b-side-chip)}
.mx-pnav a.is-current{background:var(--b-side-ink);color:var(--b-side)!important}
.mx-account{position:relative;margin-left:auto}
.mx-account summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 8px;border-radius:10px;color:var(--b-side-ink)}
.mx-account summary::-webkit-details-marker{display:none}
.mx-account summary:hover{background:var(--b-side-chip)}
.mx-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--b-side-ink);color:var(--b-side);font-weight:700}
.mx-account-name{font-weight:700;font-size:14.5px}
.mx-account-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:260px;padding:6px;border-radius:12px;background:var(--b-card);border:1px solid var(--b-field);box-shadow:0 14px 30px rgba(20,14,6,.25);display:flex;flex-direction:column;z-index:50}
.mx-account-menu a{padding:11px 12px;border-radius:8px;color:var(--b-ink)!important;font-size:15px}
.mx-account-menu a:hover{background:var(--b-card-2)}
/* ---- titres et sous-onglets ---- */
body.mx-carnet .mx-page-title{margin:0 0 16px;font-size:32px!important}
.mx-subnav{display:flex;gap:4px;padding:4px;margin:0 0 18px;border-radius:12px;background:var(--b-card-2);border:1px solid var(--b-line);width:max-content;max-width:100%;overflow-x:auto}
.mx-subnav a{padding:9px 16px;border-radius:9px;font-weight:700;font-size:15px;color:var(--b-ink-soft)!important;white-space:nowrap}
.mx-subnav a[aria-current="page"]{background:var(--b-card);color:var(--b-ink)!important;box-shadow:0 1px 2px rgba(31,42,51,.12)}
/* ---- composants plus aérés ---- */
body.mx-carnet .card.section{padding:22px;border-radius:16px}
body.mx-carnet .btn{min-height:44px;padding:0 16px;font-size:15px}
body.mx-carnet .btn-small{min-height:38px;font-size:14px}
body.mx-carnet .btn-tiny{min-height:32px;padding:0 10px;font-size:13px}
body.mx-carnet .section h2,body.mx-carnet .card h2{font-size:21px}
body.mx-carnet .muted{color:var(--b-muted)}
body.mx-carnet .student-main a:not(.btn):not(.tab):not([class*="card"]):not([class*="mx-"]){color:var(--b-accent-ink)}
body.mx-carnet .student-footer{color:var(--b-muted)}
body.mx-carnet .kpi .value{font-size:28px}
/* ---- accueil ---- */
.mx-hello{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.mx-hello h2{margin:4px 0 0;font-size:26px}
.mx-hello .actions{gap:8px}
.mx-due{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:18px 22px;margin-bottom:18px;border-radius:16px;background:var(--b-warn-bg);border:1px solid color-mix(in srgb,var(--b-warn) 30%,transparent)}
.mx-due b{font-family:var(--b-serif);font-size:24px}
.mx-due span{color:var(--b-ink-soft)}
body.mx-carnet .parent-child-card{background:var(--b-card-2);border-color:var(--b-line);border-radius:14px}
body.mx-carnet .parent-child-kpis>div{background:var(--b-card);border-color:var(--b-line)}
/* ---- planning en liste ---- */
.mx-week-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.mx-week-nav h2{margin:0;font-size:22px}
.mx-week-nav .actions{gap:6px}
.mx-kids{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.mx-kids a{padding:9px 16px;border-radius:999px;border:1px solid var(--b-field);background:var(--b-card);font-weight:700;color:var(--b-ink)!important}
.mx-kids a[aria-current="page"]{background:var(--b-primary);border-color:var(--b-primary);color:var(--b-primary-ink)!important}
.mx-plist{display:flex;flex-direction:column;gap:18px}
.mx-pday h3{display:flex;align-items:baseline;gap:10px;margin:0 0 10px;font-size:20px}
.mx-pday h3 small{font-family:var(--b-sans);font-size:13px;font-weight:400;color:var(--b-muted)}
.mx-pday.is-today h3::after{content:'Aujourd’hui';font-family:var(--b-sans);font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--b-ink);color:var(--b-card)}
.mx-pday-empty{padding:14px 16px;border-radius:14px;border:1px dashed var(--b-field);color:var(--b-muted);font-size:14.5px}
.mx-pslots{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.mx-pslot{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:14px;background:var(--b-card);border:1px solid var(--b-line)}
.mx-pslot.is-mine{border:2px solid #1E5B3A}
.mx-pslot.is-closed,.mx-pslot.is-ended{opacity:.65}
.mx-pslot-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.mx-pslot-time{font-family:var(--b-serif);font-size:22px;font-weight:650}
.mx-pslot-time small{font-family:var(--b-sans);font-size:13px;font-weight:400;color:var(--b-muted)}
.mx-pslot-subject{font-size:17px}
.mx-pslot-aud{font-size:13.5px;color:var(--b-ink-soft)}
.mx-pslot-places{font-size:14px;color:var(--b-ink-soft)}
.mx-pslot form{margin:0}
.mx-pslot .btn{width:100%;justify-content:center;min-height:46px}
.mx-pslot .mx-tags{display:flex;gap:6px;flex-wrap:wrap}
.mx-tag{font-size:12.5px;font-weight:700;border-radius:999px;padding:3px 10px;background:var(--b-card-2);color:var(--b-ink-soft);border:1px solid var(--b-line)}
.mx-tag.is-for{background:var(--b-ok-bg);color:var(--b-ok);border-color:transparent}
.mx-tag.is-in{background:#1E5B3A;color:#fff;border-color:transparent}
.mx-tag.is-wait{background:var(--b-warn-bg);color:var(--b-warn);border-color:transparent}
.mx-pslot-cancel{border:0;background:transparent;color:var(--b-err);font:inherit;font-size:14px;text-decoration:underline;cursor:pointer;padding:4px 0;align-self:flex-start}
/* ---- paiements ---- */
.mx-history{padding:0}
.mx-history>summary{cursor:pointer;padding:16px 20px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:10px}
.mx-history>summary::-webkit-details-marker{display:none}
.mx-history>summary::after{content:'›';transition:transform .15s}
.mx-history[open]>summary::after{transform:rotate(90deg)}
.mx-history .table-wrap{margin:0 16px 16px}
.mx-month{padding:10px 20px 4px;font-family:var(--b-serif);font-size:17px;font-weight:650}
/* ---- compte : accès des enfants ---- */
.mx-child-access>summary{list-style:none;cursor:pointer}
.mx-child-access>summary::-webkit-details-marker{display:none}
@media(max-width:780px){
  .mx-phead{height:58px;gap:10px}
  .mx-pnav{display:none}
  .mx-account-name{display:none}
  body.mx-carnet .student-main.mx-pmain{padding:18px 14px 110px}
  body.mx-carnet .mx-page-title{font-size:26px!important}
  body.mx-carnet .card.section{padding:16px}
  .mx-pslots{grid-template-columns:minmax(0,1fr)}
  .mx-pfoot{display:none}
  .mx-week-nav .actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .mx-week-nav .actions .btn{justify-content:center;white-space:nowrap;padding:0 10px}
  body.mx-carnet .grid-kpi.parent-kpis{grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:8px}
  body.mx-carnet .parent-kpis .kpi{padding:10px}
  body.mx-carnet .parent-kpis .kpi .label{font-size:10.5px}
  body.mx-carnet .parent-kpis .kpi .value{font-size:18px}
  body.mx-carnet .parent-kpis .kpi .hint{display:none}
}
.mx-allgood{padding:18px;border-radius:12px;background:var(--b-ok-bg);color:var(--b-ok);font-weight:700}
/* ---- pages de connexion (parents, puis élèves) ---- */
body.mx-auth .login-shell{background:var(--b-bg)}
body.mx-auth .login-card{background:var(--b-card);border-color:var(--b-line);box-shadow:var(--b-shadow);border-radius:18px}
body.mx-auth .login-card h1{font-family:var(--b-serif);font-weight:650}
body.mx-auth .login-card>p,body.mx-auth .login-links{color:var(--b-muted)}
body.mx-auth .login-card .input{min-height:46px;font-size:16px}
body.mx-auth .login-card .btn{min-height:48px;font-size:16px}
@media screen and (prefers-color-scheme:dark){
  body.mx-carnet .login-logo img{filter:invert(1) hue-rotate(180deg) brightness(1.1)}
}
@media(max-width:780px){
  .mx-tabbar.mx-tabbar-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .mx-tabbar.mx-tabbar-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mx-tabbar.mx-tabbar-5{grid-template-columns:repeat(5,minmax(0,1fr))}
}
.mx-next{background:var(--b-card);border-color:var(--b-line)}
/* ---- Espace intervenant ---- */
.mx-roll-more{margin-top:4px}
.mx-roll-more>summary{cursor:pointer;font-size:13px;color:var(--b-accent-ink);list-style:none}
.mx-roll-more>summary::-webkit-details-marker{display:none}
.mx-roll-more-body{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.mx-roll-more-body label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--b-muted)}
.mx-roll-more-body .select,.mx-roll-more-body .input{min-height:40px}
.mx-hours-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.mx-hours-row .select{min-height:46px;min-width:120px}
.mx-today{display:flex;flex-direction:column;gap:14px}
.mx-today .mx-session{display:flex;flex-direction:column;gap:12px}
.mx-today .mx-session .btn{align-self:flex-start;min-height:46px}
.mx-week-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}
.mx-week-sum div{padding:14px 16px;border-radius:14px;background:var(--b-card);border:1px solid var(--b-line)}
.mx-week-sum b{display:block;font-family:var(--b-serif);font-size:24px}
.mx-week-sum span{font-size:13px;color:var(--b-muted)}
.mx-next-list{list-style:none;margin:0;padding:0}
.mx-next-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--b-line)}
.mx-next-list li:first-child{border-top:0}
.mx-next-list small{display:block;color:var(--b-muted);font-size:13px}
@media(max-width:780px){
  .mx-week-sum{grid-template-columns:1fr 1fr 1fr;gap:8px}
  .mx-week-sum div{padding:10px}
  .mx-week-sum b{font-size:19px}
  .mx-today .mx-session .btn{align-self:stretch;justify-content:center}
}
.mx-staff a.mx-pslot{color:var(--b-ink)!important;text-decoration:none}
.mx-staff a.mx-pslot:hover{border-color:var(--b-field)}
/* ---- Choix de l'espace ---- */
.mx-portal{min-height:100vh;box-sizing:border-box;max-width:880px;margin:0 auto;padding:40px 18px;display:flex;flex-direction:column;align-items:center;text-align:center}
.mx-portal h1{font-size:30px;margin:18px 0 4px}
.mx-portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:100%;margin:22px 0}
.mx-portal-choice{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:20px;border-radius:16px;background:var(--b-card);border:1px solid var(--b-line);box-shadow:var(--b-shadow);color:var(--b-ink)!important;text-decoration:none}
.mx-portal-choice:hover{border-color:var(--b-field);transform:translateY(-1px)}
.mx-portal-choice svg{color:var(--b-accent)}
.mx-portal-choice b{font-size:18px}
.mx-portal-choice span{font-size:14px;color:var(--b-muted)}
.mx-portal-first{display:flex;flex-direction:column;gap:6px;padding:16px 20px;border-radius:14px;background:var(--b-card-2);border:1px solid var(--b-line);width:100%;box-sizing:border-box}
.mx-portal-first small{color:var(--b-muted)}
.mx-portal-back{margin-top:18px;color:var(--b-muted)!important}
@media(max-width:600px){
  .mx-portal-grid{grid-template-columns:1fr}
  .mx-portal h1{font-size:25px}
}
.mx-portal-first a{color:var(--b-accent-ink)!important;text-decoration:underline}
/* Espace parents : suivi du pupitre */
.pd-kids{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.pd-intro{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}
.pd-intro h2{margin:0 0 6px;font-size:20px}
.pd-intro p{margin:0;font-size:13px;line-height:1.55;max-width:720px}
.pd-last{flex-shrink:0;font-size:12px;font-weight:800;color:var(--b-accent-ink);background:var(--b-bg-sand-1);border-radius:999px;padding:6px 11px;white-space:nowrap}
.pd-advice{display:grid;gap:8px;margin-bottom:20px}
.pd-tip{display:flex;gap:11px;align-items:flex-start;margin:0;padding:12px 14px;border-radius:12px;border:1px solid var(--b-line);background:var(--b-card);font-size:14px;line-height:1.5}
.pd-tip-icon{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:900;background:var(--b-bg-sand-1);color:var(--b-accent-ink)}
.pd-tip.is-good{border-color:var(--b-line-green-2);background:var(--b-bg-green-3)}
.pd-tip.is-good .pd-tip-icon{background:var(--b-bg-green-5);color:var(--b-ink-green-3)}
.pd-tip.is-warn{border-color:var(--b-line-amber-5);background:var(--b-bg-amber-4)}
.pd-tip.is-warn .pd-tip-icon{background:var(--b-bg-amber-8);color:var(--b-ink-amber-4)}
.pd-kpis .value small{font-size:15px;color:var(--b-ink-soft);font-weight:700}
.pd-calendar{display:flex;gap:6px;overflow-x:auto;padding:2px}
.pd-week{display:flex;flex-direction:column;gap:6px}
.pd-week-labels span{height:22px;width:14px;font-size:10px;color:var(--b-ink-soft);display:flex;align-items:center}
.pd-day{display:inline-block;width:22px;height:22px;border-radius:5px;background:var(--b-bg-sand-1)}
.pd-day.l1{background:var(--b-bg-green-6)}
.pd-day.l2{background:var(--b-bg-green-7)}
.pd-day.l3{background:var(--b-bg-green-10)}
.pd-day.is-future{background:transparent;box-shadow:inset 0 0 0 1px var(--b-shade-100-1)}
.pd-day.is-today{outline:2px solid var(--b-line-slate-2);outline-offset:1px}
.pd-legend{display:flex;align-items:center;gap:4px;margin-top:10px;font-size:12px;color:var(--b-ink-soft)}
.pd-legend .pd-day{width:12px;height:12px;border-radius:3px}
.pd-evals td{vertical-align:middle}
.pd-wrap{white-space:normal}
.pd-score-bar{display:inline-block;width:90px;height:7px;border-radius:999px;background:var(--b-bg-sand-1);vertical-align:middle;margin-right:6px;overflow:hidden}
.pd-score-bar i{display:block;height:100%;background:var(--b-bg-blue-3);border-radius:999px}
.pd-chapter{border-top:5px solid var(--c,var(--b-line-slate-2))}
.pd-kicker{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--b-ink-soft);margin-bottom:3px}
.pd-notions{list-style:none;margin:0;padding:0}
.pd-notions li{display:grid;grid-template-columns:minmax(0,1fr) 80px 190px;gap:14px;align-items:center;padding:10px 0;border-top:1px solid var(--b-line);font-size:14px}
.pd-notion-title{font-weight:700}
.pd-tag{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:800;vertical-align:1px}
.pd-tag.is-good{background:var(--b-bg-green-3);color:var(--b-ink-green-3)}
.pd-tag.is-warn{background:var(--b-bg-amber-4);color:var(--b-ink-amber-4)}
.pd-dots{display:flex;gap:5px}
.pd-dots i{width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--b-shade-100-2)}
.pd-dots i.on{box-shadow:none}
.pd-dots i.l1{background:var(--b-bg-green-9)}
.pd-dots i.l2{background:var(--b-bg-slate)}
.pd-dots i.l3{background:var(--b-bg-orange-3)}
.pd-dots i.l4{background:var(--b-bg-red-3)}
.pd-notion-stats{font-size:13px;color:var(--b-accent-ink)}
.pd-foot{margin-top:4px}
.parent-child-card .pd-home{font-size:12px;color:var(--b-ink-soft);line-height:1.45}
.parent-child-card .pd-home b{color:var(--b-accent-ink)}
@media(max-width:780px){
  .pd-intro{flex-direction:column}
  .pd-notions li{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}
  .pd-notion-stats{grid-column:1/-1}
  .pd-day{width:18px;height:18px}
  .pd-week-labels span{height:18px}
  .grid-kpi.pd-kpis{grid-template-columns:1fr 1fr;gap:10px}
  .pd-kpis .kpi{padding:14px}
  .pd-kpis .kpi .value{font-size:24px}
  .pd-score-bar{display:none}
}
/* Factures & paiements : « Mes factures en PDF », une année ouverte, les autres repliées */
.pdf-docs .pdf-year{border-top:1px solid var(--b-line);padding:4px 0}
.pdf-docs .pdf-year:first-of-type{border-top:0}
.pdf-docs .pdf-year>summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 2px;font-weight:800;font-size:16px}
.pdf-docs .pdf-year>summary::-webkit-details-marker{display:none}
.pdf-docs .pdf-year>summary::after{content:'›';margin-left:auto;transition:transform .15s}
.pdf-docs .pdf-year[open]>summary::after{transform:rotate(90deg)}
.pdf-docs .pdf-year-zip{margin:12px 0 8px}
.pdf-docs .inv-table{table-layout:fixed}
.pdf-docs .inv-table th:nth-child(1){width:18%}.pdf-docs .inv-table th:nth-child(2){width:30%}.pdf-docs .inv-table th:nth-child(3){width:18%}
/* Factures & paiements (espace parent) : sur téléphone, une carte par facture (numéro, date, montant, statut), et ses PDF
   (« Voir », « Télécharger ») sur la dernière ligne, sans faire défiler le tableau */
@media (max-width:700px){
  body.parent-body .inv-table,body.parent-body .inv-table tbody,body.parent-body .inv-table td{display:block}
  body.parent-body .inv-table thead{display:none}
  body.parent-body .inv-table tr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px;border-bottom:1px solid var(--b-line)}
  body.parent-body .inv-table tr:last-child{border-bottom:0}
  body.parent-body .inv-table td{padding:0;border:0;white-space:normal}
  body.parent-body .inv-table td:last-child{flex-basis:100%}
  body.parent-body .inv-table td:last-child:empty{display:none}
}
