/* Sillon · shell and pages (index.html, app.js, info.js, report.js), built on sillon.css (tokens, fonts, shared components).
   Colours: sillon.css variables or rgba of encre (14,26,59) / feuille (252,253,254) only. Fonts: --f-titre, --f-texte, --f-data, --f-accent only.
   Red = toi / tu es ici / J'aime. Blue = sources, dates, links. Solid = sourced, dotted = possible. */
:root{--line:var(--sillon-filet);--ink:var(--sillon-encre);--muted:var(--sillon-graphite);--side:232px;--pad:38px;--guide-w:320px}
*{box-sizing:border-box}
body{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button,a{touch-action:manipulation}
button:disabled{opacity:.5;cursor:wait}
[hidden]{display:none!important}
.i{width:21px;height:21px;flex:none;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
[data-icon]{display:inline-flex;flex:none}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;top:-100px;left:16px;z-index:100;padding:12px 18px;border-radius:999px;background:var(--sillon-encre);color:var(--sillon-feuille);font-weight:700;text-decoration:none}
.skip:focus{top:12px}
/* Line pastilles: encre letters on the light lines, as in the reference (the letter is aria-hidden; the line name is always written) */
.pastille.ligne-S,.pastille.ligne-B,.pastille.ligne-A{color:var(--sillon-encre)}
.stamp{font-size:11px}

/* ---------- Type scale (web) ---------- */
h1{font-size:clamp(28px,2.6vw,40px);line-height:1.06;margin:10px 0 12px}
body.parent-mode h1{line-height:1.12}
h1 .it{font-size:1.06em}
h2{font-size:22px;line-height:1.2;margin:0}
h3{font-size:19px;line-height:1.25;margin:0}
p{line-height:1.55}
.muted{color:var(--sillon-graphite)}
.small{font-size:13px;line-height:1.6}
.eyebrow{margin:0}
.title-slash{font-weight:400;color:var(--sillon-graphite)}

/* ---------- Sidebar: Feuille, logo plaque, the nav as a line with stations ---------- */
.sidebar{position:fixed;inset:0 auto 0 0;z-index:4;width:var(--side);display:flex;flex-direction:column;padding:26px 16px 20px;overflow-y:auto;background:var(--sillon-feuille);border-right:1px solid var(--sillon-filet)}
.sidebar .brand{align-self:flex-start;margin:0 0 34px 6px}
.nav-label{margin:0 0 10px;padding:0 10px 0 30px;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);line-height:1.6;text-transform:uppercase;color:var(--sillon-graphite)}
.sidebar nav{position:relative;display:flex;flex-direction:column;gap:4px;padding-left:12px}
.sidebar nav::before{content:"";position:absolute;left:11px;top:22px;bottom:22px;width:2px;border-radius:1px;background:var(--sillon-filet-fort)}
.nav{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:44px;margin:0;padding:9px 12px 9px 18px;border:1px solid transparent;border-radius:999px;background:none;text-align:left;font-size:14px;font-weight:700;line-height:1.2;color:var(--sillon-graphite);text-decoration:none}
.nav .i{width:20px;height:20px}
.nav:hover{background:var(--sillon-voile);color:var(--sillon-encre)}
.nav.active{background:var(--sillon-feuille);border-color:var(--sillon-filet-fort);color:var(--sillon-encre);box-shadow:var(--sillon-ombre-douce)}
.sidebar nav .nav::before{content:"";position:absolute;left:-5px;top:50%;z-index:1;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--sillon-feuille);box-shadow:inset 0 0 0 1.8px rgba(14,26,59,.42)}
/* the selected item is « tu es ici »: the red ring station on its left edge */
.sidebar nav .nav.active::before{left:-8px;width:16px;height:16px;margin-top:-8px;box-shadow:inset 0 0 0 4px var(--sillon-rouge),0 0 0 1.5px var(--sillon-encre)}
.count{margin-left:auto;min-width:24px;height:22px;padding:0 7px;display:grid;place-items:center;border-radius:999px;background:var(--sillon-papier);border:1px solid var(--sillon-filet);font-family:var(--f-texte);font-size:12px;font-weight:700;line-height:1;color:var(--sillon-encre);font-variant-numeric:tabular-nums}
.sidebar-note{margin:28px 10px 0;padding-top:22px;border-top:1px solid var(--sillon-filet)}
.sidebar-note strong{display:block;font-family:var(--f-titre);font-weight:var(--titre-weight);font-stretch:var(--titre-stretch);letter-spacing:var(--titre-tracking);font-size:21px;line-height:1.15;color:var(--sillon-encre)}
.sidebar-note p{margin:10px 0 0;font-size:13px;line-height:1.6;color:var(--sillon-graphite)}
.sidebar-bottom{margin-top:auto;padding-top:28px}
.privacy-button{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:0;background:none;font-size:13px;font-weight:700;color:var(--sillon-graphite);text-align:left}
.privacy-button .i{width:16px;height:16px}
.privacy-button:hover{color:var(--sillon-encre)}
.local-session{margin:4px 12px 0;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:.08em;line-height:1.6;text-transform:uppercase;color:var(--sillon-graphite)}

/* ---------- Topbar ---------- */
.app{margin-left:var(--side);min-width:0}
/* Two lines in the middle: the tagline, and under it the owner's short disclaimer in bold, on every page */
.topbar{position:relative;z-index:3;min-height:78px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:auto auto;grid-template-areas:"crumb roles avatar" "disc roles avatar";align-content:center;align-items:center;column-gap:18px;row-gap:2px;padding:10px var(--pad);background:var(--sillon-feuille);border-bottom:1px solid var(--sillon-filet)}
.topbar-logo{display:none;grid-area:logo}
.breadcrumb{grid-area:crumb;align-self:end;font-size:14px;color:var(--sillon-graphite)}
.topbar-disclaimer{grid-area:disc;align-self:start;margin:0;font-size:13px;line-height:1.35;color:var(--sillon-encre)}
.topbar-disclaimer strong{font-weight:700}
.role-switch{grid-area:roles;display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--sillon-papier);border:1px solid var(--sillon-filet)}
.role-switch button{min-height:44px;padding:8px 18px;border:1px solid transparent;border-radius:999px;background:none;font-size:14px;font-weight:700;color:var(--sillon-graphite)}
.role-switch button:hover{color:var(--sillon-encre)}
.role-switch button[aria-pressed=true]{background:var(--sillon-feuille);border-color:var(--sillon-filet-fort);color:var(--sillon-encre);box-shadow:0 5px 12px -8px rgba(14,26,59,.5)}
/* avatar: an initial-less person in a ring, with the red dot of « toi » */
.avatar{grid-area:avatar;position:relative;flex:none;width:44px;height:44px;display:grid;place-items:center;padding:0;border-radius:50%;background:var(--sillon-feuille);border:1.5px solid var(--sillon-encre);color:var(--sillon-encre)}
.avatar .i{width:20px;height:20px}
.avatar-dot{position:absolute;right:-3px;bottom:-2px;width:13px;height:13px;border-radius:50%;background:var(--sillon-rouge);box-shadow:0 0 0 2.5px var(--sillon-feuille)}

