/* Robotmeet · composants historiques (refonte du 5 octobre 2026), portés aux valeurs du
   Système le 12 octobre 2026 : texte courant en 14 px, titre de page en 30 px, boutons et
   champs de 44 px, pastilles rondes. Toutes les valeurs viennent des jetons de brand.css,
   chargé avant. Le gabarit (rail, onglets du téléphone) et les composants neufs sont dans
   rm.css, chargée après. Le site public a sa feuille à part (site.css). Aucune couleur hors
   jetons ; clair seulement. */

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;overflow-x:clip;background:var(--bg);color:var(--ink);font:400 var(--fs-body)/1.5 var(--font-ui);font-synthesis:none;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:var(--fw-title);letter-spacing:var(--ls-title);line-height:1.2;text-wrap:balance;color:var(--ink)}
h1{font-size:var(--fs-title);letter-spacing:-.035em}
h2{font-size:var(--fs-5);line-height:1.3}
h3{font-size:var(--fs-3);line-height:1.35}
p{margin:0}
a{color:var(--link);font-weight:550;text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img,svg,video{max-width:100%}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
[hidden]{display:none!important}
/* Chiffres tabulaires seulement pour les données (durées, heures, montants, horodatages). */
time,.k-row .when,.stat-card strong,.count-pill,.usage-numbers,.ts,.today-time,.mtg-list-row small,.quota-line b,.frise .ticks,.k-status{font-variant-numeric:tabular-nums}
.shell{width:min(1240px,calc(100% - 48px));margin-inline:auto}
main.shell{display:grid;gap:var(--s4);align-content:start;padding-block:var(--s5) var(--s7);min-height:calc(100vh - 160px)}
main.shell>*{min-width:0}
.shell.shell-wide{width:calc(100% - 32px);max-width:1600px}
main.shell-wide{padding-top:var(--s3)}
.skip-link{position:absolute;left:var(--s4);top:-60px;z-index:60;background:var(--ink);color:var(--white);padding:var(--s2) var(--s3);border-radius:var(--r-control);text-decoration:none}
.skip-link:focus{top:var(--s2)}
.eyebrow,.mono-label{margin:0;font:550 var(--fs-1)/1.3 var(--font-ui);letter-spacing:.02em;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:var(--fs-note)}
.lead{font-size:var(--fs-3);line-height:1.55;color:var(--muted);max-width:62ch}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- En-tête ---------- */
.site-header{position:relative;z-index:30;background:var(--surface);border-bottom:1px solid var(--line)}
.header-inner{min-height:56px;display:flex;align-items:center;gap:var(--s5)}
.brand{display:inline-flex;align-items:center;flex:none;color:var(--ink);line-height:0;text-decoration:none}
.brand:hover{text-decoration:none}
.brand svg{display:block;height:19px;width:auto}
.site-header nav{display:flex;align-items:center;gap:2px;min-width:0}
.nav-link{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 10px;border-radius:var(--r-control);color:var(--muted);font:550 var(--fs-2)/1 var(--font-ui);text-decoration:none;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.nav-link:hover{color:var(--ink);background:var(--sunken);text-decoration:none}
.nav-link.active,.nav-link[aria-current="page"]{color:var(--ink);background:var(--sunken)}
.public-nav{margin-inline:auto}
.header-actions{display:flex;gap:var(--s2);align-items:center}
/* Menu du compte : un details, sans JavaScript */
.account-menu{position:relative;margin-left:auto;flex:none}
.account-menu>summary{list-style:none;display:flex;align-items:center;gap:var(--s2);cursor:pointer;border-radius:var(--r-pill);padding:2px}
.account-menu>summary::-webkit-details-marker{display:none}
.account-menu>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.user-avatar{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--signal-soft);color:var(--iris-text);font:650 var(--fs-1)/1 var(--font-ui);letter-spacing:-.02em}
.account-menu[open]>summary .user-avatar,.account-menu.is-current>summary .user-avatar{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--line-strong)}
.account-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:40;display:grid;gap:2px;min-width:250px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--sh-2)}
.account-panel .account-who{padding:6px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px;color:var(--muted);font-size:var(--fs-1);overflow-wrap:anywhere}
.account-panel a{display:flex;align-items:center;min-height:38px;padding:0 10px;border-radius:var(--r-control);color:var(--ink);font-weight:500;text-decoration:none}
.account-panel a:hover,.account-panel a[aria-current="page"]{background:var(--sunken);text-decoration:none}
/* Lien vers le compte Escouade (sélecteur de la famille, T4-05). */
.account-panel .family-link{gap:4px}
.account-panel form{margin:4px 0 0;padding-top:6px;border-top:1px solid var(--line)}
.account-panel .text-button{width:100%;justify-content:flex-start;min-height:36px;padding:0 10px;text-align:left}
.menu-toggle{display:none;margin-left:auto}
.menu-toggle summary{list-style:none;display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line-strong);border-radius:var(--r-control);cursor:pointer}
.menu-toggle summary::-webkit-details-marker{display:none}
.menu-toggle summary i{display:block;width:16px;height:2px;background:var(--ink);box-shadow:0 5px 0 var(--ink),0 -5px 0 var(--ink)}
.menu-panel{position:absolute;right:16px;left:16px;top:60px;z-index:30;display:grid;gap:var(--s1);padding:var(--s3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--sh-2)}
.menu-panel a{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:var(--r-control);color:var(--ink);font-weight:550;text-decoration:none}
.menu-panel a:hover{background:var(--sunken);text-decoration:none}
.menu-panel .is-iris{background:var(--iris);color:var(--ink)}

/* ---------- Pied de page ---------- */
.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s3) var(--s5);border-top:1px solid var(--line);padding-block:var(--s5);color:var(--muted);font-size:var(--fs-1)}
.footer-links{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:center}
.footer-links a{color:var(--muted);font-weight:500}
.footer-links a:hover{color:var(--ink);text-decoration:none}

/* ---------- Boutons ---------- */
/* Système : 44 px de haut partout, la même cible au doigt et à la souris. Plein
   (.button-primary) : l'action de l'écran, un seul par écran. Contour (.button,
   .button-subtle) : une action qui engage. Discret (.button-quiet, .text-button) : tout le
   reste ; le surplus va dans le menu « ··· » (.rm-more, rm.css). */
.button{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--h-control);padding:0 18px;border-radius:var(--r-control);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:600 var(--fs-body)/1.2 var(--font-ui);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.button:hover{border-color:var(--ink);text-decoration:none}
.button-primary{background:var(--action);border-color:var(--action);color:var(--on-action)}
.button-primary:hover{background:var(--action-strong);border-color:var(--action-strong);box-shadow:0 6px 16px rgba(22,19,43,.16)}
.button-subtle{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.button-quiet{background:transparent;border-color:transparent;color:var(--ink-soft)}
.button-quiet:hover{background:var(--sunken);border-color:transparent;color:var(--ink)}
.button-iris{background:var(--iris);border-color:var(--iris);color:var(--on-signal)}
.button-iris:hover{border-color:var(--ink)}
.button:disabled,.button[aria-disabled="true"]{opacity:.42;cursor:not-allowed}
.button.danger{border-color:var(--line-strong)}
.button svg{width:16px;height:16px}
.full{width:100%}
.text-button{appearance:none;display:inline-flex;align-items:center;min-height:var(--h-control);border:0;background:none;padding:6px;color:var(--muted);font:550 var(--fs-note)/1.2 var(--font-ui);cursor:pointer;border-radius:var(--r-control)}
.text-button:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.text-button.danger{color:var(--ink)}
/* Bouton-texte seul dans un panneau (Résilier, Déconnecter, Arrêter le partage…) : son
   libellé s'aligne sur la colonne de texte, malgré la marge intérieure du survol. */
.panel>.text-button,.panel form>.text-button:only-of-type{margin-inline-start:-6px}
.header-link,.preview-link,.back-link{color:var(--link);font-weight:550;text-decoration:none}
.header-link:hover,.preview-link:hover,.back-link:hover{text-decoration:underline;text-underline-offset:3px}
.back-link{justify-self:start;font-size:var(--fs-2)}

/* ---------- Champs ---------- */
/* Système : 44 px de haut, texte en 15 px, libellé de 13 px au-dessus (il y reste quand on
   écrit), indication à la couleur du texte secondaire. Case à cocher de 22 px. Un champ en
   erreur (aria-invalid) prend un filet encre de 2 px ; sa phrase est un .rm-field-error. */
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),select,textarea{width:100%;min-height:var(--h-control);padding:0 14px;border-radius:var(--r-control);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:400 15px/1.4 var(--font-ui);transition:border-color var(--t-fast) var(--ease)}
textarea{padding:12px 14px;min-height:90px;line-height:1.5}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
input:hover,select:hover,textarea:hover{border-color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}
input[aria-invalid="true"]:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),select[aria-invalid="true"],textarea[aria-invalid="true"]{border:2px solid var(--ink)}
input[type=checkbox],input[type=radio]{accent-color:var(--ink);width:18px;height:18px;margin:1px 0 0}
input[type=checkbox]{width:22px;height:22px}
label{font:600 var(--fs-note)/1.3 var(--font-ui);color:var(--ink)}
.join-form{display:grid;gap:var(--s3);align-content:start}
.join-form label{display:grid;gap:6px}
.join-form>button{justify-self:start}
.join-form .consent,.consent-check{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-control);background:var(--surface);font-weight:400;line-height:1.5}
.consent-check small{font-size:var(--fs-1);color:var(--muted)}
.search-form{display:grid;gap:6px}
.search-form>div{display:flex;gap:var(--s2);flex-wrap:wrap}
.search-form input{flex:1 1 260px;width:auto}

