/* =========================================================
   RU CONNECT — Design System (dérivé de la présentation RU)
   ========================================================= */
:root{
  /* Couleurs de marque (présentation institutionnelle) */
  --ru-black:#0D0D0D; --ru-anth:#171717; --ru-anth-2:#1F1F1F; --ru-line-d:#2E2E2E;
  --ru-gold:#B8860B; --ru-gold-2:#D89E0E; --ru-gold-tint:#221C0D; --ru-white:#FFFFFF;
  /* Surfaces de lecture */
  --paper:#F4F4F3; --card:#FFFFFF; --ink:#141414; --ink-2:#3A3A3A; --muted:#6E6E6E; --line:#E3E2DF;
  /* États (usage limité aux statuts) */
  --ok:#3F6B4A; --ok-bg:#EAF1EC; --warn:#8A6508; --warn-bg:#FBF3DF; --bad:#8C3324; --bad-bg:#F7E9E6; --info-bg:#EFEFEF;
  /* Typo : mêmes familles que la présentation (Arial titres, Calibri texte) */
  --f-head: Arial, "Helvetica Neue", Helvetica, sans-serif;
  --f-body: Calibri, Carlito, "Segoe UI", Arial, sans-serif;
  --r-s:4px; --r-m:8px; --r-l:14px;
  --sh:0 1px 2px rgba(13,13,13,.06), 0 6px 18px rgba(13,13,13,.05);
  --sidebar:258px;
}
*{box-sizing:border-box}
html,body{height:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--ru-gold-2);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Typo ---------- */
.kicker{font-family:var(--f-head);font-size:11px;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:var(--ru-gold)}
.dark .kicker{color:var(--ru-gold-2)}
h1,h2,h3,h4{font-family:var(--f-head);margin:0;font-weight:700;letter-spacing:-.01em}
h1{font-size:30px;line-height:1.15}
h2{font-size:22px;line-height:1.2}
h3{font-size:17px}
h4{font-size:14px}
.num{font-family:var(--f-head);font-weight:700;letter-spacing:-.02em}
.muted{color:var(--muted)} .small{font-size:13.5px} .xs{font-size:12px}
.gold{color:var(--ru-gold)} .dark .gold{color:var(--ru-gold-2)}
.code{font-family:var(--f-head);font-weight:700;font-size:12px;letter-spacing:.12em;color:var(--ru-gold)}