/* ---------- Main ---------- */
main{max-width:1600px;min-height:calc(100vh - 170px);margin:0 auto;padding:24px var(--pad) 44px}
main:focus{outline:none}
.page-heading{max-width:880px;margin-bottom:28px}
.page-heading p{margin:8px 0 0;font-size:15px;color:var(--sillon-graphite)}

/* ---------- Découvrir: header, start plaque, band ---------- */
.discovery-header{display:flex;align-items:stretch;justify-content:space-between;gap:28px;margin-bottom:22px}
.discovery-header p{margin:0;font-size:15px;color:var(--sillon-graphite)}
.start-card{position:relative;flex:none;width:290px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;padding:18px 18px 16px 20px;border-radius:var(--radius-tile);background:var(--sillon-encre);color:var(--sillon-feuille);box-shadow:var(--sillon-ombre)}
.start-card::after{content:"";position:absolute;inset:5px;border:1.5px solid rgba(252,253,254,.78);border-radius:10px;pointer-events:none}
.start-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:rgba(252,253,254,.72)}
.start-top .i{width:19px;height:19px;color:var(--sillon-feuille)}
.start-card strong{font-family:var(--f-titre);font-weight:var(--titre-weight);font-stretch:var(--titre-stretch);letter-spacing:var(--titre-tracking);font-size:20px;line-height:1.15}
.start-card button{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:44px;padding:9px 12px 9px 16px;border:0;border-radius:999px;background:var(--sillon-feuille);color:var(--sillon-encre);font-size:14px;font-weight:700;text-align:left}
.start-card button .i{width:18px;height:18px}
.discovery-header~.discovery-layout,.discovery-header~.parent-summary{margin-top:26px}
.parent-summary~.discovery-layout{margin-top:0}
.discovery-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--guide-w);gap:28px;align-items:start}

/* ---------- Search and chips ---------- */
.search-inline{display:flex;align-items:center;gap:10px;min-height:54px;padding:4px 5px 4px 18px;border:1px solid var(--sillon-filet-fort);border-radius:999px;background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.search-inline:focus-within{border-color:var(--sillon-encre);box-shadow:0 0 0 2px var(--sillon-encre)}
.search-inline>.i,.search-inline>[data-icon] .i{width:19px;height:19px;color:var(--sillon-graphite)}
.search-inline input{flex:1;min-width:0;min-height:44px;padding:10px 0;border:0;outline:none;background:none;font-size:15px;color:var(--sillon-encre)}
.search-inline input::placeholder{color:var(--sillon-graphite);opacity:1}
.search-inline button{flex:none;width:44px;height:44px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:var(--sillon-encre);color:var(--sillon-feuille)}
.search-inline button:hover{background:var(--sillon-encre-2)}
.search-inline button .i{width:19px;height:19px}
.category-row{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 28px}
.category-row .chip{min-height:44px;padding:8px 16px 8px 13px;font-size:14px;cursor:pointer}
.category-row .chip:hover{border-color:var(--sillon-encre)}
.chip .i{width:17px;height:17px}

/* ---------- Feed ---------- */
.feed-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;margin-bottom:14px}
.feed-heading h2{font-size:22px}
.feed-heading>span{font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite)}
.text-button{min-height:44px;padding:10px 4px;border:0;background:none;font-size:14px;font-weight:700;color:var(--sillon-encre);text-align:left;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.text-button:hover{text-decoration-thickness:2px}
.career-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}