/* ---------- Surfaces ---------- */
.panel,.settings-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);padding:20px 22px;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s3);align-content:start;min-width:0}
.panel h2,.settings-panel h2{font-size:var(--fs-4)}
.panel h3,.settings-panel h3{font-size:var(--fs-3)}
.panel p,.settings-panel p{max-width:72ch}
.panel>.button,.panel>form>.button{justify-self:start}
.panel>form{margin:0}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding-bottom:var(--s2);border-bottom:1px solid var(--line)}
.panel-heading h2{font-size:var(--fs-3)}
.count-pill{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 7px;border-radius:var(--r-pill);background:var(--sunken);color:var(--muted);font:600 var(--fs-1)/1 var(--font-ui)}
.section-head{display:grid;gap:4px;padding-top:var(--s1)}
.section-head h1{font-size:var(--fs-title)}
.section-head p:not(.eyebrow){color:var(--muted)}
.section-head-action{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:var(--s4)}
.section-head-action>div{display:grid;gap:4px}
.detail-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:start;gap:var(--s3)}
.detail-heading>div{display:grid;gap:6px}
.split-layout,.billing-grid,.settings-grid,.service-settings-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--s4);align-items:start}
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:var(--s4);align-items:start}
.detail-actions,.actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.detail-actions form,.actions form{margin:0}
.detail-actions:empty{display:none}
.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3)}
.stat-card{display:grid;gap:2px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.stat-card span{font:550 var(--fs-1)/1.3 var(--font-ui);color:var(--muted)}
.stat-card strong{font:600 var(--fs-6)/1.1 var(--font-display);letter-spacing:-.02em}
.stat-card small{color:var(--muted);font-size:var(--fs-1)}
.empty-list{padding:var(--s3) 0;color:var(--muted)}
.empty-state{display:grid;justify-items:start;gap:var(--s3);padding:var(--s5);background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--r-card);max-width:720px}
.empty-state h1{font-size:var(--fs-5)}
.empty-state p{color:var(--muted);max-width:60ch}
.k-empty{display:grid;gap:var(--s2);padding:var(--s4);background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--r-card)}
.k-empty h2{font-size:var(--fs-3)}
.k-empty p{color:var(--muted);max-width:60ch}

/* Message de service neutre ; l'erreur est à l'encre avec « ! », sans couleur propre */
.notice{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:10px 14px;border-radius:var(--r-control);background:var(--sunken);border:1px solid var(--line);font-size:var(--fs-2);color:var(--ink)}
.notice a{font-weight:600}
.trash-undo form{margin:0}
.trash-undo .text-button{min-height:32px;padding:0;color:var(--ink);font-weight:600;text-decoration:underline}
.notice-waiting{background:var(--signal-soft);border-color:transparent;font-weight:550}
.notice-error,.error-text{display:grid;grid-template-columns:20px minmax(0,1fr);gap:var(--s2);align-items:start;color:var(--error)}
.notice-error{background:var(--surface);border:1.5px solid var(--ink);border-radius:var(--r-tile)}
.notice-error::before,.error-text::before,.bang{content:"!";display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--error);color:var(--surface);font:700 var(--fs-1)/1 var(--font-ui);flex:none}
.bang{display:inline-grid}
/* `content` ne vaut que pour un pseudo-élément : le « ! » du rond des pages d’erreur. */
.bang::before{content:"!"}
.empty-state.is-error h1{display:flex;gap:var(--s2);align-items:center}

/* ---------- Pastilles d'état honnêtes ---------- */
/* Système : pastille ronde de 26 px, gris doux. Une seule est pleine, à l'encre : « Compte
   rendu prêt ». Le violet et son point ne servent qu'à l'admission (« À admettre ») et à
   l'enregistrement (« Enregistre ») ; le point bat seulement pendant l'enregistrement.
   Aucune couleur d'erreur : un échec garde le « ! » dans un rond encre. Même dessin que
   .rm-chip (rm.css), sous les classes que les pages portent déjà. */
.badge,.k-status{display:inline-flex;align-items:center;gap:7px;min-height:26px;padding:0 10px;border-radius:var(--r-pill);font:500 var(--fs-tag)/1.3 var(--font-ui);white-space:nowrap;border:1px solid transparent;color:var(--ink-soft);background:var(--sunken);justify-self:start}
.k-status--ready{color:var(--white);background:var(--ink)}
.badge-live,.k-status--waiting,.k-status--live{color:var(--recording-ink);background:var(--recording-soft)}
.k-status .dot,.rec-ind .dot,.live-dot{width:8px;height:8px;border-radius:50%;background:var(--recording);flex:none}
.k-status--live .dot,.rec-ind .dot,.live-dot{animation:rec-pulse 1.6s ease-out infinite}
.badge-error,.k-status--failed,.k-status--transcript{background:var(--surface);border-color:var(--line-strong)}
.badge-error::before,.k-status--failed::before{content:"!";width:14px;height:14px;border-radius:50%;background:var(--error);color:var(--surface);display:grid;place-items:center;font:700 10px/1 var(--font-ui)}
.k-status--demo{background:var(--surface);border:1px dashed var(--faint)}
.rec-ind{display:inline-flex;align-items:center;gap:7px;min-height:26px;padding:0 10px;border-radius:var(--r-pill);background:var(--recording-soft);color:var(--recording-ink);font:500 var(--fs-tag)/1.3 var(--font-ui)}
@keyframes rec-pulse{0%{box-shadow:0 0 0 0 rgba(91,75,219,.55)}70%{box-shadow:0 0 0 8px rgba(91,75,219,0)}100%{box-shadow:0 0 0 0 rgba(91,75,219,0)}}

/* ---------- Listes de réunions : une ligne par réunion ---------- */
.k-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden}
.k-list-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:10px 16px;border-bottom:1px solid var(--line)}
.k-list-head h2{font-size:var(--fs-3);letter-spacing:-.01em}
.k-row{display:grid;grid-template-columns:76px minmax(0,1fr) auto 14px;gap:12px;align-items:center;min-height:52px;padding:8px 16px;border-bottom:1px solid var(--line);color:var(--ink);font-weight:400;text-decoration:none;transition:background var(--t-fast) var(--ease)}
.k-row:last-child{border-bottom:0}
.k-row:hover{background:var(--sunken);text-decoration:none}
.k-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.k-row .when{display:grid;gap:2px}
.k-row .when b{font:600 var(--fs-2)/1.2 var(--font-ui)}
.k-row .when small{font:400 var(--fs-1)/1.2 var(--font-ui);color:var(--muted);white-space:nowrap}
.k-row .what{display:grid;gap:2px;min-width:0}
.k-row .what b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.k-row .what small{color:var(--muted);font-size:var(--fs-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.k-row .go{color:var(--line-strong)}
.k-row.is-live{background:color-mix(in srgb,var(--signal-soft) 60%,var(--surface))}
.k-row.is-dim .what b{color:var(--muted)}
.k-list .empty-list{padding:12px 16px}
.k-list-link{font-size:var(--fs-1);font-weight:550}
.list-tools{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:end;justify-content:space-between}
.list-tools .search-form{flex:1 1 320px}
/* ancien nom de ligne (équipes, démo) aligné sur la ligne de réunion */
.meeting-row{display:grid;grid-template-columns:minmax(0,1fr) auto 14px;gap:12px;align-items:center;min-height:52px;padding:8px 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}
.meeting-row:hover{background:var(--sunken)}
.meeting-summary{display:grid;gap:2px;min-width:0;color:var(--ink);font-weight:400;text-decoration:none}
.meeting-summary strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meeting-summary small{color:var(--muted);font-size:var(--fs-1)}
.row-arrow{color:var(--line-strong)}
.date-box{display:none}
.account-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s3);padding:10px 0;border-top:1px solid var(--line)}
.account-row form{margin:0}
.account-main{display:grid;gap:2px;min-width:0}
.account-main strong{font-weight:600;overflow-wrap:anywhere}
.account-main small{color:var(--muted);font-size:var(--fs-1)}
.provider-mark{width:36px;height:36px;flex:none;border-radius:var(--r-control);border:1px solid var(--line-strong);display:grid;place-items:center;font:650 var(--fs-3)/1 var(--font-display);color:var(--ink)}

