[hidden]{display:none!important}

/* Polices auto-hébergées, licence SIL OFL 1.1 (fonts/archivo/OFL.txt, fonts/geist/OFL.txt).
   Fichiers et unicode-range copiés à l'identique du dépôt paristic-site-v2 (charte v2, 24-25/09/2026). */
@font-face{
  font-family:'Archivo';
  src:url('fonts/archivo/Archivo-latin.woff2') format('woff2');
  font-weight:100 900;
  font-stretch:62% 125%;
  font-style:normal;
  font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Archivo';
  src:url('fonts/archivo/Archivo-latin-ext.woff2') format('woff2');
  font-weight:100 900;
  font-stretch:62% 125%;
  font-style:normal;
  font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Geist Logo';
  src:url('fonts/geist/Geist-700-latin.woff2') format('woff2');
  font-weight:700;
  font-style:normal;
  font-display:swap;
}

:root{
  --bg:#0A0A0A;
  --bg-card:#141414;
  --bg-card-elevated:#1A1A1A;
  --text:#FFFFFF;
  --text-warm:#F4F4F2;
  --text-secondary:#A3A3A3;
  --orange:#FF4B1F;
  --orange-cta:#D93A12;
  --orange-cta-hover:#B4380F;
  --orange-soft:#FFE9E1;
  --border:rgba(255,255,255,.1);
  --border-soft:rgba(255,255,255,.06);
  --radius:.375rem;
  --ease:cubic-bezier(.16,1,.3,1);
  --fast:170ms;
  --status-nouveau:#9AA0A6;
  --status-qualifie:#7FA7C9;
  --status-devis:#C9B37F;
  --status-envoye:#7FB8C9;
  --status-negociation:#B398C9;
  --status-signe:#6FB88C;
  --status-perdu:#C97F7F;
  font-family:'Archivo',ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text-warm);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

h1,h2,h3,.font-heading{font-family:'Archivo',ui-sans-serif,system-ui,sans-serif}

