
:root{--bg:#0c1015;--panel:#151b22;--panel2:#1c242e;--line:#303944;--text:#f3f6f9;--muted:#8f9ba8;--accent:#49d39a;--blue:#67aef9;--orange:#e3ad5b;--red:#ef7770}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px "Segoe UI",Arial,sans-serif}
.topbar{padding:14px 28px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;background:#090d11}
.brand{font-size:27px;font-weight:800}.subtitle{font-size:12px;color:var(--muted);margin-top:2px}.badge{border:1px solid var(--line);border-radius:999px;padding:7px 11px;color:var(--accent);font-size:11px}
.nav{display:flex;gap:5px;padding:9px 28px;border-bottom:1px solid var(--line);background:#090d11;position:sticky;top:0;z-index:10}
.nav a{padding:9px 13px;border-radius:7px;text-decoration:none;color:var(--muted)}.nav a:hover,.nav a.active{background:var(--panel);color:var(--text)}
.container{max-width:1600px;margin:auto;padding:22px 28px 50px}.hero{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:18px}
h1{font-size:27px;margin:0 0 4px}h2{font-size:17px;margin:0}p{margin:0;color:var(--muted)}
.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.filters.compact input{min-width:260px}.periods{display:flex;gap:4px}
input,select,button,.button{background:var(--panel2);color:var(--text);border:1px solid var(--line);padding:9px 11px;border-radius:7px}
button,.button{cursor:pointer;text-decoration:none}button:hover,.button:hover{border-color:#667383}.periods button.active,.primary{background:var(--accent);border-color:var(--accent);color:#07150f;font-weight:700}
.cards{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:11px;margin-bottom:17px}.cards.detail{grid-template-columns:repeat(4,1fr)}
.card{padding:16px;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:11px;min-height:88px}
.card.emphasis{border-color:#416658}.card.good strong{color:var(--accent)}.card span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.card strong{font-size:25px;display:block}.card small{color:var(--muted);font-size:10px;margin-top:3px;display:block}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:16px;margin-bottom:16px;overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;color:var(--muted);margin-bottom:12px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12.5px}th{text-align:left;color:var(--muted);font-weight:600;padding:9px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:9px;border-bottom:1px solid #242c35;white-space:nowrap}
tr.clickable:hover{background:var(--panel2);cursor:pointer}.restrow{background:#342c1d}.restrow td:first-child{color:var(--orange);font-weight:700}
.flash{padding:11px 13px;background:#153728;border:1px solid #2d6b4d;border-radius:8px;margin-bottom:16px;color:#c8f7df}.muted,.range{color:var(--muted)}.range{margin:-5px 0 12px;font-size:12px}
.custom{display:flex;gap:9px;align-items:center;margin:-5px 0 14px}.hidden{display:none}.upload form{display:flex;gap:9px;align-items:center;margin-bottom:12px}.note{background:#10161d;padding:11px;border-radius:8px;color:var(--muted)}
.mono{font-family:Consolas,monospace;font-size:11px}
.daily-chart{min-height:250px;display:flex;align-items:flex-end;gap:5px;padding:20px 4px 0;overflow-x:auto;border-top:1px solid #222a32}
.daycol{min-width:34px;flex:1;max-width:65px;display:flex;flex-direction:column;justify-content:flex-end;height:220px;position:relative}
.bar-piece{background:var(--blue);min-height:2px;border-radius:3px 3px 0 0}.bar-bar{background:var(--accent);min-height:2px;border-radius:3px 3px 0 0;margin-top:2px}
.daylabel{color:var(--muted);font-size:9px;transform:rotate(-45deg);transform-origin:left top;margin-top:8px;white-space:nowrap}.tip{font-size:9px;color:var(--muted);text-align:center;margin-bottom:3px}
.status-active{color:var(--accent)}.status-old{color:var(--orange)}
@media(max-width:1050px){.cards{grid-template-columns:repeat(2,1fr)}.hero{flex-direction:column;align-items:flex-start}}@media(max-width:650px){.cards{grid-template-columns:1fr}.container{padding:18px 12px}.nav{padding-left:12px;overflow:auto}}

.userzone{display:flex;align-items:center;gap:8px}.userlink{color:var(--text);text-decoration:none;font-weight:600}.adminbadge{color:#07150f;background:var(--accent);border-color:var(--accent)}.inline-form{display:inline-flex;align-items:center;gap:5px;margin:0}.logoutbtn{padding:6px 9px;font-size:11px}.danger{background:#4a1f22!important;border-color:#8c3b42!important;color:#ffd9db!important}.danger:hover{background:#61272c!important}.small{padding:6px 8px;font-size:11px}.danger-panel{border-color:#713238}.danger-panel p{margin-bottom:12px}.danger-form{display:flex;gap:8px;align-items:center}.danger-form input{min-width:230px}.authbody{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top,#17212b,var(--bg) 55%)}.authcard{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:28px;box-shadow:0 20px 80px #0008}.authcard.wide{width:min(520px,100%)}.authcard h1{margin-top:20px}.authform{display:grid;gap:12px;margin-top:20px}.authform label{display:grid;gap:5px;color:var(--muted);font-size:12px}.authform input{width:100%}.inline-auth{max-width:520px}.account-panel h2{margin-bottom:10px}.user-create{display:grid;grid-template-columns:1.2fr 1.2fr 1.6fr .9fr auto;gap:8px}.user-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.user-actions input{max-width:170px}@media(max-width:950px){.user-create{grid-template-columns:1fr 1fr}.userzone{flex-wrap:wrap}.danger-form{align-items:stretch;flex-direction:column}}


/* ===== DreamStat V1.0 · Branding Groupe Volet ===== */
.brandwrap{display:flex;align-items:center;gap:18px;min-width:0}
.header-group-logo{width:210px;max-height:54px;object-fit:contain;background:#fff;border-radius:6px;padding:4px 8px}
.brandtexts{min-width:0}
.version-inline{font-size:11px;font-weight:700;color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:3px 7px;vertical-align:middle;margin-left:5px}
.hero-title-row{display:flex;align-items:center;gap:12px}
.hero-v{width:48px;height:48px;object-fit:contain;border-radius:9px;background:#fff}
.selected-company-brand{min-height:42px;min-width:180px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 9px;display:flex;align-items:center;gap:9px;color:#16191d}
.selected-company-brand .selected-logo{width:82px;height:30px}
.selected-company-brand span{display:flex;flex-direction:column}
.selected-company-brand small{color:#666;font-size:10px}
.brand-all{display:block!important;color:#555!important;font-size:12px}
.company-logo{width:54px;height:28px;object-fit:contain;background:#fff;border-radius:5px;padding:2px}
.company-logo-wide{width:100px;height:36px}
.authshell{width:min(980px,94vw);display:grid;grid-template-columns:1.05fr .95fr;background:var(--panel);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.35)}
.authvisual{background:#fff;color:#15191d;padding:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.auth-group-logo{width:min(410px,90%);height:auto;object-fit:contain;margin-bottom:22px}
.pinocchio{width:190px;height:190px;object-fit:contain;border-radius:50%;margin:4px 0 14px}
.authvisual-title{font-size:28px;font-weight:800}
.authvisual-sub{font-size:13px;color:#666;margin-top:5px}
.authshell .authcard{width:auto;max-width:none;border:0;border-radius:0;box-shadow:none;display:flex;flex-direction:column;justify-content:center}
@media(max-width:1050px){
  .header-group-logo{width:150px}
  .selected-company-brand{min-width:145px}
}
@media(max-width:760px){
  .topbar{align-items:flex-start;gap:10px}
  .brandwrap{gap:10px}
  .header-group-logo{width:105px;max-height:42px}
  .brand{font-size:21px}
  .authshell{grid-template-columns:1fr}
  .authvisual{padding:24px}
  .pinocchio{width:130px;height:130px}
}


/* ===== DreamStat V1.1 : PDF + vue chantier + tris ===== */
.pdf-button{background:#fff;color:#16191d;border-color:#d5d8dc;font-weight:700}
.pdf-button:hover{border-color:#ef1b18;color:#ef1b18}
.chantier-filters label{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:5px}
.view-note{background:#121920;border:1px solid var(--line);border-left:3px solid var(--accent);padding:11px 13px;border-radius:8px;margin:-3px 0 15px;color:var(--muted)}
.view-note strong{color:var(--text)}
.sortable-table th.sortable{cursor:pointer;user-select:none;transition:.15s}
.sortable-table th.sortable:hover{color:var(--text);background:#1b242d}
.sort-mark{display:inline-block;min-width:12px;color:var(--accent);font-size:9px}
.numhead{text-align:right}
.detail-btn{padding:5px 8px;font-size:11px;background:transparent}
#chantiersTable td:nth-child(4),
#chantiersTable td:nth-child(5),
#chantiersTable td:nth-child(6){text-align:right}


/* ===== DreamStat V1.7 ===== */
.sort-help{margin-left:14px}
#chantiersTable th.sortable{position:relative;padding-right:20px}
#chantiersTable th.sortable::after{content:"↕";position:absolute;right:6px;opacity:.35;font-size:11px}
#chantiersTable th.sortable:hover::after{opacity:1;color:var(--accent)}
.chantier-row{cursor:pointer}
.chantier-row:hover{background:var(--panel2)}


/* ===== DreamStat V1.7 ===== */
.universal-sort-head{cursor:pointer;user-select:none;position:relative;padding-right:20px!important}
.universal-sort-head::after{content:"↕";position:absolute;right:6px;opacity:.28;font-size:10px}
.universal-sort-head:hover{color:var(--text);background:#1b242d}
.universal-sort-head:hover::after{opacity:.9;color:var(--accent)}
.universal-sort-head.sort-asc::after{content:"▲";opacity:1;color:var(--accent)}
.universal-sort-head.sort-desc::after{content:"▼";opacity:1;color:var(--accent)}
.table-sort-hint{color:var(--muted);font-size:11px;margin:-5px 0 8px;text-align:right}
.open-pieces-btn{padding:6px 9px;font-size:11px;background:var(--accent);border-color:var(--accent);color:#07150f;font-weight:700}
.open-pieces-btn:hover{filter:brightness(1.08)}


/* ===== DreamStat V1.7 : sous-totaux ===== */
.data-health{border:1px solid var(--line);background:var(--panel);padding:9px 12px;border-radius:8px;color:var(--muted)}
.data-health strong{color:var(--accent)}
.subtotal-row{background:#202a34}
.subtotal-row td{border-top:2px solid #4a5866;border-bottom:2px solid #4a5866}
.company-total td:first-of-type,.chantier-total td:first-of-type{border-left:3px solid var(--accent)}
.grand-total-row{background:#2b3540}
.grand-total-row td{border-top:3px double var(--accent);font-size:13px}
.grand-total-row strong{color:var(--text)}


/* ===== DreamStat V1.7 : versions + Setup + graphiques ===== */
.version-link{text-decoration:none}
.version-link:hover{border-color:var(--accent);background:rgba(73,211,154,.10)}
.version-history{display:grid;gap:12px}
.version-card{display:grid;grid-template-columns:90px 1fr;gap:18px;align-items:start;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px}
.version-card.current-version{border-color:var(--accent)}
.version-number{font-size:23px;font-weight:800;color:var(--accent)}
.version-card h2{margin:1px 0 6px}
.version-card p{line-height:1.45}
.setup-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px}
.setup-grid label>span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}
.setup-grid select{width:100%}
.setup-checks{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:8px}
.setup-check{display:flex;gap:8px;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:9px 11px}
.setup-check input{width:auto}
.graph-head{align-items:flex-start}
.graph-controls{display:flex;gap:7px}
.chart-v15{min-height:270px}
.single-metric{background:var(--accent)}
.line-chart-scroll{width:100%;overflow-x:auto}
.line-chart-svg{width:100%;height:250px}
.line-chart-svg .axis-line{stroke:#3c4651;stroke-width:1}
.line-chart-svg .data-line{fill:none;stroke:var(--accent);stroke-width:2.5}
.line-chart-svg circle{fill:var(--accent);stroke:var(--panel);stroke-width:2}
.line-chart-svg text{fill:var(--muted);font-size:9px}
@media(max-width:800px){
  .setup-grid{grid-template-columns:1fr}
  .setup-checks{grid-template-columns:1fr}
  .graph-head{flex-direction:column;gap:12px}
}


/* ===== DreamStat V1.7 : LISTE unique 1–9 ===== */
.list-hero{align-items:flex-start}
.preset-strip{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.preset-slot{width:58px;height:48px;padding:4px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px}
.preset-slot strong{font-size:16px}
.preset-slot span{font-size:8px;color:var(--muted);max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preset-slot.active{background:var(--accent);border-color:var(--accent);color:#07150f}
.preset-slot.active span{color:#153526}
.list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 11px}
.list-toolbar-left,.list-toolbar-right{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.list-toolbar label{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px}
.list-toolbar input#listSearch{min-width:200px}
.list-count{color:var(--muted);font-size:11px}
.list-info{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:11px;margin-bottom:8px}
.keyboard-hint b{color:var(--accent)}
.universal-list-panel{padding-top:6px}
.list-sort-head{cursor:pointer;user-select:none;position:relative;padding-right:20px!important}
.list-sort-head::after{content:"↕";position:absolute;right:6px;opacity:.26;font-size:10px}
.list-sort-head.sort-asc::after{content:"▲";opacity:1;color:var(--accent)}
.list-sort-head.sort-desc::after{content:"▼";opacity:1;color:var(--accent)}
.total-label{white-space:nowrap!important}
.preset-setup-table{display:grid;gap:6px;overflow-x:auto}
.preset-setup-head,.preset-setup-row{display:grid;grid-template-columns:40px minmax(120px,1.2fr) minmax(115px,1fr) 90px 105px 125px 105px 110px;gap:6px;align-items:center;min-width:940px}
.preset-setup-head{font-size:10px;color:var(--muted);padding:0 5px}
.preset-setup-row{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:7px}
.preset-setup-row>strong{text-align:center;color:var(--accent);font-size:17px}
.preset-setup-row input,.preset-setup-row select{width:100%;min-width:0}
.setup-help{margin-bottom:12px}
@media(max-width:900px){
  .list-toolbar{align-items:flex-start;flex-direction:column}
  .preset-strip{justify-content:flex-start}
}


/* ===== DreamStat V1.7 : Corrections ADMIN ===== */
.admin-only-row{background:rgba(227,173,91,.09)}
.admin-only-row td:first-child{border-left:3px solid var(--orange)}
.rule-form{display:contents}
.rule-form input[name="canonical_name"]{min-width:210px;width:100%}
.rule-actions{display:flex;gap:5px;align-items:center}
.admin-only-toggle{display:flex;align-items:center;gap:7px;white-space:nowrap}
.admin-only-toggle input{width:auto}
.similar-grid{display:grid;grid-template-columns:repeat(2,minmax(300px,1fr));gap:8px}
.similar-card{display:grid;grid-template-columns:45px 1fr 24px 1fr 55px;gap:6px;align-items:center;background:var(--panel2);border:1px solid var(--line);padding:9px;border-radius:8px}
.similar-card>strong{color:var(--accent)}
.similar-card>b{text-align:right;color:var(--orange)}
.similar-arrow{text-align:center;color:var(--muted)}
@media(max-width:900px){.similar-grid{grid-template-columns:1fr}}
