:root{
  --blue:#112d74;
  --blue-2:#0b1f55;
  --blue-3:#173f9c;
  --blue-4:#1e56c5;
  --red:#ef2f2f;
  --yellow:#f0c33c;
  --ink:#0f1f3d;
  --ink-soft:#3d4e72;
  --bg:#ececec;
  --card:#ffffff;
  --card-soft:#f4f6fb;
  --line:#d9dfec;
  --shadow:0 12px 30px rgba(17,45,116,.12);
  --shadow-strong:0 18px 40px rgba(17,45,116,.18);
  --radius-xl:24px;
  --radius-lg:18px;
  --radius-md:14px;
  --rail-width:132px;
  --topbar-h:88px;
  --trans:.26s cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:Arial,Helvetica,sans-serif;
  background:var(--bg);
  color:var(--ink);
}
body.page-enter .page-shell{animation:pageIn .42s ease both}
body.page-leave .page-shell{opacity:.65;transform:scale(.992)}
body.theme-dark{
  --bg:#0b1120;
  --card:#11192c;
  --card-soft:#172238;
  --line:#24324d;
  --ink:#edf3ff;
  --ink-soft:#9aabca;
  --shadow:0 12px 30px rgba(0,0,0,.28);
  --shadow-strong:0 18px 40px rgba(0,0,0,.32);
}
a{text-decoration:none;color:inherit}
img{display:block;max-width:100%}
button,input,select,textarea{font:inherit}