/* ---------- Premiers pas ---------- */
.checklist{margin:0;padding:0;list-style:none;display:grid;gap:var(--s2)}
.checklist li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:2px 10px;align-items:start}
.checklist li>*{grid-column:2}
.checklist li::before{content:"";grid-column:1;grid-row:1/4;width:18px;height:18px;margin-top:1px;border-radius:5px;border:1.5px solid var(--line-strong)}
.checklist li.done::before{content:"✓";display:grid;place-items:center;background:var(--ink);border-color:var(--ink);color:var(--surface);font:700 11px/1 var(--font-ui)}
.checklist li span{color:var(--muted)}
.checklist li.done strong{color:var(--muted)}

/* ---------- Aujourd'hui : les réunions d'abord ---------- */
.today-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--s4);padding-bottom:var(--s4);border-bottom:1px solid var(--line)}
.today-head h1{margin-bottom:2px}
.today-head p{color:var(--muted)}
.today-head-side{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s4)}
.today-head-side form{margin:0}
.quota-line{display:grid;gap:4px;min-width:160px;font-size:var(--fs-1);color:var(--muted)}
.quota-line b{font-size:var(--fs-2);font-weight:600;color:var(--ink)}
.quota-line b span{color:var(--muted);font-weight:500}
.quota-bar{display:block;height:4px;border-radius:2px;background:var(--line);overflow:hidden}
.quota-bar i{display:block;height:100%;background:var(--ink)}
.today-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--s4);align-items:start}
.today-main,.today-side{display:grid;gap:var(--s4);align-content:start;min-width:0}
/* Région relue en direct (`live.mjs`) : transparente pour la mise en page. */
.live-region{display:contents}
.today-card{display:grid;gap:var(--s2);padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow)}
.today-card h2{font-size:var(--fs-3)}
.today-card .decided b{font-weight:650}
.today-actions{display:grid;gap:0}
.today-action{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:var(--fs-2)}
.today-action:first-child{border-top:0}
.today-action::before{content:"";width:16px;height:16px;margin-top:1px;border-radius:4px;border:1.5px solid var(--line-strong)}
.today-action.is-done::before{content:"✓";display:grid;place-items:center;background:var(--ink);border-color:var(--ink);color:var(--surface);font:700 10px/1 var(--font-ui)}
.today-action.is-done span{color:var(--muted);text-decoration:line-through}
.today-action small{display:block;color:var(--muted);font-size:var(--fs-1)}
a.today-action{padding:8px 4px;color:var(--ink);font-weight:400;text-decoration:none}
a.today-action:hover{background:var(--sunken);text-decoration:none}
.today-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2)}
.today-card>.button{justify-self:start}
.today-card .decided{padding:8px 12px;border-left:2px solid var(--iris);border-radius:0 var(--r-control) var(--r-control) 0;background:var(--signal-soft);font-size:var(--fs-3);line-height:1.55}
.today-search{display:flex;gap:var(--s2)}
.today-search input{flex:1 1 auto;width:auto}
.quick-join .join-form{gap:10px}
.quick-join .join-form>button{justify-self:stretch}