/* Career card · Explorer feed treatment (C′): ink-tinted photo, eyebrow pastille, J'aime */
.career-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.career-card:hover{border-color:var(--sillon-filet-fort);box-shadow:var(--sillon-ombre)}
.card-photo{position:relative;height:240px;overflow:hidden;background:var(--sillon-encre-2)}
.card-photo img{display:block;width:100%;height:100%;object-fit:cover}
.card-photo::after{content:"";position:absolute;inset:42% 0 0;background:linear-gradient(transparent,rgba(14,26,59,.72));pointer-events:none}
.photo-label{position:absolute;left:14px;right:66px;bottom:13px;z-index:1;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);line-height:1.35;text-transform:uppercase;color:var(--sillon-feuille)}
.save-button{position:absolute;top:12px;right:12px;z-index:2;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1.5px solid rgba(252,253,254,.85);border-radius:50%;background:rgba(14,26,59,.42);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--sillon-feuille)}
.save-button:hover{background:rgba(14,26,59,.52)}
.save-button .i{width:22px;height:22px;stroke-width:1.9}
.save-button[aria-pressed=true]{background:var(--sillon-feuille);border-color:var(--sillon-feuille)}
.card-art{position:relative;height:160px;display:grid;place-items:center;background:var(--sillon-papier);border-bottom:1px solid var(--sillon-filet);color:var(--sillon-encre)}
.card-art>.i{width:52px;height:52px;stroke-width:1.2}
.card-art .photo-label{color:var(--sillon-graphite)}
.card-art .save-button{border-color:var(--sillon-filet-fort);background:var(--sillon-feuille);color:var(--sillon-encre)}
.card-body{flex:1;display:flex;flex-direction:column;padding:16px 18px}
.card-eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin-bottom:9px}
.card-eyebrow .pastille+span{color:var(--sillon-encre)}
.eyebrow-bar{width:1.5px;height:12px;background:var(--sillon-filet-fort)}
.eyebrow-line{font-family:var(--f-texte);font-size:13px;font-weight:700;font-stretch:normal;letter-spacing:0;text-transform:none;color:var(--sillon-graphite)}
.card-body h3{font-size:20px;line-height:1.1;margin:0 0 5px}
.card-body h3 .it{font-size:1.06em}
.card-kicker{margin-bottom:8px;font-size:13px;line-height:1.45;color:var(--sillon-graphite)}
.card-body>p{margin:0 0 16px;font-size:15px;line-height:1.5;color:var(--sillon-encre)}
.card-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--sillon-filet)}
.card-duration{font-size:13px}
.card-more{min-height:44px;padding:8px 2px;border:0;background:none;font-size:14px;font-weight:700;color:var(--sillon-encre);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.card-more:hover{text-decoration-thickness:2px}
.feed-footnote{margin-top:20px;font-size:13px;line-height:1.65;color:var(--sillon-graphite)}
.empty{grid-column:1/-1;padding:44px 24px;text-align:center;border:1.5px dashed rgba(14,26,59,.3);border-radius:var(--radius-card);background:var(--sillon-feuille)}
.empty h3{margin-bottom:8px}
.empty p{margin:0 auto;max-width:520px;font-size:15px;color:var(--sillon-graphite)}
.empty .btn{margin-top:14px}

/* ---------- Hira's launcher in Découvrir: the panel around it (the launcher itself is styled by hira.css) ---------- */
.guide{display:flex;flex-direction:column;padding:16px 18px 18px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
@media(min-height:860px){.guide{position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto;scrollbar-width:thin}}
.parent-theme{margin:-6px 0 12px;color:var(--sillon-graphite);scroll-margin-top:20px}
#feed-title{scroll-margin-top:20px}
.mini-profile{margin-top:6px;padding-top:16px;border-top:1px solid var(--sillon-filet)}
.mini-profile-head{display:flex;align-items:center;gap:12px}
.mini-profile-head>span{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:12px;background:var(--sillon-papier);border:1px solid var(--sillon-filet);color:var(--sillon-encre)}
.mini-profile-head .i{width:19px;height:19px}
.mini-profile-head strong{display:block;font-size:14px}
.mini-profile-head p{margin:2px 0 0;font-size:13px;color:var(--sillon-graphite)}
.mini-profile button{width:100%;min-height:44px;margin-top:12px;padding:10px;border:1.5px solid var(--sillon-filet-fort);border-radius:999px;background:var(--sillon-feuille);font-size:14px;font-weight:700;color:var(--sillon-encre)}
.mini-profile button:hover{border-color:var(--sillon-encre)}

/* ---------- Parents ---------- */
.parent-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:26px}
.summary-card{padding:20px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.summary-card .i{width:22px;height:22px;color:var(--sillon-encre)}
.summary-card h3{margin:12px 0 6px;font-size:20px}
.summary-card p{margin:0;font-size:15px;color:var(--sillon-graphite)}
.parent-table{max-width:100%;overflow:auto;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
table{width:100%;min-width:460px;border-collapse:collapse}
th,td{padding:15px 16px;border-bottom:1px solid var(--sillon-filet);text-align:left;vertical-align:top;font-size:15px;line-height:1.55}
th{background:var(--sillon-papier);font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite)}
td strong{font-size:16px}
td p{margin:4px 0 0;font-size:14px;color:var(--sillon-graphite)}
td button{min-height:44px;padding:8px 18px;border:1.5px solid var(--sillon-filet-fort);border-radius:999px;background:var(--sillon-feuille);font-size:14px;font-weight:700;color:var(--sillon-encre)}
td button:hover{border-color:var(--sillon-encre)}
.parent-table tr:last-child td{border-bottom:0}
.parent-info{margin-top:20px;padding:18px 20px;border:1px solid var(--sillon-filet);border-radius:var(--radius-tile);background:var(--sillon-papier);font-size:15px;line-height:1.6;color:var(--sillon-encre)}
.section-label{margin:30px 0 10px;font-size:22px}

/* ---------- Panels, notices, buttons ---------- */
.panel{padding:28px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.notice{padding:14px 16px;border:1px solid var(--sillon-filet);border-radius:var(--radius-tile);background:var(--sillon-papier);font-size:14px;line-height:1.6;color:var(--sillon-encre)}
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1.5px solid currentColor;border-radius:6px;background:none;font-family:var(--f-data);font-size:11px;font-weight:700;letter-spacing:.12em;line-height:1.4;text-transform:uppercase;color:var(--sillon-encre)}
.btn{font-family:var(--f-texte)}
.btn-secondary:disabled:hover{border-color:var(--sillon-filet-fort)}
.field{font-size:14px}

/* ---------- Profile (report.js) ---------- */
.profile-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:24px;align-items:start;max-width:1080px}
.profile-panel>p{font-size:15px}
.profile-panel>.text-button{display:block}
.profile-panel>.btn{margin:4px 8px 4px 0}
#profile-content .btn{margin:6px 8px 6px 0}
.icon-tile{display:inline-grid;place-items:center;width:46px;height:46px;margin-bottom:18px;border-radius:14px;background:var(--sillon-papier);border:1px solid var(--sillon-filet);color:var(--sillon-encre)}
.upload-zone{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;margin:22px 0;padding:28px 16px;border:1.6px dashed var(--sillon-graphite);border-radius:var(--radius-tile);background:var(--sillon-papier);color:var(--sillon-encre)}
.upload-zone:hover{border-color:var(--sillon-encre)}
.upload-zone .i{width:26px;height:26px}
.upload-zone strong{font-size:16px}
.upload-zone>span:last-child{font-size:13px;color:var(--sillon-graphite)}
.privacy-panel{position:relative;background:var(--sillon-encre);border-color:var(--sillon-encre);color:var(--sillon-feuille);box-shadow:var(--sillon-ombre)}
.privacy-panel::after{content:"";position:absolute;inset:6px;border:1.5px solid rgba(252,253,254,.6);border-radius:13px;pointer-events:none}
.privacy-panel>[data-icon]{margin-bottom:20px}
.privacy-panel>[data-icon] .i{width:28px;height:28px}
.privacy-panel h2{font-size:26px;color:var(--sillon-feuille)}
.privacy-panel p,.privacy-panel .muted{font-size:15px;color:rgba(252,253,254,.8)}
.privacy-panel .notice{background:rgba(252,253,254,.08);border-color:rgba(252,253,254,.24);color:var(--sillon-feuille)}
.grades{margin:18px 0}
.grade-row{margin:14px 0}
.grade-row strong{font-variant-numeric:tabular-nums}
.grade-track{height:6px;border-radius:3px;background:var(--sillon-papier);box-shadow:inset 0 0 0 1px var(--sillon-filet)}
.grade-fill{height:100%;border-radius:3px;background:var(--sillon-encre)}
#report-dialog h3{font-size:19px}

/* ---------- Formations ---------- */
.course-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin:18px 0}
.course-filters label{display:flex;flex-direction:column;gap:6px;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite)}
.course-filters input,.course-filters select{min-height:44px;max-width:240px;padding:10px 12px;border:1px solid var(--sillon-filet-fort);border-radius:var(--radius-small);background:var(--sillon-feuille);font-family:var(--f-texte);font-size:15px;font-weight:400;font-stretch:normal;letter-spacing:0;text-transform:none;color:var(--sillon-encre)}
.course-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.course-row{padding:20px 22px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.course-row h3{margin:10px 0 8px;font-size:19px}
.course-row p{margin:0 0 10px;font-size:15px;color:var(--sillon-graphite)}
.course-row a{font-size:14px;font-weight:700}

/* ---------- Calendrier (info.js) ---------- */
.calendar-status{display:flex;align-items:center;gap:24px;margin-bottom:28px;padding:22px 26px}
.calendar-status>*{position:relative;z-index:1}
.session-year{flex:none;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:rgba(252,253,254,.72)}
.calendar-status .session-year strong{display:block;margin-top:2px;font-family:var(--f-titre);font-weight:var(--titre-weight);font-stretch:var(--titre-stretch);font-size:34px;letter-spacing:0;line-height:1;color:var(--sillon-feuille)}
.calendar-status>div:nth-child(2){flex:1}
.calendar-status>div>strong{font-size:17px}
.calendar-status p{margin:6px 0 0;font-size:14px;color:rgba(252,253,254,.82)}
.calendar-status .btn{flex:none;background:var(--sillon-feuille);border-color:var(--sillon-feuille);color:var(--sillon-encre)}
.calendar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.calendar-phase{padding:22px 22px 24px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.phase-number{display:inline-grid;place-items:center;min-width:36px;height:36px;margin-bottom:14px;padding:0 8px;border-radius:999px;background:var(--sillon-encre);font-family:var(--f-data);font-size:12px;font-weight:700;letter-spacing:.06em;color:var(--sillon-feuille)}
.calendar-phase h2{font-size:21px}
.calendar-phase>p{margin:6px 0 22px;font-size:14px;color:var(--sillon-graphite)}
/* official dates: a solid encre line with stations */
.timeline{position:relative}
.timeline-event{position:relative;padding:0 0 22px 28px}
.timeline-event:last-child{padding-bottom:2px}
.timeline-event::before{content:"";position:absolute;left:0;top:3px;z-index:1;width:14px;height:14px;border-radius:50%;background:var(--sillon-feuille);border:2.4px solid var(--sillon-encre)}
.timeline-event:not(:last-child)::after{content:"";position:absolute;left:5.8px;top:10px;bottom:-10px;width:2.4px;background:var(--sillon-encre)}
.timeline-event>div{display:flex;align-items:center;justify-content:space-between;gap:8px}
.timeline-date{font-family:var(--f-data);font-size:12px;font-weight:700;font-stretch:var(--data-stretch);letter-spacing:.06em;text-transform:uppercase;color:var(--sillon-bleu)}
.timeline-event .past{flex:none;color:var(--sillon-graphite)}
.timeline-event h3{margin-top:6px;font-size:16px;line-height:1.4}
.calendar-bottom{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}
.calendar-bottom .panel{padding:24px}
.calendar-bottom h3{font-size:19px}
.calendar-bottom p,.calendar-bottom ul{font-size:15px;line-height:1.7;color:var(--sillon-encre)}
.calendar-bottom ul{padding-left:18px}
.document-links{display:flex;flex-direction:column;gap:14px;margin-top:18px;font-size:15px}

/* ---------- FAQ (info.js) ---------- */
.faq-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start}
.faq-count{margin:16px 0}
.faq-item{margin-bottom:10px;overflow:hidden;border:1px solid var(--sillon-filet);border-radius:var(--radius-tile);background:var(--sillon-feuille);box-shadow:0 6px 16px -14px rgba(14,26,59,.5)}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:44px;padding:16px 18px;list-style:none;cursor:pointer;font-size:16px;font-weight:700;line-height:1.45}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary small{display:block;margin-bottom:4px;font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite)}
.faq-plus{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--sillon-feuille);border:2.4px solid var(--sillon-encre);font-family:var(--f-data);font-size:17px;font-weight:700;line-height:1;color:var(--sillon-encre)}
.faq-item[open] .faq-plus{transform:rotate(45deg)}
.faq-item>div{padding:4px 18px 18px;border-top:1px solid var(--sillon-filet)}
.faq-item p{font-size:15px;line-height:1.65;color:var(--sillon-encre)}
.faq-item a{font-size:14px}
.faq-source-date{display:block;margin-top:8px;font-size:13px;color:var(--sillon-graphite)}
.faq-source-date.date-source{color:var(--sillon-bleu)}
.faq-help{position:sticky;top:20px;padding:24px}
.faq-help h2{font-size:22px}
.faq-help p{font-size:15px;color:var(--sillon-graphite)}
.faq-help .btn{width:100%;margin:6px 0}
.faq-help .notice{margin-top:18px;font-size:13px}