.page-shell{
  min-height:100vh;
  padding:0 0 18px;
  animation:pageIn .42s ease both;
}
.campus-topbar{
  height:var(--topbar-h);
  background:linear-gradient(90deg,#1600d8 0%, #2300c0 45%, #0f2e87 100%);
  color:#fff;
  display:grid;
  grid-template-columns:160px 1fr 290px;
  align-items:center;
  gap:18px;
  padding:10px 18px;
  border-bottom:3px solid var(--red);
  box-shadow:var(--shadow-strong);
}
.topbar-logo-side{display:flex;align-items:center}
.topbar-logo-wrap{width:64px;height:64px;display:flex;align-items:center;justify-content:center}
.topbar-logo-wrap img{max-width:60px;max-height:60px;object-fit:contain}
.topbar-title-side{text-align:center}
.topbar-title-side h1{margin:0;font-size:38px;line-height:1;font-weight:900;letter-spacing:.8px}
.topbar-tools-side{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.top-circle-btn{
  width:42px;height:42px;border:none;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.14);color:#fff;font-size:24px;line-height:1;
  transition:transform var(--trans), background var(--trans), box-shadow var(--trans);
}
.top-circle-btn:hover{transform:scale(1.22);background:rgba(255,255,255,.22);box-shadow:0 0 0 6px rgba(255,255,255,.08)}
.profile-badge{display:flex;align-items:center;gap:10px}
.profile-badge-ring{width:58px;height:58px;border-radius:50%;padding:3px;background:linear-gradient(135deg,var(--yellow),#ff8329)}
.profile-badge-ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;background:#fff}
.profile-badge-text{display:grid;gap:3px;justify-items:end}
.profile-badge-text span{font-size:12px;font-weight:800;text-transform:uppercase}
.profile-badge-text strong{font-size:14px;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.14);color:#fff2ad}

.model-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) var(--rail-width);
  gap:8px;
  padding:14px 14px 0;
}
.workspace{min-width:0}
.right-rail{display:flex;flex-direction:column;gap:8px;padding-top:0}
.rail-link,.rail-data-card{
  border-radius:15px;
  background:linear-gradient(180deg,#1808f4 0%, #031fb5 100%);
  color:#fff;
  padding:11px 10px;
  text-align:center;
  box-shadow:var(--shadow);
}
.rail-link{font-weight:900;font-size:15px;transition:transform var(--trans), box-shadow var(--trans), filter var(--trans)}
.rail-link:hover{transform:scale(1.17);filter:brightness(1.05);box-shadow:0 14px 30px rgba(14,46,160,.36)}
.rail-link.active{outline:3px solid rgba(240,195,60,.9)}
.rail-data-card{background:linear-gradient(180deg,#ffffff 0%, #edf2ff 100%);color:var(--ink);border:1px solid var(--line)}
.rail-data-card span{display:block;font-size:11px;color:var(--ink-soft);font-weight:800}
.rail-data-card strong{display:block;margin-top:4px;font-size:22px;color:var(--blue);font-weight:900}

.model-grid{
  display:grid;
  grid-template-columns:1.6fr 1.08fr;
  gap:18px;
  align-items:start;
}
.block-card{
  background:var(--card);
  border-radius:var(--radius-xl);
  box-shadow:var(--shadow);
  border:1px solid rgba(17,45,116,.08);
  padding:20px;
  transition:transform var(--trans), box-shadow var(--trans);
}
.block-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-strong)}
.block-muted{background:#bec8c3;border:none;box-shadow:none}
.large-block{min-height:198px}
.medium-block{min-height:162px}
.dashboard-hero{display:grid;gap:14px}
.section-label{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;background:#edf2ff;color:var(--blue);font-size:12px;font-weight:900}
.hero-title{margin:0;font-size:28px;color:var(--blue-2)}
.hero-text{margin:0;color:var(--ink-soft);font-size:16px;line-height:1.45}
.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.kpi-card{background:var(--card-soft);border:1px solid var(--line);border-radius:18px;padding:16px}
.kpi-card span{display:block;font-size:12px;font-weight:800;color:var(--ink-soft)}
.kpi-card strong{display:block;margin-top:6px;font-size:26px;color:var(--blue-2)}
.block-title{margin:0 0 10px;font-size:23px;color:var(--blue-2)}
.block-subtitle{margin:0 0 16px;color:var(--ink-soft)}
.mini-list{display:grid;gap:10px}
.mini-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:var(--card-soft);border:1px solid var(--line)}
.mini-item strong{color:var(--blue-2);font-size:15px}
.mini-item span{font-size:13px;color:var(--ink-soft)}
.mini-badge{padding:6px 10px;border-radius:999px;background:#eaf2ff;color:var(--blue);font-size:12px;font-weight:900}
.table-wrap{overflow:auto;border-radius:18px;border:1px solid var(--line)}
.table-clean{width:100%;border-collapse:collapse;background:var(--card)}
.table-clean th,.table-clean td{padding:14px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.table-clean th{background:#edf2ff;color:var(--blue-2);font-size:13px;font-weight:900}
.table-clean td{font-size:14px}
.badge{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:12px;font-weight:900}
.badge.success{background:#e5f8eb;color:#16713a}
.badge.warn{background:#fff0cc;color:#8a5a00}
.badge.info{background:#edf2ff;color:var(--blue)}

.btn-zoom,.action-link{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:none;cursor:pointer;border-radius:16px;padding:13px 18px;font-weight:900;
  transition:transform var(--trans), box-shadow var(--trans), filter var(--trans);
}
.btn-zoom:hover,.action-link:hover{transform:scale(1.16);box-shadow:0 14px 28px rgba(17,45,116,.28);filter:brightness(1.04)}
.btn-primary{background:linear-gradient(180deg,#3376f3 0%, #1146b4 100%);color:#fff}
.btn-light{background:#fff;color:var(--blue);border:1px solid var(--line)}
.action-link{padding:9px 12px;font-size:13px;border-radius:13px;background:#edf2ff;color:var(--blue)}
.action-link.secondary{background:#fff3d4;color:#8a5a00}
.action-row-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.page-panel{
  background:linear-gradient(180deg,var(--blue-2), #091634);
  border-radius:28px;
  box-shadow:var(--shadow-strong);
  color:#fff;
  overflow:hidden;
  min-height:calc(100vh - var(--topbar-h) - 32px);
}
.page-panel-body{padding:18px}
.page-title{margin:0;font-size:30px;font-weight:900;color:#fff}
.page-text{margin:10px 0 0;color:rgba(255,255,255,.88);font-size:16px}
.stats-inline{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}
.stats-inline .stat{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:16px}
.stats-inline .stat span{display:block;font-size:12px;color:rgba(255,255,255,.76);font-weight:800}
.stats-inline .stat strong{display:block;margin-top:7px;font-size:27px;color:#fff}
.inner-card{
  margin-top:16px;background:#f7f9fd;color:var(--ink);border-radius:22px;padding:18px;border:1px solid rgba(255,255,255,.12)
}
.filters-row{display:grid;grid-template-columns:1.8fr .9fr auto auto;gap:12px;align-items:center;margin-bottom:14px}
.input-clean,.select-clean{
  width:100%;height:50px;border-radius:15px;border:1px solid var(--line);padding:0 15px;background:#fff;color:var(--ink)
}
.note-line{margin:0 0 12px;color:var(--ink-soft);font-size:14px}

.login-body{
  min-height:100vh;
  background:linear-gradient(135deg,#07153d 0%, #0f2f7e 55%, #173f9c 100%);
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.login-shell{width:min(1220px,100%);display:grid;grid-template-columns:1.08fr .92fr;gap:28px;align-items:stretch}
.login-side,.login-form-card{
  background:rgba(255,255,255,.96);border-radius:34px;padding:38px 38px 34px;box-shadow:var(--shadow-strong);
}
.login-side{display:grid;align-content:start;gap:18px;position:relative;overflow:hidden}
.login-side::after{content:"";position:absolute;right:-80px;bottom:-80px;width:220px;height:220px;background:radial-gradient(circle, rgba(239,47,47,.14), transparent 68%)}
.login-brand{display:grid;grid-template-columns:140px 1fr;gap:20px;align-items:center}
.login-brand-logo{width:148px;height:148px;border-radius:30px;background:#eef2fb;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;padding:18px}
.login-brand-logo img{max-width:100%;max-height:100%;object-fit:contain}
.login-brand-copy h1{margin:0;font-size:66px;line-height:.94;color:var(--blue-2);font-weight:900}
.login-brand-copy p{margin:16px 0 0;font-size:20px;color:#506487;line-height:1.45}
.feature-pill{display:flex;align-items:center;gap:16px;padding:18px 18px;border-radius:22px;border:1px solid var(--line);background:#f8fbff;font-weight:800;font-size:18px;color:var(--blue-2)}
.feature-dot{width:18px;height:18px;border-radius:50%;flex:0 0 auto}
.feature-dot.blue{background:#245ad7;box-shadow:0 0 0 8px rgba(36,90,215,.1)}
.feature-dot.red{background:#ef4343;box-shadow:0 0 0 8px rgba(239,67,67,.1)}
.feature-dot.yellow{background:#efc332;box-shadow:0 0 0 8px rgba(239,195,50,.14)}
.login-form-card{display:grid;align-content:start;gap:16px}
.form-badge{display:inline-flex;padding:12px 18px;border-radius:999px;background:#e7eefc;color:#1b4da5;font-weight:900;font-size:15px;letter-spacing:.4px}
.login-form-card h2{margin:4px 0 0;font-size:40px;line-height:1.05;color:var(--blue-2)}
.login-form-card .lead{margin:0;color:#5a6d8f;font-size:18px}
.alert{padding:16px 18px;border-radius:18px;font-size:16px;border:1px solid transparent}
.alert-danger{background:#fff1f1;border-color:#f2baba;color:#ce3529}
.login-form{display:grid;gap:14px}
.login-form label{font-size:17px;font-weight:800;color:var(--ink)}
.login-form .input-clean{height:72px;font-size:17px;border-radius:22px}
.btn-login{height:64px;border-radius:22px;font-size:18px}
.demo-box{margin-top:8px;padding:20px;border:1px dashed #cdd9ef;border-radius:20px;background:#f9fbff;color:#274068}
.demo-box strong{display:block;font-size:17px;margin-bottom:8px;color:var(--blue-2)}
.demo-box div{font-size:15px;line-height:1.55}
.small-links{display:grid;gap:10px;justify-items:center;margin-top:2px}
.small-links a{color:#7c818d;text-decoration:underline;font-weight:500}
.small-links .register{color:#ea1f1f;font-weight:900;text-decoration:none}
.footer-brand{text-align:center;color:#6b7f9e;font-size:15px}

.placeholder-wrap{padding:18px;border-radius:22px;background:#f7f9fd;border:1px solid var(--line)}
.placeholder-title{margin:0 0 8px;font-size:24px;color:var(--blue-2)}
.placeholder-text{margin:0;color:var(--ink-soft);line-height:1.5}

@keyframes pageIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

@media (max-width:1280px){
  .login-brand-copy h1{font-size:54px}
}
@media (max-width:1100px){
  .campus-topbar{grid-template-columns:90px 1fr 210px}
  .topbar-title-side h1{font-size:30px}
  .login-shell{grid-template-columns:1fr}
  .model-layout{grid-template-columns:1fr}
  .right-rail{display:grid;grid-template-columns:repeat(3,1fr)}
  .model-grid{grid-template-columns:1fr}
  .stats-inline{grid-template-columns:repeat(2,1fr)}
  .filters-row{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .campus-topbar{grid-template-columns:68px 1fr 88px;padding:10px 12px}
  .topbar-title-side h1{font-size:24px}
  .top-circle-btn{display:none}
  .profile-badge-text{display:none}
  .model-layout{padding:10px}
  .page-panel-body{padding:14px}
  .right-rail{grid-template-columns:repeat(2,1fr)}
  .stats-inline,.kpi-row,.filters-row{grid-template-columns:1fr}
  .login-side,.login-form-card{padding:24px}
  .login-brand{grid-template-columns:1fr;justify-items:start}
  .login-brand-copy h1{font-size:40px}
  .login-brand-copy p{font-size:18px}
  .login-form-card h2{font-size:32px}
}

/* ===== Améliorations Mars 2026 : login exact + dashboard modèle propre ===== */
button, .btn-zoom, .rail-link, .top-circle-btn, .action-link, .nav-link { cursor:pointer; }

.login-body-compact{
  background:#06296f;
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:26px;
}
.login-card-exact{
  width:min(790px, 100%);
  min-height:1040px;
  padding:28px 48px 42px;
  border-radius:28px;
  border:3px solid #e7df12;
  background:#05286f;
  box-shadow:0 18px 38px rgba(0,0,0,.28);
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  animation:pageIn .42s ease both;
}
.login-card-logo{width:250px;height:250px;display:flex;align-items:center;justify-content:center;margin-top:4px}
.login-card-logo img{max-width:100%;max-height:100%;object-fit:contain}
.login-card-title{margin:8px 0 18px;font-size:82px;line-height:1;letter-spacing:.8px;font-weight:300;color:#ffffff}
.login-card-subtitle{margin:2px 0;font-size:31px;line-height:1.35;color:#ffffff;font-weight:400}
.login-card-subtitle.last{margin-bottom:30px}
.login-card-form{width:min(570px,100%);display:grid;gap:24px}
.login-exact-input{
  width:100%;height:86px;border-radius:44px;border:4px solid #ff1717;background:#fff;
  text-align:center;font-size:39px;color:#4d4d4d;outline:none;padding:0 28px;
  transition:transform var(--trans), box-shadow var(--trans), border-color var(--trans);
}
.login-exact-input::placeholder{color:#7e7e7e}
.login-exact-input:focus{transform:scale(1.02);box-shadow:0 0 0 8px rgba(255,255,255,.06)}
.login-exact-button{
  margin:6px auto 0;width:min(460px,100%);height:78px;border:none;border-radius:40px;
  background:linear-gradient(180deg,#ff241a 0%, #ef140e 100%);color:#fff;font-size:41px;font-weight:800;
  box-shadow:0 10px 24px rgba(239,20,14,.34);
  transition:transform .26s cubic-bezier(.2,.8,.2,1), box-shadow .26s cubic-bezier(.2,.8,.2,1), filter .26s cubic-bezier(.2,.8,.2,1);
}
.login-exact-button:hover{transform:scale(1.14);box-shadow:0 18px 34px rgba(239,20,14,.42);filter:brightness(1.03)}
.login-register-link{margin-top:28px;font-size:41px;font-weight:700;color:#fff;text-decoration:none;transition:transform var(--trans), color var(--trans)}
.login-register-link:hover{transform:scale(1.08);color:#fff7b5}
.alert.compact{width:min(570px,100%);margin:0 0 20px;border-radius:22px;font-size:22px}

.dashboard-shell{background:#f2f3f7}
.dashboard-model-grid{display:grid;grid-template-columns:1.62fr 1.02fr;gap:22px;align-items:start}
.dashboard-card{
  background:linear-gradient(180deg,#ffffff 0%, #fbfcff 100%);
  border:1px solid #dfe6f3;
  border-radius:32px;
  box-shadow:0 18px 32px rgba(14,40,96,.10);
  padding:28px;
  transition:transform var(--trans), box-shadow var(--trans);
}
.dashboard-card:hover{transform:translateY(-3px);box-shadow:0 24px 40px rgba(14,40,96,.14)}
.dashboard-card-main{min-height:390px}
.dashboard-card-side{min-height:390px}
.dashboard-card-bottom{grid-column:1 / 2;min-height:300px}
.dashboard-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.dashboard-tag{display:inline-flex;align-items:center;padding:9px 14px;border-radius:999px;background:#edf2ff;color:#123b96;font-weight:900;font-size:12px;text-transform:uppercase;letter-spacing:.5px}
.dashboard-welcome{margin:0 0 14px;font-size:46px;line-height:1.05;color:#102d73;font-weight:900}
.dashboard-description{margin:0 0 28px;font-size:19px;line-height:1.45;color:#42577f;max-width:900px}
.dashboard-profile-grid{display:grid;grid-template-columns:1.5fr .9fr .9fr;gap:16px}
.dashboard-info-box{background:#f3f6fd;border:1px solid #d7dfee;border-radius:24px;padding:18px 20px;min-height:158px;display:flex;flex-direction:column;justify-content:flex-start}
.dashboard-info-box span{display:block;font-size:14px;font-weight:800;color:#516788;margin-bottom:10px}
.dashboard-info-box strong{font-size:31px;line-height:1.1;color:#102d73;word-break:break-word}
.dashboard-info-box.narrow strong{font-size:28px}
.dashboard-card-side h3,.dashboard-card-bottom h3{margin:0 0 8px;font-size:26px;color:#102d73}
.dashboard-card-side p,.dashboard-card-bottom p{margin:0 0 18px;font-size:16px;color:#586c8f}
.quick-stats-vertical{display:grid;gap:14px}
.quick-stat-line{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 18px;border-radius:22px;background:#f5f7fd;border:1px solid #dde5f2}
.quick-stat-line strong{display:block;font-size:16px;color:#102d73}
.quick-stat-line span{display:block;margin-top:5px;font-size:14px;color:#647998}
.quick-stat-line b{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#eaf0fb;color:#173f9c;font-size:25px;font-weight:900}
.dashboard-card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.compact-action{padding:12px 18px;border-radius:16px;white-space:nowrap}
.table-wrap.clean-compact{border-radius:22px;background:#fff;overflow:hidden}
.dashboard-table th{font-size:14px;background:#edf2ff}
.dashboard-table td{font-size:14px}
.rail-link{
  min-height:56px;display:flex;align-items:center;justify-content:center;
  font-size:16px;letter-spacing:.1px;
}
.rail-link:hover{transform:scale(1.22);}
.top-circle-btn:hover,.btn-zoom:hover,.action-link:hover{transform:scale(1.18)}

@media (max-width:1280px){
  .login-card-title{font-size:68px}
  .login-card-subtitle{font-size:27px}
  .login-exact-input{font-size:33px;height:78px}
  .login-exact-button,.login-register-link{font-size:34px}
  .dashboard-welcome{font-size:38px}
  .dashboard-profile-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:1100px){
  .v2-lang-select{min-width:92px;height:40px;font-size:12px}
  .dashboard-model-grid{grid-template-columns:1fr}
  .dashboard-card-bottom{grid-column:auto}
  .login-card-exact{min-height:auto;padding:24px 28px 34px}
  .login-card-logo{width:200px;height:200px}
  .login-card-title{font-size:58px}
  .login-card-subtitle{font-size:24px}
}
@media (max-width:760px){
  .login-language-switch{top:12px;right:12px}
  .login-language-switch a{min-width:74px;height:34px;padding:0 10px;font-size:12px}
  .v2-lang-select{height:36px;min-width:82px;font-size:11px;padding:0 8px}
  .login-body-compact{padding:14px}
  .login-card-exact{padding:20px 16px 28px;border-radius:22px}
  .login-card-logo{width:150px;height:150px}
  .login-card-title{font-size:40px;margin-bottom:14px}
  .login-card-subtitle{font-size:18px}
  .login-exact-input{height:62px;font-size:22px;border-width:3px}
  .login-card-form{gap:16px}
  .login-exact-button{height:60px;font-size:26px;width:100%}
  .login-register-link{font-size:24px;margin-top:20px}
  .alert.compact{font-size:16px}
  .dashboard-welcome{font-size:30px}
  .dashboard-description{font-size:16px}
  .dashboard-profile-grid{grid-template-columns:1fr}
  .dashboard-info-box{min-height:120px}
  .dashboard-card-title-row{flex-direction:column}
}


/* ===== Correctif connexion exacte + profil/logout ===== */
.profile-menu{position:relative}
.profile-trigger{border:none;background:transparent;padding:0;cursor:pointer;transition:transform var(--trans),filter var(--trans)}
.profile-trigger:hover{transform:scale(1.08);filter:brightness(1.04)}
.profile-trigger:focus-visible{outline:3px solid rgba(240,195,60,.85);outline-offset:4px;border-radius:20px}
.profile-dropdown{
  position:absolute;top:calc(100% + 10px);right:0;min-width:240px;padding:12px;
  border-radius:20px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-strong);
  display:none;z-index:50;color:var(--ink)
}
.profile-menu.open .profile-dropdown{display:grid;gap:8px;animation:dropdownIn .18s ease both}
.profile-dropdown-head{display:grid;gap:3px;padding:8px 8px 10px;border-bottom:1px solid var(--line)}
.profile-dropdown-head span{font-size:12px;color:var(--ink-soft);font-weight:700}
.profile-dropdown-head strong{font-size:15px;color:var(--blue-2)}
.profile-dropdown-head small{font-size:12px;color:var(--blue-3);font-weight:900}
.profile-dropdown-link{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:14px;background:#f7f9ff;color:var(--blue-2);font-weight:800;transition:transform var(--trans),background var(--trans),box-shadow var(--trans)}
.profile-dropdown-link:hover{transform:scale(1.04);background:#edf2ff;box-shadow:0 10px 20px rgba(17,45,116,.12)}
.profile-dropdown-link.logout{background:#fff1f1;color:#c62828}
.profile-dropdown-link.logout:hover{background:#ffe0e0}
@keyframes dropdownIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}

.login-body-exact{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:30px;
  background:#06296d;
}
.login-exact-card{
  width:min(790px,100%);min-height:930px;background:#06296d;color:#fff;
  border:3px solid #e6da17;border-radius:34px;box-shadow:0 18px 42px rgba(0,0,0,.35);
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  padding:54px 52px 46px;text-align:center;
}
.login-exact-logo{width:235px;margin-bottom:18px}
.login-exact-logo img{width:100%;height:auto;object-fit:contain}
.login-exact-title{margin:0 0 20px;font-size:66px;line-height:1.02;font-weight:400;letter-spacing:1px;color:#fff}
.login-exact-lines{display:grid;gap:10px;margin-bottom:34px}
.login-exact-lines p{margin:0;font-size:34px;line-height:1.28;color:#fff;font-weight:400}
.login-exact-form{width:100%;max-width:560px;display:grid;gap:26px;margin-top:8px}
.login-exact-field{
  width:100%;height:108px;border-radius:34px;background:#fff;border:4px solid #ff1d12;
  padding:0 36px;text-align:center;font-size:38px;color:#4a4a4a;outline:none;
  box-shadow:inset 0 1px 0 rgba(0,0,0,.03);
}
.login-exact-field::placeholder{color:#7e7e7e;opacity:1}
.login-exact-field:focus{transform:scale(1.01);box-shadow:0 0 0 6px rgba(255,255,255,.12)}
.login-exact-submit{
  width:420px;max-width:100%;margin:2px auto 0;height:84px;border:none;border-radius:30px;
  background:#ff160d;color:#fff;font-size:36px;font-weight:800;cursor:pointer;
  transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s ease,filter .22s ease;
}
.login-exact-submit:hover{transform:scale(1.12);box-shadow:0 18px 34px rgba(0,0,0,.28);filter:brightness(1.02)}
.login-exact-submit:active{transform:scale(1.06)}
.login-exact-register{margin-top:26px;font-size:40px;font-weight:700;color:#fff;transition:transform var(--trans),opacity var(--trans)}
.login-exact-register:hover{transform:scale(1.08);opacity:.92}
.exact-alert{width:100%;max-width:560px;margin:0 0 18px;font-size:22px;border-radius:26px}

@media (max-width:900px){
  .login-exact-card{min-height:auto;padding:34px 24px 30px;border-radius:26px}
  .login-exact-logo{width:160px}
  .login-exact-title{font-size:42px}
  .login-exact-lines p{font-size:22px}
  .login-exact-form{max-width:100%;gap:18px}
  .login-exact-field{height:72px;font-size:26px;padding:0 18px;border-radius:22px}
  .login-exact-submit{height:66px;font-size:28px;width:300px}
  .login-exact-register{font-size:28px}
  .exact-alert{font-size:16px}
}


/* ===== Patch interface compacte OWAYE CAMPUS ===== */
html, body { width:100%; min-height:100%; }
body.app-body{overflow-x:hidden;}
.login-page-no-scroll{overflow:hidden;}
.app-layout{
  display:grid;
  grid-template-columns:280px minmax(0,1fr);
  gap:18px;
  padding:16px;
  align-items:start;
}
.workspace{min-width:0;}
.sidebar{
  position:sticky;top:calc(var(--topbar-h) + 16px);
  min-height:calc(100vh - var(--topbar-h) - 32px);
  border-radius:28px;
  background:linear-gradient(180deg,#08235f 0%, #0a2f7c 100%);
  color:#fff;
  box-shadow:0 18px 40px rgba(4,17,54,.24);
  padding:20px 16px;
  display:flex;flex-direction:column;gap:18px;
  transition:transform var(--trans), width var(--trans), padding var(--trans), opacity var(--trans);
}
.sidebar-top{display:flex;align-items:center;gap:12px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.12)}
.logo-box{width:64px;height:64px;border-radius:20px;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;padding:10px;flex:0 0 auto}
.logo-box img{max-width:100%;max-height:100%;object-fit:contain}
.brand-stack{display:grid;gap:4px}
.brand-stack h1{margin:0;font-size:22px;line-height:1.05;color:#fff}
.brand-stack p{margin:0;font-size:13px;color:rgba(255,255,255,.78)}
.brand-chip{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.12);font-size:11px;font-weight:800;color:#fff1aa;width:max-content}
.sidebar-nav{display:grid;gap:10px}
.nav-link{
  display:flex;align-items:center;gap:12px;min-height:50px;padding:0 14px;border-radius:16px;
  color:#eef4ff;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);
  font-weight:800;transition:transform var(--trans), background var(--trans), box-shadow var(--trans), border-color var(--trans);
}
.nav-link:hover{transform:scale(1.05);background:rgba(255,255,255,.1);box-shadow:0 12px 24px rgba(0,0,0,.18)}
.nav-link.active{background:linear-gradient(180deg,rgba(255,255,255,.16) 0%, rgba(255,255,255,.1) 100%);border-color:rgba(240,195,60,.65)}
.nav-icon{font-size:18px;line-height:1}
.sidebar-stats{margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sidebar-mini-card{padding:12px;border-radius:18px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.08)}
.sidebar-mini-card span{display:block;font-size:11px;color:rgba(255,255,255,.76);font-weight:800}
.sidebar-mini-card strong{display:block;margin-top:6px;font-size:24px;color:#fff}
.sidebar-mini-card.warn strong{color:#ffd37a}
.sidebar-collapsed .app-layout{grid-template-columns:92px minmax(0,1fr)}
.sidebar-collapsed .brand-stack,
.sidebar-collapsed .nav-link span:last-child,
.sidebar-collapsed .sidebar-stats{display:none}
.sidebar-collapsed .sidebar{padding-inline:12px}
.sidebar-collapsed .nav-link{justify-content:center;padding:0}
.sidebar-collapsed .logo-box{margin-inline:auto}
.sidebar-collapsed .sidebar-top{justify-content:center}
.dashboard-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.dashboard-mini-kpi{background:#fff;border:1px solid #dfe6f3;border-radius:22px;padding:18px 20px;box-shadow:0 14px 24px rgba(14,40,96,.08)}
.dashboard-mini-kpi span{display:block;font-size:13px;font-weight:800;color:#5a6d8f}
.dashboard-mini-kpi strong{display:block;margin-top:8px;font-size:30px;color:#102d73}
.dashboard-mini-kpi.warn strong{color:#b26b00}
.compact-dashboard-grid{grid-template-columns:1.45fr .95fr;gap:16px}
.compact-profile-grid{grid-template-columns:1.2fr .9fr .9fr}
.dashboard-soft-chip{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:#fff6d7;color:#8f6700;font-size:12px;font-weight:900}
.dashboard-card-head.simple{margin-bottom:4px}
.quick-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.quick-action-btn{
  min-height:84px;padding:16px;border-radius:20px;background:#f4f7fd;border:1px solid #dde5f2;
  color:#10337d;font-weight:900;display:flex;align-items:center;justify-content:center;text-align:center;
  transition:transform var(--trans), box-shadow var(--trans), background var(--trans);
}
.quick-action-btn:hover{transform:scale(1.06);box-shadow:0 14px 24px rgba(17,45,116,.14);background:#edf2ff}
.full-span-card{grid-column:1 / -1}
.page-panel{min-height:auto}
.campus-topbar{position:sticky;top:0;z-index:40}
.top-circle-btn{font-size:20px}
.login-body-exact{
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:18px;
  background:#06296d;
}
.login-exact-card{
  width:min(780px,100%);
  height:min(920px, calc(100vh - 36px));
  min-height:unset;
  padding:clamp(28px, 4vh, 48px) clamp(24px, 4vw, 52px);
  justify-content:center;
}
.login-exact-logo{width:clamp(120px, 18vh, 220px);margin-bottom:12px}
.login-exact-title{font-size:clamp(36px, 6vh, 64px);margin:0 0 16px}
.login-exact-lines{gap:8px;margin-bottom:24px}
.login-exact-lines p{font-size:clamp(18px, 3.2vh, 30px);line-height:1.25}
.login-exact-form{max-width:560px;gap:20px}
.login-exact-field{height:clamp(58px, 10vh, 96px);font-size:clamp(20px, 3.4vh, 36px);border-radius:30px}
.login-exact-submit{height:clamp(56px, 8vh, 80px);font-size:clamp(24px, 3.8vh, 34px);border-radius:26px}
.login-exact-register{margin-top:18px;font-size:clamp(22px, 4vh, 38px)}
.exact-alert{font-size:clamp(15px, 2.4vh, 20px);margin:0 0 14px}
@media (max-width:1100px){
  .app-layout{grid-template-columns:1fr}
  .sidebar{position:relative;top:0;min-height:auto}
  .dashboard-kpi-grid{grid-template-columns:repeat(2,1fr)}
  .compact-dashboard-grid,.quick-action-grid,.compact-profile-grid{grid-template-columns:1fr}
  .sidebar-stats{grid-template-columns:repeat(4,1fr)}
  .sidebar-collapsed .app-layout{grid-template-columns:1fr}
  .sidebar-collapsed .brand-stack,
  .sidebar-collapsed .nav-link span:last-child,
  .sidebar-collapsed .sidebar-stats{display:initial}
}
@media (max-width:760px){
  .app-layout{padding:10px}
  .dashboard-kpi-grid,.sidebar-stats{grid-template-columns:1fr 1fr}
  .campus-topbar{grid-template-columns:68px 1fr 150px}
  .top-circle-btn{display:inline-flex;align-items:center;justify-content:center}
  .login-page-no-scroll{overflow:auto}
  .login-exact-card{height:auto;min-height:unset}
}

/* ===== Dashboard exact demandé - Mars 2026 ===== */
:root{
  --v2-blue:#002157;
  --v2-blue-2:#0a2d79;
  --v2-red:#c31f27;
  --v2-light:#eef1f7;
  --v2-panel:#ffffff;
  --v2-line:#d9dfef;
  --v2-text:#203159;
  --v2-shadow:0 8px 22px rgba(10, 29, 81, .12);
}
.dashboard-v2-body{background:#f0f2f7;color:var(--v2-text);overflow-x:hidden}
.dashboard-v2-shell{min-height:100vh;background:transparent}
.dashboard-v2-layout{display:grid;grid-template-columns:215px 1fr;min-height:calc(100vh - 88px)}
.dashboard-v2-main{min-width:0;background:#eef1f7}
.dashboard-v2-content{padding:18px 18px 22px}
.dashboard-v2-page-title{margin:0 0 14px;font-size:24px;color:var(--v2-red);font-weight:900}

.v2-topbar{
  display:grid;grid-template-columns:420px 1fr 220px;align-items:center;
  height:88px;background:var(--v2-blue);color:#fff;border-bottom:2px solid #eb2127;
  padding:0 18px;box-shadow:0 8px 20px rgba(0,0,0,.18);position:sticky;top:0;z-index:50
}
.v2-topbar-left{display:flex;align-items:center;gap:16px}
.v2-menu-btn{width:40px;height:40px;border:none;background:transparent;color:#fff;font-size:28px;border-radius:10px;transition:transform var(--trans),background var(--trans)}
.v2-menu-btn:hover{transform:scale(1.1);background:rgba(255,255,255,.12)}
.v2-topbar-filters{display:flex;gap:12px}
.v2-topbar-filters select{
  height:44px;border:none;border-radius:10px;background:rgba(255,255,255,.12);color:#fff;padding:0 14px;font-weight:700;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)
}
.v2-topbar-title{text-align:center;font-size:32px;font-weight:900;letter-spacing:.5px}
.v2-topbar-right{display:flex;justify-content:flex-end;align-items:center;gap:16px}
.v2-language-menu{position:relative}
.v2-lang-trigger{
  height:42px;border-radius:12px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.12);
  color:#fff;padding:0 12px;display:inline-flex;align-items:center;gap:8px;font-weight:900;outline:none;cursor:pointer;
  transition:transform var(--trans), background var(--trans), box-shadow var(--trans), opacity var(--trans);
}
.v2-lang-trigger:hover,.v2-language-menu.open .v2-lang-trigger{transform:scale(1.04);background:rgba(255,255,255,.18);box-shadow:0 10px 22px rgba(0,0,0,.14)}
.v2-lang-icon{font-size:16px;line-height:1}
.v2-lang-code{font-size:13px;letter-spacing:.5px}
.v2-lang-arrow{font-size:14px;opacity:.82}
.v2-lang-dropdown{
  position:absolute;right:0;top:calc(100% + 10px);min-width:172px;background:#fff;border:1px solid #d7e1f2;border-radius:16px;
  box-shadow:0 18px 34px rgba(10,29,81,.18);padding:8px;display:none;z-index:60;
}
.v2-language-menu.open .v2-lang-dropdown{display:grid;gap:4px}
.v2-lang-dropdown a{padding:11px 12px;border-radius:10px;color:#173373;font-weight:800;transition:all var(--trans)}
.v2-lang-dropdown a:hover,.v2-lang-dropdown a.active{background:#edf2ff;color:#23479f}
.cursor-btn.is-off{opacity:.58;transform:scale(.94)}
body.cursor-disabled *{cursor:auto !important}
body.cursor-disabled .cursor-dot,body.cursor-disabled .cursor-ring{opacity:0 !important}
.login-language-switch{
  position:fixed;top:18px;right:18px;display:flex;gap:8px;z-index:30;
}
.login-language-switch a{
  min-width:88px;height:38px;padding:0 14px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);color:#fff;font-weight:800;
  transition:transform var(--trans), background var(--trans), box-shadow var(--trans), opacity var(--trans);
}
.login-language-switch a:hover,.login-language-switch a.active{transform:scale(1.06);background:rgba(255,255,255,.2);box-shadow:0 12px 22px rgba(0,0,0,.18)}

.v2-top-icon{position:relative;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:26px;background:transparent;border:none}
.v2-top-icon.notify i{position:absolute;right:-4px;top:-4px;font-style:normal;background:#ef3b44;color:#fff;border-radius:999px;padding:1px 5px;font-size:10px;font-weight:900}
.v2-top-profile{position:relative}
.v2-top-profile-btn{display:flex;align-items:center;gap:8px;background:transparent;border:none;color:#fff}
.v2-top-avatar{width:56px;height:56px;border-radius:50%;overflow:hidden;border:3px solid #f0c12a;box-shadow:0 0 0 2px rgba(255,255,255,.15)}
.v2-top-avatar img{width:100%;height:100%;object-fit:cover}
.v2-top-arrow{font-size:22px}
.v2-profile-dropdown{right:0;top:calc(100% + 8px)}
.theme-btn{cursor:pointer}

.v2-sidebar{background:var(--v2-blue);color:#fff;border-radius:0;box-shadow:none;display:flex;flex-direction:column;min-height:calc(100vh - 88px)}
.v2-sidebar-top{padding:18px 18px 14px;border-bottom:1px solid rgba(255,255,255,.08)}
.v2-brand-block{display:flex;align-items:center;gap:12px;min-width:0}
.v2-brand-block-stacked{flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:10px}
.v2-logo-box{width:72px;height:72px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.v2-logo-box img{max-width:100%;max-height:100%;object-fit:contain}
.v2-brand-text{display:grid;gap:3px;min-width:0}
.v2-brand-text-centered{justify-items:center;text-align:center}
.v2-brand-text strong{font-size:20px;line-height:1;color:#fff;font-weight:900;letter-spacing:.4px;white-space:nowrap}
.v2-brand-text span{font-size:11px;color:rgba(255,255,255,.72);font-weight:700;white-space:normal;overflow:visible;text-overflow:clip;max-width:100%}
.v2-sidebar-nav{display:flex;flex-direction:column;padding:20px 10px 12px;gap:0}
.v2-nav-link{display:grid;grid-template-columns:24px 1fr 12px;align-items:center;gap:12px;color:#fff;padding:12px 14px;border-radius:10px;position:relative;font-size:15px;font-weight:700;border-bottom:1px solid rgba(255,255,255,.24);transition:transform var(--trans), background var(--trans), box-shadow var(--trans)}
.v2-nav-link:hover{transform:translateX(2px);background:rgba(255,255,255,.06)}
.v2-nav-link.active{background:rgba(0,0,0,.32);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.v2-nav-link .icon{display:inline-flex;align-items:center;justify-content:center;font-size:18px}
.v2-nav-link b{font-weight:400;opacity:.8}
.v2-sidebar-profile{margin-top:auto;padding:14px 10px 18px;border-top:1px solid rgba(255,255,255,.08)}
.v2-profile-main{display:grid;grid-template-columns:48px 1fr 18px;gap:10px;align-items:center;padding:10px;border-radius:14px;background:rgba(0,0,0,.24)}
.v2-profile-avatar{width:48px;height:48px;border-radius:50%;overflow:hidden;border:2px solid #f0c12a}
.v2-profile-avatar img{width:100%;height:100%;object-fit:cover}
.v2-profile-text strong{display:block;color:#fff;font-size:15px}
.v2-profile-text span{display:block;font-size:12px;color:rgba(255,255,255,.86)}
.v2-profile-main em{font-style:normal;font-size:18px}
.v2-profile-mini-icons{display:flex;gap:18px;padding:12px 10px 0;color:#fff;opacity:.9}

.dashboard-v2-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.v2-kpi-card{display:flex;align-items:center;gap:16px;background:var(--v2-panel);border:1px solid var(--v2-line);border-radius:14px;padding:16px 18px;box-shadow:var(--v2-shadow)}
.v2-kpi-icon{width:58px;height:58px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:28px;background:#edf2ff;color:#2a53da}
.v2-kpi-icon.yellow{background:#feefcf;color:#e0a300}
.v2-kpi-card strong{display:block;font-size:26px;line-height:1;color:var(--v2-red);font-weight:900}
.v2-kpi-card strong small{font-size:.55em}
.v2-kpi-card span{display:block;margin-top:8px;font-size:17px;color:#243763;font-weight:800}

.dashboard-v2-grid{display:grid;gap:14px;margin-bottom:14px}
.top-grid{grid-template-columns:2.15fr 1.35fr 1fr}
.middle-grid{grid-template-columns:2fr 1.25fr .95fr}
.bottom-grid{grid-template-columns:1.5fr 1.5fr}
.v2-side-stack{display:grid;gap:14px}
.v2-panel{background:var(--v2-panel);border:1px solid var(--v2-line);border-radius:14px;box-shadow:var(--v2-shadow);padding:14px 16px}
.v2-panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.v2-panel-head h2{margin:0;font-size:20px;color:var(--v2-red);font-weight:900}
.v2-panel-head.with-link a,.panel-more-link{color:#274cb4;font-weight:800}
.panel-inline-selects{display:flex;gap:8px}
.panel-inline-selects select,
.panel-filters-row select{
  height:38px;border-radius:10px;border:1px solid #cfd7ea;background:#fff;color:#34446c;padding:0 12px;font-weight:700
}
.panel-filters-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.panel-filters-row.right-short select{flex:1;min-width:90px}
.panel-filters-row select{min-width:150px}
.compact-only select{min-width:95px}

.line-chart-box{padding-top:2px}
.line-chart-legend{display:inline-flex;align-items:center;gap:8px;background:#edf0f8;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700;color:#55688d;margin-bottom:10px}
.legend-dot{width:18px;height:7px;border-radius:99px;background:#f3b21c;display:inline-block}
.line-chart-grid{position:relative;padding-left:52px}
.line-chart-grid .y{position:absolute;left:0;font-size:13px;color:#5f7094;font-weight:700}
.line-chart-grid .y1{top:10px}.line-chart-grid .y2{top:55px}.line-chart-grid .y3{top:118px}.line-chart-grid .y4{top:183px}
.line-chart-canvas{position:relative;height:230px;background:repeating-linear-gradient(to bottom, transparent, transparent 41px, #e5e9f4 42px), repeating-linear-gradient(to right, transparent, transparent 62px, rgba(228,233,244,.75) 63px);border-radius:10px;overflow:hidden}
.line-chart-canvas svg{width:100%;height:100%}
.chart-tooltip{position:absolute;right:115px;top:74px;background:#fff;border:1px solid #d3d9ea;border-radius:12px;padding:10px 14px;font-size:18px;font-weight:900;color:#263768;box-shadow:0 8px 18px rgba(31,53,111,.12)}
.chart-tooltip span{display:block;font-size:12px;color:#6e7ea3}
.line-chart-months{display:grid;grid-template-columns:repeat(9,1fr);padding:10px 4px 0 8px;font-weight:700;color:#55688d}

.donut-panel-body{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:12px}
.status-list{list-style:none;padding:0;margin:0;display:grid;gap:18px;font-size:18px;font-weight:800;color:#243763}
.dot{display:inline-block;width:14px;height:14px;border-radius:50%;margin-right:10px;vertical-align:middle}
.dot.active{background:#2b58e5}.dot.attente{background:#f3b21c}.dot.suspendu{background:#ef3340}
.donut-wrap{display:flex;align-items:center;justify-content:center}
.donut-chart{width:180px;height:180px;border-radius:50%;background:conic-gradient(#2b58e5 0 62%, #d9dff2 62% 85%, #f3b21c 85% 100%);display:flex;align-items:center;justify-content:center;position:relative}
.donut-chart::after{content:'';position:absolute;inset:28px;background:#fff;border-radius:50%;box-shadow:inset 0 0 0 1px #dde3f3}
.donut-chart span{position:relative;z-index:2;font-size:28px;font-weight:900;color:#263768}
.mini-chart-actions{display:flex;gap:8px;margin-top:8px}
.mini-chart-actions span{width:36px;height:24px;border-radius:999px;background:#ecf0fb}

.alert-list{display:grid;gap:14px;margin-bottom:12px}
.alert-item{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;padding-bottom:12px;border-bottom:1px solid #eceffa}
.alert-item-icon{width:34px;height:34px;border-radius:10px;background:#feefcf;color:#d79b00;display:flex;align-items:center;justify-content:center;font-weight:900}
.alert-item-text strong{display:block;font-size:16px;color:#2a3657}
.alert-item-text small{display:block;color:#647699;font-size:12px}
.alert-badge{background:#ffe6e2;color:#d15a4f;padding:8px 10px;border-radius:9px;font-size:12px;font-weight:900}
.panel-more-link{display:flex;justify-content:flex-end;font-size:14px}

.v2-table-wrap{overflow:auto;border:1px solid #dde3f3;border-radius:12px}
.v2-table{width:100%;border-collapse:collapse}
.v2-table th,.v2-table td{padding:12px 14px;border-bottom:1px solid #e8ecf6;text-align:left;font-size:14px}
.v2-table th{background:#eef1f8;color:#34446c;font-size:13px;font-weight:900;white-space:nowrap}
.v2-table td{color:#34446c;font-weight:600}
.plan-pill{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:10px;font-size:12px;font-weight:900}
.plan-pill.argent{background:#f5deb1;color:#a06b00}.plan-pill.gold{background:#f3e1a7;color:#b27b00}
.method-list{display:grid;gap:12px}
.method-row{display:flex;justify-content:space-between;align-items:center;background:#f5f7fc;border-radius:11px;padding:11px 12px;font-size:15px;font-weight:800;color:#34446c}
.student-panel-head h2{margin:0 0 10px;font-size:18px;color:#203159}
.student-chart-row{display:grid;grid-template-columns:98px 1fr;gap:10px;align-items:center}
.student-pie{width:98px;height:98px;border-radius:50%;background:conic-gradient(#39a95c 0 15%, #2f6cff 15% 55%, #ef3f44 55% 80%, #f0b927 80% 100%);position:relative}
.student-pie::after{content:'46%';position:absolute;inset:23px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:900;color:#203159}
.student-legend{display:grid;gap:10px}
.student-legend div{display:flex;justify-content:space-between;gap:10px}
.student-legend strong{color:#3ba55a}
.student-legend div:nth-child(2) strong{color:#2f6cff}
.student-legend div:nth-child(3) strong{color:#efb52a}
.student-legend span{color:#34446c;font-weight:700}
.mini-simple-list{display:grid}
.mini-simple-row{display:grid;grid-template-columns:1.1fr 1fr auto;gap:12px;padding:12px 4px;border-bottom:1px solid #e8ecf6;color:#34446c;font-weight:700}
.mini-simple-row strong{font-size:14px}

body.theme-dark.dashboard-v2-body{background:#06122d;color:#d7ddf2}
body.theme-dark .dashboard-v2-main{background:#06122d}
body.theme-dark .dashboard-v2-content{background:#06122d}
body.theme-dark .v2-panel,
body.theme-dark .v2-kpi-card{background:#0b1534;border-color:#1a2a57;box-shadow:0 12px 28px rgba(0,0,0,.30)}
body.theme-dark .dashboard-v2-page-title,
body.theme-dark .v2-panel-head h2,
body.theme-dark .v2-kpi-card strong{color:#ff5a5f}
body.theme-dark .v2-kpi-card span,
body.theme-dark .status-list,
body.theme-dark .alert-item-text strong,
body.theme-dark .student-panel-head h2,
body.theme-dark .student-legend span,
body.theme-dark .v2-table td,
body.theme-dark .v2-table th,
body.theme-dark .method-row,
body.theme-dark .mini-simple-row,
body.theme-dark .chart-tooltip,
body.theme-dark .line-chart-months,
body.theme-dark .line-chart-grid .y{color:#d2daf1}
body.theme-dark .v2-topbar,
body.theme-dark .v2-sidebar{background:#002157}
body.theme-dark .panel-filters-row select,
body.theme-dark .panel-inline-selects select,
body.theme-dark .v2-topbar-filters select{background:#162349;border-color:#2b3b6a;color:#fff}
body.theme-dark .line-chart-canvas{background:repeating-linear-gradient(to bottom, transparent, transparent 41px, rgba(145,162,208,.18) 42px), repeating-linear-gradient(to right, transparent, transparent 62px, rgba(145,162,208,.12) 63px)}
body.theme-dark .line-chart-legend{background:#14234c;color:#d7ddf2}
body.theme-dark .chart-tooltip{background:#1a2446;border-color:#30406b;color:#fff}
body.theme-dark .chart-tooltip span{color:#b8c4ea}
body.theme-dark .donut-chart::after{background:#0b1534;box-shadow:inset 0 0 0 1px #1f315d}
body.theme-dark .donut-chart span{color:#fff}
body.theme-dark .v2-table-wrap{border-color:#1f315d}
body.theme-dark .v2-table th{background:#101b3d;color:#c8d3f3}
body.theme-dark .v2-table td,
body.theme-dark .v2-table th,
body.theme-dark .mini-simple-row,
body.theme-dark .alert-item{border-bottom-color:#1b2a55}
body.theme-dark .method-row{background:#101b3d;color:#d7ddf2}
body.theme-dark .student-pie::after{background:#0b1534;color:#fff}
body.theme-dark .panel-more-link,
body.theme-dark .v2-panel-head.with-link a{color:#d7ddf2}
body.theme-dark .v2-profile-main{background:rgba(0,0,0,.36)}
body.theme-dark .alert-badge{background:rgba(239,90,75,.15);color:#ff8068}
body.theme-dark .v2-kpi-icon{background:#162349}
body.theme-dark .v2-kpi-icon.yellow{background:#2e2512}

.sidebar-collapsed .dashboard-v2-layout{grid-template-columns:86px 1fr}
.sidebar-collapsed .v2-topbar{grid-template-columns:250px 1fr 320px}
.sidebar-collapsed .v2-topbar-filters{display:none}
.sidebar-collapsed .v2-nav-link{grid-template-columns:1fr;justify-items:center}
.sidebar-collapsed .v2-nav-link span:not(.icon),
.sidebar-collapsed .v2-nav-link b,
.sidebar-collapsed .v2-profile-text,
.sidebar-collapsed .v2-profile-main em,
.sidebar-collapsed .v2-profile-mini-icons,
.sidebar-collapsed .v2-brand-text{display:none}
.sidebar-collapsed .v2-brand-block-stacked{gap:0}
.sidebar-collapsed .v2-sidebar-top,
.sidebar-collapsed .v2-sidebar-profile{padding-left:10px;padding-right:10px}
.sidebar-collapsed .v2-profile-main{grid-template-columns:1fr;justify-items:center}

@media (max-width:1350px){
  .v2-topbar{grid-template-columns:320px 1fr 180px}
  .dashboard-v2-kpis{grid-template-columns:repeat(2,1fr)}
  .top-grid,.middle-grid,.bottom-grid{grid-template-columns:1fr}
}
@media (max-width:900px){
  .dashboard-v2-layout{grid-template-columns:1fr}
  .v2-sidebar{display:none}
  .v2-topbar{grid-template-columns:72px 1fr 140px}
  .v2-topbar-filters{display:none}
  .dashboard-v2-kpis{grid-template-columns:1fr}
}


/* ===== Compact dashboard refinement ===== */
@media (min-width: 901px){
  .dashboard-v2-layout{grid-template-columns:198px 1fr;min-height:calc(100vh - 74px)}
  .dashboard-v2-content{padding:12px 12px 14px}
  .dashboard-v2-page-title{margin:0 0 10px;font-size:19px}

  .v2-topbar{grid-template-columns:390px 1fr 188px;height:74px;padding:0 14px}
  .v2-topbar-left{gap:10px}
  .v2-menu-btn{width:34px;height:34px;font-size:24px}
  .v2-topbar-filters{gap:8px}
  .v2-topbar-filters select{height:38px;padding:0 10px;font-size:12px;border-radius:8px}
  .v2-topbar-title{font-size:24px}
  .v2-topbar-right{gap:12px}
  .v2-top-icon{font-size:21px}
  .v2-top-avatar{width:46px;height:46px}
  .v2-top-arrow{font-size:18px}

  .v2-sidebar{min-height:calc(100vh - 74px)}
  .v2-sidebar-top{padding:10px 16px 8px}
  .v2-logo-box{width:52px;height:52px}
  .v2-brand-text strong{font-size:16px}
  .v2-brand-text span{font-size:10px}
  .v2-sidebar-nav{padding:10px 8px 8px}
  .v2-nav-link{grid-template-columns:20px 1fr 10px;gap:10px;padding:9px 11px;font-size:13px;border-radius:8px}
  .v2-nav-link .icon{font-size:15px}
  .v2-sidebar-profile{padding:10px 8px 12px}
  .v2-profile-main{grid-template-columns:42px 1fr 14px;gap:8px;padding:8px;border-radius:10px}
  .v2-profile-avatar{width:42px;height:42px}
  .v2-profile-text strong{font-size:13px}
  .v2-profile-text span{font-size:10px}
  .v2-profile-mini-icons{gap:12px;padding:8px 8px 0;font-size:13px}

  .dashboard-v2-kpis{gap:10px;margin-bottom:10px}
  .v2-kpi-card{gap:12px;padding:12px 14px;border-radius:12px}
  .v2-kpi-icon{width:46px;height:46px;font-size:22px;border-radius:10px}
  .v2-kpi-card strong{font-size:20px}
  .v2-kpi-card span{margin-top:5px;font-size:13px}

  .dashboard-v2-grid{gap:10px;margin-bottom:10px}
  .top-grid{grid-template-columns:2.1fr 1.25fr .92fr}
  .middle-grid{grid-template-columns:1.9fr 1.15fr .88fr}
  .bottom-grid{grid-template-columns:1fr 1fr}
  .v2-panel{padding:10px 12px;border-radius:12px}
  .v2-panel-head{margin-bottom:8px}
  .v2-panel-head h2{font-size:16px}
  .v2-panel-head.with-link a,.panel-more-link{font-size:12px}

  .panel-inline-selects{gap:6px}
  .panel-inline-selects select,
  .panel-filters-row select{height:32px;padding:0 10px;font-size:12px;border-radius:8px}
  .panel-filters-row{gap:8px;margin-bottom:8px}
  .panel-filters-row select{min-width:120px}
  .panel-filters-row.right-short select{min-width:72px}
  .compact-only select{min-width:78px}

  .line-chart-legend{padding:3px 8px;font-size:11px;margin-bottom:8px}
  .legend-dot{width:14px;height:6px}
  .line-chart-grid{padding-left:42px}
  .line-chart-grid .y{font-size:11px}
  .line-chart-grid .y1{top:8px}.line-chart-grid .y2{top:46px}.line-chart-grid .y3{top:100px}.line-chart-grid .y4{top:154px}
  .line-chart-canvas{height:192px;border-radius:9px;background:repeating-linear-gradient(to bottom, transparent, transparent 34px, #e5e9f4 35px), repeating-linear-gradient(to right, transparent, transparent 56px, rgba(228,233,244,.75) 57px)}
  .chart-tooltip{right:92px;top:60px;padding:8px 11px;font-size:15px;border-radius:10px}
  .chart-tooltip span{font-size:11px}
  .line-chart-months{padding:7px 2px 0 4px;font-size:12px}

  .donut-panel-body{gap:8px}
  .status-list{gap:12px;font-size:14px}
  .dot{width:11px;height:11px;margin-right:8px}
  .donut-chart{width:150px;height:150px}
  .donut-chart::after{inset:24px}
  .donut-chart span{font-size:22px}
  .mini-chart-actions{gap:6px;margin-top:6px}
  .mini-chart-actions span{width:28px;height:18px}

  .alert-list{gap:8px;margin-bottom:8px}
  .alert-item{grid-template-columns:34px 1fr auto;gap:8px;padding-bottom:8px}
  .alert-item-icon{width:28px;height:28px;font-size:14px;border-radius:8px}
  .alert-item-text strong{font-size:13px}
  .alert-item-text small{font-size:10px}
  .alert-badge{padding:5px 8px;font-size:10px;border-radius:8px}

  .v2-table-wrap{border-radius:10px}
  .v2-table th,.v2-table td{padding:9px 10px;font-size:12px}
  .v2-table th{font-size:11px}
  .plan-pill{padding:4px 8px;font-size:11px}
  .method-list{gap:8px}
  .method-row{padding:8px 10px;font-size:12px;border-radius:9px}
  .student-panel-head h2{margin:0 0 8px;font-size:15px}
  .student-chart-row{grid-template-columns:82px 1fr;gap:8px}
  .student-pie{width:82px;height:82px}
  .student-pie::after{inset:18px;font-size:14px}
  .student-legend{gap:7px}
  .student-legend strong,.student-legend span{font-size:12px}
  .mini-simple-row{grid-template-columns:1.1fr 1fr auto;gap:10px;padding:9px 2px;font-size:12px}
  .mini-simple-row strong{font-size:12px}
}

@media (min-width: 901px) and (max-height: 860px){
  .dashboard-v2-content{padding:10px}
  .dashboard-v2-kpis{margin-bottom:8px}
  .dashboard-v2-grid{gap:8px;margin-bottom:8px}
  .v2-panel{padding:9px 10px}
  .line-chart-canvas{height:170px}
  .donut-chart{width:136px;height:136px}
  .donut-chart::after{inset:22px}
  .alert-item{padding-bottom:6px}
}


/* ===== Compact final tuning March 2026 ===== */
@media (min-width: 1101px){
  .dashboard-v2-layout{grid-template-columns:190px minmax(0,1fr)}
  .dashboard-v2-content{padding:10px 10px 12px}
  .v2-topbar{grid-template-columns:360px minmax(0,1fr) 170px;height:70px;padding:0 12px}
  .v2-topbar-title{font-size:22px}
  .v2-topbar-filters select{height:36px;font-size:11px;padding:0 9px}
  .dashboard-v2-kpis{grid-template-columns:repeat(4,minmax(0,1fr)) !important;gap:8px;margin-bottom:8px}
  .v2-kpi-card{padding:10px 12px;gap:10px;min-width:0}
  .v2-kpi-card strong{font-size:18px}
  .v2-kpi-card span{font-size:12px;line-height:1.2}
  .v2-kpi-icon{width:42px;height:42px;font-size:20px}
  .top-grid{grid-template-columns:minmax(0,2.2fr) minmax(0,1.35fr) minmax(0,.92fr)}
  .middle-grid{grid-template-columns:minmax(0,1.9fr) minmax(0,1.15fr) minmax(0,.86fr)}
  .bottom-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .v2-panel{padding:9px 11px}
  .v2-panel-head h2{font-size:15px}
  .panel-filters-row{gap:6px}
  .panel-filters-row select{min-width:0;flex:1 1 0;font-size:11px;height:30px;padding:0 9px}
  .panel-filters-row.right-short select{flex:1 1 0}
  .compact-only select{min-width:72px}
  .line-chart-canvas{height:178px}
  .line-chart-months{font-size:11px}
  .status-list{font-size:13px;gap:10px}
  .donut-chart{width:142px;height:142px}
  .donut-chart::after{inset:23px}
  .alert-item-text strong{font-size:12px}
  .alert-item-text small{font-size:9px}
  .v2-table th,.v2-table td{padding:8px 8px;font-size:11px}
  .method-row{font-size:11px;padding:7px 9px}
  .student-chart-row{grid-template-columns:76px 1fr}
  .student-pie{width:76px;height:76px}
  .student-pie::after{inset:17px}
  .mini-simple-row{padding:8px 2px;font-size:11px}
}

body.theme-dark.dashboard-v2-body{
  background: radial-gradient(circle at top right, rgba(54,73,145,.20), transparent 24%),
              radial-gradient(circle at top left, rgba(33,57,126,.22), transparent 20%),
              linear-gradient(180deg, #07132f 0%, #08142f 32%, #091733 100%);
}
body.theme-dark .dashboard-v2-main,
body.theme-dark .dashboard-v2-content{
  background: radial-gradient(circle at 25% 15%, rgba(84,97,173,.10), transparent 25%),
              linear-gradient(180deg,#08142f 0%, #091632 100%);
}
body.theme-dark .v2-panel,
body.theme-dark .v2-kpi-card{
  background: linear-gradient(180deg, rgba(17,26,59,.96) 0%, rgba(12,20,47,.98) 100%);
  border-color:#1b2b57;
  box-shadow: 0 14px 30px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.02);
}
body.theme-dark .v2-topbar,
body.theme-dark .v2-sidebar{
  background: linear-gradient(180deg,#06205a 0%, #002157 100%);
}
body.theme-dark .v2-topbar{
  box-shadow:0 10px 24px rgba(0,0,0,.28);
}
body.theme-dark .v2-nav-link.active{
  background:rgba(0,0,0,.36);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.08), 0 4px 12px rgba(0,0,0,.14);
}
body.theme-dark .v2-nav-link:hover{
  background:rgba(255,255,255,.05);
}
body.theme-dark .line-chart-canvas{
  background:repeating-linear-gradient(to bottom, transparent, transparent 34px, rgba(145,162,208,.16) 35px), repeating-linear-gradient(to right, transparent, transparent 56px, rgba(145,162,208,.10) 57px);
}
body.theme-dark .line-chart-legend{background:#141f45;color:#dce4ff}
body.theme-dark .panel-filters-row select,
body.theme-dark .panel-inline-selects select,
body.theme-dark .v2-topbar-filters select{background:#18264f;border-color:#2b3c70;color:#eaf0ff}
body.theme-dark .v2-table th{background:#101a3a;color:#ced7f6}
body.theme-dark .method-row{background:#10193a}
body.theme-dark .mini-chart-actions span{background:#17254a}
body.theme-dark .chart-tooltip{background:#1a2347}
body.theme-dark .alert-item-text small{color:#95a4d0}
body.theme-dark .plan-pill.argent{background:#7c5b23;color:#ffe1a1}
body.theme-dark .plan-pill.gold{background:#8c6a1b;color:#ffeaa9}


/* ===== Uniformisation version suivante ===== */
.module-v2-body .dashboard-v2-main,
.module-v2-body .dashboard-v2-content{background:#eef1f7}
.module-v2-body .page-shell{min-height:100vh;background:#eef1f7;padding:0}
.module-v2-body .model-layout.app-layout{display:grid;grid-template-columns:198px 1fr;padding:0;gap:0;min-height:calc(100vh - 74px)}
.module-v2-body .workspace{background:#eef1f7;padding:12px}
.module-v2-body .page-panel{min-height:auto;background:transparent;box-shadow:none;border-radius:0;color:var(--v2-text)}
.module-v2-body .page-panel-body{padding:0}
.module-v2-body .page-title{font-size:22px;color:var(--v2-red);margin-bottom:6px}
.module-v2-body .page-text{margin:0 0 12px;color:#52658f;font-size:14px}
.module-v2-body .stats-inline{grid-template-columns:repeat(4,1fr);gap:10px;margin-top:0;margin-bottom:10px}
.module-v2-body .stats-inline .stat,
.module-v2-body .inner-card,
.module-v2-body .kpi-card,
.module-v2-body .mini-item,
.module-v2-body .placeholder-wrap{background:#fff;color:#243763;border:1px solid #d9dfef;box-shadow:var(--v2-shadow)}
.module-v2-body .stats-inline .stat{border-radius:14px;padding:12px 14px;transition:transform var(--trans),box-shadow var(--trans),border-color var(--trans)}
.module-v2-body .stats-inline .stat span{color:#65789b;font-size:11px}
.module-v2-body .stats-inline .stat strong{font-size:22px;color:var(--v2-red)}
.module-v2-body .inner-card{margin-top:0;border-radius:16px;padding:14px;transition:transform var(--trans),box-shadow var(--trans),border-color var(--trans)}
.module-v2-body .block-title,.module-v2-body .placeholder-title{font-size:18px;color:var(--v2-red)}
.module-v2-body .placeholder-text,.module-v2-body .note-line{font-size:13px;color:#67789b}
.module-v2-body .filters-row{grid-template-columns:1.8fr .9fr auto auto;gap:10px;margin-bottom:10px}
.module-v2-body .input-clean,.module-v2-body .select-clean{height:42px;border-radius:10px;font-size:13px;border:1px solid #cfd7ea}
.module-v2-body .table-wrap{border-radius:14px;border-color:#dde3f3}
.module-v2-body .table-clean th{background:#eef1f8;color:#34446c;font-size:12px}
.module-v2-body .table-clean td{font-size:13px;color:#34446c}
.module-v2-body .action-link{border-radius:10px;padding:8px 10px;font-size:12px}
.module-v2-body .kpi-row{gap:10px}
.module-v2-body .kpi-card{border-radius:14px;padding:12px}
.module-v2-body .kpi-card strong{font-size:22px;color:var(--v2-red)}

.v2-nav-link,
.v2-kpi-card,
.v2-panel,
.module-v2-body .inner-card,
.module-v2-body .stats-inline .stat,
.module-v2-body .kpi-card,
.module-v2-body .mini-item,
.module-v2-body .placeholder-wrap{transition:transform var(--trans),box-shadow var(--trans),filter var(--trans),border-color var(--trans)}
.v2-nav-link:hover{transform:scale(1.09) translateX(4px);background:rgba(255,255,255,.09);box-shadow:0 14px 26px rgba(0,0,0,.24)}
.v2-kpi-card:hover,
.v2-panel:hover,
.module-v2-body .inner-card:hover,
.module-v2-body .stats-inline .stat:hover,
.module-v2-body .kpi-card:hover,
.module-v2-body .mini-item:hover,
.module-v2-body .placeholder-wrap:hover{transform:translateY(-4px) scale(1.025);box-shadow:0 18px 34px rgba(10,29,81,.18);border-color:#c4d2f4}
.v2-profile-main-link{color:#fff;transition:transform var(--trans),background var(--trans),box-shadow var(--trans)}
.v2-profile-main-link:hover{transform:scale(1.06);background:rgba(0,0,0,.34);box-shadow:0 12px 24px rgba(0,0,0,.25)}
.v2-top-profile-btn:hover{transform:scale(1.08)}
.v2-profile-dropdown{min-width:220px}
.profile-dropdown-link{font-size:13px}

.login-body-exact{display:flex;align-items:center;justify-content:center;padding:18px;background:linear-gradient(135deg,#07153d 0%, #002157 58%, #0d367e 100%)}
.login-exact-card{width:min(100%, 560px);min-height:auto;padding:28px 24px 22px;border-radius:24px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.login-exact-logo{width:120px;margin-bottom:10px}
.login-exact-title{font-size:34px;margin:0 0 10px;text-align:center}
.login-exact-lines{gap:6px;margin-bottom:16px;text-align:center}
.login-exact-lines p{font-size:18px}
.login-exact-form{max-width:100%;gap:12px}
.login-exact-field{height:54px;font-size:16px;padding:0 16px;border-radius:16px}
.login-exact-submit{height:52px;font-size:18px;border-radius:16px;width:100%}
.login-exact-register{margin-top:12px;font-size:16px}

.module-v2-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.module-v2-text{margin:0;color:#5e7298;font-size:13px}
.module-v2-grid{display:grid;gap:12px}
.module-v2-grid.two-cols{grid-template-columns:1.15fr .85fr}
.module-card{padding:14px;border-radius:16px}
.module-profile-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.module-profile-avatar{width:72px;height:72px;border-radius:20px;overflow:hidden;border:3px solid #f0c12a;box-shadow:0 0 0 3px rgba(0,33,87,.08)}
.module-profile-avatar img{width:100%;height:100%;object-fit:cover}
.module-profile-head h2{margin:0;color:var(--v2-red);font-size:22px}
.module-profile-head p{margin:4px 0 0;color:#65789b;font-weight:700}
.module-info-list{display:grid;gap:10px}
.module-info-list.compact{gap:8px}
.module-info-list div{display:flex;justify-content:space-between;gap:12px;padding:12px;border-radius:12px;background:#f5f7fc;border:1px solid #dfe6f3}
.module-info-list span{font-size:12px;color:#61749a;font-weight:700}
.module-info-list strong{font-size:13px;color:#203159}
.module-shortcuts{display:flex;flex-wrap:wrap;gap:10px}
.module-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.module-field{display:grid;gap:6px}
.module-field label{font-size:12px;font-weight:800;color:#5c6d90}

.cursor-dot,.cursor-ring{position:fixed;left:0;top:0;pointer-events:none;z-index:9999;opacity:0;transform:translate(-50%,-50%);transition:opacity .2s ease,transform .12s ease}
.cursor-dot{width:8px;height:8px;border-radius:50%;background:#ef2f2f}
.cursor-ring{width:28px;height:28px;border-radius:50%;border:2px solid rgba(240,195,60,.9);box-shadow:0 0 20px rgba(240,195,60,.18)}
body.cursor-enabled .cursor-dot,body.cursor-enabled .cursor-ring{opacity:1}
body.cursor-hover .cursor-ring{transform:translate(-50%,-50%) scale(1.45);border-color:#ef2f2f}
body.cursor-hover .cursor-dot{transform:translate(-50%,-50%) scale(1.25)}

body.theme-dark.module-v2-body .page-shell,
body.theme-dark.module-v2-body .workspace,
body.theme-dark.module-v2-body .dashboard-v2-main,
body.theme-dark.module-v2-body .dashboard-v2-content{background:#06122d}
body.theme-dark.module-v2-body .inner-card,
body.theme-dark.module-v2-body .stats-inline .stat,
body.theme-dark.module-v2-body .kpi-card,
body.theme-dark.module-v2-body .mini-item,
body.theme-dark.module-v2-body .placeholder-wrap,
body.theme-dark.module-v2-body .table-clean,
body.theme-dark.module-v2-body .module-info-list div{background:#0b1534;color:#d7ddf2;border-color:#1a2a57;box-shadow:0 12px 28px rgba(0,0,0,.30)}
body.theme-dark.module-v2-body .page-title,
body.theme-dark.module-v2-body .block-title,
body.theme-dark.module-v2-body .placeholder-title,
body.theme-dark.module-v2-body .kpi-card strong{color:#ff5a5f}
body.theme-dark.module-v2-body .page-text,
body.theme-dark.module-v2-body .note-line,
body.theme-dark.module-v2-body .placeholder-text,
body.theme-dark.module-v2-body .stats-inline .stat span,
body.theme-dark.module-v2-body .module-v2-text,
body.theme-dark.module-v2-body .module-info-list span,
body.theme-dark.module-v2-body .module-profile-head p{color:#b5c3e7}
body.theme-dark.module-v2-body .input-clean,
body.theme-dark.module-v2-body .select-clean{background:#162349;border-color:#2b3b6a;color:#fff}
body.theme-dark.module-v2-body .table-clean th{background:#101b3d;color:#c8d3f3}
body.theme-dark.module-v2-body .table-clean td{color:#d7ddf2;border-bottom-color:#1b2a55}
body.theme-dark.module-v2-body .action-link{background:#162349;color:#d7ddf2}
body.theme-dark.module-v2-body .btn-light{background:#162349;border-color:#2b3b6a;color:#fff}
body.theme-dark.module-v2-body .module-profile-avatar{box-shadow:0 0 0 3px rgba(255,255,255,.06)}

@media (max-width: 1100px){
  .module-v2-body .model-layout.app-layout{grid-template-columns:1fr}
  .module-v2-grid.two-cols,.module-form-grid,.module-v2-body .stats-inline,.module-v2-body .filters-row{grid-template-columns:1fr}
}

.form-grid-3{grid-template-columns:repeat(3,1fr)!important}
.filters-row-5{grid-template-columns:1.8fr 1fr 1fr auto auto!important}
.module-v2-grid.three-cols{grid-template-columns:repeat(3,1fr);gap:12px}
.soft-badge{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:999px;background:#f4f6fb;border:1px solid #d8e0f1;color:#27406c;font-size:12px;font-weight:800}
.type-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.type-card{display:flex;flex-direction:column;gap:5px;padding:14px;border-radius:16px;border:1px solid #dbe3f2;background:#f8faff;color:#243763;text-decoration:none;transition:transform var(--trans),box-shadow var(--trans),border-color var(--trans)}
.type-card strong{font-size:14px;color:var(--v2-red)}
.type-card span{font-size:11px;color:#6d80a4}
.type-card:hover,.type-card.active{transform:translateY(-4px) scale(1.02);box-shadow:0 18px 34px rgba(10,29,81,.14);border-color:#f0c12a}

body.theme-dark.module-v2-body .soft-badge,
body.theme-dark.module-v2-body .type-card{background:#0f1b40;border-color:#23376f;color:#d7ddf2}
body.theme-dark.module-v2-body .type-card span{color:#afbedf}

@media (max-width: 1100px){
  .form-grid-3,.filters-row-5,.module-v2-grid.three-cols,.type-card-grid{grid-template-columns:1fr!important}
}


/* ===== Étape suivante : login compact pro + modules académiques ===== */
.login-pro-body{
  min-height:100vh;
  background:radial-gradient(circle at top right, rgba(240,195,60,.16), transparent 20%), linear-gradient(135deg,#07153d 0%, #0b2460 45%, #11358e 100%);
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.login-pro-shell{
  width:min(1180px,100%);min-height:min(760px,calc(100vh - 48px));display:grid;grid-template-columns:1.08fr .92fr;
  background:rgba(7,21,61,.36);border:1px solid rgba(255,255,255,.12);border-radius:34px;overflow:hidden;box-shadow:0 24px 70px rgba(3,10,38,.36);
  backdrop-filter:blur(8px);
}
.login-pro-brand{padding:42px 42px 38px;color:#fff;display:grid;align-content:space-between;gap:24px;background:linear-gradient(180deg,rgba(2,23,84,.56),rgba(5,15,56,.14));}
.login-pro-brand-top{display:grid;gap:20px;align-content:start}
.login-pro-logo-wrap{width:120px;height:120px;border-radius:28px;background:rgba(255,255,255,.08);display:flex;align-items:center;justify-content:center;padding:14px;border:1px solid rgba(255,255,255,.12)}
.login-pro-logo-wrap img{max-width:100%;max-height:100%;object-fit:contain}
.login-pro-badge{display:inline-flex;align-items:center;padding:8px 14px;border-radius:999px;background:rgba(240,195,60,.16);color:#fff0a5;font-size:12px;font-weight:900;letter-spacing:.4px;text-transform:uppercase}
.login-pro-brand-copy h1{margin:14px 0 10px;font-size:58px;line-height:.98;font-weight:900;letter-spacing:.8px}
.login-pro-brand-copy p{margin:0;max-width:560px;font-size:19px;line-height:1.55;color:rgba(255,255,255,.86)}
.login-pro-feature-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.login-pro-feature-card{padding:18px;border-radius:24px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);display:grid;gap:8px}
.login-pro-feature-card.wide{grid-column:1 / -1}
.login-pro-feature-card strong{font-size:16px;color:#fff}
.login-pro-feature-card span{font-size:13px;line-height:1.5;color:rgba(255,255,255,.72)}
.login-pro-panel{background:rgba(255,255,255,.96);padding:24px;display:grid;align-content:space-between;gap:18px}
.login-pro-toolbar{display:flex;justify-content:flex-end}
.login-language-menu.compact{position:relative}
.login-language-trigger{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:#edf2ff;border:1px solid #d7e1f2;color:#24418d;font-weight:900;cursor:pointer;transition:all var(--trans)}
.login-language-trigger:hover,.login-language-menu.open .login-language-trigger{transform:scale(1.03);box-shadow:0 8px 18px rgba(35,71,159,.12)}
.login-language-trigger em{font-style:normal;font-size:13px;opacity:.74}
.login-language-dropdown{position:absolute;right:0;top:calc(100% + 10px);min-width:180px;background:#fff;border:1px solid #d7e1f2;border-radius:16px;box-shadow:0 18px 34px rgba(10,29,81,.12);padding:8px;display:none;z-index:30}
.login-language-menu.open .login-language-dropdown{display:grid;gap:4px}
.login-language-dropdown a{padding:11px 12px;border-radius:10px;font-weight:800;color:#24418d;transition:all var(--trans)}
.login-language-dropdown a:hover,.login-language-dropdown a.active{background:#edf2ff;color:#23479f}
.login-pro-form-wrap{width:min(430px,100%);margin:auto;display:grid;gap:16px}
.login-pro-form-head{display:grid;gap:10px}
.login-pro-form-tag{display:inline-flex;width:max-content;padding:7px 12px;border-radius:999px;background:#edf2ff;color:#25449d;font-size:12px;font-weight:900}
.login-pro-form-head h2{margin:0;font-size:32px;line-height:1;color:var(--blue-2)}
.login-pro-form-head p{margin:0;color:#5e7194;font-size:15px;line-height:1.6}
.login-pro-alert{border-radius:16px}
.login-pro-form{display:grid;gap:12px}
.login-pro-form label{font-size:14px;font-weight:800;color:var(--blue-2)}
.login-pro-input{height:52px;border-radius:16px;font-size:15px}
.login-pro-submit{height:54px;border-radius:16px;font-size:17px;margin-top:4px}
.login-pro-footer-note{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#6a7ea4;font-size:14px}
.login-pro-footer-note a{color:#2448a3;font-weight:900}
.compact-filters{grid-template-columns:1.4fr .8fr .8fr auto}
.module-v2-grid{display:grid;gap:18px;margin-top:18px}
.module-v2-grid.two-cols{grid-template-columns:1.15fr .85fr}
.module-card{padding:18px}
.module-v2-text{margin:0;color:var(--ink-soft);line-height:1.6}
.module-info-list{display:grid;gap:12px}
.module-info-list.compact div{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border-radius:16px;background:var(--card-soft);border:1px solid var(--line)}
.module-info-list span{color:var(--ink-soft);font-size:13px;font-weight:800}
.module-info-list strong{color:var(--blue-2);font-size:14px}
@media (max-width:1100px){
  .login-pro-shell{grid-template-columns:1fr}
  .login-pro-brand-copy h1{font-size:46px}
  .module-v2-grid.two-cols{grid-template-columns:1fr}
}
@media (max-width:760px){
  .login-pro-body{padding:14px}
  .login-pro-shell{min-height:auto;border-radius:26px}
  .login-pro-brand,.login-pro-panel{padding:22px}
  .login-pro-feature-grid{grid-template-columns:1fr}
  .login-pro-brand-copy h1{font-size:34px}
  .login-pro-brand-copy p{font-size:16px}
  .login-pro-form-head h2{font-size:28px}
  .compact-filters{grid-template-columns:1fr}
}


/* ===== Étape suivante : admissions + fiche apprenant + login plus compact ===== */
.login-compact-body{padding:18px}
.login-compact-shell{width:min(1080px,100%);min-height:min(680px,calc(100vh - 36px));grid-template-columns:1fr .9fr;border-radius:30px}
.login-compact-brand{padding:34px 34px 30px}
.login-compact-panel{padding:22px 22px 24px}
.login-compact-brand .login-pro-logo-wrap{width:92px;height:92px;border-radius:22px}
.login-compact-brand .login-pro-brand-copy h1{font-size:46px;margin:10px 0 8px}
.login-compact-brand .login-pro-brand-copy p{font-size:16px;max-width:480px}
.login-compact-brand .login-pro-feature-grid{gap:10px}
.login-compact-brand .login-pro-feature-card{padding:14px 15px;border-radius:18px}
.login-compact-brand .login-pro-feature-card strong{font-size:14px}
.login-compact-brand .login-pro-feature-card span{font-size:12px}
.login-compact-panel .login-pro-form-wrap{width:min(400px,100%);gap:14px}
.login-compact-panel .login-pro-form-head h2{font-size:30px}
.login-compact-panel .login-pro-form-head p{font-size:14px}
.login-compact-panel .login-pro-input{height:50px;border-radius:16px}
.login-compact-panel .login-pro-submit{height:52px;border-radius:16px;font-size:17px}
.admissions-grid{align-items:stretch}
.compact-gap{gap:10px}
.profile-grid-campus{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;margin-top:18px}
.profile-card-campus{margin-top:0}
.profile-head-campus{display:flex;align-items:center;gap:16px;justify-content:space-between;flex-wrap:wrap}
.profile-head-campus h3{margin:0;color:var(--blue-2);font-size:24px}
.profile-head-campus p{margin:4px 0 0;color:var(--ink-soft);font-size:14px}
.profile-avatar-campus{width:72px;height:72px;border-radius:22px;background:linear-gradient(180deg,#2a5dd1,#153b95);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:24px;box-shadow:var(--shadow)}
.campus-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.campus-info-grid div{display:grid;gap:6px;padding:14px;border-radius:16px;background:var(--card-soft);border:1px solid var(--line)}
@media (max-width:1100px){
  .login-compact-shell{grid-template-columns:1fr}
  .profile-grid-campus{grid-template-columns:1fr}
}
@media (max-width:760px){
  .login-compact-body{padding:10px}
  .login-compact-shell{min-height:auto;border-radius:22px}
  .login-compact-brand,.login-compact-panel{padding:18px}
  .login-compact-brand .login-pro-brand-copy h1{font-size:32px}
  .campus-info-grid{grid-template-columns:1fr}
}


/* ===== Mobile compact harmonization March 2026 ===== */
@media (max-width: 900px){
  :root{
    --topbar-h: 62px;
  }

  html,body{overflow-x:hidden}
  body.mobile-sidebar-open{overflow:hidden}

  .page-shell,
  .workspace,
  .page-panel,
  .page-panel-body,
  .inner-card,
  .v2-panel,
  .module-card{max-width:100%;overflow-x:hidden}
  .page-shell{padding:0 0 8px}
  .dashboard-v2-layout,
  .model-layout.app-layout{display:block;padding:8px 8px 0}
  .workspace,
  .dashboard-v2-main,
  .dashboard-v2-content{min-width:0}

  .campus-topbar.v2-topbar{
    position:sticky;
    top:0;
    z-index:1000;
    grid-template-columns:40px minmax(0,1fr) auto;
    gap:6px;
    height:62px;
    padding:6px 8px;
    border-bottom-width:2px;
  }
  .v2-topbar-left{gap:6px;min-width:0}
  .v2-menu-btn{
    width:38px;
    height:38px;
    border-radius:11px;
    font-size:22px;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.18);
    color:#fff;
  }
  .v2-topbar-title{
    min-width:0;
    text-align:left;
    font-size:15px;
    line-height:1.05;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    max-width:100%;
  }
  .v2-topbar-right{gap:6px;min-width:0}
  .v2-topbar-filters,
  .v2-top-icon.notify,
  .cursor-btn{display:none}
  .v2-top-icon,
  .v2-lang-trigger,
  .v2-top-profile-btn{
    width:auto;
    min-width:36px;
    height:36px;
    border-radius:11px;
    padding:0 8px;
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.16);
  }
  .v2-lang-icon{font-size:14px}
  .v2-lang-code{font-size:11px;font-weight:900}
  .v2-lang-arrow{font-size:10px}
  .v2-top-profile-btn{gap:0;padding:0 4px}
  .v2-top-arrow{display:none}
  .v2-top-avatar{width:36px;height:36px;border-width:2px}
  .v2-lang-dropdown,
  .v2-profile-dropdown{
    position:fixed;
    right:8px;
    top:66px;
    width:min(240px, calc(100vw - 16px));
    max-width:calc(100vw - 16px);
  }

  .sidebar.v2-sidebar{
    display:flex;
    position:fixed;
    top:0;
    left:0;
    bottom:0;
    z-index:1100;
    width:min(286px, 82vw);
    min-height:100vh;
    transform:translateX(-105%);
    transition:transform var(--trans), box-shadow var(--trans);
    box-shadow:0 18px 40px rgba(0,0,0,.28);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  body.mobile-sidebar-open .sidebar.v2-sidebar{transform:translateX(0)}
  body.mobile-sidebar-open::before{
    content:"";
    position:fixed;
    inset:0;
    background:rgba(4,14,42,.44);
    z-index:1090;
    backdrop-filter:blur(1px);
  }
  .v2-sidebar-top{padding:14px 12px 10px}
  .v2-logo-box{width:50px;height:50px}
  .v2-brand-text strong{font-size:15px;white-space:normal}
  .v2-brand-text span{font-size:9px}
  .v2-sidebar-nav{padding:6px 7px 10px}
  .v2-nav-link{
    grid-template-columns:18px 1fr 8px;
    gap:9px;
    padding:9px 10px;
    font-size:11px;
    line-height:1.2;
    border-radius:10px;
  }
  .v2-nav-link .icon{font-size:14px}
  .v2-sidebar-profile{padding:8px 7px 12px}
  .v2-profile-main{grid-template-columns:36px 1fr 12px;padding:7px;border-radius:11px}
  .v2-profile-avatar{width:36px;height:36px}
  .v2-profile-text strong{font-size:11px}
  .v2-profile-text span{font-size:9px}
  .v2-profile-mini-icons{display:none}

  .page-panel{
    border-radius:16px;
    min-height:auto;
  }
  .page-panel-body{padding:12px}
  .page-title{font-size:20px;line-height:1.12}
  .page-text{font-size:13px;line-height:1.45}
  .block-card,
  .inner-card,
  .v2-panel,
  .module-card,
  .placeholder-wrap{padding:12px;border-radius:14px}
  .v2-panel-head,
  .module-v2-hero{gap:6px}
  .v2-panel-head h2,
  .block-title,
  .placeholder-title{font-size:15px}
  .module-v2-grid.two-cols,
  .module-v2-grid.three-cols,
  .profile-grid-campus,
  .campus-info-grid,
  .top-grid,
  .middle-grid,
  .bottom-grid,
  .dashboard-v2-grid,
  .v2-side-stack,
  .right-rail,
  .model-grid,
  .filters-row,
  .module-form-grid{grid-template-columns:1fr !important}
  .stats-inline,
  .dashboard-v2-kpis,
  .kpi-row,
  .type-card-grid,
  .form-grid-3,
  .filters-row-5,
  .compact-filters{grid-template-columns:repeat(2,minmax(0,1fr)) !important}

  .stats-inline{gap:8px;margin-top:12px}
  .stats-inline .stat,
  .kpi-card,
  .v2-kpi-card{padding:10px 12px;border-radius:13px;min-width:0}
  .stats-inline .stat strong,
  .kpi-card strong,
  .v2-kpi-card strong{font-size:18px}
  .stats-inline .stat span,
  .kpi-card span,
  .v2-kpi-card span{font-size:11px}
  .v2-kpi-card{gap:8px;align-items:center}
  .v2-kpi-icon{width:38px;height:38px;font-size:18px;border-radius:10px}

  .action-row-inline,
  .module-shortcuts,
  .mini-chart-actions,
  .panel-filters-row{display:flex;flex-wrap:wrap;gap:8px}
  .action-row-inline > *,
  .module-shortcuts > *,
  .mini-chart-actions > *{flex:1 1 calc(50% - 4px);min-width:0}
  .btn-zoom,
  .btn-primary,
  .btn-light,
  .action-link{width:100%;justify-content:center;padding:10px 12px;font-size:12px;border-radius:11px}

  .input-clean,
  .select-clean,
  textarea,
  .login-pro-input,
  .login-exact-field{
    height:42px;
    min-height:42px;
    border-radius:11px;
    padding:0 11px;
    font-size:13px;
  }
  textarea.input-clean,
  textarea{height:auto;min-height:96px;padding:11px}
  .module-field label,
  .login-pro-form label,
  .login-form label{font-size:11px}

  .table-wrap,
  .v2-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:13px;padding-bottom:2px}
  .table-clean,
  .v2-table{min-width:560px}
  .table-clean th,.table-clean td,
  .v2-table th,.v2-table td{padding:8px 8px;font-size:11px;white-space:nowrap}
  .table-clean th,
  .v2-table th{font-size:10px}

  .module-info-list div,
  .module-info-list.compact div,
  .mini-item,
  .method-row,
  .mini-simple-row{
    padding:9px 10px;
    border-radius:11px;
  }
  .module-info-list div,
  .module-info-list.compact div,
  .mini-simple-row{grid-template-columns:1fr;display:grid;gap:4px}

  .student-chart-row,
  .donut-panel-body{grid-template-columns:1fr;gap:10px}
  .line-chart-grid{padding-left:30px}
  .line-chart-grid .y{font-size:9px}
  .line-chart-canvas{height:170px}
  .line-chart-months{font-size:10px;padding-top:8px}
  .chart-tooltip{right:12px;top:10px;font-size:12px;padding:7px 9px}
  .donut-chart{width:124px;height:124px;margin-inline:auto}
  .donut-chart::after{inset:20px}
  .donut-chart span{font-size:18px}
  .student-pie{width:82px;height:82px}

  .login-shell,
  .login-pro-shell,
  .login-compact-shell{grid-template-columns:1fr !important;min-height:auto}
  .login-side,
  .login-form-card,
  .login-pro-brand,
  .login-pro-panel,
  .login-compact-brand,
  .login-compact-panel,
  .login-exact-card{padding:16px}
  .login-brand{grid-template-columns:1fr;gap:10px}
  .login-brand-logo{width:80px;height:80px;padding:10px}
  .login-brand-copy h1,
  .login-pro-brand-copy h1{font-size:26px;line-height:1.02}
  .login-brand-copy p,
  .login-pro-brand-copy p,
  .login-form-card .lead{font-size:13px;line-height:1.45}
  .login-pro-feature-grid{grid-template-columns:1fr}
  .login-pro-form-wrap{width:100%}
  .login-language-switch{top:10px;right:10px}
  .login-language-switch a{min-width:56px;height:32px;padding:0 8px;font-size:11px}
}

@media (max-width: 560px){
  .campus-topbar.v2-topbar{grid-template-columns:38px minmax(0,1fr) auto;padding:6px 7px;height:58px}
  .v2-topbar-title{font-size:14px}
  .v2-topbar-right{gap:5px}
  .v2-top-icon,
  .v2-lang-trigger,
  .v2-top-profile-btn{min-width:34px;height:34px;padding:0 7px}
  .v2-top-avatar{width:34px;height:34px}
  .page-panel-body,
  .inner-card,
  .v2-panel,
  .module-card,
  .block-card{padding:10px}
  .page-title{font-size:18px}
  .stats-inline,
  .dashboard-v2-kpis,
  .kpi-row,
  .type-card-grid,
  .form-grid-3,
  .filters-row-5,
  .compact-filters{grid-template-columns:1fr !important}
  .action-row-inline > *,
  .module-shortcuts > *,
  .mini-chart-actions > *{flex-basis:100%}
  .stats-inline .stat strong,
  .kpi-card strong,
  .v2-kpi-card strong{font-size:17px}
  .btn-zoom,
  .btn-primary,
  .btn-light,
  .action-link{padding:10px 11px;font-size:11px}
  .table-clean,
  .v2-table{min-width:520px}
}


.public-body{background:linear-gradient(180deg,#062766 0%,#041b4d 100%);min-height:100vh;color:#fff;margin:0;font-family:Arial,sans-serif}
.public-shell{max-width:1180px;margin:0 auto;padding:26px 18px 40px}.public-shell-narrow{max-width:980px}
.public-hero,.public-filter-card,.public-est-card,.public-detail-hero,.public-offer-card,.public-form-wrap,.public-empty-card{background:rgba(7,30,78,.82);border:1px solid rgba(255,255,255,.08);border-radius:22px;box-shadow:0 16px 42px rgba(0,0,0,.18)}
.public-hero{padding:22px 22px 26px;margin-bottom:18px}.public-hero-top,.public-page-top,.section-heading-row,.public-submit-bar,.public-card-actions,.public-est-head,.public-hero-grid{display:flex;align-items:center;justify-content:space-between;gap:14px}.public-hero-grid{align-items:stretch}.public-hero-grid>div:first-child{flex:1}
.public-hero-card{min-width:240px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:18px;display:flex;flex-direction:column;justify-content:center}.public-hero-card strong{font-size:34px;color:#ffd85a}.public-hero-card.small strong{font-size:24px}
.public-kicker{display:inline-block;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.08);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#c9d8ff}.public-hero h1,.public-detail-hero h1{font-size:34px;line-height:1.05;margin:14px 0 10px}.public-hero p,.public-detail-hero p{color:#d7e3ff;max-width:760px;line-height:1.6}
.public-outline-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:#fff;text-decoration:none;background:rgba(255,255,255,.05)}.public-lang-links{display:flex;gap:8px}.public-lang-links a{display:inline-flex;padding:10px 14px;border-radius:999px;background:rgba(255,255,255,.05);color:#fff;text-decoration:none}
.public-filter-card{padding:16px;margin-bottom:18px}.public-filter-grid{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px}.public-filter-grid input,.public-filter-grid select,.public-form-grid input,.public-form-grid select,.public-form-grid textarea{width:100%;background:#fff;border:1px solid #d9def0;border-radius:14px;padding:12px 14px;color:#102656;box-sizing:border-box}
.public-card-grid,.public-offer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.public-est-card,.public-offer-card{padding:18px}.public-est-head{justify-content:flex-start}.public-est-head.large{margin-bottom:10px}.public-est-logo{width:58px;height:58px;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.public-est-logo.large{width:84px;height:84px}.public-est-logo img{width:80%;height:80%;object-fit:contain}.public-est-head h3{margin:0 0 5px;font-size:20px}.public-est-head p{margin:0;color:#cfd9ff}.public-meta-list{list-style:none;padding:0;margin:18px 0;display:grid;gap:10px}.public-meta-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.04)}.public-meta-list li span{color:#cfd9ff}.public-meta-list.compact li{padding:8px 10px}.public-card-actions{justify-content:flex-start;flex-wrap:wrap}.public-empty-card{padding:24px;text-align:center;color:#d7e3ff}
.public-detail-hero{padding:20px;margin-bottom:18px}.public-offer-section{display:grid;gap:16px}.public-offer-card p{color:#d7e3ff;line-height:1.55;min-height:40px}.public-form-wrap{padding:20px}.public-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-group{display:grid;gap:8px}.form-group.full,.public-submit-bar.full{grid-column:1/-1}.form-group label{font-weight:600;color:#dce5ff}.public-submit-bar{margin-top:6px}.public-submit-bar span{color:#d7e3ff;font-size:13px}.two-col-admin-grid{display:grid;grid-template-columns:1.2fr .9fr;gap:16px}
.badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700}.badge-success{background:#123b22;color:#86ffb0}.badge-danger{background:#471b24;color:#ff9bae}.badge-warning{background:#4e3a11;color:#ffd86d}.badge-info{background:#152c5f;color:#9fbeff}
@media (max-width: 980px){.public-card-grid,.public-offer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-filter-grid{grid-template-columns:1fr 1fr}.two-col-admin-grid{grid-template-columns:1fr}.public-hero-grid{flex-direction:column}}
@media (max-width: 640px){.public-shell{padding:14px 12px 26px}.public-hero,.public-filter-card,.public-est-card,.public-detail-hero,.public-offer-card,.public-form-wrap{border-radius:18px}.public-hero h1,.public-detail-hero h1{font-size:26px}.public-card-grid,.public-offer-grid,.public-form-grid{grid-template-columns:1fr}.public-filter-grid{grid-template-columns:1fr}.public-hero-top,.public-page-top,.section-heading-row,.public-submit-bar{flex-direction:column;align-items:stretch}.public-hero-card{min-width:0}.public-outline-link,.public-lang-links a{justify-content:center}}

.public-top-actions{display:flex;gap:10px;flex-wrap:wrap}
.public-subsection{padding-top:6px}
.subsection-title{display:block;font-weight:700;color:#ff6868;margin-bottom:8px}
.public-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.payment-note{font-size:12px;opacity:.82;margin-top:6px}
.public-status-grid .notification-stack{display:grid;gap:10px}
.notification-item{padding:12px 14px;border:1px solid rgba(77,116,220,.18);border-radius:14px;background:rgba(255,255,255,.04)}
.notification-item p{margin:6px 0 0;opacity:.85}
@media (max-width:768px){.public-mini-grid{grid-template-columns:1fr}.public-top-actions{width:100%;justify-content:flex-start}}


.mini-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0 18px}.mini-stats-grid.large{grid-template-columns:repeat(6,minmax(0,1fr))}.mini-stat-card{background:#fff;border:1px solid rgba(15,40,100,.08);border-radius:16px;padding:14px 16px;box-shadow:0 12px 28px rgba(15,40,100,.05)}.mini-stat-card span{display:block;font-size:12px;opacity:.75}.mini-stat-card strong{display:block;font-size:24px;margin-top:4px;color:#103a8c}.form-help{display:block;font-size:12px;opacity:.75;margin-top:6px}.two-col-admin-grid .inner-card form .btn-light{border:0}
@media (max-width: 900px){.mini-stats-grid,.mini-stats-grid.large{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* ===== Avril 2026 : boutons login/public plus compacts + dashboard candidat ===== */
.login-pro-submit{
  height:48px;
  min-height:48px;
  border-radius:14px;
  font-size:15px;
  font-weight:800;
  padding:0 18px;
  box-shadow:0 12px 26px rgba(17,70,180,.22);
}
.login-pro-submit:hover{transform:scale(1.07);box-shadow:0 16px 30px rgba(17,70,180,.28)}
.login-pro-input{height:48px}
.public-body .btn-primary,
.public-body .btn-light,
.public-body .public-outline-link,
.public-body .public-lang-links a{
  min-height:42px;
  padding:10px 16px;
  border-radius:14px;
  font-size:13px;
  font-weight:800;
  text-decoration:none;
  transition:transform .22s ease, box-shadow .22s ease, background .22s ease;
}
.public-body .btn-primary:hover,
.public-body .btn-light:hover,
.public-body .public-outline-link:hover,
.public-body .public-lang-links a:hover{transform:scale(1.05)}
.public-body .btn-primary{box-shadow:0 12px 24px rgba(17,70,180,.24)}
.public-body .btn-light{background:rgba(255,255,255,.96)}
.public-card-actions .btn-primary,
.public-card-actions .btn-light,
.public-top-actions .btn-primary,
.public-top-actions .btn-light{min-width:auto}
.candidate-shell{display:grid;gap:16px}
.candidate-mini-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:-2px}
.candidate-progress-wrap{padding-top:18px}
.candidate-progress-line{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.candidate-progress-step{padding:14px 12px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);display:grid;gap:10px;min-height:92px}
.candidate-progress-step strong{font-size:13px;line-height:1.4;color:#fff}
.candidate-progress-step.done{background:rgba(18,161,92,.18);border-color:rgba(107,234,172,.28)}
.candidate-progress-step.active{background:rgba(255,216,90,.16);border-color:rgba(255,216,90,.28)}
.candidate-progress-dot{width:14px;height:14px;border-radius:50%;background:#a6badf;display:inline-block;box-shadow:0 0 0 5px rgba(255,255,255,.04)}
.candidate-progress-step.done .candidate-progress-dot{background:#6cf0a8}
.candidate-progress-step.active .candidate-progress-dot{background:#ffd85a}
.candidate-doc-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}
.candidate-doc-stats>div{padding:12px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.candidate-doc-stats span{display:block;color:#cfd9ff;font-size:12px}
.candidate-doc-stats strong{display:block;margin-top:4px;font-size:20px;color:#fff}
.public-note-card{margin-top:14px;padding:14px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.public-note-card strong{display:block;margin-bottom:6px}
.public-note-card p{margin:0;color:#d7e3ff;line-height:1.55}
.candidate-inline-actions{margin-top:14px;justify-content:flex-start}
.candidate-notification-item{border-left:4px solid rgba(255,216,90,.5)}
.print-sheet-body{background:#eef3fb;margin:0;font-family:Arial,sans-serif;color:#102656}
.print-sheet{max-width:920px;margin:0 auto;padding:26px}
.print-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}
.print-head h1{margin:0 0 6px;font-size:30px}
.print-head p{margin:0;color:#506487}
.print-brand{font-weight:900;color:#163e97}
.print-grid{display:grid;gap:16px;margin-bottom:16px}.print-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.print-card{background:#fff;border:1px solid #dce5f6;border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(16,38,86,.06)}
.print-card h3{margin:0 0 12px;font-size:18px;color:#163e97}.print-card ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}.print-card li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed #dbe4f4}.print-card li:last-child{border-bottom:0}.print-card li span{color:#617395}.print-comment{margin:12px 0 0;line-height:1.55;color:#29426f}
@media (max-width: 900px){
  .candidate-mini-grid,.candidate-progress-line{grid-template-columns:repeat(2,minmax(0,1fr))}
  .print-grid.two{grid-template-columns:1fr}
}
@media (max-width: 640px){
  .login-pro-submit{height:44px;font-size:14px}
  .public-body .btn-primary,
  .public-body .btn-light,
  .public-body .public-outline-link,
  .public-body .public-lang-links a{min-height:40px;padding:9px 14px;font-size:12px;border-radius:12px}
  .candidate-mini-grid,.candidate-progress-line,.candidate-doc-stats{grid-template-columns:1fr}
}
@media print{
  .print-sheet-body{background:#fff}
  .print-sheet{padding:0}
}

/* ===== Public portal redesign March 2026 ===== */
.public-portal-body{background:radial-gradient(circle at top left, #11388d 0%, #08245f 28%, #04153d 62%, #031132 100%)}
.public-portal-shell{max-width:1360px;margin:0 auto;padding:24px 34px 40px;color:#fff}
.public-portal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0 22px}
.public-brand-link{display:inline-flex;align-items:center;gap:14px;color:#fff;text-decoration:none}
.public-brand-logo{width:42px;height:42px;border-radius:50%;background:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 10px 22px rgba(0,0,0,.15)}
.public-brand-logo img{width:76%;height:76%;object-fit:contain}
.public-brand-text{font-size:20px;letter-spacing:.01em}
.public-brand-text strong{font-weight:900}
.public-header-actions{display:flex;align-items:center;gap:10px}
.public-lang-chip{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:38px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;text-decoration:none;font-weight:800;transition:transform .2s ease, background .2s ease, border-color .2s ease}
.public-lang-chip.active,.public-lang-chip:hover{background:linear-gradient(180deg,#2d63e8 0%,#1846ac 100%);border-color:rgba(255,255,255,.24);transform:translateY(-1px)}
.public-portal-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:26px;align-items:stretch;margin:16px 0 22px;padding:10px 0 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.public-portal-copy h1{margin:0;font-size:62px;line-height:.96;font-weight:900;color:#fff;max-width:720px}
.public-portal-copy p{margin:20px 0 0;max-width:760px;font-size:22px;line-height:1.55;color:rgba(255,255,255,.9)}
.public-portal-statcard{background:linear-gradient(180deg,rgba(18,38,101,.92) 0%, rgba(14,33,87,.88) 100%);border:1px solid rgba(255,255,255,.08);border-radius:28px;padding:28px 28px 24px;box-shadow:0 18px 40px rgba(0,0,0,.18)}
.public-portal-statcard strong{display:block;font-size:66px;line-height:1;color:#ffd95b;font-weight:900}
.public-portal-statcard h2{margin:8px 0 6px;font-size:24px;line-height:1.08;color:#fff}
.public-portal-statcard p{margin:0;color:rgba(255,255,255,.82);font-size:18px;line-height:1.45}
.public-follow-row{margin-top:18px}
.public-follow-input{display:flex;align-items:center;width:100%;min-height:58px;padding:0 18px;border-radius:14px;background:#fff;color:#27345a;text-decoration:none;font-size:20px;box-sizing:border-box}
.public-toolbar-card{margin-bottom:20px}
.public-toolbar-grid{display:grid;grid-template-columns:1.8fr .55fr auto;gap:12px;align-items:center}
.public-toolbar-grid input,.public-toolbar-grid select,.public-login-mini-grid input,.public-login-mini-grid select{width:100%;height:62px;border:none;border-radius:18px;background:#fff;color:#24365f;padding:0 22px;font-size:18px;box-sizing:border-box}
.public-toolbar-grid .btn-primary,.public-login-mini-grid .btn-primary{height:62px;padding:0 28px;border-radius:18px;font-size:18px;white-space:nowrap}
.public-cards-grid.modern{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:20px}
.public-establishment-card.modern{background:linear-gradient(180deg,rgba(18,38,101,.92) 0%, rgba(14,33,87,.9) 100%);border:1px solid rgba(255,255,255,.08);border-radius:26px;padding:20px 18px 18px;box-shadow:0 16px 38px rgba(0,0,0,.16)}
.public-establishment-head.modern{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}
.public-establishment-logo{width:62px;height:62px;border-radius:18px;background:#fff;display:flex;align-items:center;justify-content:center;flex:0 0 auto;overflow:hidden}
.public-establishment-logo img{width:78%;height:78%;object-fit:contain}
.public-establishment-titleblock h3{margin:0;font-size:26px;line-height:1.02;color:#fff;font-weight:900}
.public-establishment-titleblock p{margin:6px 0 0;color:#d1dbff;font-size:16px}
.public-establishment-meta.modern{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:10px}
.public-establishment-meta.modern li{display:flex;align-items:center;justify-content:space-between;gap:14px;background:rgba(255,255,255,.05);border-radius:14px;padding:12px 14px;color:#fff}
.public-establishment-meta.modern li span{color:#d2dcff;font-size:14px}.public-establishment-meta.modern li strong{font-size:16px}
.public-establishment-actions.modern{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.public-establishment-actions.modern .btn-light,.public-establishment-actions.modern .btn-primary{justify-content:center;height:52px;border-radius:14px;font-size:16px;padding:0 14px}
.public-establishment-actions.modern .btn-light{background:linear-gradient(180deg,#163787 0%,#102b70 100%);border:1px solid rgba(255,255,255,.14);color:#fff}
.public-establishment-login-card{background:linear-gradient(180deg,rgba(18,38,101,.9) 0%, rgba(13,29,77,.88) 100%);border:1px solid rgba(255,255,255,.08);border-radius:28px;padding:18px 18px 22px;box-shadow:0 16px 38px rgba(0,0,0,.16)}
.public-login-pill{display:flex;align-items:center;justify-content:center;width:min(420px,100%);height:56px;margin:0 auto 18px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);font-size:18px;font-weight:800;color:#fff}
.public-login-inner{max-width:1180px;margin:0 auto}
.public-login-mini-grid{display:grid;grid-template-columns:1.5fr .65fr .75fr auto;gap:12px;align-items:center}
.public-login-mini-grid .btn-primary{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}

.public-portal-body .btn-primary,.public-portal-body .btn-light{transition:transform .2s ease, box-shadow .2s ease, filter .2s ease}
.public-portal-body .btn-primary:hover,.public-portal-body .btn-light:hover{transform:scale(1.04);box-shadow:0 14px 24px rgba(10,32,96,.26);filter:brightness(1.03)}

@media (max-width: 1180px){
  .public-portal-shell{padding:22px 20px 34px}
  .public-portal-copy h1{font-size:52px}
  .public-portal-copy p{font-size:20px}
  .public-cards-grid.modern{grid-template-columns:repeat(2,minmax(0,1fr))}
  .public-login-mini-grid{grid-template-columns:1fr 1fr}
}
@media (max-width: 820px){
  .public-portal-hero{grid-template-columns:1fr;gap:18px}
  .public-portal-copy h1{font-size:42px;max-width:100%}
  .public-portal-copy p{font-size:18px}
  .public-toolbar-grid{grid-template-columns:1fr 1fr}
  .public-toolbar-grid .btn-primary{grid-column:1/-1}
  .public-cards-grid.modern{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 620px){
  .public-portal-shell{padding:14px 12px 24px}
  .public-portal-header{padding:6px 0 14px}
  .public-brand-logo{width:34px;height:34px}
  .public-brand-text{font-size:18px}
  .public-header-actions{gap:8px}
  .public-lang-chip{min-width:42px;height:34px;padding:0 12px;border-radius:11px}
  .public-portal-copy h1{font-size:34px;line-height:1.02}
  .public-portal-copy p{margin-top:12px;font-size:16px;line-height:1.5}
  .public-portal-statcard{padding:20px 16px 16px;border-radius:22px}
  .public-portal-statcard strong{font-size:42px}
  .public-portal-statcard h2{font-size:18px}
  .public-portal-statcard p{font-size:14px}
  .public-follow-input{min-height:46px;border-radius:12px;padding:0 14px;font-size:14px}
  .public-toolbar-grid{grid-template-columns:1fr 1fr auto}
  .public-toolbar-grid input{grid-column:1/-1}
  .public-toolbar-grid input,.public-toolbar-grid select,.public-login-mini-grid input,.public-login-mini-grid select{height:48px;border-radius:14px;padding:0 14px;font-size:14px}
  .public-toolbar-grid .btn-primary,.public-login-mini-grid .btn-primary{height:48px;border-radius:14px;font-size:14px;padding:0 16px}
  .public-cards-grid.modern{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .public-establishment-card.modern{padding:14px 12px 14px;border-radius:20px}
  .public-establishment-logo{width:44px;height:44px;border-radius:14px}
  .public-establishment-titleblock h3{font-size:16px;line-height:1.06}
  .public-establishment-titleblock p{font-size:11px;word-break:break-word}
  .public-establishment-head.modern{gap:10px;margin-bottom:10px}
  .public-establishment-meta.modern{gap:8px;margin-bottom:12px}
  .public-establishment-meta.modern li{padding:8px 10px;border-radius:12px}
  .public-establishment-meta.modern li span{font-size:11px}
  .public-establishment-meta.modern li strong{font-size:12px}
  .public-establishment-actions.modern{gap:8px}
  .public-establishment-actions.modern .btn-light,.public-establishment-actions.modern .btn-primary{height:40px;font-size:12px;border-radius:12px;padding:0 10px}
  .public-establishment-login-card{border-radius:22px;padding:14px 12px 16px}
  .public-login-pill{height:44px;margin-bottom:12px;font-size:15px}
  .public-login-mini-grid{grid-template-columns:1fr;gap:10px}
}
@media (max-width: 420px){
  .public-cards-grid.modern{grid-template-columns:1fr}
  .public-toolbar-grid{grid-template-columns:1fr}
  .public-portal-copy h1{font-size:30px}
}
