/* ASP ERP — Démonstrateur commercial | Design system (inspiré Filament, original) */
@font-face{font-family:'ASPSans';src:local('Inter'),local('Segoe UI'),local('Helvetica Neue');}
:root{
  --blue-50:#eff5ff;--blue-100:#dbe8ff;--blue-200:#bed4ff;--blue-500:#2f6df6;--blue-600:#1f56d6;--blue-700:#1a45ab;--blue-900:#132a63;
  --green-50:#ecfdf5;--green-500:#12a874;--green-600:#0d8a5f;
  --amber-50:#fffbeb;--amber-500:#d99411;
  --red-50:#fef2f2;--red-500:#dc4b4b;--red-600:#c03434;
  --gray-50:#f7f8fb;--gray-100:#eef1f6;--gray-200:#e3e7ee;--gray-300:#cfd5e0;--gray-400:#9aa3b2;--gray-500:#6b7482;--gray-600:#4c5563;--gray-700:#343c49;--gray-900:#151a22;
  --bg:var(--gray-50);--card:#fff;--text:var(--gray-900);--muted:var(--gray-500);--border:var(--gray-200);
  --radius:14px;--radius-sm:9px;--radius-lg:20px;
  --shadow-sm:0 1px 2px rgba(21,26,34,.06),0 1px 3px rgba(21,26,34,.04);
  --shadow:0 2px 4px rgba(21,26,34,.04),0 8px 24px -12px rgba(21,26,34,.14);
  --shadow-lg:0 24px 60px -20px rgba(19,42,99,.28);
  --sidebar-w:266px;--topbar-h:64px;
  --font:'Inter','Segoe UI',system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14.5px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;letter-spacing:-.02em;font-weight:680}
h1{font-size:1.55rem}h2{font-size:1.18rem}h3{font-size:1rem}
p{margin:0 0 .8rem}
img{max-width:100%}
.icon{width:19px;height:19px;flex:0 0 auto;stroke-width:1.7;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round}
.icon-sm{width:15px;height:15px}
.icon-lg{width:26px;height:26px}

/* ---------- Loader ---------- */
#asp-loader{position:fixed;inset:0;background:#fff;z-index:9999;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;transition:opacity .35s ease}
#asp-loader.hide{opacity:0;pointer-events:none}
.spinner{width:38px;height:38px;border-radius:50%;border:3px solid var(--blue-100);border-top-color:var(--blue-500);animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loader-label{font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gray-400)}