/* ---------- Dialogs ---------- */
dialog{width:min(800px,calc(100vw - 24px));max-height:90vh;padding:32px;border:1px solid var(--sillon-filet);border-radius:22px;background:var(--sillon-feuille);color:var(--sillon-encre);box-shadow:0 30px 80px -30px rgba(14,26,59,.6)}
dialog::backdrop{background:rgba(14,26,59,.52);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
dialog h2{margin:12px 0;padding-right:44px;font-size:clamp(26px,2.4vw,34px);line-height:1.08}
dialog h2 .it{font-size:1.06em}
dialog h3{margin-top:24px;font-size:19px}
dialog p{font-size:15px;color:var(--sillon-encre)}
dialog .close{position:absolute;top:16px;right:16px;z-index:2;width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid var(--sillon-filet-fort);border-radius:50%;background:var(--sillon-feuille);font-size:24px;line-height:1;color:var(--sillon-encre)}
dialog .close:hover{border-color:var(--sillon-encre)}
dialog .eyebrow,dialog>div>.badge{margin-right:48px}
.detail-hero{display:block;width:100%;height:220px;margin:18px 0 0;object-fit:cover;border-radius:var(--radius-tile)}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:18px 0}
.detail-grid ul{padding-left:18px;font-size:15px;line-height:1.8}
.detail-grid p{font-size:15px}
dialog .button-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
dialog .source{margin-top:18px;font-size:13px;line-height:1.7}
dialog input,dialog textarea{width:100%;padding:12px;border:1px solid var(--sillon-filet-fort);border-radius:var(--radius-small);background:var(--sillon-feuille);color:var(--sillon-encre)}
dialog canvas,dialog img{max-width:100%}
.share-list{display:grid;gap:10px;margin:22px 0}
.share-item{display:flex;align-items:center;gap:12px;min-height:48px;padding:12px 14px;border:1px solid var(--sillon-filet);border-radius:var(--radius-small);background:var(--sillon-papier);font-size:15px;font-weight:700}
.share-item input{width:20px;height:20px;flex:none;accent-color:var(--sillon-encre)}
.quiz-choice{display:block;width:100%;min-height:52px;margin:10px 0;padding:16px 18px;border:1px solid var(--sillon-filet-fort);border-radius:var(--radius-tile);background:var(--sillon-feuille);text-align:left;font-size:15px;font-weight:700;color:var(--sillon-encre)}
.quiz-choice:hover{border-color:var(--sillon-encre);background:var(--sillon-papier)}