/* ---------- Bibliothèque ---------- */
.lib-tools{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:end;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.lib-tools label{display:grid;gap:5px;flex:1 1 260px}
.lib-tools label.lib-state{flex:0 1 220px}
.lib-chips{display:flex;flex-wrap:wrap;gap:6px}
.lib-chips a{display:inline-flex;align-items:center;min-height:28px;padding:0 11px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:500;text-decoration:none}
.lib-chips a:hover{border-color:var(--ink);text-decoration:none}
.lib-chips a[aria-current="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}

/* ---------- Réunion : trois volets ---------- */
.mtg-layout{display:grid;grid-template-columns:232px minmax(0,1fr) 380px;align-items:start;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);box-shadow:var(--shadow);min-height:calc(100vh - 120px)}
.mtg-list,.mtg-side{position:sticky;top:0;max-height:100vh;overflow:auto;scrollbar-width:thin}
.mtg-list{padding:14px 10px 20px;border-right:1px solid var(--line);background:var(--bg);border-radius:var(--r-card) 0 0 var(--r-card)}
.mtg-list-head{display:flex;justify-content:space-between;align-items:center;padding:0 8px 6px;font-weight:600}
.mtg-list-group{margin:12px 8px 4px;font-size:var(--fs-1);font-weight:550;color:var(--muted)}
.mtg-list-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 8px;column-gap:8px;padding:7px 8px;border-radius:var(--r-control);color:var(--ink);font-weight:400;text-decoration:none}
.mtg-list-row:hover{background:var(--sunken);text-decoration:none}
.mtg-list-row[aria-current="page"]{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
.mtg-list-row b{font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtg-list-row small{grid-column:1;color:var(--muted);font-size:var(--fs-1)}
.mtg-dot{grid-column:2;grid-row:1/3;align-self:center;width:7px;height:7px;border-radius:50%;background:var(--line-strong)}
.mtg-dot.is-ready{background:var(--iris)}
.mtg-dot.is-planned{background:transparent;box-shadow:inset 0 0 0 1.5px var(--muted)}
.mtg-dot.is-live{background:var(--recording);animation:rec-pulse 1.6s ease-out infinite}
.mtg-main{min-width:0;padding:18px 26px 36px;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s3);align-content:start}
.mtg-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--fs-1);color:var(--muted)}
.mtg-crumbs a{color:var(--muted);font-weight:500}
.mtg-crumbs a:hover{color:var(--ink)}
.mtg-titlerow{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:var(--s3)}
.mtg-head{display:grid;gap:8px}
.mtg-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}
.mtg-title h1{font-size:22px;overflow-wrap:anywhere}
.mtg-meta{display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--muted);font-size:var(--fs-2)}
.mtg-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mtg-actions form{margin:0}
.mtg-tabs{display:flex;flex-wrap:wrap;gap:2px;margin-top:4px;border-bottom:1px solid var(--line)}
.mtg-tabs a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-bottom:2px solid transparent;color:var(--muted);font-weight:550;text-decoration:none}
.mtg-tabs a:hover{color:var(--ink);text-decoration:none}
.mtg-tabs a:first-child{color:var(--ink);border-bottom-color:var(--ink)}
.mtg-side{padding:14px 16px 24px;border-left:1px solid var(--line);background:var(--bg);border-radius:0 var(--r-card) var(--r-card) 0}
.mtg-side .transcript-panel{border:0;padding:0;background:none;box-shadow:none}
.mtg-main>.doc,.mtg-main>.panel{box-shadow:none}
.mtg-more{position:relative}
.mtg-more>summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--surface);font-weight:600;cursor:pointer;transition:border-color var(--t-fast) var(--ease)}
.mtg-more>summary::-webkit-details-marker{display:none}
.mtg-more>summary::after{content:"";width:6px;height:6px;margin-top:-3px;border:solid var(--muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.mtg-more>summary:hover,.mtg-more[open]>summary{border-color:var(--ink)}
.mtg-more[open]>summary{margin-bottom:0}
.mtg-more-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:20;display:grid;gap:2px;min-width:250px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--sh-2)}
.mtg-more-panel a{display:flex;align-items:center;min-height:34px;padding:0 10px;border-radius:var(--r-control);color:var(--ink);font-weight:500;text-decoration:none}
.mtg-more-panel a:hover{background:var(--sunken);text-decoration:none}
.mtg-status{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:10px 14px;border-radius:var(--r-card);background:var(--signal-soft);font-size:var(--fs-2)}
.mtg-status p{flex:1 1 260px}
.mtg-status.is-waiting,.mtg-status.is-thinking{background:var(--group)}
.mtg-section{display:grid;gap:var(--s3);padding-top:var(--s4);border-top:1px solid var(--line);min-width:0}
.mtg-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:0}
.mtg-facts>div{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.mtg-facts dt{color:var(--muted)}
.mtg-facts dd{margin:0;overflow-wrap:anywhere}
.mtg-access{display:inline-flex;align-items:center;gap:4px;margin-left:auto;padding:1px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font-weight:550}
.mtg-access.is-shared{border-color:transparent;background:var(--signal-soft);color:var(--ink)}
.mtg-access a{color:var(--iris-text);font-weight:600}
.mtg-context{display:grid;gap:6px;padding-top:var(--s2)}
.mtg-context p{white-space:pre-line;font-size:var(--fs-3);line-height:1.6;max-width:72ch}
.copy-link{padding:0 4px;color:var(--link)}
.mtg-list-head a{font-size:var(--fs-1);font-weight:550}
.mtg-list-empty{padding:4px 8px;color:var(--muted);font-size:var(--fs-1)}
.mtg-tabs .mtg-tab-side{display:none}

/* ---------- Détail de réunion ---------- */
.meta-line{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;color:var(--muted);font-size:var(--fs-2)}
.doc{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:16px 18px 18px;display:grid;gap:var(--s3);align-content:start;min-width:0}
.mtg-main .doc{border:0;padding:0;background:none}
.mtg-main .doc>.kv{display:none}
.doc-top{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding-bottom:var(--s2);border-bottom:1px solid var(--line);min-width:0}
.doc-who{display:grid;gap:2px;font:650 var(--fs-3)/1.2 var(--font-display);letter-spacing:-.01em;min-width:0}
.doc-who small{display:block;font:400 var(--fs-1)/1.3 var(--font-ui);letter-spacing:0;color:var(--muted)}
.doc-ref{font:550 var(--fs-1)/1.35 var(--font-ui);color:var(--muted);text-align:right;flex:none}
.blockt{font:600 var(--fs-1)/1.2 var(--font-ui);color:var(--muted)}
.doc p{font-size:var(--fs-3);line-height:1.65;max-width:72ch}
.doc .decided{font-weight:400}
.doc .decided b{font-weight:650}
.kv{display:grid;font:400 var(--fs-2)/1.4 var(--font-ui);min-width:0}
.kv>div{display:flex;justify-content:space-between;gap:var(--s3);padding:7px 0;border-top:1px solid var(--line)}
.kv>div:last-child{border-bottom:1px solid var(--line)}
.kv>div>span:first-child{color:var(--muted);flex:none}
.kv>div>span:last-child{text-align:right;min-width:0;overflow-wrap:anywhere}
.dlist,.report-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--s2);font-size:var(--fs-3)}
.dlist li,.report-list li{display:grid;grid-template-columns:16px minmax(0,1fr);gap:var(--s2);line-height:1.6}
.dlist li::before,.report-list li::before{content:"";width:6px;height:6px;margin:9px 0 0 4px;border-radius:50%;background:var(--muted)}
.dlist small{display:block;font:400 var(--fs-1)/1.4 var(--font-ui);color:var(--muted)}
.report-text{white-space:pre-line}
.fine{font-size:var(--fs-1);color:var(--muted);border-top:1px solid var(--line);padding-top:var(--s3)}
.frise{display:grid;gap:6px}
.frise .track{display:flex;gap:2px;height:10px;overflow:hidden}
.frise .track i{display:block;height:100%;border-radius:3px;min-width:2px}
.frise .ticks{display:flex;justify-content:space-between;font:400 var(--fs-1) var(--font-ui);color:var(--muted)}
.frise .who{display:flex;flex-wrap:wrap;gap:6px 12px;font:400 var(--fs-1) var(--font-ui);color:var(--muted)}
.frise .who span::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;background:var(--c)}
.sp1{--c:var(--sp1);background:var(--sp1)}.sp2{--c:var(--sp2);background:var(--sp2)}.sp3{--c:var(--sp3);background:var(--sp3)}
.frise .who span{background:none}
.transcript-panel{gap:var(--s2)}
.segment{display:grid;grid-template-columns:46px minmax(0,1fr);gap:var(--s2);padding:8px 8px;border-radius:var(--r-control);transition:background var(--t-fast) var(--ease)}
.segment:hover{background:var(--sunken)}
.segment time{font:500 var(--fs-1)/1.9 var(--font-ui);color:var(--link)}
.segment strong,.speaker{display:block;font:600 var(--fs-1)/1.3 var(--font-ui);margin-bottom:2px}
.segment p{font-size:var(--fs-3);line-height:1.55;max-width:65ch}
.audio-panel audio{width:100%}
.audio-panel article{display:grid;gap:var(--s2);padding-top:var(--s3);border-top:1px solid var(--line)}
details>summary{cursor:pointer;font-weight:600}
details[open]>summary{margin-bottom:var(--s2)}
.detail-col{display:grid;gap:var(--s4);align-content:start;min-width:0}
.doc-section{display:grid;gap:6px;min-width:0;padding-top:var(--s3);border-top:1px solid var(--line)}
.doc-section:first-of-type{border-top:0}
.doc h2.blockt{margin:0}
.ts{display:inline-block;font:550 var(--fs-1)/1.4 var(--font-ui);color:var(--link);text-decoration:none;padding:0 6px;border-radius:5px;background:var(--sunken);white-space:nowrap;vertical-align:1px}
a.ts:hover{background:var(--signal-soft);text-decoration:none}
.decisions{margin:0;padding:0;list-style:none;display:grid;gap:var(--s2)}
.decisions li{font-size:var(--fs-3);line-height:1.6;padding:8px 12px;border-left:2px solid var(--iris);border-radius:0 var(--r-control) var(--r-control) 0;background:var(--signal-soft)}
.action-item{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--s3);align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.action-item:first-of-type{border-top:0}
.action-item form{margin:0}
.action-item p{margin:0;font-size:var(--fs-3);line-height:1.5}
.action-item small{display:block;font:400 var(--fs-1)/1.5 var(--font-ui);color:var(--muted)}
.action-item .ts{margin-top:4px}
.check{appearance:none;display:grid;place-items:center;width:20px;height:20px;margin-top:1px;padding:0;border-radius:5px;border:1.5px solid var(--line-strong);background:var(--surface);cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
button.check:hover{border-color:var(--ink)}
.check:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.action-item.is-done .check{background:var(--ink);border-color:var(--ink)}
.action-item.is-done .check::after{content:"✓";color:var(--surface);font:700 12px/1 var(--font-ui)}
.action-item.is-done p{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}
.chapters{margin:0;padding:0;list-style:none;display:grid;gap:0;border-top:1px solid var(--line)}
.chapters li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--s2);padding:8px 0;border-bottom:1px solid var(--line);font-size:var(--fs-3)}
.chapters b{display:block;font-weight:600}
.chapters small{display:block;color:var(--muted);font-size:var(--fs-2);line-height:1.45}
.tools-panel{display:grid;gap:var(--s3);padding:12px 14px}
.tools-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tools-row .blockt{margin-right:4px}
.tools-row .button{min-height:30px;padding:0 10px;font-size:var(--fs-1)}
.regen{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;padding-top:var(--s3);border-top:1px solid var(--line)}
.regen select{width:auto;flex:1 1 220px;max-width:320px}
.regen p{flex:1 0 100%;margin:0}
.mindmap-wrap{overflow-x:auto}
.mindmap{display:block;width:100%;max-width:420px;height:auto}
.ask-form{display:flex;flex-wrap:wrap;gap:var(--s2)}
.ask-form input{flex:1 1 240px}
.qa{display:grid;gap:var(--s2);padding-top:var(--s3);border-top:1px solid var(--line)}
.qa-who{display:block;font:600 var(--fs-1)/1.4 var(--font-ui);color:var(--muted);margin-bottom:2px}
.qa-q{margin:0;font-weight:600}
.qa-a{padding:10px 12px;border-radius:var(--r-control);background:var(--group);border:1px solid var(--line)}
.qa-a p{margin:0;line-height:1.6}
.qa-a.is-unknown{background:var(--surface)}
.qa-refs{margin-top:6px!important;font-size:var(--fs-2);color:var(--muted)}
.player{display:grid;gap:4px;position:sticky;top:0;z-index:2;padding:8px 0;background:var(--bg)}
.player audio{width:100%}
.video{border:1px solid var(--line);border-radius:var(--r-control);padding:8px 12px;background:var(--surface)}
.video video{display:block;width:100%;max-height:70vh;border-radius:var(--r-control);background:var(--ink)}
.moments video.moments-player{display:block;width:100%;max-height:60vh;border-radius:var(--r-control);background:var(--ink)}
.moments audio.moments-player{width:100%}
/* Réunion partagée : le bloc est un panneau, son titre a l'encre des panneaux voisins. */
.panel.moments>h2.blockt{font:var(--fw-title) var(--fs-4)/1.3 var(--font-display);letter-spacing:var(--ls-title);color:var(--ink)}
.moments-list{margin:0;padding:0;list-style:none;display:grid;border-top:1px solid var(--line)}
.moments-list li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--s2);padding:8px 0;border-bottom:1px solid var(--line);font-size:var(--fs-3)}
.moments-list p{margin:0;line-height:1.5}
.moments-list .ts{justify-self:start;align-self:start;margin-top:2px}
.moments-src,.moments-list small{display:inline-block;margin-top:2px;font-size:var(--fs-2);color:var(--muted)}
.search-in{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.search-in input{flex:1 1 180px}
.rename{border:1px solid var(--line);border-radius:var(--r-control);padding:8px 12px;background:var(--surface)}
.rename form{display:grid;gap:var(--s2);margin-top:var(--s2)}
.rename p{margin:0}
.segments{display:grid;gap:2px}
.segment .ts{padding:0;background:none}
.segment .ts time{color:var(--link)}
.segment a.ts:hover time{text-decoration:underline;text-underline-offset:3px}
.segment[hidden]{display:none}
.segment.is-playing{background:var(--signal-soft)}
.segment mark,.k-hit mark{background:var(--signal-soft);color:var(--ink);border-radius:3px;padding:0 2px;box-shadow:inset 0 -2px 0 var(--iris)}
/* Bibliothèque : le passage trouvé sous un résultat de recherche, en entier. */
.k-row .what small.k-hit{white-space:normal;color:var(--ink)}
.segment:target{background:var(--signal-soft)}
.print-bar{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center;justify-content:space-between}
.print-bar p{margin:0}
.print-sheet{display:grid;gap:var(--s4);max-width:820px}

/* ---------- Impression : le document, sans navigation ni formulaires ---------- */
@media print{
  @page{margin:16mm}
  body{background:#fff;font-size:11pt}
  .site-header,.site-footer,.skip-link,.no-print,.demo-notice,.back-link,form,audio,video,.video,.detail-actions,.mtg-status,.tools-panel,.ask-panel,.search-in,.rename,.k-status,.badge,.mtg-list,.mtg-tabs,.mtg-actions,.mtg-more{display:none!important}
  .shell,main.shell-wide{width:auto;max-width:none;padding:0}
  .detail-grid,.mtg-layout{display:block;border:0;box-shadow:none}
  .mtg-side{position:static;max-height:none;border:0;background:#fff;padding:0}
  .mtg-main .doc>.kv{display:grid}
  .detail-col{display:block}
  .doc,.panel{border:0;padding:0;margin:0 0 12pt;box-shadow:none;background:#fff}
  .action-item{break-inside:avoid;border-color:#C9C6D8}
  .segment{break-inside:avoid;padding:4pt 0}
  .ts,a.ts{background:none;color:var(--ink);padding:0}
  .decisions li{background:none}
  .chapters li,.mindmap-panel{break-inside:avoid}
  /* Chromium fragmente mal une grille dont les enfants évitent la coupure (titre imprimé
     par-dessus l'action reportée) : le document passe en bloc, chaque titre reste avec sa suite. */
  .doc,.doc-section{display:block}
  .doc>*+*{margin-top:9pt}
  .doc-section>*+*{margin-top:4.5pt}
  .blockt{break-after:avoid-page}
  a{color:var(--ink);text-decoration:none}
}

/* ---------- Utilisation ---------- */
.usage-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s3);align-items:start}
.usage-top h2{font-size:var(--fs-4)}
.usage-meter{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.usage-meter span{display:block;height:100%;background:var(--ink)}
.usage-numbers{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:baseline;color:var(--muted)}
.usage-numbers strong{font:600 var(--fs-6)/1 var(--font-display);letter-spacing:-.02em;color:var(--ink)}
.plan-panel h2 span{font:500 var(--fs-2) var(--font-ui);color:var(--muted)}
.topup-actions{display:flex;flex-wrap:wrap;gap:var(--s2)}
.topup-grid{display:grid;gap:6px;margin:0 0 var(--s3);padding:0;list-style:none}
.topup-grid li{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--s3);align-items:baseline}
.topup-grid small{grid-column:1/-1;color:var(--muted);font-size:var(--fs-1)}
.cancel-form{margin:0}
/* Lien d'activation de l'offre Duo : un seul panneau, de la largeur d'une invitation. */
.duo-panel{max-width:720px}

/* ---------- Corbeille ---------- */
.trash-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:var(--s3) var(--s5);padding:12px 16px;border-bottom:1px solid var(--line)}
.trash-row:last-child{border-bottom:0}
.trash-main{display:grid;gap:2px;min-width:0;flex:1 1 320px}
.trash-main b{font-weight:600;overflow-wrap:anywhere}
.trash-main small{color:var(--muted);font-size:var(--fs-1)}
.trash-when{margin-top:4px;font-size:var(--fs-2)}
.trash-main .notice{margin-top:6px}
.trash-actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:flex-start}
.trash-actions form{margin:0}
.trash-purge>summary{list-style:none;display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--surface);font-weight:600}
.trash-purge>summary::-webkit-details-marker{display:none}
.trash-purge[open]>summary{border-color:var(--ink);margin-bottom:var(--s2)}
.trash-purge form{display:grid;gap:var(--s2);max-width:340px}

