*{box-sizing:border-box} :root{--ink:#171b22;--muted:#667085;--line:#e6e9ee;--paper:#fff;--soft:#f6f7f9;--fire:#d85030;--fire-dark:#aa3d25;--green:#1f8a59;--blue:#275dae;--danger:#b42318;--radius:14px;--shadow:0 8px 30px rgba(20,25,35,.08)}
body{margin:0;background:var(--soft);color:var(--ink);font:15px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{position:sticky;top:0;z-index:10;display:flex;gap:20px;align-items:center;padding:13px 26px;background:#151b25;color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.15)}.brand{color:#fff;text-decoration:none;display:flex;align-items:center;gap:8px;font-weight:800;white-space:nowrap}.brand small{font-weight:400;opacity:.7;border-left:1px solid #526071;padding-left:8px}.nav-links{display:flex;gap:4px;flex:1;overflow:auto}.nav-links a{color:#d9e0ea;text-decoration:none;padding:8px 10px;border-radius:8px;white-space:nowrap}.nav-links a:hover,.nav-links a.active{color:#fff;background:#293445}.logout{margin:0}.main{max-width:1240px;margin:0 auto;padding:28px 18px 60px}.page-heading{display:flex;justify-content:space-between;gap:18px;align-items:start;margin:0 0 22px}.page-heading h1{font-size:26px;margin:0}.page-heading p{margin:5px 0 0;color:var(--muted)}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);margin-bottom:20px}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff}.kpi span{color:var(--muted);font-size:13px}.kpi strong{display:block;font-size:25px;margin-top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:9px;background:var(--fire);color:#fff;padding:10px 14px;font-weight:700;text-decoration:none;cursor:pointer;line-height:1.2}.btn:hover{background:var(--fire-dark)}.btn-secondary{background:#344054}.btn-secondary:hover{background:#1f2937}.btn-success{background:var(--green)}.btn-ghost{background:transparent;border:1px solid #536175;color:#fff}.btn-danger{background:var(--danger)}.btn-small{padding:7px 10px;font-size:13px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.full{grid-column:1/-1}label{display:block;font-weight:700;font-size:13px;margin:0 0 5px}input,textarea,select{width:100%;padding:10px 11px;border:1px solid #cfd6df;border-radius:9px;background:#fff;color:var(--ink);font:inherit}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:3px solid rgba(216,80,48,.14);border-color:var(--fire)}.help{font-size:12px;color:var(--muted);margin-top:4px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid var(--line);padding:11px 10px;vertical-align:middle;text-align:left}.table th{font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.03em}.badge{display:inline-block;padding:3px 8px;background:#edf2ff;color:#1e4b9b;border-radius:100px;font-size:12px;font-weight:800}.badge-muted{background:#f0f1f3;color:#596273}.badge-ok{background:#e8f7ee;color:#137744}.badge-warn{background:#fff4e5;color:#9b5c00}.alert{padding:13px 15px;border-radius:10px;margin:0 0 14px;font-weight:600}.alert-success{background:#eaf8ef;color:#176b40;border:1px solid #bfe4cc}.alert-danger{background:#fff0ef;color:#9d201a;border:1px solid #f4c4c1}.alert-info{background:#eef4ff;color:#1b4a92;border:1px solid #c8d9f8}.empty{padding:36px 20px;text-align:center;color:var(--muted);border:1px dashed #cdd3dc;border-radius:12px}.category-row{display:grid;grid-template-columns:34px minmax(180px,1fr) 105px 115px 1fr auto;gap:13px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:12px;background:#fff;margin-bottom:9px}.category-row.inactive{opacity:.56}.drag-handle{font-size:21px;color:#8e99a7}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:#17a85b}.status-dot.off{background:#98a2b3}.product-photo{width:56px;height:56px;border-radius:10px;background:#f1f3f5;object-fit:cover}.wizard-shell{max-width:1050px;margin:auto}.wizard-head{background:#1b232f;color:#fff;border-radius:16px;padding:22px 24px;margin-bottom:20px}.wizard-head h1{margin:0;font-size:25px}.wizard-head p{margin:5px 0 0;color:#ced6e1}.steps{display:flex;gap:8px;overflow:auto;margin-top:18px;padding-bottom:2px}.step-pill{border:1px solid #485565;border-radius:999px;padding:7px 11px;font-size:12px;white-space:nowrap;color:#cdd5df}.step-pill.active{background:var(--fire);border-color:var(--fire);color:#fff}.wizard-panel{display:none}.wizard-panel.active{display:block}.step-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:16px}.step-top h2{margin:0;font-size:23px}.step-top p{color:var(--muted);margin:0}.catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.product-card{border:2px solid var(--line);border-radius:13px;padding:14px;background:#fff;transition:.15s}.product-card.selected{border-color:var(--fire);box-shadow:0 0 0 3px rgba(216,80,48,.1)}.product-card h3{font-size:17px;margin:0 0 4px}.product-card p{font-size:13px;color:var(--muted);margin:0 0 12px;min-height:37px}.product-card .price{font-weight:850;color:var(--fire);font-size:18px}.specs{font-size:12px;color:#475467;margin:8px 0}.qty-box{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.qty-control{display:flex;align-items:center;gap:7px}.qty-control button{border:1px solid #cfd6df;background:#fff;border-radius:8px;width:31px;height:31px;font-size:18px;cursor:pointer}.qty-control input{width:55px;text-align:center;padding:6px}.wizard-actions{display:flex;justify-content:space-between;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.summary-line{display:grid;grid-template-columns:1fr 85px 130px;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.summary-line span:last-child{text-align:right;font-weight:700}.totals{margin-left:auto;max-width:390px;margin-top:18px;border-top:2px solid var(--ink);padding-top:10px}.total-row{display:flex;justify-content:space-between;padding:5px 0}.total-row.grand{font-size:21px;font-weight:900;color:var(--fire);padding-top:12px}.quote-page{background:#fff;max-width:920px;margin:0 auto;padding:42px}.quote-header{display:flex;justify-content:space-between;border-bottom:2px solid var(--fire);padding-bottom:20px;margin-bottom:24px}.quote-header h1{margin:0;color:var(--fire)}.quote-columns{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-bottom:22px}.quote-meta{color:var(--muted);font-size:13px}.file-note{font-size:13px;background:#fff8e9;border:1px solid #f4d8a6;padding:12px;border-radius:10px}.login-page{min-height:100vh;display:grid;place-items:center;padding:18px;background:linear-gradient(145deg,#171b22,#3a1d17)}.login-card{width:min(430px,100%);background:#fff;border-radius:18px;padding:32px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.login-card h1{margin:0 0 8px}.login-card p{color:var(--muted);margin:0 0 24px}.hidden{display:none!important}@media(max-width:840px){.topbar{align-items:flex-start;flex-wrap:wrap;padding:13px 15px}.nav-links{order:3;width:100%}.grid-2,.grid-3,.grid-4,.form-grid,.form-grid-3,.quote-columns{grid-template-columns:1fr}.category-row{grid-template-columns:30px 1fr auto;gap:8px}.category-row .cat-extra{display:none}.category-row form{grid-column:2/-1}.main{padding:20px 12px}.page-heading{flex-direction:column}.quote-page{padding:22px 14px}.summary-line{grid-template-columns:1fr 55px 110px}}@media print{body{background:#fff}.topbar,.no-print,.alert{display:none!important}.main{padding:0}.quote-page{box-shadow:none;padding:0;max-width:none}.card{box-shadow:none;border:0;padding:0}}


/* ===== PWA / TABLETTE ===== */
.topbar-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-left:auto}.topbar-tools .logout{margin:0}.btn-install{background:#1f8a59;white-space:nowrap}.btn-install:hover{background:#187248}.app-page{min-height:100vh;min-height:100dvh}.app-page .main{padding-bottom:calc(60px + env(safe-area-inset-bottom))}@media (pointer:coarse){.btn{min-height:44px;padding:11px 16px}.btn-small{min-height:40px;padding:9px 12px}input,textarea,select{min-height:44px;font-size:16px}.nav-links a{min-height:42px;display:inline-flex;align-items:center}.qty-control button{width:42px;height:42px;font-size:23px}.qty-control input{height:42px;width:64px}.product-card{padding:17px}.wizard-actions{position:sticky;bottom:0;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);padding-bottom:calc(14px + env(safe-area-inset-bottom));z-index:3}}
@media (max-width:1024px){.topbar{gap:12px;padding:12px 16px}.brand small{display:none}.nav-links{order:3;flex-basis:100%;width:100%}.topbar-tools{margin-left:auto}.main{padding:20px 14px 48px}.card{padding:18px}.catalog{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}
@media (max-width:640px){.topbar{padding-top:calc(12px + env(safe-area-inset-top))}.brand{font-size:14px}.topbar-tools{width:100%;justify-content:space-between}.topbar-tools .btn-install{flex:1}.topbar-tools .logout{flex:0 0 auto}.topbar-tools .logout .btn{padding-inline:12px}.wizard-head{padding:18px}.wizard-head h1{font-size:21px}.step-top{align-items:flex-start;flex-direction:column}.step-top .badge{align-self:flex-start}}
@media screen and (display-mode:standalone){.topbar{padding-top:calc(13px + env(safe-area-inset-top))}.login-page{padding-top:calc(18px + env(safe-area-inset-top));padding-bottom:calc(18px + env(safe-area-inset-bottom))}}


/* ===== MODE TERRAIN HORS LIGNE ===== */
.offline-page{background:linear-gradient(145deg,#f6f7f9 0%,#edf2f5 100%);min-height:100vh;min-height:100dvh}.offline-main{max-width:1120px;margin:0 auto;padding:28px 18px calc(54px + env(safe-area-inset-bottom))}.offline-header{display:flex;justify-content:space-between;align-items:flex-start;gap:22px;background:#1b232f;color:#fff;border-radius:18px;padding:24px 26px;margin-bottom:18px;box-shadow:var(--shadow)}.offline-brand{font-size:13px;font-weight:900;letter-spacing:.05em;color:#ffc1b1}.offline-header h1{margin:4px 0 4px;font-size:28px}.offline-header p{margin:0;color:#d6dee9}.connection-state{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:999px;background:#475467;color:#fff;font-size:13px;font-weight:800;white-space:nowrap}.connection-state:before{content:"";width:9px;height:9px;border-radius:50%;background:#fbbf24}.connection-state.online{background:#e8f7ee;color:#137744}.connection-state.online:before{background:#22c55e}.connection-state.offline{background:#fff4e5;color:#9b5c00}.connection-state.offline:before{background:#f59e0b}.offline-notice{padding:13px 15px;border-radius:12px;margin:0 0 16px;font-weight:650;border:1px solid var(--line)}.offline-notice.info{background:#eef4ff;color:#1b4a92;border-color:#c8d9f8}.offline-notice.success{background:#eaf8ef;color:#176b40;border-color:#bfe4cc}.offline-notice.warn{background:#fff8e9;color:#875600;border-color:#f4d8a6}.offline-summary{display:flex;justify-content:space-between;align-items:center;gap:18px}.offline-summary h2{margin:0}.offline-summary p{margin:6px 0 0}.offline-empty{max-width:700px;margin:45px auto}.wizard-offline-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.wizard-offline-top .btn-ghost{background:transparent;color:#fff;border:1px solid #607083}.wizard-offline-top .btn-ghost:hover{background:#2e3949}.offline-page .wizard-head{position:sticky;top:0;z-index:6;border-radius:16px 16px 0 0}.offline-page .wizard-panel .card{border-top-left-radius:0;border-top-right-radius:0}@media(max-width:840px){.offline-header,.offline-summary{align-items:stretch;flex-direction:column}.offline-header{padding:20px}.connection-state{align-self:flex-start}.offline-main{padding:15px 12px calc(44px + env(safe-area-inset-bottom))}.offline-summary .toolbar{width:100%}.offline-summary .toolbar .btn{flex:1}.wizard-offline-top{flex-direction:column}.offline-page .wizard-head{top:0}}


/* ===== VERSION INSTALLÉE ===== */
.app-footer{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px max(18px,calc((100vw - 1240px)/2));border-top:1px solid var(--line);background:#fff;color:var(--muted);font-size:12px;margin-top:30px}.app-footer strong{color:var(--ink)}.step-pill.done{background:#eef8f1;border-color:#aee0be;color:#176b40}@media(max-width:640px){.app-footer{align-items:flex-start;flex-direction:column;padding-bottom:calc(14px + env(safe-area-inset-bottom))}.wizard-actions{flex-direction:column-reverse}.wizard-actions .btn{width:100%}}
.offline-footer{margin-top:20px;text-align:center;color:var(--muted);font-size:12px;padding-bottom:env(safe-area-inset-bottom)}