/* ---------- Toast and footer ---------- */
#toast{position:fixed;left:50%;bottom:24px;z-index:20;max-width:calc(100vw - 32px);transform:translateX(-50%);padding:12px 20px;border-radius:999px;background:var(--sillon-encre);color:var(--sillon-feuille);font-size:14px;font-weight:700;box-shadow:var(--sillon-ombre)}
.app-footer{padding:20px var(--pad) 24px;border-top:1px solid var(--sillon-filet);background:var(--sillon-feuille);font-size:13px;color:var(--sillon-graphite)}
.footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:2px 20px}
.footer-brand{margin-right:auto;font-weight:700;color:var(--sillon-encre)}
.footer-social{margin:10px 0 0;font-size:13px;color:var(--sillon-encre)}
.footer-social a{display:inline-flex;align-items:center;min-height:44px}
.footer-independence{margin:12px 0 0;max-width:72ch;font-size:13px;line-height:1.5;color:var(--sillon-encre)}
.legal-independence p{margin:0}
.legal-independence p+p{margin-top:8px}
.app-footer button{min-height:44px;padding:0;border:0;background:none;font-size:13px;color:var(--sillon-encre);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.footer-links a{display:inline-flex;align-items:center;min-height:44px}
/* The links to the three pages read like the footer buttons; « Parcoursup officiel » keeps the link colour. */
.footer-links a[data-action]{color:var(--sillon-encre)}

/* ---------- Sphere integration (docs/web-sphere/PLAN.md): start points, comparison, FAQ legend and sources, legal, contact ---------- */
/* Parents: the condensed labels get word spacing so that their caps stay readable */
body.parent-mode :is(.data,.eyebrow,.nav-label,.local-session,.feed-heading>span,th,.course-filters label,.faq-item summary small,.start-top,.session-year,.badge,.stamp,.photo-label){word-spacing:.18em}
/* Découvrir: three starting points in the plaque */
.start-list{position:relative;z-index:1;display:flex;flex-direction:column;gap:8px}
.start-points{width:310px}
.feed-end{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 18px;padding:18px 20px;border:1px solid var(--sillon-filet);border-radius:var(--radius-tile);background:var(--sillon-feuille)}
.feed-end p{margin:0;max-width:560px;font-size:15px;font-weight:700;color:var(--sillon-encre)}
.feed-end-actions{display:flex;flex-wrap:wrap;gap:8px}
.quiz-choice-sub{display:block;margin-top:3px;font-size:13px;font-weight:400;color:var(--sillon-graphite)}
/* Formations: « Voir le trajet » next to the official link */
.course-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;margin:4px 0 2px}
.course-trajet{padding:9px 16px}
/* Parents */
.parent-table-note{margin:10px 0 0}
.parent-table-note .text-button{padding:0 2px}
.parent-info p{margin:6px 0 0}
.parent-info-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
/* Mes pistes « Comparer » */
.compare{margin:0 0 22px}
.compare:empty{display:none}
.compare-hint{margin:0;padding:12px 16px;border:1.5px dashed rgba(14,26,59,.3);border-radius:var(--radius-tile);background:var(--sillon-feuille);font-size:14px;color:var(--sillon-graphite)}
.compare-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 20px;padding:16px 20px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.compare-bar p{margin:4px 0 0;font-size:16px;font-weight:700}
.compare-vs{font-weight:400;color:var(--sillon-graphite)}
#compare-body{margin-top:14px}
.compare-table{min-width:0;table-layout:fixed;border:1px solid var(--sillon-filet);border-collapse:separate;border-spacing:0;border-radius:var(--radius-card);overflow:hidden;background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.compare-table thead th{background:var(--sillon-feuille);font-family:var(--f-titre);font-weight:var(--titre-weight);font-stretch:var(--titre-stretch);font-size:19px;letter-spacing:var(--titre-tracking);line-height:1.2;text-transform:none;color:var(--sillon-encre);word-spacing:normal}
.compare-table thead th:first-child,.compare-table tbody th{width:22%}
.compare-table tbody th{background:var(--sillon-papier)}
.compare-table td{font-size:14px;overflow-wrap:anywhere}
.compare-table tbody tr:last-child>*{border-bottom:0}
.compare-diplomas{margin:0 0 6px;padding-left:18px}
.compare-diplomas li{margin:4px 0}
.compare-diplomas .text-button{display:inline-flex;align-items:center;padding:0 2px;font-size:13px}
.compare-failed{color:var(--sillon-encre)}
.compare-failed .text-button{padding:0 2px}
.compare-stack{display:none}
.compare-card{padding:16px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce)}
.compare-card h3{margin:0 0 8px;font-size:19px}
.compare-card dl{margin:0}
.compare-card dl>div{padding:10px 0;border-top:1px solid var(--sillon-filet)}
.compare-card dt{font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite)}
.compare-card dd{margin:4px 0 0;font-size:14px;overflow-wrap:anywhere}
.compare-foot{margin:12px 0 0}
.compare-toggle{align-self:flex-start;min-height:44px;margin-top:10px;padding:8px 14px;cursor:pointer}
.compare-toggle .i{width:16px;height:16px}
/* FAQ: « Lire la carte » and « Sources et dates » */
.faq-more{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:20px;align-items:start;margin-top:28px}
.faq-more .panel{padding:24px}
.faq-more h2{margin:6px 0 8px;font-size:22px}
.legend-list{list-style:none;margin:14px 0 18px;padding:0}
.legend-list li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--sillon-filet);font-size:15px;line-height:1.45}
.legend-list li:last-child{border-bottom:0}
.legend-glyph{flex:none;display:inline-flex;align-items:center;justify-content:center;gap:3px;width:64px}
.legend-glyph .trait,.legend-glyph .trait-crayon{width:44px;min-width:0}
.legend-glyph .correspondance+.trait-crayon{width:30px}
.legend-violet{--trait-couleur:var(--ligne-correspondance)}
.legend-ans{padding:2px 6px;border:1.5px solid var(--sillon-encre);border-radius:6px;font-family:var(--f-data);font-size:var(--data-size);font-stretch:var(--data-stretch);font-weight:700;letter-spacing:.12em;white-space:nowrap;color:var(--sillon-encre)}
.sources-semantics{margin:0 0 6px;font-size:14px;color:var(--sillon-encre)}
.source-counts{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 0 10px;font-size:14px;color:var(--sillon-graphite)}
.source-count b{font-variant-numeric:tabular-nums;color:var(--sillon-encre)}
.sources-details summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:15px;font-weight:700;list-style:none}.sources-details summary::-webkit-details-marker{display:none}.sources-details summary::before{content:"+";display:inline-grid;place-items:center;width:20px;height:20px;flex:none;border:1.3px solid var(--sillon-encre);border-radius:50%;font-family:var(--f-data);font-size:13px;line-height:1}.sources-details[open] summary::before{content:"−"}
.sources-rows{list-style:none;margin:6px 0 0;padding:0}
.source-row{padding:14px 0;border-top:1px solid var(--sillon-filet)}
.source-row-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 10px}
.source-row-head strong{font-size:15px}
.source-state{flex:none;padding:2px 8px;border:1.5px solid var(--sillon-filet-fort);border-radius:6px;font-family:var(--f-data);font-size:var(--data-size);font-stretch:var(--data-stretch);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--sillon-graphite)}
.source-state-current{border-color:var(--sillon-encre);color:var(--sillon-encre)}
.source-state-aging{border-style:dashed}
.source-state-expired{background:var(--sillon-encre);border-color:var(--sillon-encre);color:var(--sillon-feuille)}
.source-dates{display:flex;flex-wrap:wrap;margin:6px 0 0;font-size:13px;color:var(--sillon-graphite)}
.source-edition{margin:4px 0 0}
.source-note{margin:6px 0 0;font-size:13px;line-height:1.55;color:var(--sillon-encre)}
.source-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin:6px 0 0;font-size:13px}
.sources-failed p{margin:0 0 10px}
/* Mentions légales and contact, pages at /mentions-legales and /contact. Contact is an e-mail link (owner decision, 11 October 2026): no form. */
.legal-list{margin:18px 0 6px}
.legal-list>div{display:grid;grid-template-columns:140px minmax(0,1fr);gap:4px 16px;padding:12px 0;border-top:1px solid var(--sillon-filet)}
.legal-list dt{font-family:var(--f-data);font-size:var(--data-size);font-weight:var(--data-weight);font-stretch:var(--data-stretch);letter-spacing:var(--data-tracking);text-transform:uppercase;color:var(--sillon-graphite);line-height:1.9}
.legal-list dd{margin:0;font-size:15px;line-height:1.6}
.legal-list .legal-mail{display:inline-flex;align-items:center;min-height:44px;margin:-11px 0;overflow-wrap:anywhere} /* 44 px touch target (SITE-IDENTITY rule 7) without growing the row */
.contact-mail{margin:18px 0 0}
.contact-mail .btn{max-width:100%;overflow-wrap:anywhere}
.contact-notice{margin-top:18px}
.contact-notice a.text-button{padding:0 2px}
/* Contact and Mentions légales as pages: the page heading, then one panel in the column of « Confidentialité » */
.info-page{max-width:880px;padding:24px}
.info-page>p:not([class]){margin:0 0 10px;font-size:15px;line-height:1.65;color:var(--sillon-encre)}
.info-page>.contact-mail{margin-top:14px}
.info-page>.contact-notice{max-width:72ch}
.info-page h2{margin:24px 0 8px;font-size:22px}
.info-page .legal-list{margin-top:18px}
.info-page .button-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
/* App Store badge in the Découvrir hero, between the title and the start card (Apple's artwork, unaltered, 40 px high).
   Shown only once APP_STORE_URL is set in app.js. */