@keyframes fadeSlideIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes dialogIn{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
@keyframes backdropIn{from{opacity:0}to{opacity:1}}

/* ============================================================
   Structure app
   ============================================================ */
.app-shell{display:flex;min-height:100vh}
.sidebar{width:250px;background:var(--bg);border-right:1px solid var(--border-soft);color:var(--text-warm);padding:28px 18px;display:flex;flex-direction:column}

.brand{display:flex;align-items:center;gap:11px;margin:0 8px 48px}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;background:var(--orange-cta);color:#fff;border-radius:var(--radius);font-family:'Geist Logo','Archivo',sans-serif;font-weight:700;font-size:15px;flex:none}
.brand strong{display:flex;align-items:center;font-family:'Geist Logo','Archivo',sans-serif;font-weight:700;font-size:14px;letter-spacing:-.01em;color:var(--text)}
.brand small{display:block;font-size:10px;color:var(--text-secondary);margin-top:3px;letter-spacing:.02em}
.brand-dot{display:inline-block;width:5px;height:5px;background:var(--orange);border-radius:1px;margin-left:5px;transform:translateY(-6px)}

nav{display:grid;gap:6px}
.nav-item{border:0;background:transparent;color:var(--text-secondary);text-align:left;padding:12px 13px;border-radius:var(--radius);display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:13px;transition:background var(--fast) ease-out,color var(--fast) ease-out}
.nav-item:hover{background:#ffffff0d;color:var(--text)}
.nav-item.active{background:#ffffff12;color:var(--text);box-shadow:inset 3px 0 var(--orange)}
.nav-count{font-size:11px;color:var(--orange-soft);background:#ffffff14;border-radius:20px;padding:1px 7px}

.sidebar-foot{margin-top:auto;border-top:1px solid var(--border-soft);padding-top:16px;color:var(--text-secondary);font-size:12px}
.sidebar-foot small{display:block;margin:6px 0 0 17px;color:#6b6b6b}
.status-dot{width:8px;height:8px;border-radius:50%;background:var(--status-nouveau);display:inline-block;margin-right:9px}
.status-dot-on{background:var(--status-signe)}
.sidebar-foot .button{margin-top:12px;width:100%;color:var(--text-warm);border-color:var(--border)}

.main-content{max-width:1440px;width:100%;padding:38px 52px}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px;gap:16px;flex-wrap:wrap}
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-secondary);margin:0 0 8px;font-weight:600}
.topbar h1,#page-title{
  margin:0;font-family:'Archivo',sans-serif;font-weight:800;font-stretch:72%;
  text-transform:uppercase;line-height:.9;letter-spacing:-.01em;
  font-size:clamp(2.2rem,1.4rem + 2.4vw,3.2rem);color:var(--text)
}

.button{border:1px solid var(--border);border-radius:var(--radius);padding:10px 16px;background:var(--bg-card);color:var(--text-warm);font-weight:600;font-size:13px;transition:transform var(--fast) var(--ease),background var(--fast) ease-out,border-color var(--fast) ease-out}
.button:hover{border-color:#ffffff33}
.button:active{transform:translateY(1px)}
.button-primary{background:var(--orange-cta);border-color:var(--orange-cta);color:#fff}
.button-primary:hover{background:var(--orange-cta-hover);border-color:var(--orange-cta-hover)}
.button-quiet{background:transparent}
.button-quiet:hover{background:#ffffff0d}

.notice{border:1px solid rgba(255,75,31,.25);background:rgba(255,75,31,.08);color:var(--orange-soft);padding:12px 15px;border-radius:var(--radius);font-size:13px;margin-bottom:22px}

.filters{display:flex;align-items:end;gap:12px;border-bottom:1px solid var(--border-soft);padding-bottom:20px;margin-bottom:28px;flex-wrap:wrap}
.filters label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}
select,input,textarea{display:block;margin-top:7px;border:1px solid var(--border);background:var(--bg-card);border-radius:var(--radius);padding:10px 11px;color:var(--text-warm);min-width:180px;transition:border-color var(--fast) ease-out,box-shadow var(--fast) ease-out}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 3px rgba(255,75,31,.18)}
.filters .button{margin-left:auto}

.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px}
.metric,.panel,.deal-card,.contact-row{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius)}
.metric{padding:18px;animation:fadeSlideIn 220ms var(--ease) backwards}
.metric:nth-child(2){animation-delay:30ms}
.metric:nth-child(3){animation-delay:60ms}
.metric:nth-child(4){animation-delay:90ms}
.metric span{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}
.metric strong{display:block;font-family:'Archivo',sans-serif;font-weight:800;font-stretch:80%;font-size:30px;margin-top:9px;color:var(--text)}

.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:13px;gap:12px;flex-wrap:wrap}
.section-head h2{margin:0;font-family:'Archivo',sans-serif;font-weight:800;font-stretch:78%;text-transform:uppercase;letter-spacing:-.005em;font-size:22px;color:var(--text)}
.section-head p{font-size:12px;color:var(--text-secondary);margin:0}

.deal-list{display:grid;gap:10px}
.deal-card{padding:16px;display:grid;grid-template-columns:1.2fr 1fr 1fr auto;align-items:center;gap:18px;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),border-color var(--fast) ease-out;animation:fadeSlideIn 220ms var(--ease) backwards}
.deal-card:hover{transform:translateY(-2px);box-shadow:0 10px 30px rgba(0,0,0,.4);border-color:#ffffff22}
.deal-title{font-weight:700;color:var(--text)}
.deal-sub{color:var(--text-secondary);font-size:12px;margin-top:5px}

.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;background:var(--bg-card-elevated);font-size:11px;color:var(--text-warm);border:1px solid var(--border-soft)}
.tag::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--text-secondary);flex:none}
.tag.orange{background:rgba(255,75,31,.12);color:var(--orange-soft);border-color:rgba(255,75,31,.28)}
.tag.orange::before{background:var(--orange)}
.tag-nouveau::before{background:var(--status-nouveau)}
.tag-qualifie::before{background:var(--status-qualifie)}
.tag-devis::before{background:var(--status-devis)}
.tag-envoye::before{background:var(--status-envoye)}
.tag-negociation::before{background:var(--status-negociation)}
.tag-signe::before{background:var(--status-signe)}
.tag-perdu::before{background:var(--status-perdu)}

.card-action{color:var(--orange);font-size:12px;font-weight:700;border:0;background:none;transition:color var(--fast) ease-out}
.card-action:hover{color:var(--orange-soft)}