/* ---------- Shell ---------- */
.app{display:grid;grid-template-columns:var(--sidebar) 1fr;min-height:100%}
.side{background:var(--ru-black);color:#fff;position:sticky;top:0;height:100vh;height:100dvh;overflow-y:auto;display:flex;flex-direction:column;padding:22px 14px 16px;border-right:1px solid #000}
.side .brand{display:flex;align-items:center;gap:10px;padding:0 8px 18px;border-bottom:1px solid var(--ru-line-d);margin-bottom:12px}
.side .brand img{height:38px}
.side .brand .t{font-family:var(--f-head);font-weight:700;font-size:13px;letter-spacing:.2em}
.side .brand .t small{display:block;font-size:9.5px;letter-spacing:.24em;color:var(--ru-gold-2);font-weight:700;margin-top:2px}
.nav-group{margin:4px 0}
.nav a,.nav button.nav-a{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:none;border:0;color:#CFCFCF;text-decoration:none;padding:9px 10px;border-radius:var(--r-m);font-size:14.5px;cursor:pointer}
.nav a:hover,.nav button.nav-a:hover{background:#161616;color:#fff}
.nav a.on{background:var(--ru-anth-2);color:#fff;box-shadow:inset 2px 0 0 var(--ru-gold-2)}
.nav .ico{width:18px;height:18px;flex:none;opacity:.85}
.nav a.on .ico{color:var(--ru-gold-2);opacity:1}
.nav .sub{padding-left:29px}
.nav .sub a{font-size:13.5px;padding:7px 10px;color:#A9A9A9}
.nav .sub a.on{box-shadow:none;background:none;color:var(--ru-gold-2)}
.nav .count{margin-left:auto;background:var(--ru-gold);color:#000;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px}
.side .foot{margin-top:auto;padding:14px 8px 0;border-top:1px solid var(--ru-line-d);font-size:12px;color:#8A8A8A}
.side .foot a{color:#BDBDBD}

.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.2) blur(6px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:10px 26px;min-height:60px}
.top .search{flex:1;max-width:460px;position:relative}
.top .search input{width:100%;border:1px solid var(--line);background:var(--paper);border-radius:var(--r-m);padding:9px 12px 9px 36px}
.top .search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;color:var(--muted)}
.top .spacer{flex:1}
.datechip{font-size:12px;color:var(--muted);border:1px dashed #CFCFCF;border-radius:20px;padding:4px 10px;white-space:nowrap}
.iconbtn{position:relative;width:40px;height:40px;border-radius:var(--r-m);border:1px solid var(--line);background:#fff;display:grid;place-items:center;cursor:pointer}
.iconbtn svg{width:18px}
.iconbtn .dot{position:absolute;top:6px;right:6px;min-width:16px;height:16px;border-radius:8px;background:var(--ru-gold);color:#000;font-size:10px;font-weight:700;display:grid;place-items:center;padding:0 4px}
.userchip{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:30px;padding:4px 12px 4px 4px;background:#fff;cursor:pointer}
.userchip .n{font-size:13.5px;line-height:1.1}
.userchip .n small{display:block;color:var(--muted);font-size:11.5px}
.burger{display:none}
.content{padding:28px 30px 60px;max-width:1320px;width:100%}
.demo-tag{font-family:var(--f-head);font-size:9.5px;font-weight:700;letter-spacing:.18em;color:var(--ru-gold);border:1px solid var(--ru-gold);border-radius:3px;padding:2px 6px;white-space:nowrap}

/* ---------- Page head ---------- */
.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:24px}
.phead .kicker{margin-bottom:6px}
.phead p{margin:6px 0 0;color:var(--muted);max-width:680px}
.actions{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- Avatars ---------- */
.av{width:34px;height:34px;border-radius:50%;background:var(--ru-anth);color:var(--ru-gold-2);display:grid;place-items:center;font-family:var(--f-head);font-weight:700;font-size:12.5px;flex:none;letter-spacing:.04em}
.av.lg{width:84px;height:84px;font-size:26px;box-shadow:0 0 0 2px var(--ru-gold)}
.av.xl{width:112px;height:112px;font-size:34px;box-shadow:0 0 0 2px var(--ru-gold)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--r-m);border:1px solid transparent;padding:10px 16px;font-family:var(--f-head);font-size:13.5px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap;min-height:40px}
.btn svg{width:16px}
.btn-primary{background:var(--ru-black);color:#fff}
.btn-primary:hover{background:#262626}
.btn-gold{background:var(--ru-gold);color:#0D0D0D}
.btn-gold:hover{background:var(--ru-gold-2)}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:#BDBDBD}
.dark .btn-ghost{background:transparent;border-color:#3A3A3A;color:#fff}
.btn-danger{background:#fff;border-color:#E3C9C3;color:var(--bad)}
.btn-sm{padding:6px 11px;min-height:32px;font-size:12.5px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.future{position:relative}
.future::after{content:"V2";font-size:9px;letter-spacing:.1em;background:var(--info-bg);color:var(--muted);border-radius:3px;padding:1px 4px;margin-left:4px}
.dark .future::after{background:#2A2A2A;color:#AAA}

/* ---------- Cards ---------- */
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-main{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);padding:20px;box-shadow:var(--sh);min-width:0}
.card.flat{box-shadow:none}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-h h3{font-size:15.5px}
.card.dark,.panel-dark{background:var(--ru-black);color:#fff;border-color:#000}
.card.dark .muted,.panel-dark .muted{color:#9A9A9A}
.hero-dark{background:radial-gradient(900px 400px at 100% 0%, rgba(184,134,11,.26), transparent 60%),var(--ru-black);color:#fff;border-radius:var(--r-l);padding:26px;position:relative;overflow:hidden}
.hero-dark .muted{color:#A6A6A6}
.kpi{display:flex;flex-direction:column;gap:4px}
.kpi .v{font-family:var(--f-head);font-weight:700;font-size:30px;letter-spacing:-.02em;line-height:1.05}
.kpi .l{font-size:13px;color:var(--muted)}
.kpi .d{font-size:12.5px}
.kpi-card{border-top:2px solid var(--ru-black)}
.kpi-card.accent{border-top-color:var(--ru-gold)}
.link{color:var(--ru-gold);font-weight:700;text-decoration:none;cursor:pointer;font-family:var(--f-head);font-size:13px;background:none;border:0;padding:0}
.link:hover{text-decoration:underline}
.dark .link{color:var(--ru-gold-2)}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:2px 9px;font-size:12px;font-weight:700;font-family:var(--f-head);white-space:nowrap;letter-spacing:.01em}
.b-ok{background:var(--ok-bg);color:var(--ok)}
.b-warn{background:var(--warn-bg);color:var(--warn)}
.b-bad{background:var(--bad-bg);color:var(--bad)}
.b-neutral{background:var(--info-bg);color:var(--ink-2)}
.b-gold{background:var(--ru-gold);color:#0D0D0D}
.b-dark{background:var(--ru-black);color:#fff}
.b-line{border:1px solid var(--ru-gold);color:var(--ru-gold)}

/* ---------- Tables ---------- */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-l);background:#fff}
table.t{width:100%;border-collapse:collapse;font-size:14.5px}
.t th{text-align:left;font-family:var(--f-head);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--line);background:#FAFAF9;white-space:nowrap}
.t td{padding:12px 14px;border-bottom:1px solid #EFEEEB;vertical-align:middle}
.t tr:last-child td{border-bottom:0}
.t tr.click{cursor:pointer}
.t tr.click:hover td{background:#FAFAF8}
.t .r{text-align:right}
.cellperson{display:flex;align-items:center;gap:10px;min-width:180px}
.cellperson b{display:block;font-weight:700}

/* ---------- Forms ---------- */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.input,select.input,textarea.input{border:1px solid #D6D4D0;background:#fff;border-radius:var(--r-m);padding:10px 12px;min-height:42px;width:100%}
.input:focus{border-color:var(--ru-gold);outline:none;box-shadow:0 0 0 3px rgba(216,158,14,.18)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.row>.field{flex:1;min-width:160px}
.seg{display:inline-flex;background:var(--info-bg);border-radius:var(--r-m);padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:none;padding:7px 12px;border-radius:6px;font-size:13px;font-weight:700;font-family:var(--f-head);cursor:pointer;color:var(--ink-2)}
.seg button.on{background:#fff;color:var(--ink);box-shadow:var(--sh)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}
.tabs button{border:0;background:none;padding:11px 14px;font-family:var(--f-head);font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--ink);border-bottom-color:var(--ru-gold)}

/* ---------- Lists ---------- */
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #EFEEEB}
.li:last-child{border-bottom:0}
.li .grow{flex:1;min-width:0}
.li .ttl{font-weight:700}
.dark .li{border-color:var(--ru-line-d)}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- Progress ---------- */
.bar{height:6px;background:#E9E7E3;border-radius:6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--ru-gold);border-radius:6px}
.dark .bar{background:#2A2A2A}

/* ---------- Kanban ---------- */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:14px;overflow-x:auto;padding-bottom:10px}
.kcol{background:#EDECEA;border-radius:var(--r-l);padding:12px;min-height:220px}
.kcol h4{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:2px 4px 12px}
.kcard{background:#fff;border:1px solid var(--line);border-radius:var(--r-m);padding:12px;margin-bottom:10px;font-size:14px}
.kcard .meta{font-size:12px;color:var(--muted);margin-top:4px}

/* ---------- Modal / toast ---------- */
.overlay{position:fixed;inset:0;background:rgba(13,13,13,.55);z-index:80;display:grid;place-items:center;padding:16px}
.modal{background:#fff;border-radius:var(--r-l);width:min(560px,100%);max-height:92vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal.wide{width:min(860px,100%)}
.modal-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px 0}
.modal-b{padding:18px 22px}
.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:0 22px 20px;flex-wrap:wrap}
.unsaved-bar{position:fixed;left:50%;transform:translateX(-50%);top:calc(10px + env(safe-area-inset-top,0px));z-index:95;display:flex;align-items:center;gap:12px;flex-wrap:wrap;max-width:calc(100vw - 24px);background:#7a1f1f;color:#fff;padding:10px 14px;border-radius:var(--r-m);font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.update-bar{position:fixed;left:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:94;display:flex;align-items:center;gap:12px;flex-wrap:wrap;max-width:calc(100vw - 36px);background:var(--ru-black);color:#fff;border:1px solid var(--ru-gold-2);padding:10px 14px;border-radius:var(--r-m);font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.3)}
@media (max-width:900px){.update-bar{left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom,0px))}}
.toasts{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;flex-direction:column;gap:8px}
.toast{background:var(--ru-black);color:#fff;border-left:3px solid var(--ru-gold-2);padding:12px 16px;border-radius:var(--r-m);font-size:14px;max-width:340px;box-shadow:0 8px 24px rgba(0,0,0,.25)}

/* ---------- Charts ---------- */
.chart svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}

/* ---------- Login ---------- */
.login{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1.05fr 1fr;background:var(--ru-black)}
.login .l{color:#fff;padding:48px 56px;display:flex;flex-direction:column;background:radial-gradient(900px 600px at 0% 100%, rgba(184,134,11,.22), transparent 60%),var(--ru-black)}
.login .l img{width:260px;max-width:70%}
.login .l .sig{margin-top:14px;font-family:var(--f-head);letter-spacing:.4em;font-size:12px;color:var(--ru-gold-2)}
.login .l h1{font-size:40px;margin-top:auto;max-width:520px}
.login .l p{color:#A8A8A8;max-width:460px}
.login .r{background:var(--paper);padding:40px 48px;display:flex;flex-direction:column;justify-content:center}
.rolegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.rolegrid button{border:1px solid var(--line);background:#fff;border-radius:var(--r-m);padding:10px;text-align:left;cursor:pointer;font-size:13px;min-height:58px}
.rolegrid button b{display:block;font-family:var(--f-head);font-size:12.5px}
.rolegrid button.on{border-color:var(--ru-gold);box-shadow:0 0 0 2px rgba(216,158,14,.25)}

/* ---------- Student card ---------- */
.idcard{width:100%;max-width:520px;aspect-ratio:85.6/54;border-radius:18px;position:relative;overflow:hidden;color:#fff;background:radial-gradient(420px 260px at 105% -10%, rgba(216,158,14,.35), transparent 60%),linear-gradient(160deg,#1A1A1A 0%,#0D0D0D 55%,#0D0D0D 100%);box-shadow:0 18px 50px rgba(0,0,0,.35),inset 0 0 0 1px rgba(216,158,14,.35);container-type:inline-size}
.idcard .inner{position:absolute;inset:0;padding:5.2cqw 5.6cqw;display:grid;grid-template-columns:25cqw 1fr 23cqw;grid-template-rows:auto 1fr auto;gap:2cqw 3.6cqw}
.idcard .logo{grid-column:1/3;height:9cqw}
.idcard .logo img{height:100%}
.idcard .type{grid-column:3;text-align:right;font-family:var(--f-head);font-weight:700;font-size:2.3cqw;letter-spacing:.3em;color:var(--ru-gold-2);align-self:center}
.idcard .photo{grid-row:2/4;border-radius:3cqw;background:#262626;box-shadow:0 0 0 .5cqw var(--ru-gold);display:grid;place-items:center;font-family:var(--f-head);font-weight:700;font-size:8cqw;color:var(--ru-gold-2);aspect-ratio:3/4;align-self:start;overflow:hidden}
.idcard .who{align-self:start;min-width:0}
.idcard .nm{font-family:var(--f-head);font-weight:700;font-size:4.6cqw;line-height:1.05;letter-spacing:.01em}
.idcard .pn{font-size:3.4cqw;color:#D6D6D6;margin-top:.6cqw}
.idcard .id{font-family:var(--f-head);font-weight:700;font-size:3.4cqw;letter-spacing:.12em;color:var(--ru-gold-2);margin-top:2.4cqw}
.idcard .meta{grid-column:2;align-self:end;display:grid;grid-template-columns:1fr 1fr;gap:1.6cqw 3cqw}
.idcard .meta div span{display:block;font-family:var(--f-head);font-size:1.7cqw;letter-spacing:.2em;color:#8E8E8E;font-weight:700}
.idcard .meta div b{font-family:var(--f-head);font-size:2.5cqw;line-height:1.15}
.idcard .qr{grid-column:3;grid-row:2/4;align-self:end;background:#fff;border-radius:2cqw;padding:1.6cqw;aspect-ratio:1}
.idcard .qr svg,.idcard .qr img{width:100%!important;height:auto!important;display:block}
.idcard .status{position:absolute;right:5.6cqw;top:17cqw;font-family:var(--f-head);font-size:1.9cqw;font-weight:700;letter-spacing:.2em;color:#0D0D0D;background:var(--ru-gold-2);padding:.6cqw 1.6cqw;border-radius:1cqw}
.idcard .status.off{background:#5A5A5A;color:#fff}
.idcard.back .inner{grid-template-columns:1fr 22cqw;grid-template-rows:auto 1fr auto}
.idcard .wm{position:absolute;right:-4cqw;bottom:-10cqw;width:44cqw;opacity:.07}
.idcard .bk-t{font-family:var(--f-head);font-weight:700;font-size:2.3cqw;letter-spacing:.3em;color:var(--ru-gold-2)}
.idcard .bk-p{font-size:2.7cqw;color:#CFCFCF;line-height:1.4;max-width:62cqw}
.idcard .sig{font-family:var(--f-head);letter-spacing:.4em;font-size:2cqw;color:var(--ru-gold-2)}
.flip{perspective:1400px;max-width:520px;width:100%}
.flip .face{transition:transform .6s}
.cardstage{display:flex;flex-direction:column;align-items:center;gap:18px}
.fs{position:fixed;inset:0;background:#000;z-index:95;display:grid;place-items:center;padding:20px}
.fs .idcard{max-width:min(92vw,880px)}

/* ---------- Scanner ---------- */
.viewfinder{aspect-ratio:1;max-width:320px;width:100%;margin:0 auto;border-radius:var(--r-l);background:#111 radial-gradient(circle at 50% 50%,#1b1b1b,#0a0a0a);position:relative}
.viewfinder::before,.viewfinder::after{content:"";position:absolute;inset:18%;border:2px solid var(--ru-gold-2);border-radius:10px;clip-path:polygon(0 0,22% 0,22% 3%,3% 3%,3% 22%,0 22%,0 78%,3% 78%,3% 97%,22% 97%,22% 100%,78% 100%,78% 97%,97% 97%,97% 78%,100% 78%,100% 22%,97% 22%,97% 3%,78% 3%,78% 0,100% 0,100% 100%,0 100%)}
.viewfinder::after{border:0;inset:auto 18% 50% 18%;height:2px;background:var(--ru-gold-2);opacity:.7;clip-path:none;animation:scan 2.2s ease-in-out infinite}
@keyframes scan{0%,100%{transform:translateY(-60px)}50%{transform:translateY(60px)}}
.verdict{border-radius:var(--r-l);padding:22px;color:#fff;background:var(--ru-black)}
.verdict.ok{box-shadow:inset 0 0 0 2px var(--ru-gold-2)}
.verdict.bad{background:#2A1512;box-shadow:inset 0 0 0 2px var(--bad)}

/* ---------- Student mobile ---------- */
.bottomnav{display:none}
.sheet a{display:flex;gap:12px;align-items:center;padding:14px 4px;border-bottom:1px solid var(--line);text-decoration:none;font-weight:700}

/* ---------- Calendar ---------- */
.cal-day{display:flex;gap:16px;padding:14px 0;border-bottom:1px solid #EFEEEB}
.cal-day .d{width:64px;flex:none;text-align:center}
.cal-day .d b{display:block;font-family:var(--f-head);font-size:26px;line-height:1}
.cal-day .d span{font-family:var(--f-head);font-size:10.5px;letter-spacing:.18em;color:var(--muted);font-weight:700}
.ev{border-left:2px solid var(--ru-black);padding:4px 0 4px 12px;margin-bottom:8px}
.ev.gold{border-color:var(--ru-gold)}
.ev .h{font-weight:700}

/* ---------- Print ---------- */
#print{display:none}
@media print{
  body *{visibility:hidden}
  #print,#print *{visibility:visible}
  #print{display:block;position:absolute;inset:0;background:#fff}
  .idcard{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.doc{max-width:760px;margin:0 auto;padding:40px;background:#fff;color:#141414;font-family:var(--f-body)}
.doc .dh{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--ru-gold);padding-bottom:18px;margin-bottom:24px}
.doc .dh img{height:54px}
.doc h1{font-size:24px;letter-spacing:.06em}
.doc table{width:100%;border-collapse:collapse;margin:16px 0}
.doc td,.doc th{border-bottom:1px solid #E5E5E5;padding:9px 6px;text-align:left;font-size:14px}
.doc .foot{margin-top:40px;font-size:12px;color:#777;border-top:1px solid #E5E5E5;padding-top:12px}

/* ---------- Responsive ---------- */
@media (max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:1fr}}
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;z-index:70;width:280px;transform:translateX(-100%);transition:transform .25s}
  .app.navopen .side{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.45)}
  .burger{display:grid}
  .top{padding:10px 14px;gap:8px}
  .top .search{max-width:none}
  .datechip,.userchip .n{display:none}
  .content{padding:20px 16px 90px}
  .g2,.g3{grid-template-columns:1fr}
  .login{grid-template-columns:1fr}
  .login .l{padding:32px 24px 28px;min-height:auto}
  .login .l h1{font-size:28px;margin-top:28px}
  .login .r{padding:28px 20px}
  .rolegrid{grid-template-columns:repeat(2,1fr)}
  h1{font-size:25px}
}
@media (max-width:900px){
  .is-student .side,.is-teacher .side{display:none}
  .is-student .burger,.is-teacher .burger{display:none}
  .bottomnav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--ru-black);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));border-top:1px solid #000}
  .bottomnav a{display:flex;flex-direction:column;align-items:center;gap:3px;color:#9C9C9C;text-decoration:none;font-size:10.5px;font-family:var(--f-head);font-weight:700;letter-spacing:.04em;padding:6px 0;position:relative}
  .bottomnav a svg{width:21px}
  .bottomnav a.on{color:var(--ru-gold-2)}
  .bottomnav .dot{position:absolute;top:3px;left:55%;background:var(--ru-gold-2);color:#000;border-radius:8px;font-size:9.5px;padding:0 5px}
}
@media (max-width:560px){.g4{grid-template-columns:1fr 1fr}.kpi .v{font-size:25px}.hero-dark{padding:20px}}
.dt-s{display:none}
@media (max-width:900px){.dt-l{display:none}.dt-s{display:inline}.top .search{min-width:0}.userchip{padding:3px}}
svg.ico{width:18px;height:18px;flex:none;vertical-align:-3px}
.tiles{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.tiles{grid-template-columns:1fr 1fr}.tiles .num{font-size:18px!important}}
@media (max-width:900px){.is-student .toasts,.is-teacher .toasts,.toasts{bottom:calc(84px + env(safe-area-inset-bottom,0px));left:16px;right:16px}}

/* =========================================================
   RU CONNECT V2 — couche de marque
   Traduction plus fidèle de la présentation institutionnelle :
   display institutionnel (Nordick si installé, sinon Montserrat)
   pour titres, chiffres et kickers ; Calibri/Carlito pour la lecture.
   ========================================================= */
@font-face{font-family:"Nordick";src:local("Nordick"),local("Nordick Regular"),local("Nordick-Regular");font-display:swap}
:root{
  --f-display:"Nordick","Montserrat",Arial,sans-serif;
  --f-head:var(--f-display);
  --f-body:Calibri,"Carlito","Segoe UI",Arial,sans-serif;
  --gold-line:linear-gradient(90deg,var(--ru-gold),var(--ru-gold-2));
}
body{font-size:16px}
h1{font-weight:700;font-size:32px;letter-spacing:-.015em}
h2{font-weight:700;font-size:22px}
h3{font-family:var(--f-body);font-size:17px;font-weight:700;letter-spacing:0}
h4{font-family:var(--f-body);font-weight:700}
.kicker{font-size:10.5px;letter-spacing:.32em;font-weight:700}
.btn,.badge,.tabs button,.seg button,.t th{font-family:var(--f-display)}
.btn{font-weight:600;letter-spacing:.01em}
.badge{font-weight:600;font-size:11.5px}
.phead{margin-bottom:28px}
.phead h1{margin-top:4px}
.phead p{font-size:16.5px}
.skip{position:absolute;left:-999px;top:8px;z-index:100;background:#fff;padding:8px 12px;border-radius:6px}
.skip:focus{left:8px}
main:focus{outline:none}

/* ---------- Héros : halo or de la présentation ---------- */
.hero-dark{background:radial-gradient(700px 360px at 100% 0%,rgba(184,134,11,.30),transparent 62%),radial-gradient(520px 300px at 0% 110%,rgba(184,134,11,.14),transparent 60%),var(--ru-black);padding:30px}
.hero-dark h1{font-size:34px}
.hero-rule{display:block;width:36px;height:2px;background:var(--ru-gold-2);margin:14px 0}
.gold-phrase{color:var(--ru-gold-2)}

/* ---------- Statistiques façon présentation (chiffre, label or, description) ---------- */
.kpi-card{box-shadow:none;border:1px solid var(--line);border-top:2px solid #D9D7D2;border-radius:var(--r-m);padding:18px 18px 16px}
.kpi-card.accent{border-top-color:var(--ru-gold)}
.kpi-card[data-go]:hover{border-color:#CFCBC3}
.kpi .v{order:1;font-family:var(--f-display);font-size:30px;font-weight:700}
.kpi .l{order:2;font-family:var(--f-display);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ru-gold);font-weight:700;margin-top:4px}
.kpi .d{order:3}
.card.dark .kpi .v,.hero-dark .kpi .v{color:#fff}

/* ---------- Liste numérotée 01 / 02 (« À traiter ») ---------- */
.numlist{list-style:none;margin:0;padding:0}
.numlist li{display:flex;align-items:center;gap:16px;padding:14px 4px;border-bottom:1px solid var(--line)}
.numlist li:last-child{border-bottom:0}
.numlist li[data-go]{cursor:pointer}
.numlist li[data-go]:hover{background:#FAF9F6}
.nl-n{font-family:var(--f-display);font-weight:700;font-size:17px;color:var(--ru-gold);width:28px;flex:none}
.nl-b{flex:1;min-width:0}
.nl-b b{display:block;font-size:15.5px}
.nl-b span{display:block;font-size:13px;color:var(--muted)}
.nl-c{color:var(--muted)}
.dark .numlist li{border-color:var(--ru-line-d)}
.dark .numlist li[data-go]:hover{background:#151515}

/* ---------- À traiter : tuiles ---------- */
.todo{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.todo a{display:flex;flex-direction:column;gap:6px;text-decoration:none;background:#fff;border:1px solid var(--line);border-left:3px solid var(--ru-gold);border-radius:var(--r-m);padding:14px 16px;min-height:96px}
.todo a:hover{border-color:#CFCBC3;border-left-color:var(--ru-gold)}
.todo a.t-bad{border-left-color:var(--bad)}
.todo a.t-neutral{border-left-color:#3A3A3A}
.todo .n{font-family:var(--f-display);font-size:28px;font-weight:700;line-height:1}
.todo .l{font-size:14px;line-height:1.3}
.todo .a{font-family:var(--f-display);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-top:auto}

/* ---------- Timeline (déploiement, perte de carte, paiements) ---------- */
.tl{list-style:none;margin:6px 0 0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:relative;gap:8px}
.tl::before{content:"";position:absolute;left:8px;right:8px;top:8px;height:1px;background:var(--ru-gold)}
.tl li{position:relative;padding-top:26px;min-width:0}
.tl-dot{position:absolute;top:0;left:0;width:17px;height:17px;border-radius:50%;border:1.5px solid var(--ru-gold);background:var(--card)}
.dark .tl-dot{background:var(--ru-black)}
.tl li.done .tl-dot{background:var(--ru-gold)}
.tl li.cur .tl-dot{background:var(--ru-gold-2);box-shadow:0 0 0 4px rgba(216,158,14,.22)}
.tl-n{display:block;font-family:var(--f-display);font-size:10px;color:var(--ru-gold);font-weight:700}
.tl b{display:block;font-size:13.5px;line-height:1.25}
.tl li:not(.done):not(.cur) b{color:var(--muted)}
.tl-d{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.tl-v{grid-auto-flow:row}
.tl-v::before{left:8px;right:auto;top:8px;bottom:8px;width:1px;height:auto}
.tl-v li{padding:0 0 14px 30px}
@media (max-width:760px){.tl{grid-auto-flow:row}.tl::before{left:8px;right:auto;top:8px;bottom:8px;width:1px;height:auto}.tl li{padding:0 0 14px 30px}}

/* ---------- Coche dorée (pièces du dossier) ---------- */
.chk{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid #EFEEEB}
.chk:last-child{border-bottom:0}
.chk-r{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--ru-gold);display:grid;place-items:center;color:var(--ru-gold);flex:none}
.chk.off .chk-r{border-color:#C9C6C0;color:#A09C94}

/* ---------- Grand numéro de section (01, 02, 03) ---------- */
.sect{display:flex;gap:16px;align-items:flex-end;margin:6px 0 16px}
.sect-n{font-family:var(--f-display);font-weight:700;font-size:54px;line-height:.85;color:var(--ru-gold)}

/* ---------- Pied de page de marque ---------- */
.rufoot{display:flex;align-items:center;gap:10px;margin-top:48px;padding-top:16px;border-top:1px solid var(--line);font-family:var(--f-display);font-size:9.5px;letter-spacing:.3em;color:var(--muted)}
.rufoot img{height:18px}
.rufoot-r{margin-left:auto;letter-spacing:.1em;text-transform:uppercase}

/* ---------- Navigation V2 ---------- */
.side .brand .t{font-family:var(--f-display)}
.nav-h{font-weight:400}
.nav-group.in>.nav-h{color:#fff}
.nav-group.in>.nav-h .ico{color:var(--ru-gold-2);opacity:1}
.nav-chev{margin-left:auto;width:14px!important;transition:transform .2s}
.nav-h[aria-expanded="true"] .nav-chev{transform:rotate(90deg)}
.foot-btn{padding:6px 0!important;color:#BDBDBD!important;display:flex;gap:8px;align-items:center}
.foot-demo .demo-tag{color:var(--ru-gold-2);border-color:#5A4610}
.userchip{font:inherit;text-align:left}
.top-logo img{height:30px;display:block}
.sres{position:absolute;top:46px;left:0;right:0;padding:8px;z-index:30;max-height:60vh;overflow:auto}
.sres .li{padding:10px 8px;text-decoration:none;cursor:pointer}
.demo-note{display:inline-block;font-size:12px;color:var(--ru-gold);border:1px dashed #D9C28A;border-radius:4px;padding:1px 7px;margin-left:6px}

/* ---------- États vides ---------- */
.empty{text-align:center;padding:40px 24px}
.empty-crown{height:20px;opacity:.9;margin-bottom:10px}

/* ---------- Fichiers ---------- */
.filepick{display:flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer}
.filepick input{position:absolute;opacity:0;width:1px;height:1px}
.filepick span{display:inline-flex;gap:6px;align-items:center;border:1px dashed #BDB8AE;border-radius:var(--r-m);padding:8px 12px;font-weight:700;font-size:14px;background:#fff}
.filepick:focus-within span{outline:2px solid var(--ru-gold-2);outline-offset:2px}
.flist{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.fchip{display:inline-flex;align-items:center;gap:6px;background:var(--info-bg);border-radius:6px;padding:4px 9px;font-size:13px}
.fchip em{color:var(--muted);font-style:normal;font-size:12px}

/* ---------- Fil « Pour vous » ---------- */
.feed{list-style:none;margin:0;padding:0}
.feed li{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer}
.feed li:last-child{border-bottom:0}
.feed .fi{width:38px;height:38px;border-radius:50%;background:var(--ru-black);color:var(--ru-gold-2);display:grid;place-items:center;flex:none}
.feed .fk{font-family:var(--f-display);font-size:9.5px;letter-spacing:.22em;color:var(--ru-gold);text-transform:uppercase;font-weight:700}
.feed .ft{font-weight:700;margin:2px 0}
.feed .fs2{font-size:13px;color:var(--muted)}

/* ---------- Indicateurs étudiant ---------- */
.ind{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ind a{display:block;text-decoration:none;background:#fff;border:1px solid var(--line);border-top:2px solid #D9D7D2;border-radius:var(--r-m);padding:16px}
.ind a.acc{border-top-color:var(--ru-gold)}
.ind .v{font-family:var(--f-display);font-weight:700;font-size:26px;line-height:1.1}
.ind .l{font-family:var(--f-display);font-size:9.5px;letter-spacing:.24em;color:var(--ru-gold);font-weight:700;margin-top:6px;text-transform:uppercase}
.ind .d{font-size:12.5px;color:var(--muted);margin-top:4px}
@media (max-width:760px){.ind{grid-template-columns:1fr 1fr}}

/* ---------- Carte étudiante V2 ---------- */
.idcard.v2{border-radius:4.2cqw;background:radial-gradient(60cqw 40cqw at 100% 0%,rgba(216,158,14,.34),transparent 62%),radial-gradient(50cqw 30cqw at 0% 100%,rgba(184,134,11,.16),transparent 60%),linear-gradient(155deg,#1B1B1B 0%,#0D0D0D 58%);box-shadow:0 24px 60px rgba(0,0,0,.35),inset 0 0 0 .25cqw rgba(216,158,14,.45);display:flex;flex-direction:column;padding:4.6cqw 5.2cqw 3.4cqw}
.idcard.v2::after{content:"";position:absolute;inset:1.6cqw;border:.15cqw solid rgba(216,158,14,.22);border-radius:3cqw;pointer-events:none}
.ic-wm{position:absolute;right:-6cqw;bottom:-14cqw;width:38cqw;opacity:.06;pointer-events:none}
.ic-wm.big{width:52cqw;right:-2cqw;bottom:-18cqw;opacity:.08}
.ic-top{display:flex;justify-content:space-between;align-items:flex-start;position:relative}
.ic-logo{height:8.4cqw}
.ic-crown{height:4cqw;opacity:.9}
.ic-type{font-family:var(--f-display);font-weight:700;font-size:2.2cqw;letter-spacing:.34em;color:var(--ru-gold-2);text-align:right}
.ic-type i{display:block;width:6cqw;height:.3cqw;background:var(--ru-gold-2);margin:1.6cqw 0 0 auto}
.ic-body{flex:1;display:grid;grid-template-columns:22cqw 1fr 22cqw;gap:4cqw;align-items:end;margin-top:3cqw;position:relative}
.ic-photo{aspect-ratio:3/4;border-radius:2cqw;background:linear-gradient(160deg,#2A2A2A,#161616);box-shadow:0 0 0 .3cqw var(--ru-gold),0 0 0 1.1cqw rgba(216,158,14,.12);display:grid;place-items:center;overflow:hidden}
.ic-photo img{width:100%;height:100%;object-fit:cover}
.ic-photo span{font-family:var(--f-display);font-weight:700;font-size:8cqw;color:var(--ru-gold-2)}
.ic-id{min-width:0;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-end}
.ic-nom{font-family:var(--f-display);font-weight:800;font-size:5.4cqw;line-height:1;letter-spacing:.01em;text-transform:uppercase;overflow-wrap:anywhere}
.ic-pre{font-size:3.4cqw;color:#D4D4D4;margin-top:.8cqw}
.ic-num{font-family:var(--f-display);font-weight:700;font-size:3.3cqw;letter-spacing:.14em;color:var(--ru-gold-2);margin:2.4cqw 0 2.6cqw}
.ic-meta{display:grid;grid-template-columns:1fr 1fr;gap:1.8cqw 2.6cqw;border-top:.15cqw solid #333;padding-top:2cqw}
.ic-meta span{display:block;font-family:var(--f-display);font-size:1.55cqw;letter-spacing:.22em;color:#8D8D8D;font-weight:700}
.ic-meta b{display:block;font-family:var(--f-display);font-size:2.3cqw;line-height:1.2;font-weight:600;color:#fff}
.ic-meta b.ic-ok{color:var(--ru-gold-2)}
.ic-meta b.ic-off{color:#E3A08F}
.ic-qr{background:#fff;border-radius:2cqw;padding:1.4cqw;aspect-ratio:1}
.ic-qr svg{width:100%!important;height:auto!important;display:block}
.ic-foot{display:flex;justify-content:space-between;margin-top:3cqw;padding-top:1.8cqw;border-top:.15cqw solid rgba(216,158,14,.35);font-family:var(--f-display);font-size:1.7cqw;letter-spacing:.34em;color:var(--ru-gold-2);position:relative}
.ic-foot span:last-child{color:#8D8D8D}
.ic-back{flex:1;position:relative;margin-top:3cqw;max-width:78cqw}
.ic-back p{font-size:2.7cqw;line-height:1.45;color:#D0D0D0;margin:0 0 1.8cqw}
.cardwrap{width:100%;max-width:560px}
.qrfs{position:fixed;inset:0;background:#fff;z-index:96;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center}
.qrfs .q{width:min(82vw,70vh,440px)}

/* ---------- Tableaux → cartes sur mobile ---------- */
@media (max-width:720px){
  .tablewrap{border:0;background:none;overflow:visible}
  table.t:not(.keep),table.t:not(.keep) tbody,table.t:not(.keep) tr,table.t:not(.keep) td{display:block;width:100%}
  table.t:not(.keep) thead{display:none}
  table.t:not(.keep) tr{background:#fff;border:1px solid var(--line);border-radius:var(--r-m);padding:10px 12px;margin-bottom:10px}
  table.t:not(.keep) td{border:0;padding:5px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right}
  table.t:not(.keep) td::before{content:attr(data-label);font-family:var(--f-display);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-align:left;flex:none;max-width:45%}
  table.t:not(.keep) td[data-label=""]::before,table.t:not(.keep) td:not([data-label])::before{content:none}
  table.t:not(.keep) td:first-child{justify-content:flex-start;text-align:left}
  table.t:not(.keep) td:first-child::before{content:none}
  table.t:not(.keep) tr.click:hover td{background:none}
  .keep-wrap{overflow-x:auto}
}

/* ---------- Divers ---------- */
.selrow{display:flex;align-items:center;gap:10px}
.selrow input[type=checkbox]{width:18px;height:18px;accent-color:var(--ru-gold)}
.stickybar{position:sticky;bottom:12px;z-index:15;background:var(--ru-black);color:#fff;border-radius:var(--r-l);padding:12px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;box-shadow:0 12px 30px rgba(0,0,0,.25);margin-top:14px}
@media (max-width:900px){.is-student .stickybar,.is-teacher .stickybar{bottom:84px}}
.lock{opacity:.6}
.mod{border:1px solid var(--line);border-radius:var(--r-l);background:#fff;margin-bottom:16px;overflow:hidden}
.mod-h{display:flex;align-items:center;gap:12px;padding:14px 18px;background:#FAFAF8;border-bottom:1px solid var(--line)}
.mod-h .kicker{margin:0}
.chap{padding:14px 18px;border-bottom:1px solid #EFEEEB}
.chap:last-child{border-bottom:0}
.chap-h{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}
.chap .li{padding:9px 0}
.pill-kind{font-family:var(--f-display);font-size:9.5px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase}
.logline{display:flex;gap:14px;padding:9px 0;border-bottom:1px solid #EFEEEB;font-size:14px}
.logline:last-child{border-bottom:0}
.logline .dd{font-family:var(--f-display);font-weight:700;font-size:12px;color:var(--ru-gold);width:62px;flex:none}
.doc-rule{width:40px;height:2px;background:var(--ru-gold);margin:10px 0 22px}
.doc h1{font-family:var(--f-display)}
.doc{position:relative}
.doc-spec{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-24deg);font-family:var(--f-display);font-size:92px;font-weight:800;color:rgba(184,134,11,.12);letter-spacing:.1em;pointer-events:none}
.diploma{max-width:980px;aspect-ratio:1.414;background:radial-gradient(600px 300px at 100% 0%,rgba(216,158,14,.25),transparent 60%),#0D0D0D;color:#fff;padding:56px 64px;text-align:center;position:relative;border:10px solid #0D0D0D;box-shadow:inset 0 0 0 1px var(--ru-gold),inset 0 0 0 10px #0D0D0D,inset 0 0 0 11px rgba(216,158,14,.4);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.diploma .kicker{color:var(--ru-gold-2)}
.diploma h1{font-size:44px;letter-spacing:.12em;margin:18px 0 6px}
.diploma .nm{font-family:var(--f-display);font-size:34px;color:var(--ru-gold-2);margin:18px 0}
.diploma p{color:#CFCFCF;max-width:640px;margin:8px auto;font-size:17px}
.diploma .sigs{display:flex;justify-content:space-around;margin-top:48px;font-size:13px;color:#AAA}
.diploma .sigs div{border-top:1px solid #555;padding-top:8px;min-width:180px}
@media print{.diploma,.idcard{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.cam{width:100%;max-width:320px;aspect-ratio:1;object-fit:cover;border-radius:var(--r-l);background:#000;display:block;margin:0 auto}

.g5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:900px){.g5{grid-template-columns:repeat(2,minmax(0,1fr))}}
.g5 .kpi{background:#fff;border:1px solid var(--line);border-top:2px solid #D9D7D2;border-radius:var(--r-m);padding:12px 14px}
.main,.content{min-width:0}
.tabs{max-width:100%;scrollbar-width:thin}
select.input,input.input{max-width:100%}
.chap .li{flex-wrap:wrap}
@media (max-width:520px){.chap .li .grow{flex-basis:calc(100% - 90px)}}
.grid>*{min-width:0}
.li .grow{overflow-wrap:anywhere;min-width:0}
.chk>span:last-child{min-width:0;overflow-wrap:anywhere}
.feed li>.grow{flex:1;min-width:0}
.feed li>svg{align-self:center;color:var(--muted)}
.ic-wm{opacity:.045}
.ic-logo{height:10cqw}

.env-tag{font-family:var(--f-display);font-size:9.5px;letter-spacing:.2em;font-weight:700;color:#2F6B3F;border:1px solid #9CC3A6;border-radius:4px;padding:3px 7px}

/* ===== RU Connect V3 — compléments (portail candidat, engagements, paiements) ===== */
.stepper{list-style:none;margin:0 0 20px;padding:0;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
.stepper::-webkit-scrollbar{display:none}
.stepper li{flex:1;min-width:120px}
.stepper a{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-top:2px solid var(--line);color:var(--ink-2);text-decoration:none;font-size:12.5px;font-weight:600;line-height:1.25}
.stepper a span{font-family:var(--f-display);font-weight:700;font-size:18px;color:var(--ink-3,#8d8d8d)}
.stepper li.done a{border-top-color:var(--ru-gold-2,#C9A45C)}
.stepper li.done a span{color:var(--ru-gold,#A9832F)}
.stepper li.on a{border-top-color:var(--ru-black);color:var(--ink)}
.stepper li.on a span{color:var(--ink)}
.cklist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}
.cklist li{display:flex;gap:8px;align-items:center;padding:6px 0;font-size:13.5px;border-bottom:1px solid var(--line)}
.cklist li .ico{width:18px;height:18px}
@media (max-width:520px){.cklist{grid-template-columns:1fr}}
.paybtn{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;cursor:pointer;border:1px solid var(--line);min-height:84px;transition:border-color .15s,transform .15s;font:inherit;color:inherit}
.paybtn:hover,.paybtn:focus-visible{border-color:var(--ru-gold);transform:translateY(-1px)}
.paybtn b{font-family:var(--f-display);font-size:15px}
.instdoc{padding:34px 40px;line-height:1.7;margin-bottom:18px}
.instdoc .dh{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:14px}
.instdoc h1{font-size:26px}
.instdoc h3{font-size:16px}
.instdoc ul{padding-left:20px}
.instdoc .doc-rule{width:60px;height:2px;background:var(--ru-gold)}
@media (max-width:600px){.instdoc{padding:20px 16px}.instdoc h1{font-size:21px}}
.stickyform{position:sticky;bottom:12px;box-shadow:0 12px 30px rgba(0,0,0,.12)}
@media (max-width:900px){.is-student .stickyform{position:static}}
.seg label{border-radius:6px;font-size:13px;font-weight:600}
.seg label:has(input:checked){background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.seg input[type=radio]{accent-color:var(--ru-gold)}
button[aria-busy=true]{opacity:.65;cursor:progress}
.feed li[data-go]{cursor:pointer}
.badge{max-width:100%;white-space:normal;text-align:left;line-height:1.35}