/* ---------- Paramètres, légal, démo ---------- */
.settings-panel dl{margin:0;display:grid}
.settings-panel dl>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2);padding:8px 0;border-top:1px solid var(--line)}
.settings-panel dt{color:var(--muted)}
.settings-panel dd{margin:0}
.settings-value{font-weight:600}
.service-list{margin:0;padding-left:18px;display:grid;gap:4px}
.legal-page{display:grid;gap:var(--s3);max-width:760px}
.legal-page h1{font-size:var(--fs-6)}
.legal-page h2{font-size:var(--fs-4);margin-top:var(--s4)}
.legal-page p,.legal-page li{color:var(--ink);font-size:var(--fs-3);line-height:1.65}
.legal-page ul{padding-left:20px;display:grid;gap:4px}
.demo-notice{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding:10px 14px;border-radius:var(--r-control);border:1px dashed var(--line-strong);background:var(--surface);font-size:var(--fs-2)}
.demo-notice span{color:var(--muted)}
.demo-notice a{margin-left:auto;font-weight:600}

/* ---------- Réduction des animations ---------- */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ---------- Largeurs ---------- */
@media (max-width:1280px){.mtg-layout{grid-template-columns:210px minmax(0,1fr) 330px}}
/* Rendez-vous sur place à venir : la préparation seule, sans colonne de transcription. */
.mtg-layout.is-prep{grid-template-columns:232px minmax(0,1fr)}
@media (max-width:1280px){.mtg-layout.is-prep{grid-template-columns:210px minmax(0,1fr)}}
@media (max-width:1100px){
  .mtg-layout{grid-template-columns:minmax(0,1fr);min-height:0}
  .mtg-list,.mtg-side{position:static;max-height:none;overflow:visible;border-radius:0}
  .mtg-list{display:flex;gap:6px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:10px 14px}
  .mtg-list-head,.mtg-list-group{display:none}
  .mtg-list-row{flex:0 0 220px}
  .mtg-main{padding:16px 18px 28px}
  .mtg-side{border-left:0;border-top:1px solid var(--line);padding:16px 18px}
  .mtg-tabs .mtg-tab-side{display:inline-flex}
  .today-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:860px){
  .split-layout,.billing-grid,.settings-grid,.detail-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .shell{width:calc(100% - 32px)}
  .header-inner{gap:var(--s3);position:relative}
  .site-header .public-nav,.site-header .header-actions{display:none}
  .menu-toggle{display:block}
  .nav-link{min-height:44px}
  .account-menu>summary{min-height:44px;min-width:44px;justify-content:center}
  .account-panel{right:-4px;min-width:min(290px,calc(100vw - 24px))}
  /* Cibles tactiles de 44 px dans le menu du compte, au navigateur comme dans l'application. */
  .account-panel a,.account-panel .text-button{min-height:44px}
  /* Téléphone : boutons de 48 px, rayon 12, texte en 15 px (planches « Téléphone »). */
  .button{min-height:var(--h-touch);border-radius:12px;font-size:15px}
  .panel>.text-button,.panel form>.text-button:only-of-type{min-height:44px}
  h1,.section-head h1{font-size:26px}
  .stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
  .stat-card{padding:10px 12px}
  .stat-card strong{font-size:var(--fs-5)}
  .k-row{grid-template-columns:62px minmax(0,1fr) 14px;row-gap:4px;padding:8px 12px}
  .k-row .k-status,.k-row .badge{grid-column:2;grid-row:2;justify-self:start}
  .k-row .go{grid-column:3;grid-row:1/3}
  .k-row .when small{white-space:normal}
  .kv>div{flex-wrap:wrap}
  .kv>div>span:last-child{text-align:left}
  .today-head{align-items:stretch;flex-direction:column}
  .today-head-side{justify-content:space-between}
  .mtg-titlerow{flex-direction:column}
  .mtg-facts{grid-template-columns:minmax(0,1fr)}
  .mtg-more>summary{min-height:44px}
  .mtg-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .mtg-tabs a{flex:none;min-height:44px}
  .mtg-facts>div{grid-template-columns:110px minmax(0,1fr)}
  .mtg-more-panel{right:auto;left:0}
  .today-search .button{min-width:44px}
}

