/* ============================================================
   SNAPSHOT DASHBOARD — portal.css
   Styles COMMUNS aux pages du portail (index.html, monitorage.html).
   Complète theme.css (kit v3) — jamais contre. Chargé APRÈS theme.css.
   Le CSS propre à une page reste dans le <style> de cette page.
   ============================================================ */

/* tokens locaux du portail — défaut SOMBRE (clé dashTheme, voir portal.js) */
:root{ --well:#141419; --coral-fill:rgba(237,88,71,.14); --glass-brd:rgba(255,255,255,.12); }
html[data-theme="light"]{ --well:#F5F5F5; --glass-brd:rgba(11,11,11,.08); }
body{transition:background .25s ease, color .25s ease;}
.hidden{display:none !important;}
.btn:disabled{opacity:.6; cursor:default;}

/* largeur de contenu : équivalent .os-wrap dans la coque sidebar (.content > .pwrap) */
.pwrap{max-width:1180px; margin:0 auto;}
.page-kicker{margin-bottom:14px;}

/* la nav de la sidebar est en <a> (multi-pages) — neutralise le style lien global */
a.nav-item{text-decoration:none;}

/* bouton de repli .nav-min : inutile quand la sidebar devient tiroir (<820px) */
@media(max-width:820px){ .nav-min-btn{display:none;} }

/* ---- pied de sidebar : profil + déconnexion (sur fond --forest, invariant) ---- */
.side-user{display:flex; align-items:center; gap:11px; width:100%; min-width:0; text-align:left;
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10); border-radius:12px;
  padding:8px 10px; color:#fff; cursor:pointer; font-family:var(--font-body);}
.side-user:hover{background:rgba(255,255,255,.10);}
.side-user .user-avatar{width:32px; height:32px; font-size:11.5px;}
.su-id{display:flex; flex-direction:column; line-height:1.3; min-width:0;}
.su-name{font-size:12.5px; font-weight:600; color:#fff; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.su-mail{font-size:10.5px; color:rgba(255,255,255,.55); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.side-out{display:flex; align-items:center; gap:8px; width:100%; justify-content:center;
  background:rgba(255,255,255,.06); color:rgba(255,255,255,.8); border:1px solid rgba(255,255,255,.12);
  border-radius:9px; padding:8px 11px; font-size:12px; font-weight:600; font-family:var(--font-body); cursor:pointer;}
.side-out:hover{background:rgba(255,255,255,.12); color:#fff;}

/* skin portail de l'état vide kit (.empty) : encadré pointillé */
.empty{margin-top:16px; padding:40px; text-align:center; color:var(--ink-3);
  border:1px dashed var(--border-strong); border-radius:18px; font-size:13px;}

/* ---- écrans de démarrage / connexion (injectés par portal.js) ---- */
.center-screen{min-height:100vh; display:grid; place-items:center; padding:24px; position:relative; z-index:1;}
.boot-box{text-align:center; max-width:360px;}
.boot-spinner{width:30px; height:30px; border:3px solid var(--border-strong); border-top-color:var(--gold);
  border-radius:50%; animation:spin .7s linear infinite; margin:0 auto;}
@media (prefers-reduced-motion:reduce){ .boot-spinner{animation-duration:1.6s;} }
.login-card{background:var(--surface); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px);
  border:1px solid var(--glass-brd); border-radius:22px; padding:34px 32px; width:min(420px,100%);
  box-shadow:0 40px 90px -40px rgba(0,0,0,.6);}
.login-card .brand{padding:0; gap:13px; margin-bottom:24px;}
.login-card .brand-name{color:var(--ink); font-size:16px;}
.login-card .brand-sub{color:var(--ink-3); font-size:11px; margin-top:5px; letter-spacing:.14em; text-transform:uppercase;}
.login-card h1{font-size:23px;}
.login-card p.lead{font-size:14px; color:var(--ink-2); margin:8px 0 24px;}
.field-l label{display:block; font-size:12px; font-weight:600; color:var(--ink-2); margin-bottom:7px;}
.field-l input{width:100%; background:var(--well); border:1px solid var(--border-strong); border-radius:12px;
  padding:12px 14px; font-size:14px; font-family:inherit; color:var(--ink);}
.field-l input:focus{outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(237,88,71,.18);}
.login-card .btn-cta{margin-top:16px; padding:13px 16px; font-size:14px; border-radius:12px;}
.msg{margin-top:16px; font-size:13px; line-height:1.55; min-height:18px;}
.msg.err{color:var(--down);}
.sent-box{text-align:center; padding:8px 0;}
.sent-box .ic{width:54px; height:54px; border-radius:50%; display:grid; place-items:center; margin:0 auto 16px;
  background:var(--coral-fill); color:var(--coral-text);}
.link-btn{background:none; border:none; color:var(--coral-text); font-weight:600; font-size:13px; padding:0;
  margin-top:14px; text-decoration:underline; cursor:pointer;}

/* ---- modales « verre » du portail (profil, journal) ----
   .pf-scrim / .pf-modal : noms distincts de .scrim (tiroir mobile du kit)
   et de .modal (modale de confirmation du kit) — collision interdite. */
.pf-scrim{position:fixed; inset:0; background:rgba(8,8,10,.6); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  display:grid; place-items:center; z-index:100; padding:20px;}
.pf-scrim[hidden]{display:none;}
.pf-modal{background:var(--surface); -webkit-backdrop-filter:blur(24px) saturate(1.2); backdrop-filter:blur(24px) saturate(1.2);
  border:1px solid var(--border); border-radius:22px; box-shadow:0 40px 90px -40px rgba(0,0,0,.7);
  width:min(520px,100%); max-height:88vh; display:flex; flex-direction:column;}
.m-head{display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:22px 24px 6px;}
.m-head h2{font-size:19px;}
.xbtn{width:34px; height:34px; border-radius:10px; flex:none; border:1px solid var(--border-strong);
  background:var(--well); color:var(--ink-2); display:grid; place-items:center; cursor:pointer;}
.xbtn:hover{color:var(--ink); border-color:var(--ink-3);}
.m-body{overflow-y:auto; padding:14px 24px 6px;}
.m-foot{display:flex; align-items:center; justify-content:flex-end; gap:10px; padding:16px 24px 22px;
  border-top:1px solid var(--border); margin-top:10px;}

/* ---- modale profil ---- */
.av-row{display:flex; align-items:center; gap:18px; padding:6px 0 18px;}
.av{width:88px; height:88px; border-radius:50%; flex:none; position:relative; display:grid; place-items:center;
  overflow:hidden; background:linear-gradient(140deg,var(--gold),var(--accent-strong)); color:#fff;
  font-family:var(--font-display); font-weight:600; font-size:28px;}
.av img{width:100%; height:100%; object-fit:cover;}
.av-act{display:flex; flex-direction:column; gap:8px;}
.av-act .ttl{font-family:var(--font-display); font-size:14px; font-weight:600;}
.mini{display:inline-flex; align-items:center; gap:6px; font:inherit; font-family:var(--font-body); font-size:12px;
  font-weight:600; padding:7px 11px; border-radius:9px; border:1px solid var(--border-strong); background:var(--well);
  color:var(--ink); cursor:pointer;}
.mini:hover{border-color:var(--ink-3);}
.av-hint{font-size:11px; color:var(--ink-3);}
.pf-field{padding:14px 0; border-top:1px solid var(--border);}
.pf-field:first-child{border-top:none;}
.pf-field label{display:flex; align-items:center; gap:7px; font-size:11px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); margin-bottom:9px;}
.inp{width:100%; background:var(--well); border:1px solid var(--border-strong); border-radius:12px; padding:12px 14px;
  font:inherit; font-family:var(--font-body); font-size:14px; color:var(--ink);}
.inp:focus{outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(237,88,71,.18);}
.inp.ro{color:var(--ink-2); background:transparent; border-style:dashed; display:flex; align-items:center;
  justify-content:space-between; gap:10px;}
.badge{display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; padding:4px 10px;
  border-radius:20px; background:var(--coral-fill); color:var(--coral-text);}
.cc{display:flex; gap:12px;}
.cc .pf-field{flex:1;}
.pf-msg{font-size:12.5px; margin-right:auto; align-self:center; min-height:16px;}
.pf-msg.err{color:var(--down);}
/* recadrage avatar */
.pf-crop .m-body{display:flex; flex-direction:column; align-items:center; gap:18px; padding-top:18px;}
.crop-wrap{width:min(240px,72vw); aspect-ratio:1; border-radius:50%; overflow:hidden; position:relative;
  box-shadow:0 0 0 2px var(--border-strong), 0 0 0 14px var(--well); touch-action:none; background:#000;}
.crop-wrap canvas{width:100%; height:100%; display:block; cursor:grab;}
.crop-wrap canvas:active{cursor:grabbing;}
.crop-ctrl{display:flex; align-items:center; gap:12px; width:min(300px,100%); color:var(--ink-3);}
.crop-ctrl input[type=range]{flex:1; accent-color:var(--gold);}
.crop-hint{font-size:11.5px; color:var(--ink-3); text-align:center;}