.app-store-badge{flex:none;align-self:center;display:inline-flex;border-radius:7px}
.app-store-badge img{display:block;width:auto;height:40px}
/* « Confidentialité » page (data-page="privacy", address /confidentialite): one readable column of panels, the legal-list for the facts */
.privacy-updated{font-size:14px}
.privacy-page{display:grid;gap:18px;max-width:880px}
.privacy-section{padding:24px}
.privacy-section h2{margin:0 0 10px;font-size:22px;scroll-margin-top:24px}
.privacy-section h3{margin:0 0 8px;font-size:18px}
.privacy-section p{margin:0 0 10px;font-size:15px;line-height:1.65;color:var(--sillon-encre)}
.privacy-section a{overflow-wrap:anywhere}
.privacy-list{margin:0 0 10px;padding-left:20px;font-size:15px;line-height:1.65;color:var(--sillon-encre)}
.privacy-list li+li{margin-top:6px}
.privacy-processing{margin-top:18px;padding-top:18px;border-top:1px solid var(--sillon-filet)}
.privacy-facts{margin:12px 0 0}
.privacy-facts>div:last-child{padding-bottom:0}
.privacy-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.privacy-button.active{color:var(--sillon-encre)}
/* Erase both stored scenarios of this browser (two presses), on the « Confidentialité » page */
.privacy-clear{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:4px 0 12px}
.privacy-clear-status{margin:0;font-size:14px;font-weight:700;color:var(--sillon-encre)}
.privacy-clear-status:empty{display:none}
/* ---------- Hira in the shell: her page, the support card in a search, « Revenir à Hira », Mes pistes rows ---------- */
.hira-root{min-width:0}
.feed-support,.course-support{grid-column:1/-1;max-width:640px}
.empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.hira-return-row{margin:0 0 16px}
.hira-return{display:inline-flex;align-items:center;gap:8px;min-height:44px}
.hira-return .i{width:18px;height:18px}
.course-suggest{margin:0 0 14px}
.course-city-suggest{min-height:44px;padding:8px 16px 8px 13px;font-size:14px;cursor:pointer}
.hira-pistes{margin-top:8px}
.piste-rows{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.piste-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:12px 14px 12px 18px;border:1px solid var(--sillon-filet);border-radius:var(--radius-tile);background:var(--sillon-feuille)}
.piste-row-t{flex:1 1 220px;min-width:0;font-family:var(--f-titre);font-weight:var(--titre-weight);font-stretch:var(--titre-stretch);font-size:18px;line-height:1.2;overflow-wrap:anywhere}
.piste-row-actions{display:flex;align-items:center;gap:8px}
.piste-heart{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border:1px solid var(--sillon-filet-fort);border-radius:50%;background:var(--sillon-feuille);color:var(--sillon-encre)}
.piste-heart .i{width:22px;height:22px;stroke-width:1.9}
/* ---------- « Simulateur du bac »: the entry cards and the page that holds it (bac.css styles the simulator itself).
   Encre and graphite only: nothing here is « toi », no source or date. ---------- */