/* ---------- Logo ---------- */
.logo{display:flex;align-items:center;gap:10px;min-width:0}
.logo-mark{width:38px;height:38px;flex:0 0 auto;border-radius:11px;background:linear-gradient(150deg,var(--blue-500),var(--blue-700));display:grid;place-items:center;box-shadow:0 6px 16px -6px rgba(31,86,214,.7)}
.logo-mark svg{width:21px;height:21px;stroke:#fff;fill:none;stroke-width:1.8}
.logo-txt{display:flex;flex-direction:column;line-height:1.05;min-width:0}
.logo-txt b{font-size:1.02rem;letter-spacing:-.01em}
.logo-txt span{font-size:.63rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:var(--radius-sm);padding:.55rem .95rem;font:inherit;font-size:.86rem;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .2s ease,background .18s ease,color .18s ease;background:var(--card);color:var(--gray-700);border-color:var(--border);box-shadow:var(--shadow-sm)}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.btn:active{transform:translateY(0)}
.btn-primary{background:linear-gradient(180deg,var(--blue-500),var(--blue-600));color:#fff;border-color:transparent}
.btn-primary:hover{background:linear-gradient(180deg,var(--blue-600),var(--blue-700))}
.btn-success{background:linear-gradient(180deg,var(--green-500),var(--green-600));color:#fff}
.btn-ghost{background:transparent;box-shadow:none;border-color:transparent;color:var(--gray-600)}
.btn-ghost:hover{background:var(--gray-100);box-shadow:none}
.btn-danger{background:#fff;color:var(--red-600);border-color:#f3d3d3}
.btn-sm{padding:.36rem .68rem;font-size:.79rem}
.btn-lg{padding:.75rem 1.3rem;font-size:.95rem}
.btn-block{width:100%;justify-content:center}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:650;padding:.22rem .58rem;border-radius:999px;background:var(--gray-100);color:var(--gray-600);white-space:nowrap}
.badge-blue{background:var(--blue-50);color:var(--blue-700)}
.badge-green{background:var(--green-50);color:var(--green-600)}
.badge-amber{background:var(--amber-50);color:var(--amber-500)}
.badge-red{background:var(--red-50);color:var(--red-600)}
.badge-gray{background:var(--gray-100);color:var(--gray-500)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.demo-badge{position:fixed;right:14px;bottom:14px;z-index:600;display:inline-flex;align-items:center;gap:8px;background:var(--gray-900);color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:.5rem .8rem;border-radius:999px;box-shadow:var(--shadow-lg)}
.demo-badge .dot{background:#5df0b0;animation:pulse 1.8s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

/* ---------- App shell ---------- */
.app{min-height:100vh}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:400;transition:transform .26s ease,width .26s ease}
.sidebar-head{height:var(--topbar-h);display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--border)}
.sidebar-nav{flex:1;overflow-y:auto;padding:12px 10px 24px}
.nav-group{margin:14px 0 6px;padding:0 10px;font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gray-400);font-weight:700}
.nav-link{display:flex;align-items:center;gap:11px;padding:.55rem .6rem;border-radius:10px;color:var(--gray-600);font-weight:560;font-size:.88rem;margin-bottom:2px;transition:background .16s,color .16s,transform .16s}
.nav-link:hover{background:var(--gray-100);color:var(--gray-900);transform:translateX(2px)}
.nav-link.active{background:var(--blue-50);color:var(--blue-700);font-weight:670}
.nav-link.active .icon{stroke:var(--blue-600)}
.nav-link .count{margin-left:auto;font-size:.7rem;font-weight:700;background:var(--gray-100);color:var(--gray-500);padding:.05rem .4rem;border-radius:999px}
.sidebar-foot{padding:12px;border-top:1px solid var(--border)}
.sidebar-card{background:linear-gradient(160deg,var(--blue-600),var(--blue-900));color:#fff;border-radius:var(--radius);padding:12px 13px;font-size:.76rem;line-height:1.4}
.sidebar-card b{display:block;font-size:.82rem;margin-bottom:3px}
.main{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column;transition:margin .26s ease}
body.collapsed .sidebar{transform:translateX(-100%)}
body.collapsed .main{margin-left:0}
.topbar{position:sticky;top:0;height:var(--topbar-h);background:rgba(255,255,255,.88);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;padding:0 18px;z-index:300}
.search{flex:1;max-width:420px;position:relative;display:flex;align-items:center}
.search .icon{position:absolute;left:11px;stroke:var(--gray-400)}
.search input{width:100%;padding:.52rem .8rem .52rem 34px;border:1px solid var(--border);border-radius:10px;background:var(--gray-50);font:inherit;font-size:.85rem;outline:none;transition:.18s}
.search input:focus{background:#fff;border-color:var(--blue-200);box-shadow:0 0 0 4px var(--blue-50)}
.topbar-spacer{flex:1}
.icon-btn{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;border:1px solid transparent;background:transparent;cursor:pointer;color:var(--gray-600);transition:.16s}
.icon-btn:hover{background:var(--gray-100)}
.icon-btn .pip{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--red-500);border:2px solid #fff}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(150deg,var(--blue-500),var(--blue-900));color:#fff;display:grid;place-items:center;font-size:.76rem;font-weight:700;flex:0 0 auto}
.userbtn{display:flex;align-items:center;gap:9px;padding:.3rem .5rem .3rem .3rem;border-radius:999px;border:1px solid var(--border);background:#fff;cursor:pointer;font:inherit;box-shadow:var(--shadow-sm)}
.userbtn small{display:block;color:var(--muted);font-size:.7rem}
.userbtn .u{text-align:left;line-height:1.15;font-size:.82rem;font-weight:650}
.dropdown{position:relative}
.menu{position:absolute;right:0;top:calc(100% + 9px);width:250px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:7px;opacity:0;transform:translateY(-6px) scale(.98);pointer-events:none;transition:.16s ease;z-index:500}
.menu.open{opacity:1;transform:none;pointer-events:auto}
.menu a,.menu button{display:flex;align-items:center;gap:10px;width:100%;padding:.5rem .6rem;border-radius:9px;font-size:.85rem;color:var(--gray-600);background:none;border:0;font:inherit;cursor:pointer;text-align:left}
.menu a:hover,.menu button:hover{background:var(--gray-100);color:var(--gray-900)}
.menu .sep{height:1px;background:var(--border);margin:6px 4px}
.menu .mhead{padding:.5rem .6rem;font-size:.78rem;color:var(--muted)}
.notif-item{display:flex;gap:10px;padding:.55rem .6rem;border-radius:9px}
.notif-item:hover{background:var(--gray-50)}
.notif-item p{margin:0;font-size:.82rem}
.notif-item span{font-size:.72rem;color:var(--muted)}
.menu-wide{width:330px}

/* ---------- Page ---------- */
.page{padding:22px 24px 60px;max-width:1440px;width:100%;animation:rise .34s ease both}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.crumb{display:flex;align-items:center;gap:7px;font-size:.78rem;color:var(--muted);margin-bottom:9px;flex-wrap:wrap}
.crumb a:hover{color:var(--blue-600)}
.crumb svg{width:13px;height:13px;stroke:var(--gray-300)}
.page-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;margin-bottom:20px}
.page-head p{margin:.25rem 0 0;color:var(--muted);font-size:.87rem}
.actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}

/* ---------- Cards / grids ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:box-shadow .22s ease,transform .22s ease}
.card:hover{box-shadow:var(--shadow)}
.card-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}
.card-head h3{font-size:.95rem}
.card-head small{color:var(--muted);font-size:.76rem}
.card-body{padding:16px}
.card-body.tight{padding:8px 16px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g23{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.g32{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.stack{display:flex;flex-direction:column;gap:16px}
.mt{margin-top:16px}
.stat{padding:16px;display:flex;flex-direction:column;gap:9px;position:relative;overflow:hidden}
.stat:hover{transform:translateY(-3px)}
.stat .top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.stat .lbl{font-size:.78rem;color:var(--muted);font-weight:600}
.stat .val{font-size:1.72rem;font-weight:720;letter-spacing:-.03em}
.stat .ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--blue-50);color:var(--blue-600)}
.stat .ico.g{background:var(--green-50);color:var(--green-600)}
.stat .ico.a{background:var(--amber-50);color:var(--amber-500)}
.stat .ico.r{background:var(--red-50);color:var(--red-600)}
.trend{font-size:.76rem;font-weight:650;color:var(--green-600);display:flex;align-items:center;gap:5px}
.trend.down{color:var(--red-600)}
.spark{height:34px;width:100%}
.kv{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);gap:9px 14px;font-size:.87rem}
.kv dt{color:var(--muted)}
.kv dd{margin:0;font-weight:600}
.tiles{display:flex;flex-wrap:wrap;gap:9px}
.tile{border:1px solid var(--border);border-radius:11px;padding:9px 12px;font-size:.83rem;background:var(--gray-50)}
.tile b{display:block;font-size:.98rem}
.empty{padding:34px;text-align:center;color:var(--muted);font-size:.87rem}

/* ---------- Table ---------- */
.table-tools{display:flex;gap:9px;flex-wrap:wrap;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}
.table-tools input,.table-tools select{padding:.45rem .7rem;border:1px solid var(--border);border-radius:9px;background:#fff;font:inherit;font-size:.83rem;outline:none}
.table-tools input:focus,.table-tools select:focus{border-color:var(--blue-200);box-shadow:0 0 0 4px var(--blue-50)}
.table-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:.86rem}
table.tbl th{text-align:left;padding:.7rem 16px;background:var(--gray-50);color:var(--gray-500);font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;font-weight:700;border-bottom:1px solid var(--border);white-space:nowrap}
table.tbl td{padding:.72rem 16px;border-bottom:1px solid var(--gray-100);vertical-align:middle;white-space:nowrap}
table.tbl tbody tr{transition:background .14s}
table.tbl tbody tr:hover{background:var(--blue-50)}
table.tbl td .mono{font-variant-numeric:tabular-nums;color:var(--gray-500);font-size:.82rem}
.cellmain{display:flex;align-items:center;gap:10px;min-width:0}
.cellmain b{font-weight:640}
.cellmain small{display:block;color:var(--muted);font-size:.75rem;font-weight:500}
.pager{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 16px;font-size:.8rem;color:var(--muted)}
.pager .btns{display:flex;gap:6px}

/* ---------- Forms ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field.full{grid-column:1/-1}
.field label{font-size:.8rem;font-weight:650;color:var(--gray-600)}
.field input,.field select,.field textarea{padding:.58rem .75rem;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:.87rem;background:#fff;outline:none;transition:.16s;width:100%}
.field textarea{min-height:104px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue-200);box-shadow:0 0 0 4px var(--blue-50)}
.field .hint{font-size:.74rem;color:var(--muted)}
.form-foot{display:flex;gap:10px;justify-content:flex-end;padding:14px 16px;border-top:1px solid var(--border);background:var(--gray-50);border-radius:0 0 var(--radius) var(--radius);flex-wrap:wrap}

/* ---------- Timeline / list ---------- */
.timeline{list-style:none;margin:0;padding:0}
.timeline li{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--gray-100)}
.timeline li:last-child{border:0}
.tl-ico{width:32px;height:32px;border-radius:10px;background:var(--blue-50);color:var(--blue-600);display:grid;place-items:center;flex:0 0 auto}
.tl-body{min-width:0;flex:1}
.tl-body p{margin:0;font-size:.86rem}
.tl-body span{font-size:.75rem;color:var(--muted)}
.progress{height:7px;border-radius:999px;background:var(--gray-100);overflow:hidden}
.progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue-500),var(--blue-700))}
.progress i.g{background:linear-gradient(90deg,var(--green-500),var(--green-600))}