/* ---------- Rendez-vous enrichis (lot F1) : semaine, fiche, préparation, « À faire » ---------- */
.section-head-action>.rdv-head-actions{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.rdv-week{display:grid;gap:10px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow)}
.rdv-week-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.rdv-week-head h2{font-size:var(--fs-3);margin-right:auto;order:-1;flex:1 1 220px}
.rdv-week-nav{display:inline-grid;place-items:center;width:32px;height:32px;border:1px solid var(--line-strong);border-radius:var(--r-control);color:var(--ink);font-size:var(--fs-4);text-decoration:none}
.rdv-week-nav:hover{border-color:var(--ink);text-decoration:none}
.rdv-week-today{font-size:var(--fs-1)}
.rdv-tz{display:inline-flex;align-items:center;min-height:22px;padding:1px 8px;border-radius:6px;border:1px solid var(--line);background:var(--sunken);color:var(--muted);font:550 var(--fs-1)/1.3 var(--font-ui)}
.rdv-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.rdv-day{display:grid;justify-items:center;gap:1px;padding:7px 4px;border:1px solid var(--line);border-radius:var(--r-control);background:var(--surface);color:var(--ink);font-weight:400;text-decoration:none;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}
.rdv-day:hover{border-color:var(--ink);text-decoration:none}
.rdv-day span{font:550 var(--fs-1)/1.3 var(--font-ui);color:var(--muted)}
.rdv-day strong{font:600 var(--fs-4)/1.2 var(--font-ui);font-variant-numeric:tabular-nums}
.rdv-day small{font-size:var(--fs-1);color:var(--muted);white-space:nowrap}
.rdv-day.is-today{border-color:var(--iris)}
.rdv-day[aria-current="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.rdv-day[aria-current="true"] span,.rdv-day[aria-current="true"] small{color:var(--band-mute)}
.rdv-week-foot{margin:0}
.rdv-tools{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:center;justify-content:space-between}
.rdv-search{display:flex;flex-wrap:wrap;gap:6px;flex:1 1 320px;max-width:520px}
.rdv-search input{flex:1 1 200px;width:auto}
.rdv-row .rdv-client{font:550 var(--fs-1)/1.3 var(--font-ui);color:var(--muted)}
.rdv-form{gap:var(--s4);max-width:760px}
.rdv-fieldset{display:grid;gap:var(--s3);margin:0;padding:0;border:0;min-width:0}
.rdv-fieldset legend{padding:0 0 var(--s2);font:600 var(--fs-3)/1.3 var(--font-display);color:var(--ink)}
.rdv-fieldset label{display:grid;gap:6px}
.rdv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3)}
.rdv-form-actions{display:flex;flex-wrap:wrap;gap:var(--s2)}
.rdv-blocks{display:grid;gap:var(--s4)}
.rdv-block{display:grid;gap:6px;min-width:0}
.rdv-block-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2)}
.rdv-people{margin:0;padding:0;list-style:none;display:grid;gap:0}
.rdv-people li{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.rdv-people li:first-child{border-top:0}
.rdv-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--sunken);color:var(--ink);font:600 var(--fs-1)/1 var(--font-ui)}
.rdv-person{display:grid;gap:1px;min-width:0}
.rdv-person b{font-weight:600;overflow-wrap:anywhere}
.rdv-person small{color:var(--muted);font-size:var(--fs-1);overflow-wrap:anywhere}
.rdv-text{white-space:pre-line;font-size:var(--fs-3);line-height:1.6;max-width:72ch}
.rdv-point small{color:var(--muted)}
.rdv-add{display:flex;flex-wrap:wrap;gap:6px;padding-top:var(--s2)}
.rdv-add input{flex:1 1 220px;width:auto}
.rdv-notes{display:grid;gap:var(--s2)}
.rdv-notes textarea{min-height:120px;font-size:var(--fs-3);line-height:1.55}
.rdv-notes>button{justify-self:start}
.mtg-status.is-onsite{background:var(--group)}
.todo-mini{display:grid}
.todo-item .todo-source{display:inline-block;margin-top:2px;font-size:var(--fs-1)}
.todo-item a{font-weight:500}
.todo-mini .todo-item p a{color:var(--ink)}
.todo-group .action-item{padding:8px 16px}
.todo-group .k-list-head h2 a{color:var(--ink)}
.today-card .k-list-link{justify-self:start}
@media (max-width:760px){
  .rdv-days{gap:4px}
  .rdv-day{padding:6px 2px;min-height:44px}
  .rdv-day small{font-size:var(--fs-1);white-space:normal;text-align:center}
  .rdv-week-nav{width:44px;height:44px}
  .rdv-grid{grid-template-columns:minmax(0,1fr)}
  .rdv-search{max-width:none}
}

/* ---------- Envoi du compte rendu aux participants ---------- */
.share-list{display:grid;gap:8px;margin:0;padding:0;border:0;min-width:0}
.share-list legend{margin-bottom:8px;font-weight:600}
.share-list small{color:var(--muted);overflow-wrap:anywhere}
.share-preview{display:grid;gap:6px;margin:0}
.share-preview div{display:grid;grid-template-columns:70px minmax(0,1fr);gap:10px}
.share-preview dt{color:var(--muted)}
.share-preview dd{margin:0;overflow-wrap:anywhere}
.share-sent{margin:0;padding-left:18px;display:grid;gap:4px;overflow-wrap:anywhere}

/* ---------- Équipes ---------- */
/* « Comment ça marche » en trois étapes numérotées, rôles en liste de définitions, lien
   d'invitation en champ pleine largeur suivi de ses actions. */
.team-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3);margin:0;padding:0;list-style:none;counter-reset:etape}
.team-steps li{display:grid;gap:4px;align-content:start;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-control);background:var(--bg);counter-increment:etape}
.team-steps li::before{content:counter(etape,decimal-leading-zero);font:600 var(--fs-1)/1 var(--font-ui);color:var(--iris)}
.team-steps b{font-weight:600}
.team-steps span{color:var(--muted);font-size:var(--fs-2)}
.team-roles{display:grid;margin:0}
.team-roles div{display:grid;grid-template-columns:140px minmax(0,1fr);gap:12px;padding:9px 0;border-top:1px solid var(--line)}
.team-roles dt{font-weight:600}
.team-roles dd{margin:0;color:var(--muted)}
.invite-link .copy-field{width:100%;min-height:44px;padding:10px 14px;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--bg);color:var(--ink);font:inherit}
.invite-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
@media (max-width:760px){
  .team-steps{grid-template-columns:minmax(0,1fr)}
  .team-roles div{grid-template-columns:minmax(0,1fr);gap:2px}
}