.empty{padding:54px 20px;text-align:center;border:1px dashed var(--border);border-radius:var(--radius)}
.empty h3{font-family:'Archivo',sans-serif;font-weight:800;font-stretch:80%;text-transform:uppercase;font-size:20px;margin:0 0 8px;color:var(--text)}
.empty p{color:var(--text-secondary);font-size:13px;margin:0 0 17px}

.pipeline{display:grid;grid-template-columns:repeat(6,minmax(160px,1fr));gap:10px;overflow:auto}
.stage{min-height:290px;border-top:2px solid var(--status-nouveau);padding-top:2px}
.stage:nth-child(1){border-top-color:var(--status-nouveau)}
.stage:nth-child(2){border-top-color:var(--status-qualifie)}
.stage:nth-child(3){border-top-color:var(--status-devis)}
.stage:nth-child(4){border-top-color:var(--status-envoye)}
.stage:nth-child(5){border-top-color:var(--status-negociation)}
.stage:nth-child(6){border-top-color:var(--status-signe)}
.stage:nth-child(7){border-top-color:var(--status-perdu)}
.stage-head{display:flex;justify-content:space-between;padding:11px 5px;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.06em}
.stage-count{background:var(--bg-card-elevated);border-radius:20px;padding:2px 8px;color:var(--text-warm)}
.stage .deal-card{display:block;margin-bottom:9px;padding:13px}
.stage .deal-sub{margin-bottom:11px}
.stage select{width:100%;margin-bottom:9px;min-width:0}

.panel{padding:18px}
.contact-row{padding:15px;display:grid;grid-template-columns:1.3fr 1.2fr 1fr auto;gap:15px;align-items:center;animation:fadeSlideIn 220ms var(--ease) backwards}
.contact-list{display:grid;gap:9px}

.dialog-head{display:flex;justify-content:space-between;align-items:start}
.dialog-head h2{font-family:'Archivo',sans-serif;font-weight:800;font-stretch:76%;text-transform:uppercase;font-size:24px;margin:0 0 22px;color:var(--text)}
.icon-button{border:0;background:transparent;font-size:24px;color:var(--text-secondary);line-height:1;transition:color var(--fast) ease-out}
.icon-button:hover{color:var(--text)}

dialog{border:0;border-radius:var(--radius);padding:26px;max-width:700px;width:calc(100% - 30px);box-shadow:0 30px 90px rgba(0,0,0,.6);background:var(--bg-card);color:var(--text-warm)}
dialog[open]{animation:dialogIn 200ms var(--ease)}
dialog::backdrop{background:rgba(0,0,0,.7);animation:backdropIn 200ms ease-out}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.form-grid label{font-size:12px;color:var(--text-secondary)}
.form-grid input,.form-grid select{width:100%;min-width:0}
.form-grid .full{grid-column:1/-1}
.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}

.interaction-form{margin-top:18px;padding-top:18px;border-top:1px solid var(--border-soft);display:grid;gap:12px}
.interaction-form label{font-size:12px;color:var(--text-secondary);display:block}
.interaction-list{margin-top:16px}
.interaction-item{padding:10px 0;border-bottom:1px solid var(--border-soft);font-size:13px;color:var(--text-warm)}
.interaction-item small{display:block;color:var(--text-secondary);font-size:11px;margin-top:4px}
.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;font-size:12px;color:var(--text-secondary)}
.detail-meta strong{display:block;color:var(--text-warm);font-size:14px;margin-top:3px;font-weight:600}

@media(max-width:900px){
  .sidebar{width:190px}
  .main-content{padding:28px 24px}
  .metrics{grid-template-columns:repeat(2,1fr)}
  .deal-card{grid-template-columns:1fr 1fr}
  .filters{flex-wrap:wrap}
  .filters .button{margin-left:0}
}
@media(max-width:620px){
  .app-shell{display:block}
  .sidebar{width:auto;padding:16px;border-right:0;border-bottom:1px solid var(--border-soft)}
  .brand{margin-bottom:18px}
  .sidebar nav{display:flex}
  .sidebar-foot{display:none}
  .main-content{padding:24px 16px}
  .topbar{align-items:start;gap:12px}
  .topbar h1,#page-title{font-size:1.9rem}
  .topbar .button{font-size:12px}
  .filters{display:grid;grid-template-columns:1fr 1fr}
  .filters select{min-width:0;width:100%}
  .filters .button{grid-column:1/-1}
  .metrics{grid-template-columns:1fr 1fr;gap:8px}
  .metric strong{font-size:22px}
  .form-grid{grid-template-columns:1fr}
  .form-grid .full{grid-column:auto}
  .contact-row{grid-template-columns:1fr 1fr}
  .detail-meta{grid-template-columns:1fr}
}