.profile-tools{grid-column:1}
.bac-entry{display:flex;align-items:center;gap:14px;width:100%;min-height:44px;padding:16px 18px;border:1px solid var(--sillon-filet);border-radius:var(--radius-card);background:var(--sillon-feuille);box-shadow:var(--sillon-ombre-douce);text-align:left;text-decoration:none;color:var(--sillon-encre)}
.bac-entry:hover{border-color:var(--sillon-encre)}
.bac-entry-icon{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:14px;background:var(--sillon-papier);border:1px solid var(--sillon-filet);color:var(--sillon-encre)}
.bac-entry-icon .i{width:22px;height:22px}
.bac-entry-text{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.bac-entry-t{font-size:19px;line-height:1.2;overflow-wrap:anywhere}
.bac-entry-l{font-size:14px;line-height:1.5;color:var(--sillon-graphite)}
.bac-entry-tag{display:inline-flex;align-items:center;gap:6px;margin-top:4px;font-size:13px;font-weight:700;color:var(--sillon-encre)}
.bac-entry-tag .i{width:15px;height:15px}
.bac-entry-go .i{width:20px;height:20px}
.bac-entry-parent{margin-top:20px}
.bac-root{min-height:50vh}
.bac-root:empty{min-height:0}

/* ---------- Responsive ---------- */
@media(min-width:1650px){
  :root{--guide-w:340px}
  .card-photo{height:290px}
  .card-body{padding:20px 22px}
  .card-body h3{font-size:21px}
  .discovery-layout{gap:32px}
  .guide{padding:20px 22px 22px}
}
@media(max-width:1350px){
  :root{--side:216px;--pad:28px;--guide-w:310px}
  .sidebar{padding:24px 12px 18px}
  .career-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .start-card{width:260px}
  .discovery-layout{gap:22px}
}
@media(max-width:1080px){
  :root{--side:198px;--pad:20px;--guide-w:300px}
  .sidebar{padding:22px 10px 16px}
  .sidebar .brand{margin-left:2px}
  .nav{font-size:13px;gap:9px;padding-left:16px}
  .nav-label{padding-left:26px}
  .breadcrumb{font-size:13px}
  .discovery-header{gap:16px}
  .start-card{width:230px}
  .start-card strong{font-size:18px}
  .discovery-layout{gap:18px}
  .card-photo{height:210px}
  .card-body{padding:14px}
  .card-body h3{font-size:18px}
  .profile-layout{grid-template-columns:1fr}
  .calendar-grid{grid-template-columns:1fr}
  .calendar-status{flex-wrap:wrap}
  .calendar-status .btn{margin-left:auto}
  .calendar-bottom{grid-template-columns:1fr}
  .faq-layout{grid-template-columns:minmax(0,1fr) 260px;gap:20px}
}
@media(max-width:860px){
  :root{--side:76px}
  .sidebar{padding:20px 8px 16px;align-items:stretch}
  .sidebar .brand{align-self:center;margin:0 0 26px;padding:9px 11px 10px}
  .sidebar .brand b,.nav-label,.sidebar-note,.local-session,.privacy-button,.sidebar .count{display:none}
  .sidebar nav{padding-left:12px}
  .nav{justify-content:center;padding:10px 6px;font-size:0;gap:0}
  .nav .i{width:22px;height:22px}
  .sidebar-bottom .nav{padding:10px 6px}
  .topbar{min-height:70px}
  .discovery-header{align-items:stretch}
  .start-card{width:200px;padding:16px}
  .start-card strong{font-size:17px}
  .discovery-layout{grid-template-columns:minmax(0,1fr)}
  .guide{position:static;max-height:none;overflow:visible}
  .parent-summary{grid-template-columns:1fr}
  .summary-card{display:none}
  .summary-card:first-child{display:block}
  .course-list{grid-template-columns:1fr}
  .faq-layout{grid-template-columns:1fr}
  .faq-help{position:static}
}
@media(max-width:690px){
  /* --nav-capsule-space: the capsule (74 px) with its 8 px inset and 8 px of air; Hira's composer bar sits above it */
  :root{--pad:16px;--nav-capsule-space:90px}
  /* the nav becomes the floating glass capsule of the app */
  .sidebar{inset:auto 8px calc(8px + env(safe-area-inset-bottom,0px)) 8px;z-index:10;width:auto;height:74px;flex-direction:row;align-items:stretch;padding:0 4px;overflow:visible;border:1px solid rgba(252,253,254,.8);border-radius:999px;background:rgba(252,253,254,.86);-webkit-backdrop-filter:blur(22px) saturate(1.5);backdrop-filter:blur(22px) saturate(1.5);box-shadow:0 0 0 .5px rgba(14,26,59,.16),0 14px 30px -10px rgba(14,26,59,.4),inset 0 1px 0 rgba(252,253,254,.92)}
  .sidebar .brand,.sidebar-bottom{display:none}
  body .sidebar nav{flex-direction:row;justify-content:space-between;width:100%;gap:0;padding:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;background:linear-gradient(rgba(14,26,59,.24),rgba(14,26,59,.24)) 26px 10px/calc(100% - 52px) 2px no-repeat local}
  body .sidebar nav::-webkit-scrollbar{display:none}
  .sidebar nav::before{display:none}
  .sidebar nav .nav{z-index:0;flex:1 1 0;flex-direction:column;justify-content:flex-start;gap:2px;width:auto;min-width:48px;height:100%;min-height:0;padding:21px 2px 5px;border:0;border-radius:0;background:none;box-shadow:none;font-family:var(--f-titre);font-weight:700;font-stretch:75%;letter-spacing:0;font-size:11px;line-height:1.05;text-align:center;color:rgba(14,26,59,.78)}
  body.parent-mode .sidebar nav .nav{font-family:var(--f-data);font-weight:600;font-stretch:75%}
  .sidebar nav .nav .i{width:20px;height:20px}
  /* the capsule is a line with one station per tab */
  .sidebar nav .nav::before{left:50%;top:6px;width:8px;height:8px;margin:0 0 0 -4px;z-index:2}
  .sidebar nav .nav:hover{background:none;color:var(--sillon-encre)}
  /* selected tab: a white pill, with the red ring station above its icon */
  .sidebar nav .nav.active{color:var(--sillon-encre);background:none;border:0;box-shadow:none}
  .sidebar nav .nav.active::after{content:"";position:absolute;z-index:-1;left:2px;right:2px;top:17px;bottom:4px;border-radius:15px;background:var(--sillon-feuille);box-shadow:0 0 0 .5px rgba(14,26,59,.16),0 5px 12px -7px rgba(14,26,59,.5)}
  .sidebar nav .nav.active::before{left:50%;top:3px;width:14px;height:14px;margin:0 0 0 -7px;box-shadow:inset 0 0 0 3.5px var(--sillon-rouge),0 0 0 1.5px var(--sillon-encre)}
  .app{margin-left:0;padding-bottom:100px}
  /* phones: logo, role switch and avatar on one 64 px row; the disclaimer as a thin full-width line under it (16 px gutter) */
  .topbar{min-height:0;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:64px auto;grid-template-areas:"logo roles avatar" "disc disc disc";column-gap:10px;row-gap:0;padding:0 14px}
  .topbar-disclaimer{margin:0 -14px;padding:6px 16px 7px;border-top:1px solid var(--sillon-filet);font-size:12px;line-height:1.4}
  .topbar-logo{display:inline-flex;justify-self:start;gap:8px;padding:7px 13px 8px 9px;border-radius:11px}
  .topbar-logo b{font-size:21px}
  .topbar-logo .ring-toi{width:14px;height:14px;border-width:3.6px}
  .breadcrumb{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .role-switch{margin-left:auto}
  .role-switch button{padding:6px 12px;font-size:13px}
  .avatar{width:44px;height:44px}
  main{padding:18px var(--pad) 28px}
  .discovery-header{flex-direction:column;gap:14px}
  .start-card{width:100%}
  .start-card strong{font-size:19px}
  .career-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .card-photo{height:200px}
  .card-body{padding:14px}
  .card-body h3{font-size:18px}
  .card-body>p{font-size:14px}
  .category-row{gap:6px;margin:14px 0 22px}
  .category-row .chip{padding:8px 13px 8px 11px;font-size:13px}
  .guide{padding:16px}
  .profile-panel,.privacy-panel{padding:22px}
  .detail-grid{grid-template-columns:1fr;gap:0}
  table{min-width:0}
  th,td{padding:12px 10px;font-size:14px}
  td strong{font-size:15px}
  td button{padding:8px 10px}
  dialog{padding:24px 18px}
  .detail-hero{height:170px}
  .calendar-status{gap:14px;padding:20px}
  .calendar-status>div:nth-child(2){min-width:180px}
  .calendar-status .btn{margin:0}
  .calendar-grid{gap:14px}
  .app-footer{padding:20px var(--pad) 24px}
  .footer-brand{width:100%}
  #toast{bottom:96px;width:max-content;border-radius:18px}
}
@media(max-width:560px){
  .career-grid{grid-template-columns:1fr}
  .card-photo{height:210px}
}
/* Narrowest phones (320 px): the logo, the role switch and the avatar stay on one row without page-level horizontal scroll */
@media(max-width:360px){.topbar{column-gap:6px;padding:0 10px}.topbar-disclaimer{margin:0 -10px}.role-switch button{padding:6px 9px}}
@media(max-height:840px) and (min-width:691px){.sidebar-note{display:none}}
/* Sphere integration · responsive */
@media(max-width:1080px){
  .faq-more{grid-template-columns:1fr}
  .start-points{width:250px}
}
@media(max-width:860px){
  .start-points{width:220px}
}
@media(max-width:690px){
  .start-points{width:100%}
  .compare-table{display:none}
  .compare-stack{display:grid;gap:12px}
  .legal-list>div{grid-template-columns:1fr}
  .privacy-section,.info-page{padding:20px 18px}
  .app-store-badge{align-self:flex-start}
  .feed-end-actions .btn{flex:1 1 auto}
  /* capsule with ten items: each item keeps its label, the capsule scrolls, a fade marks the hidden side */
  .sidebar nav .nav{flex:1 0 auto;min-width:54px;max-width:86px;padding-left:4px;padding-right:4px}
  body .sidebar nav.fade-end{-webkit-mask-image:linear-gradient(90deg,var(--sillon-encre) calc(100% - 34px),transparent);mask-image:linear-gradient(90deg,var(--sillon-encre) calc(100% - 34px),transparent)}
  body .sidebar nav.fade-start{-webkit-mask-image:linear-gradient(90deg,transparent,var(--sillon-encre) 34px);mask-image:linear-gradient(90deg,transparent,var(--sillon-encre) 34px)}
  body .sidebar nav.fade-start.fade-end{-webkit-mask-image:linear-gradient(90deg,transparent,var(--sillon-encre) 34px,var(--sillon-encre) calc(100% - 34px),transparent);mask-image:linear-gradient(90deg,transparent,var(--sillon-encre) 34px,var(--sillon-encre) calc(100% - 34px),transparent)}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