/* ---------- Toast ---------- */
#toasts{position:fixed;top:16px;right:16px;z-index:900;display:flex;flex-direction:column;gap:10px;max-width:min(94vw,380px)}
.toast{display:flex;gap:11px;align-items:flex-start;background:#fff;border:1px solid var(--border);border-left:4px solid var(--green-500);border-radius:12px;padding:12px 13px;box-shadow:var(--shadow-lg);animation:slidein .3s ease both}
.toast.info{border-left-color:var(--blue-500)}
.toast.warn{border-left-color:var(--amber-500)}
.toast b{font-size:.87rem}
.toast p{margin:2px 0 0;font-size:.8rem;color:var(--muted)}
.toast .x{margin-left:auto;background:none;border:0;cursor:pointer;color:var(--gray-400);font-size:1rem;line-height:1}
.toast.out{animation:slideout .28s ease both}
@keyframes slidein{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes slideout{to{opacity:0;transform:translateX(24px)}}

/* ---------- Auth ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}
.auth-side{background:linear-gradient(155deg,var(--blue-700),var(--blue-900) 70%);color:#fff;padding:44px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth-side:after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:rgba(255,255,255,.06);right:-190px;bottom:-190px}
.auth-side .logo-txt span{color:rgba(255,255,255,.66)}
.auth-side .logo-txt b{color:#fff}
.auth-side h2{font-size:1.9rem;line-height:1.2;max-width:22ch}
.auth-side ul{list-style:none;padding:0;margin:18px 0 0;display:flex;flex-direction:column;gap:9px;font-size:.9rem;color:rgba(255,255,255,.82)}
.auth-side ul li{display:flex;gap:9px;align-items:center}
.auth-main{display:grid;place-items:center;padding:34px 24px;background:#fff}
.auth-card{width:100%;max-width:392px}
.auth-card h1{margin-bottom:5px}
.auth-card>p{color:var(--muted);font-size:.88rem}
.creds{background:var(--gray-50);border:1px dashed var(--gray-300);border-radius:11px;padding:11px 13px;font-size:.79rem;color:var(--gray-600)}
.creds code{background:#fff;border:1px solid var(--border);border-radius:6px;padding:.05rem .32rem}
.linkrow{display:flex;justify-content:space-between;font-size:.8rem;margin-top:14px;flex-wrap:wrap;gap:8px}
.linkrow a{color:var(--blue-600);font-weight:600}

/* ---------- Public site ---------- */
.site-nav{position:sticky;top:0;z-index:300;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.site-nav .inner{max-width:1200px;margin:0 auto;padding:12px 20px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}
.site-links{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.site-links a{padding:.42rem .62rem;border-radius:9px;font-size:.85rem;font-weight:600;color:var(--gray-600)}
.site-links a:hover{background:var(--gray-100);color:var(--gray-900)}
.site-links a.on{color:var(--blue-700);background:var(--blue-50)}
.wrap{max-width:1200px;margin:0 auto;padding:0 20px}
.hero{background:linear-gradient(160deg,#fff 0%,var(--blue-50) 62%,#fff 100%);padding:70px 0 60px;border-bottom:1px solid var(--border)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:38px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--blue-100);color:var(--blue-700);font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.34rem .7rem;border-radius:999px;box-shadow:var(--shadow-sm)}
.hero h1{font-size:2.7rem;line-height:1.08;margin:16px 0 12px}
.hero p.lead{font-size1.02rem;font-size:1.02rem;color:var(--gray-600);max-width:54ch}
.hero .actions{justify-content:flex-start;margin-top:20px}
.section{padding:58px 0}
.section.alt{background:#fff;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.section-head{max-width:62ch;margin-bottom:26px}
.section-head p{color:var(--gray-600);margin-top:8px}
.feature{padding:20px}
.feature .ico{width:40px;height:40px;border-radius:12px;background:var(--blue-50);color:var(--blue-600);display:grid;place-items:center;margin-bottom:12px}
.feature h3{margin-bottom:6px}
.feature p{color:var(--gray-600);font-size:.88rem;margin:0}
.kpi-band{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;text-align:center}
.kpi-band .k b{display:block;font-size:1.9rem;letter-spacing:-.03em;color:var(--blue-700)}
.kpi-band .k span{font-size:.82rem;color:var(--muted)}
.cta{background:linear-gradient(150deg,var(--blue-600),var(--blue-900));color:#fff;border-radius:var(--radius-lg);padding:36px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;box-shadow:var(--shadow-lg)}
.cta h2{font-size:1.5rem}
.cta p{color:rgba(255,255,255,.8);margin:6px 0 0}
.site-foot{background:var(--gray-900);color:rgba(255,255,255,.7);padding:42px 0 24px;font-size:.85rem;margin-top:0}
.site-foot .cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.site-foot h4{color:#fff;font-size:.85rem;margin-bottom:10px;text-transform:uppercase;letter-spacing:.1em}
.site-foot a{display:block;padding:.15rem 0}
.site-foot a:hover{color:#fff}
.site-foot .bar{border-top:1px solid rgba(255,255,255,.12);margin-top:26px;padding-top:16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;font-size:.78rem;color:rgba(255,255,255,.5)}
.media{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-lg);border:1px solid var(--border);background:#fff}
.mock{background:#fff;border-radius:var(--radius);overflow:hidden}
.mock .bar{height:34px;background:var(--gray-50);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:6px;padding:0 12px}
.mock .bar i{width:9px;height:9px;border-radius:50%;background:var(--gray-300)}
.news-card img,.ref-card img{display:block;width:100%;height:150px;object-fit:cover}
.chip{display:inline-block;font-size:.72rem;font-weight:650;color:var(--blue-700);background:var(--blue-50);padding:.2rem .55rem;border-radius:999px}

/* ---------- Agent PWA ---------- */
.phone-shell{max-width:520px;margin:0 auto;padding-bottom:86px}
.tabbar{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-top:1px solid var(--border);display:flex;z-index:400}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 4px;font-size:.66rem;font-weight:600;color:var(--gray-500)}
.tabbar a.on{color:var(--blue-600)}
.agent-hero{background:linear-gradient(155deg,var(--blue-600),var(--blue-900));color:#fff;padding:20px;border-radius:0 0 22px 22px}
.agent-hero .kv dt,.agent-hero small{color:rgba(255,255,255,.72)}
.big-action{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:1.05rem;border-radius:16px;font-size:1rem;font-weight:700;border:0;cursor:pointer;color:#fff;background:linear-gradient(180deg,var(--green-500),var(--green-600));box-shadow:0 14px 30px -14px rgba(13,138,95,.8)}
.big-action.stop{background:linear-gradient(180deg,var(--red-500),var(--red-600));box-shadow:0 14px 30px -14px rgba(192,52,52,.8)}

/* ---------- Planning ---------- */
.planning{overflow-x:auto}
.planning table{border-collapse:collapse;min-width:900px;width:100%;font-size:.8rem}
.planning th,.planning td{border:1px solid var(--gray-100);padding:6px 8px;text-align:left}
.planning th{background:var(--gray-50);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gray-500)}
.vac{border-radius:8px;padding:.28rem .45rem;font-size:.72rem;font-weight:650;display:block;margin-bottom:3px}
.vac.j{background:var(--blue-50);color:var(--blue-700)}
.vac.n{background:#eef0fb;color:#3b3f8f}
.vac.h{background:var(--amber-50);color:var(--amber-500)}
.vac.o{background:var(--gray-100);color:var(--gray-500)}

/* ---------- Responsive ---------- */
.hide-sm{display:initial}
@media(max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.g23,.g32{grid-template-columns:minmax(0,1fr)}.kpi-band{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){
  .sidebar{transform:translateX(-100%);box-shadow:var(--shadow-lg)}
  .main{margin-left:0}
  body.nav-open .sidebar{transform:none}
  body.nav-open:after{content:"";position:fixed;inset:0;background:rgba(21,26,34,.4);z-index:390}
  .auth{grid-template-columns:minmax(0,1fr)}.auth-side{display:none}
  .hero-grid{grid-template-columns:minmax(0,1fr)}.hero h1{font-size:2.05rem}
  .site-foot .cols{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cta{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:640px){
  .g2,.g3,.g4,.form-grid{grid-template-columns:minmax(0,1fr)}
  .page{padding:16px 14px 70px}
  .page-head{grid-template-columns:minmax(0,1fr)}.actions{justify-content:flex-start}
  .hide-sm{display:none}
  .kv{grid-template-columns:minmax(0,1fr)}
  h1{font-size:1.32rem}
}

/* Le badge de démonstration ne doit pas masquer la barre d'onglets de l'app agent */
body:has(.tabbar) .demo-badge{bottom:74px}
@media(max-width:640px){.demo-badge{right:10px;bottom:10px;font-size:.64rem;padding:.42rem .66rem}body:has(.tabbar) .demo-badge{bottom:70px}}

/* ---- Médias / photos (identité ACCÈS SÉCURITÉ PROTECTION) ---- */
.logo-img{height:42px;width:auto;display:block}
.site-nav .logo-img{height:44px}
.sidebar .logo-img,.auth-side .logo-img{height:46px}
.card-img{display:block;width:100%;height:180px;object-fit:cover}
.media-card{overflow:hidden;border:1px solid var(--border);border-radius:18px;background:#fff;box-shadow:0 16px 34px -26px rgba(11,26,58,.45)}
.media-card img{display:block;width:100%;height:230px;object-fit:cover}
.media-card .cap{padding:14px 16px}
.media-card .cap b{display:block;font-size:.98rem;margin-bottom:4px}
.media-card .cap span{font-size:.86rem;color:var(--gray-600)}
.hero-photo{margin-top:18px;border-radius:20px;overflow:hidden;border:1px solid var(--border)}
.hero-photo img{display:block;width:100%;height:230px;object-fit:cover}
.dir{display:grid;grid-template-columns:minmax(0,330px) minmax(0,1fr);gap:30px;align-items:start}
.dir-photo img{display:block;width:100%;border-radius:20px;box-shadow:0 22px 46px -24px rgba(11,26,58,.6)}
.dir-photo span{display:block;margin-top:10px;font-size:.82rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}
.dir blockquote{margin:0;font-size:1.04rem;line-height:1.75;color:var(--gray-600)}
.dir blockquote p+p{margin-top:12px}
.dir .sig{margin-top:16px;font-weight:600;color:var(--ink,inherit)}
@media (max-width:900px){.dir{grid-template-columns:minmax(0,1fr)}.media-card img{height:200px}}
.mb{margin-bottom:18px}
.site-nav .logo-txt span{display:none}
.site-nav .logo-txt b{font-size:1.06rem}
.site-nav .nav-links{gap:2px}
.sidebar .logo-img{height:44px}
.auth-side .logo-img{height:46px;filter:brightness(0) invert(1)}