/* ---------- Navigation sur téléphone ---------- */
/* Sous 760 px, le rail du bureau laisse la place aux onglets du bas : Aujourd'hui, Réunions,
   « + », À faire, Chat (gabarit, rm.css). Les pastilles d'état passent à la ligne plutôt que
   de déborder (zoom). */
@media (max-width:760px){
  .k-row .k-status,.k-row .badge{white-space:normal;max-width:100%}
}
/* Au téléphone, aucune cible sous 24 px sans marge autour (WCAG 2.5.8) : fil d'Ariane de la
   réunion, équipe d'une réunion partagée, liens de retour et d'aperçu, liens des messages,
   horodatages cités dans les décisions, les actions et les moments clés. */
@media (max-width:760px){
  /* Une ligne de réunion passe à la ligne plutôt que de couper sa consigne (« admettez
     Robotmeet… ») ou son lieu ; la recherche d’Aujourd’hui met son bouton dessous. */
  .k-row .what b,.k-row .what small{white-space:normal}
  .today-search{flex-wrap:wrap}
  .today-search input{flex:1 1 100%}
  .mtg-crumbs a,.mtg-access a,.back-link,.preview-link,.notice a{display:inline-flex;align-items:center;min-height:32px}
  .dlist a.ts,.action-item a.ts,.moments-list a.ts,a.moments-src{display:inline-flex;align-items:center;min-height:28px}
}
/* Très petite largeur (téléphone zoomé à 200 %) : une ligne de réunion sur une seule
   colonne (heure, titre, état), et des boutons qui passent à la ligne plutôt que d'être coupés. */
@media (max-width:360px){
  .k-row{grid-template-columns:minmax(0,1fr) 14px;column-gap:8px}
  .k-row .when{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px}
  .k-row .what{grid-column:1;grid-row:2}
  .k-row .k-status,.k-row .badge{grid-column:1;grid-row:3}
  .k-row .go{grid-column:2;grid-row:1/4}
  .button{white-space:normal;text-align:center;padding-block:8px}
}
/* ---------- Onglets du téléphone ---------- */
/* La barre d’onglets (.app-tabbar), le sélecteur Réunions · Agenda (.app-switch) et la zone
   du haut du téléphone sont dans le gabarit (rm.css, « Gabarit · téléphone ») : affichés sur
   tout écran de 760 px au plus, dans le navigateur comme dans l’application installée.
   Restent ici les règles de la vue web de l’application iPhone, ci-dessous. */

/* ---------- Application iPhone (vue web de apps/apple) ---------- */
/* L'application native ajoute « RobotmeetApp/ » à l'agent utilisateur de sa vue web ;
   layout() pose alors la classe app-native sur <html> (native_app.rs). Ses onglets, son
   enregistreur et son écran Compte sont natifs : l'espace y garde le logotype et le menu du
   compte, sans navigation du haut, bouton rond, barre d'onglets web ni pied de page (les
   pages publiques, ouvertes depuis l'écran Compte, n'y gardent que le logotype), et
   l'onglet Réunions passe de la bibliothèque aux rendez-vous par le sélecteur. Aucun
   paiement dans l'application (règles de l'App Store) : le serveur ne rend déjà aucun achat
   (in_store_app, iPhone comme Android) ; le formulaire de paiement reste masqué ici par
   sécurité, comme les liens vers l'enregistreur web (« Enregistrer un rendez-vous »,
   « Ouvrir l'enregistreur »), doublons de l'enregistreur de l'application. À toutes les
   largeurs, sans JavaScript. Depuis le 12 octobre 2026, `layout` ne rend plus la barre
   d'onglets web ni la navigation du haut aux applications natives (iPhone comme Android) :
   leurs sélecteurs restent dans la liste par sécurité. */
.app-native .site-header .app-nav,.app-native .rec-shortcut,.app-native .app-tabbar,.app-native .site-footer,.app-native .mtg-list,.app-native .public-nav,.app-native .header-actions,.app-native .menu-toggle,.app-native form[action="/api/billing/checkout"],.app-native main a[href="/mobile/"]{display:none}
.app-native .site-header .app-header{flex-wrap:nowrap;min-height:52px;padding-top:0}
.app-native .app-header .rec-shortcut + .account-menu{margin-left:auto}
.app-native .account-panel a,.app-native .account-panel .text-button{min-height:44px}
.app-native input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),.app-native select,.app-native textarea{min-height:44px;font-size:var(--fs-4)}
.app-native .app-switch{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;padding:3px;border-radius:var(--r-card);background:var(--sunken)}
.app-native .app-switch a{display:block;min-height:40px;border-radius:9px;color:var(--muted);font:550 var(--fs-2)/40px var(--font-ui);text-align:center;text-decoration:none}
.app-native .app-switch a[aria-current="page"]{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}

/* Fiche de réunion sur téléphone (écrans C3 à C5), dans le navigateur comme dans
   l'application : une colonne sans cadre et le sélecteur Compte rendu · Transcription ·
   Questions, en ancres. Avec :has(), une seule vue à la fois, celle que vise l'ancre
   (:target), le compte rendu par défaut ; sans :has(), tout reste empilé et les ancres y
   mènent. Chaque contrôle reste dans sa vue : actions, détails et régénération sous le
   compte rendu ; lecteur, recherche et renommage avec la transcription. */