/* ============================================================
   Écran de connexion
   ============================================================ */
.login-screen{min-height:100vh;display:grid;place-items:center;background:var(--bg)}
.login-card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius);box-shadow:0 30px 90px rgba(0,0,0,.5);padding:32px;width:100%;max-width:360px;display:grid;gap:14px;animation:fadeSlideIn 260ms var(--ease)}
.login-card label{font-size:12px;color:var(--text-secondary);display:block}
.login-card input{width:100%}
.login-error{color:#E58787;font-size:12px;margin:0}

/* ===== Module workflow (lot 2) : brief, devis, projet, grille. Tokens de la charte uniquement. ===== */
.wf-today{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0 0 28px}
.wf-today-group{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:4px 12px 10px;animation:fadeSlideIn 220ms var(--ease) both}
.wf-today-group.wf-demande_non_assignee,.wf-today-group.wf-devis_a_valider{border-top:2px solid var(--orange)}
.wf-today-group.wf-facture_en_retard{border-top:2px solid var(--status-perdu)}
.wf-today-row{display:block;width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--border-soft);padding:9px 2px;color:var(--text-warm);font:inherit;font-size:13px;cursor:pointer;transition:color var(--fast) var(--ease)}
.wf-today-row:hover{color:var(--orange)}
.wf-today-row small{display:block;color:var(--text-secondary);font-size:11px;margin-top:2px}
.wf-block{margin:22px 0 6px;padding-top:18px;border-top:1px solid var(--border)}
.wf-h{font-weight:800;font-stretch:80%;text-transform:uppercase;font-size:1.15rem;line-height:.95;margin:0 0 12px;color:var(--text)}
.wf-sub{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:20px 0 8px;font-weight:600}
.wf-missing,.wf-ok{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px;font-size:13px;color:var(--text-secondary)}
.wf-items{margin-top:16px}
.wf-item,.wf-line{display:grid;grid-template-columns:1.4fr 1.2fr 1fr auto auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--border-soft);font-size:13px}
.wf-line{grid-template-columns:2fr .8fr 110px auto 110px}
.wf-line input{padding:6px 8px}
.wf-line strong,.wf-item strong{text-align:right;font-variant-numeric:tabular-nums}
.wf-todo{color:var(--orange)}
.wf-item-form{display:grid;grid-template-columns:1.4fr 1.4fr .8fr .8fr .6fr auto;gap:8px;margin-top:10px}
.wf-quote{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:4px 14px 12px;margin-bottom:12px}
.wf-quote.refuse{opacity:.55}
.wf-quote.accepte{border-color:var(--status-signe)}
.wf-flows{display:flex;flex-wrap:wrap;gap:6px}
.wf-grid{display:grid;gap:8px}
.wf-grid-card{background:var(--bg-card);border:1px solid var(--border-soft);border-radius:var(--radius);padding:12px 14px;animation:fadeSlideIn 220ms var(--ease) both}
.wf-grid-row{display:grid;grid-template-columns:2fr 1fr 1.2fr 1fr auto;gap:12px;align-items:end}
.wf-tiers{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid var(--border-soft)}
.wf-tier-form{display:flex;gap:6px;flex-wrap:wrap}
.wf-tier-form input{width:150px;padding:6px 8px}
.wf-x{background:none;border:0;color:var(--text-secondary);cursor:pointer;margin-left:6px;font:inherit}
.wf-x:hover{color:var(--orange)}
.wf-gap{margin-top:28px}
.wf-grid-row label{display:grid;gap:6px;font-size:11px;color:var(--text-secondary)}
.button[disabled]{opacity:.45;cursor:not-allowed}
@media(max-width:620px){
  .wf-item,.wf-line,.wf-item-form,.wf-grid-row{grid-template-columns:1fr 1fr}
  .wf-item-form .button,.wf-grid-row .button{grid-column:1/-1}
}