.mtg-seg{display:none}
@media screen and (max-width:760px){
  main.shell-wide{padding-top:var(--s2)}
  .mtg-layout{border:0;border-radius:0;background:none;box-shadow:none}
  .mtg-list{padding:4px 0 10px}
  .mtg-main{padding:var(--s2) 0 0}
  .mtg-side{padding:var(--s3) 0 0;border-top:0;background:none}
  .mtg-tabs{display:none}
  .mtg-seg{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;padding:3px;border-radius:var(--r-card);background:var(--sunken)}
  .mtg-seg a{display:block;min-height:44px;padding:0 4px;border-radius:9px;color:var(--muted);font:550 var(--fs-2)/44px var(--font-ui);text-align:center;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
  .mtg-seg a:hover{color:var(--ink);text-decoration:none}
  .mtg-seg a:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
  /* Après un changement de vue, le sélecteur reste visible juste au-dessus d'elle. */
  #compte-rendu,#question,#transcription{scroll-margin-top:70px}
  /* Lecture au doigt : champs de 44 px en 16 px, menu Exporter et cases d'action de 44 px. */
  .mtg-layout input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),.mtg-layout select{min-height:44px;font-size:var(--fs-4)}
  .mtg-more-panel a{min-height:44px}
  .action-item .check{position:relative}
  .action-item .check::before{content:"";position:absolute;inset:-12px}
  @supports selector(:has(*)){
    .mtg-layout:not(:has(.mtg-side :target)) .mtg-side{display:none}
    .mtg-layout:not(:has(#question:target)) #question{display:none}
    .mtg-layout:has(.mtg-side :target,#question:target) .mtg-main>:is(.doc,#moments-cles,#details,#carte){display:none}
    .mtg-layout:not(:has(.mtg-side :target,#question:target)) .mtg-seg a[href="#compte-rendu"],
    .mtg-layout:has(.mtg-side :target) .mtg-seg a[href="#transcription"],
    .mtg-layout:has(#question:target) .mtg-seg a[href="#question"]{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}
  }
}
/* Très petite largeur (zoom 200 %) : les trois vues s'empilent plutôt que de se tronquer. */
@media screen and (max-width:300px){.mtg-seg{grid-auto-flow:row}}

/* ---------- Développeurs (lot F2) : clés, webhooks, journal, documentation ---------- */
.dev-head{padding-bottom:0}
.dev-tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line)}
.dev-tabs a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-bottom:2px solid transparent;color:var(--muted);font-weight:550;text-decoration:none}
.dev-tabs a:hover{color:var(--ink);text-decoration:none}
.dev-tabs a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--ink)}
.dev-tags{display:flex;flex-wrap:wrap;gap:4px}
.dev-tags code,.dev-check code,.dev-inline{display:inline-block;padding:1px 6px;border-radius:5px;background:var(--sunken);border:1px solid var(--line);color:var(--ink);font:500 var(--fs-1)/1.45 var(--font-code)}
.dev-row{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--s2) var(--s3);padding:10px 0;border-top:1px solid var(--line)}
.dev-row-main{display:grid;gap:5px;min-width:0;flex:1 1 260px}
.dev-row-main strong{font-weight:600;overflow-wrap:anywhere}
.dev-row-main small{color:var(--muted);font-size:var(--fs-1);overflow-wrap:anywhere}
.dev-row-main small code{font:500 var(--fs-1)/1.4 var(--font-code);color:var(--ink)}
.dev-row-side{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}
.dev-row-side form{margin:0}
.dev-secret{border-color:var(--ink)}
.dev-secret-value{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center}
.dev-secret-value input.dev-code-input{flex:1 1 320px;width:auto;min-height:38px;background:var(--band);border-color:var(--band-line);color:var(--band-ink);font:500 var(--fs-2)/1.4 var(--font-code)}
.dev-scopes{display:grid;gap:6px;margin:0;padding:0;border:0;min-width:0}
.dev-scopes legend{padding:0;margin-bottom:6px;font-weight:600}
.dev-check{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-control);background:var(--surface);font-weight:400;cursor:pointer}
.dev-check span{display:grid;gap:3px;justify-items:start}
.dev-check small{color:var(--muted);font-size:var(--fs-1);line-height:1.4}
.dev-confirm>summary{list-style:none;display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-control);background:var(--surface);font-weight:600}
.dev-confirm>summary::-webkit-details-marker{display:none}
.dev-confirm[open]>summary{border-color:var(--ink);margin-bottom:var(--s2)}
.dev-confirm>div{display:grid;gap:var(--s2);max-width:340px}
.dev-confirm form{margin:0}
/* Dans une ligne de compte ou de membre, une confirmation ouverte prend toute la largeur. */
.account-row>details.dev-confirm[open]{flex-basis:100%}
.dev-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2);margin:0;padding:0;list-style:none;counter-reset:dev-flow}
.dev-flow li{position:relative;display:grid;gap:2px;padding:10px 14px 10px 40px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);counter-increment:dev-flow}
.dev-flow li::before{content:counter(dev-flow);position:absolute;left:12px;top:10px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:var(--signal-soft);color:var(--iris-text);font:650 var(--fs-1)/1 var(--font-ui)}
.dev-flow b{font-weight:600}
.dev-flow span{color:var(--muted);font-size:var(--fs-1)}
.dev-table-wrap{overflow-x:auto;margin:0 -4px}
.dev-table{width:100%;border-collapse:collapse;font-size:var(--fs-2)}
.dev-table th{padding:6px 8px;border-bottom:1px solid var(--line);color:var(--muted);font:550 var(--fs-1)/1.3 var(--font-ui);text-align:left;white-space:nowrap}
.dev-table td{padding:8px;border-bottom:1px solid var(--line);vertical-align:top}
.dev-table tr:last-child td{border-bottom:0}
.dev-table td b{display:block;font:500 var(--fs-1)/1.45 var(--font-code)}
.dev-table td small{display:block;margin-top:2px;color:var(--muted);font-size:var(--fs-1);overflow-wrap:anywhere}
.dev-table td form{margin:0}
.dev-doc p{max-width:76ch}
.dev-code{margin:0;padding:12px 14px;overflow-x:auto;border-radius:var(--r-control);background:var(--band);border:1px solid var(--band-line);color:var(--band-ink);font:500 var(--fs-1)/1.6 var(--font-code);white-space:pre}
.dev-code code{font:inherit;color:inherit}
.dev-steps-list{margin:0;padding-left:20px;display:grid;gap:6px;font-size:var(--fs-3);line-height:1.55}
.dev-filters{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);align-items:center}
.dev-overview{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--s4);align-items:start}
.dev-overview-copy{display:grid;gap:var(--s3)}
.dev-overview-copy p{font-size:var(--fs-3);line-height:1.6;max-width:66ch}
.dev-endpoints{margin:0;display:grid;padding:4px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.dev-endpoints>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:var(--s2);padding:8px 0;border-top:1px solid var(--line)}
.dev-endpoints>div:first-child{border-top:0}
.dev-endpoints dt{color:var(--muted)}
.dev-endpoints dd{margin:0;overflow-wrap:anywhere}
/* Précisions sous une valeur (nom non vérifié, adresse de retour) : 12 px, comme ailleurs. */
.dev-endpoints small{font-size:var(--fs-1);line-height:1.45}
.dev-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3)}
.dev-feature{display:grid;gap:6px;align-content:start;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);color:var(--ink);font-weight:400;text-decoration:none;transition:border-color var(--t-fast) var(--ease)}
.dev-feature:hover{border-color:var(--ink);text-decoration:none}
.dev-feature h2{font-size:var(--fs-3)}
.dev-feature p{color:var(--muted);line-height:1.5}
.dev-feature .k-list-link{color:var(--link)}
a.dev-stat{color:var(--ink);font-weight:400;text-decoration:none;transition:border-color var(--t-fast) var(--ease)}
a.dev-stat:hover{border-color:var(--ink);text-decoration:none}
.dev-recent{margin:0;padding:0;list-style:none;display:grid}
.dev-recent li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;border-top:1px solid var(--line)}
.dev-recent-name{flex:1 1 220px;font:500 var(--fs-1)/1.45 var(--font-code);overflow-wrap:anywhere}
.dev-recent small{color:var(--muted);font-size:var(--fs-1)}
.dev-later{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.dev-later li{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
.oauth-consent{display:grid;gap:var(--s4);width:100%;max-width:640px;margin:0 auto}
.oauth-consent h1{font-size:var(--fs-6);line-height:1.2;overflow-wrap:anywhere}
.oauth-consent form{display:grid;gap:var(--s3)}
.oauth-actions{display:flex;flex-wrap:wrap;gap:var(--s2)}
.dev-doc-grid{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--s4);align-items:start}
.dev-toc{position:sticky;top:12px;display:grid;gap:2px;padding:4px 0}
.dev-toc .eyebrow{padding:0 8px 4px}
.dev-toc a{display:block;padding:5px 8px;border-radius:var(--r-control);color:var(--muted);font-weight:500;text-decoration:none}
.dev-toc a:hover{background:var(--sunken);color:var(--ink);text-decoration:none}
.dev-doc-main{display:grid;gap:var(--s4);min-width:0}
.dev-doc-main>.panel{scroll-margin-top:12px}
.dev-example>summary{font-size:var(--fs-2);color:var(--ink)}
.dev-example[open]>summary{margin-bottom:6px}
.dev-endpoint-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.dev-endpoint-head code{font:600 var(--fs-2)/1.4 var(--font-code);overflow-wrap:anywhere}
.dev-method{display:inline-flex;align-items:center;min-height:20px;padding:0 6px;border-radius:5px;background:var(--signal-soft);color:var(--iris-text);font:650 var(--fs-1)/1 var(--font-code)}
@media (max-width:860px){
  .dev-flow,.dev-overview,.dev-features,.dev-doc-grid{grid-template-columns:minmax(0,1fr)}
  .dev-toc{position:static;display:flex;flex-wrap:wrap;gap:4px}
  .dev-toc .eyebrow{flex-basis:100%}
}
/* Au téléphone, les onglets passent à la ligne (l'onglet actif reste visible) et chaque
   ligne de tableau devient un bloc : nom d'abord, puis chaque valeur précédée de son
   intitulé (data-label) ; les rôles ARIA du tableau gardent sa sémantique. */
@media (max-width:760px){
  .dev-tabs a{flex:none;min-height:44px}
  .dev-confirm>summary{min-height:44px}
  .dev-table-wrap{overflow-x:visible;margin:0}
  .dev-table-wrap thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .dev-table-wrap tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
  .dev-table-wrap td{padding:0;border:0}
  .dev-table-wrap td:first-child{flex-basis:100%}
  .dev-table-wrap td[data-label]::before{content:attr(data-label) "\a0: ";color:var(--muted);font-size:var(--fs-1)}
}
