:root{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:#172033;background:#f4f6f9}*{box-sizing:border-box}body{margin:0}.hidden{display:none!important}.login-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#101827,#253756)}.login-card{width:min(420px,92vw);background:#fff;padding:34px;border-radius:16px;box-shadow:0 18px 60px #0005}.brand{font-weight:800;font-size:22px;letter-spacing:.2px}.brand span{font-weight:500}.login-card h1{margin:28px 0 8px}.login-card p{color:#667085;margin:0 0 22px}label{display:block;font-size:13px;font-weight:650;margin:14px 0 6px}input,select,textarea{width:100%;padding:10px 12px;border:1px solid #ccd3df;border-radius:8px;background:#fff;font:inherit}textarea{min-height:100px}button{border:0;border-radius:8px;padding:10px 14px;font-weight:700;cursor:pointer;background:#1e5eff;color:white}.login-card button{width:100%;margin-top:18px}.secondary{background:#eef2f7;color:#263247}.error{color:#b42318;margin-top:12px}.app{min-height:100vh;display:grid;grid-template-columns:235px 1fr}.sidebar{background:#101827;color:#fff;padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar nav{display:grid;gap:6px;margin-top:32px}.sidebar nav button{background:transparent;text-align:left;color:#cad2df;padding:11px 12px}.sidebar nav button:hover,.sidebar nav button.active{background:#21304a;color:#fff}.sidebar-foot{margin-top:auto;font-size:12px;color:#aeb8c8;display:grid;gap:12px}.sidebar-foot button{width:100%}main{min-width:0;padding:28px 34px}header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}header h1{margin:0;font-size:25px}#page-subtitle{color:#667085;font-size:13px;margin-top:4px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.card,.panel{background:#fff;border:1px solid #e2e6ed;border-radius:12px;padding:18px}.card .n{font-size:29px;font-weight:800}.card .l{font-size:13px;color:#667085;margin-top:4px}.panel{margin-top:16px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.toolbar .spacer{flex:1}.toolbar input,.toolbar select{width:auto;min-width:180px}.table-wrap{overflow:auto;border:1px solid #e2e6ed;border-radius:10px;background:#fff}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #edf0f4;vertical-align:top}th{background:#f8f9fb;color:#475467;font-size:12px;position:sticky;top:0}tr:hover td{background:#fbfcfe}.pill{display:inline-block;padding:3px 8px;border-radius:999px;background:#eef2f7;font-size:11px;font-weight:700}.ok{background:#e7f6ec;color:#137a3b}.warn{background:#fff4d8;color:#8a5b00}.bad{background:#feeceb;color:#b42318}.actions{display:flex;gap:6px}.actions button{padding:6px 9px;font-size:12px}.notice{padding:11px 14px;border-radius:8px;background:#e8f1ff;color:#174ea6;margin-bottom:15px}.modal{position:fixed;inset:0;background:#11182799;display:grid;place-items:center;padding:20px;z-index:20}.modal-card{background:#fff;width:min(760px,96vw);max-height:90vh;overflow:auto;border-radius:14px;padding:20px}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h2{margin:0}.icon{background:transparent;color:#344054;font-size:24px;padding:4px 8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.muted{color:#667085}.json{white-space:pre-wrap;word-break:break-word;background:#f8f9fb;padding:10px;border-radius:8px}.empty{padding:28px;text-align:center;color:#667085}@media(max-width:820px){.app{grid-template-columns:1fr}.sidebar{height:auto;position:static}.sidebar nav{display:flex;overflow:auto;margin-top:16px}.sidebar-foot{display:none}main{padding:20px}.form-grid{grid-template-columns:1fr}}

.brand-logo{display:flex;align-items:center;gap:10px}.brand-logo img{width:210px;max-height:54px;object-fit:contain;color:#172033}.login-card .brand-logo{display:grid;gap:6px}.login-card .brand-logo img{width:260px}.side-brand{display:grid;gap:4px}.side-brand img{width:190px;color:#fff;filter:none}.side-brand span{font-size:12px;color:#aeb8c8;font-weight:600}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 4px;color:#667085;font-size:12px}.pager-controls{display:flex;align-items:center;gap:8px}.pager-controls label{display:flex;align-items:center;gap:7px;margin:0;font-weight:500}.pager-controls select{width:auto;min-width:70px;padding:6px 8px}.pager-controls button{padding:6px 10px}.pager-controls button:disabled{opacity:.4;cursor:not-allowed}
.nav-group{display:grid;gap:5px}.nav-group+.nav-group{margin-top:14px}.nav-label{padding:0 12px 5px;color:#7f8ca3;font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}.field-help{display:block;margin-top:5px;color:#667085;font-size:11px;font-weight:500}.button-link{display:inline-block;border-radius:8px;padding:10px 14px;font-weight:700;text-decoration:none}.button-link.secondary{background:#eef2f7;color:#263247}.release-note{padding:14px 0;border-bottom:1px solid #edf0f4}.release-note:last-child{border-bottom:0}.release-note p{margin:6px 0;color:#475467}.release-note ul{margin:8px 0 0;padding-left:20px;color:#475467}.about-hero h2{margin-top:0}

/* V0.1.3 — navigation/sidebar hardening */
.sidebar{width:235px;min-width:235px;overflow-y:auto;overflow-x:hidden}
.sidebar nav{display:block;margin-top:24px;width:100%}
.nav-group{display:block;width:100%}
.nav-group+.nav-group{margin-top:18px}
.nav-label{display:block;width:100%;padding:0 12px 7px}
.sidebar nav .nav-group>button{display:block;width:100%;max-width:100%;margin:0 0 4px 0;text-align:left;white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.side-brand{width:100%;gap:8px}
.side-brand img{display:block;width:172px;max-width:100%;height:auto;max-height:92px;object-fit:contain;background:#fff;border-radius:8px;padding:4px}
.login-card .brand-logo img{display:block;width:220px;max-width:100%;height:auto;max-height:none;object-fit:contain;margin:0 auto}
@media(max-width:820px){.sidebar{width:100%;min-width:0}.sidebar nav{display:block;overflow:visible}.nav-group{display:block}.sidebar nav .nav-group>button{width:100%}}

/* V0.1.4 — media, plan placement and sidebar branding */
.side-brand{background:#fff;border-radius:10px;padding:8px;margin-bottom:4px}.side-brand img{width:150px;max-height:110px;padding:0;background:transparent}.side-brand span{color:#344054;text-align:center;font-weight:800}.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px}.photo-card{border:1px solid #e2e6ed;border-radius:10px;padding:10px;display:grid;gap:8px}.photo-preview{background:#eef2f7;color:#263247;min-height:70px;white-space:normal;overflow-wrap:anywhere}.plan-canvas{position:relative;display:inline-block;max-width:100%;border:1px solid #ccd3df;border-radius:10px;overflow:hidden;background:#eef2f7;cursor:crosshair}.plan-canvas>img{display:block;max-width:100%;max-height:68vh;width:auto;height:auto}.beacon-marker{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;padding:0;background:#1e5eff;color:#fff;border:3px solid #fff;box-shadow:0 1px 6px #0007;font-size:16px;line-height:16px}.beacon-marker:hover{transform:translate(-50%,-50%) scale(1.15)}

/* V0.1.5 */
.field-help{font-size:.82rem;opacity:.8;margin-top:.25rem}.field-help.bad{background:transparent!important;color:#b42318!important;font-weight:650}
/* V0.1.6 */
.tabbar{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.tabbar button{width:auto}.site-summary-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;flex-wrap:wrap}.site-summary-head .cards{margin:0}.status-help{padding:12px;border:1px solid #d8dee9;border-radius:8px;background:#f8fafc;margin-top:12px}.photo-card{border:1px solid #d8dee9;border-radius:8px;padding:10px}.photo-preview{width:100%;min-height:48px}.help-code{font-family:monospace}

/* V0.2.0 persistent notifications + readable plan labels */
#notice{position:fixed;top:18px;right:22px;z-index:2000;max-width:min(520px,calc(100vw - 44px));box-shadow:0 10px 30px #0002;border:1px solid #b8cdf5}
.plan-canvas{position:relative}.plan-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.plan-lines line{stroke:#174ea6;stroke-width:2;vector-effect:non-scaling-stroke}.beacon-marker{z-index:4}.beacon-plan-label{position:absolute;z-index:5;transform:translate(-50%,-50%);background:#fff;color:#172033;border:2px solid #174ea6;border-radius:999px;padding:4px 9px;font-weight:800;box-shadow:0 2px 8px #0003;white-space:nowrap}.catalog-thumb{width:64px;height:48px;object-fit:contain;background:#fff;border:1px solid #e2e6ed;border-radius:7px;padding:3px}

.login-version{margin-top:18px;padding-top:14px;border-top:1px solid #edf0f4;text-align:center;color:#667085;font-size:12px}.login-card button:disabled{opacity:.65;cursor:wait}.login-card .error:not(:empty){margin-top:14px;padding:10px 12px;border-radius:8px;background:#feeceb;border:1px solid #fecdca}.login-card input:focus{outline:2px solid #84adff;outline-offset:1px;border-color:#528bff}
.login-status{margin-top:10px;font-size:12px;color:#475467;min-height:18px}.login-status.error{color:#b42318;font-weight:700}
.plan-lines polyline{fill:none;stroke:#174ea6;stroke-width:2;vector-effect:non-scaling-stroke}
.help-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px}.help-tree{margin-top:0;position:sticky;top:18px;align-self:start}.help-tree button{display:block;width:100%;text-align:left;margin:4px 0;background:#eef2f7;color:#263247}.help-tree button:hover{background:#dfe8f6}@media(max-width:900px){.help-layout{grid-template-columns:1fr}.help-tree{position:static}}

/* V0.4.0 — YDG Radiocom Hub */
.nav-section{margin:8px 0;border-radius:9px;overflow:hidden}.nav-section summary{cursor:pointer;list-style:none;padding:10px 12px;color:#d8dfeb;font-weight:800;font-size:13px;background:#17233a}.nav-section summary::-webkit-details-marker{display:none}.nav-section[open] summary{background:#1c2c48;color:#fff}.nav-section-body{padding:5px 0 2px}.nav-section-body button{padding-left:20px!important;font-size:12px}.hub-welcome{background:linear-gradient(135deg,#fff,#edf3fb);border:1px solid #dde6f2;border-radius:16px;padding:24px;display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.hub-welcome h2{margin:0 0 4px;font-size:28px}.hub-welcome p{margin:0;color:#526174;font-weight:700}.hub-version{font-weight:900;font-size:18px;background:#101827;color:#fff;border-radius:999px;padding:8px 13px}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px}.module-card{background:#fff;color:#172033;border:1px solid #e2e6ed;text-align:left;padding:18px;border-radius:14px;display:grid;grid-template-columns:48px 1fr 20px;align-items:center;gap:12px;box-shadow:0 2px 8px #1018270a}.module-card:hover{border-color:#9db8e6;box-shadow:0 8px 24px #1e5eff14;transform:translateY(-1px)}.module-card b{display:block;font-size:15px}.module-card small{display:block;color:#667085;margin-top:4px;line-height:1.35}.module-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:11px;background:#eaf1ff;color:#174ea6;font-size:22px;font-weight:900}.module-arrow{font-size:26px;color:#98a2b3}.module-hero{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid #e2e6ed;border-radius:14px;padding:20px;margin-bottom:16px}.module-hero h2{margin:0 0 5px}.module-hero p{margin:0;color:#667085}.state-page{min-height:360px;background:#fff;border:1px solid #e2e6ed;border-radius:16px;display:grid;place-items:center;text-align:center;align-content:center;padding:40px}.state-page .state-icon{font-size:56px;margin-bottom:10px}.state-page h2,.state-page h3{margin:4px}.state-page p{max-width:620px;color:#667085}.compact-state{min-height:180px;margin-top:16px}.offer-grid,.tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.offer-card,.tool-card{background:#fff;border:1px solid #e2e6ed;border-radius:13px;padding:18px;color:#172033;text-align:left}.offer-card h3{margin-top:0}.tool-card{display:grid;gap:8px}.tool-card small{color:#667085}.link-card{text-align:left;color:#172033}.quota-panel{display:grid;grid-template-columns:minmax(180px,280px) 1fr 55px;gap:14px;align-items:center}.quota-bar{height:10px;border-radius:999px;background:#edf0f4;overflow:hidden}.quota-bar span{display:block;height:100%;background:#1e5eff}.equipment-sheet{display:grid;grid-template-columns:220px 1fr;gap:22px;align-items:center;margin-bottom:18px}.equipment-visual{display:grid;gap:10px}.equipment-image-wrap{min-height:160px;border:1px solid #e2e6ed;border-radius:12px;background:#f8fafc;display:grid;place-items:center;overflow:hidden}.equipment-image-wrap img{max-width:100%;max-height:240px;object-fit:contain}.equipment-placeholder{font-size:70px;color:#9db8e6}.manufacturer-logo,.detail-logo{max-width:180px;max-height:70px;object-fit:contain}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.detail-grid .panel{margin-top:0}.detail-grid dl{display:grid;grid-template-columns:110px 1fr;gap:8px 12px}.detail-grid dt{color:#667085;font-size:12px}.detail-grid dd{margin:0;font-weight:650}.form-error{margin-top:12px}.development-state{border-top:5px solid #f2b84b}.locked-state{border-top:5px solid #667085}@media(max-width:760px){.equipment-sheet{grid-template-columns:1fr}.quota-panel{grid-template-columns:1fr}.hub-welcome{align-items:flex-start}.module-grid{grid-template-columns:1fr}}
.module-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.module-check{display:grid;grid-template-columns:22px 1fr;column-gap:6px;align-items:start;border:1px solid #e2e6ed;border-radius:9px;padding:10px;margin:0}.module-check input{width:auto;margin-top:3px}.module-check span{grid-column:2;color:#667085;font-size:11px;font-weight:500}


/* V0.4.0a — UX fix inspired by business CRM navigation */
.context-bar{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #e2e6ed;border-radius:12px;padding:9px 12px;margin:-8px 0 18px;min-height:52px}.context-brand{display:flex;align-items:center;gap:9px;min-width:220px}.context-logo{width:34px;height:34px;border-radius:8px;border:1px solid #e2e6ed;background:#f8fafc;display:grid;place-items:center;overflow:hidden;font-weight:900;color:#174ea6}.context-logo img{width:100%;height:100%;object-fit:contain}.context-select{display:flex;align-items:center;gap:6px}.context-select label{margin:0;color:#667085;font-size:11px}.context-select select{min-width:190px;padding:7px 9px}.context-reset{margin-left:auto;padding:7px 10px}.nav-section summary{padding-left:12px}.nav-section summary::before{content:''}.module-icon-svg{width:42px;height:42px;border-radius:12px;background:#edf3ff;display:grid;place-items:center;color:#1e5eff}.module-icon-svg svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.crm-dashboard-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.crm-dashboard-head h2{margin:0;font-size:28px}.crm-dashboard-head p{margin:5px 0 0;color:#667085}.module-card{grid-template-columns:54px 1fr 20px}.client-workspace{display:grid;grid-template-columns:minmax(330px,42%) minmax(440px,1fr);gap:16px;align-items:start}.client-list-panel{margin-top:0}.client-list-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:11px 10px;border-bottom:1px solid #edf0f4;cursor:pointer}.client-list-row:hover,.client-list-row.selected{background:#eef7f6}.client-list-row .avatar{width:28px;height:28px;border-radius:50%;background:#1e5eff;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:900}.client-detail{margin-top:0}.client-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.contact-card{border:1px solid #e2e6ed;border-radius:10px;padding:13px;background:#fff}.contact-card h4{margin:0 0 5px}.contact-card .contact-role{display:inline-block;background:#e8eef7;border-radius:5px;padding:2px 5px;font-size:10px;font-weight:800;margin-bottom:7px}.contact-line{display:flex;gap:7px;align-items:center;color:#475467;font-size:12px;margin:4px 0;word-break:break-all}.contact-actions{display:flex;gap:5px;justify-content:flex-end;margin-top:8px}.contact-actions button{padding:5px 8px;font-size:11px}.client-section{border-top:1px solid #edf0f4;padding-top:14px;margin-top:14px}.client-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.beacon-detail-shell{width:min(1180px,96vw)}.modal-card:has(.beacon-detail-page){width:min(1220px,97vw)}.beacon-detail-page .equipment-sheet{grid-template-columns:260px 1fr}.beacon-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.beacon-gallery img{width:100%;height:120px;object-fit:contain;border:1px solid #e2e6ed;border-radius:9px;background:#f8fafc}.history-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:12px}.chart-panel{overflow:hidden}.battery-chart{width:100%;height:250px;background:linear-gradient(#fff,#fbfcfe);border:1px solid #edf0f4;border-radius:10px}.chart-axis{stroke:#d0d5dd;stroke-width:1}.chart-line{fill:none;stroke:#1e5eff;stroke-width:3}.chart-dot{fill:#1e5eff}.chart-label{font-size:10px;fill:#667085}.forecast-big{font-size:28px;font-weight:900}.forecast-date{font-size:15px;font-weight:800;margin-top:4px}.history-mini-table{max-height:280px;overflow:auto}.inspections-inline{max-height:220px;overflow:auto}.top-tabs{display:flex;gap:4px;border-bottom:1px solid #e2e6ed;margin:14px 0}.top-tabs button{background:transparent;color:#475467;border-radius:7px 7px 0 0}.top-tabs button.active{color:#1e5eff;border-bottom:3px solid #1e5eff}.page-error-recovery{padding:18px;border:1px solid #fecaca;background:#fff7f7;border-radius:12px;color:#991b1b}.page-error-recovery button{margin-top:10px}.org-logo-upload{display:flex;align-items:center;gap:10px}.org-logo-preview{width:64px;height:64px;border:1px solid #e2e6ed;border-radius:10px;display:grid;place-items:center;overflow:hidden}.org-logo-preview img{width:100%;height:100%;object-fit:contain}@media(max-width:1000px){.client-workspace{grid-template-columns:1fr}.history-grid{grid-template-columns:1fr}.context-bar{flex-wrap:wrap}.context-reset{margin-left:0}.context-brand{min-width:0}.context-select select{min-width:150px}}


/* V0.4.0d — compact CRM UI inspired by dense business applications */
.app{grid-template-columns:210px 1fr}.sidebar{width:210px;min-width:210px;padding:16px 14px}.side-brand{padding:5px;border-radius:8px}.side-brand img{width:128px;max-height:78px}.sidebar nav{margin-top:14px}.nav-group+.nav-group{margin-top:10px}.nav-label{font-size:9px;padding:0 10px 5px}.nav-section{margin:5px 0;border-radius:7px}.nav-section summary{padding:8px 10px;background:transparent;color:#c7d0df;font-size:12px;border-radius:7px}.nav-section[open] summary{background:#1a2942}.nav-section-body{padding:3px 0 5px}.nav-section-body button{display:block!important;width:100%!important;margin:1px 0!important;padding:7px 10px 7px 18px!important;border-radius:6px!important;font-size:11px!important;color:#bac5d5!important}.nav-section-body button:hover,.nav-section-body button.active{background:#203351!important;color:#fff!important}.sidebar nav .nav-group>button{padding:8px 10px!important;font-size:12px!important;border-radius:7px}.sidebar-foot{font-size:11px}
main{padding:0 26px 28px}.app-topbar{height:48px;margin:0 -26px 18px;padding:0 26px;border-bottom:1px solid #e7e9ee;background:#fff;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:12}.context-bar{border:0;border-radius:0;padding:0;margin:0;min-height:0;background:transparent;gap:7px;flex:1}.top-context-logo{width:26px;height:26px;border-radius:6px;border:1px solid #dde2ea;background:#f7f8fa;display:grid;place-items:center;overflow:hidden;font-size:10px;font-weight:800;color:#315b9a}.top-context-logo img{width:100%;height:100%;object-fit:contain}.top-context-select{width:auto!important;min-width:0!important;height:30px!important;padding:3px 27px 3px 8px!important;border:1px solid #dfe3e8!important;border-radius:5px!important;background:#fff!important;font-size:12px!important;font-weight:650!important;color:#253044!important}.top-context-select.org{max-width:230px}.top-context-select.client{max-width:250px}.top-context-name{font-size:12px;font-weight:750}.top-context-sep{width:1px;height:20px;background:#e4e7ec;margin:0 2px}.context-clear{border:0;background:transparent;color:#98a2b3;padding:2px 5px;font-size:17px}.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-actions button{padding:6px 10px;font-size:11px}.page-header{margin-bottom:15px}.page-header h1{font-size:22px}.page-header #page-subtitle{font-size:11px}
.dashboard-intro{display:flex;justify-content:space-between;align-items:center;margin:3px 0 14px}.dashboard-intro h2{font-size:22px;margin:0}.dashboard-intro p{font-size:12px;color:#667085;margin:4px 0 0}.version-chip{font-size:10px;font-weight:800;padding:3px 7px;border-radius:999px;background:#eef7ee;color:#26733b}.kpi-strip{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));border:1px solid #e5e8ed;border-radius:8px;background:#fff;margin-bottom:16px}.kpi-strip>div{padding:12px 14px;border-right:1px solid #eceff3}.kpi-strip>div:last-child{border-right:0}.kpi-strip b{display:block;font-size:19px}.kpi-strip span{font-size:11px;color:#667085}.home-section{margin:16px 0}.home-section h3,.home-panel h3{font-size:14px;margin:0 0 10px}.quick-launch-grid{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:8px}.quick-launch{background:#fff;color:#243044;border:1px solid #e4e7ec;border-radius:8px;padding:10px 11px;display:flex;align-items:center;gap:8px;text-align:left;font-size:12px;font-weight:700}.quick-launch:hover{border-color:#b8c6dc;background:#fbfcfe}.quick-launch .module-icon-svg{width:30px;height:30px;border-radius:7px}.quick-launch .module-icon-svg svg{width:17px;height:17px}.home-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.home-panel,.profile-panel{background:#fff;border:1px solid #e4e7ec;border-radius:8px;padding:14px}.home-empty{font-size:12px;color:#7a8495;padding:12px 0}.compact-empty{padding:16px 0}
.service-status-card .n{font-size:18px}.service-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#d92d20;box-shadow:0 0 0 4px #fee4e2}.service-status-card.service-ok .service-dot{background:#2e9d55;box-shadow:0 0 0 4px #e5f6ea}.service-status-card.service-bad .service-dot{background:#d92d20;box-shadow:0 0 0 4px #fee4e2}
.detail-toolbar{display:flex;align-items:center;margin-bottom:10px}.detail-toolbar .spacer{flex:1}.text-button{background:transparent!important;color:#315b9a!important;padding:5px 4px!important;font-weight:650!important;font-size:12px!important}.beacon-profile{display:grid;gap:12px}.beacon-profile-header{display:grid;grid-template-columns:130px minmax(0,1fr) 170px;gap:18px;align-items:center;background:#fff;border:1px solid #e4e7ec;border-radius:9px;padding:16px}.beacon-hero-image{height:105px;border:1px solid #eceff3;border-radius:8px;background:#fafbfc;display:grid;place-items:center;overflow:hidden;color:#9aa4b2;font-size:36px;font-weight:800}.beacon-hero-image img{max-width:100%;max-height:100%;object-fit:contain}.maker-line{display:flex;align-items:center;gap:8px;color:#667085;font-size:12px}.maker-line img{max-width:88px;max-height:32px;object-fit:contain}.beacon-hero-copy h2{margin:6px 0;font-size:21px}.serial-line{font-size:12px;color:#667085}.badge-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.beacon-current{text-align:right;border-left:1px solid #eceff3;padding-left:18px}.beacon-current span,.beacon-current small{display:block;color:#667085;font-size:11px}.beacon-current b{display:block;font-size:30px;margin:3px 0}.beacon-section-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.beacon-section-grid>section{background:#fff;border:1px solid #e4e7ec;border-radius:8px;padding:14px}.beacon-section-grid h3,.profile-panel h3{font-size:14px;margin:0 0 10px}.beacon-section-grid dl{display:grid;grid-template-columns:90px 1fr;gap:6px 10px;margin:0}.beacon-section-grid dt{font-size:11px;color:#7a8495}.beacon-section-grid dd{font-size:12px;margin:0;font-weight:650;overflow-wrap:anywhere}.beacon-history-layout{display:grid;grid-template-columns:1.45fr .75fr;gap:12px}.section-title{display:flex;justify-content:space-between;align-items:center}.section-title span{font-size:11px;color:#7a8495}.battery-chart{height:210px;border:0;background:#fff}.beacon-gallery img{height:100px}.forecast-big{font-size:25px}.profile-panel .table-wrap{border-radius:6px}
@media(max-width:1050px){.quick-launch-grid{grid-template-columns:repeat(2,1fr)}.beacon-profile-header{grid-template-columns:100px 1fr}.beacon-current{grid-column:1/-1;text-align:left;border-left:0;border-top:1px solid #eceff3;padding:10px 0 0}.beacon-section-grid{grid-template-columns:1fr}.beacon-history-layout,.home-columns{grid-template-columns:1fr}.kpi-strip{grid-template-columns:repeat(2,1fr)}.kpi-strip>div{border-bottom:1px solid #eceff3}.app-topbar{position:static}.top-context-select.org,.top-context-select.client{max-width:180px}}
/* V0.4.1 — densité CRM */
.side-brand{display:flex;flex-direction:column;align-items:center;justify-content:center}.side-brand img{display:block;margin:0 auto;object-position:center}.app-topbar{height:42px}.top-context-logo{width:24px;height:24px}.top-context-select{height:27px!important;font-size:11px!important;padding-top:2px!important;padding-bottom:2px!important}.top-context-select.org{max-width:190px}.top-context-select.client{max-width:220px}.top-context-select.site{max-width:190px}.page-header{margin-bottom:10px}.page-header h1{font-size:20px}.page-header #page-subtitle:empty{display:none}.kpi-six{grid-template-columns:repeat(6,minmax(105px,1fr))}.compact-toolbar{padding:7px 0}.icon-delete{border:0!important;background:transparent!important;color:#b42318!important;padding:4px 6px!important;font-size:15px!important}.icon-delete:hover{background:#fff1f0!important}.roadmap-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.roadmap-head h2{margin:0;font-size:20px}.roadmap-head p{color:#667085;font-size:12px}.toolbar .bad[data-delete-project],.actions .bad[data-delete-project]{font-size:0!important;background:transparent!important;border:0!important;color:#b42318!important;padding:5px!important}.actions .bad[data-delete-project]:after{content:'🗑';font-size:15px}@media(max-width:1200px){.kpi-six{grid-template-columns:repeat(3,1fr)}}

/* V0.4.1b - correction lisibilité et densité */
button.bad{color:#fff!important;background:#a61b1b!important}
button.bad:hover{background:#861616!important}
.beacon-import-compact{padding:9px 12px!important;margin-top:0!important;margin-bottom:8px!important;border-radius:8px!important}
.beacon-import-compact .toolbar{margin:0!important;min-height:28px!important}
.beacon-import-compact h3{font-size:13px!important;margin:0!important}
.beacon-import-compact button{padding:6px 9px!important;font-size:11px!important}
.icon-delete{display:inline-grid!important;place-items:center!important;width:28px!important;height:28px!important;min-width:28px!important;padding:0!important;border:0!important;border-radius:6px!important;background:transparent!important;color:#b42318!important;font-size:14px!important;line-height:1!important}
.icon-delete:hover{background:#fff0ef!important}
.survey-tool h4{margin:18px 0 8px}.survey-head h3{margin:0 0 4px}.survey-head p{margin:0}.rssi-editor{max-width:690px;border:1px solid #e4e7ec;border-radius:8px;overflow:hidden}.rssi-row{display:grid;grid-template-columns:1fr 170px 160px;gap:8px;align-items:center;padding:7px 10px;border-bottom:1px solid #eef0f3}.rssi-row:last-child{border-bottom:0}.rssi-row input,.rssi-row select{height:31px;padding:4px 8px}.rssi-title{background:#f8f9fb;color:#667085;font-size:11px;font-weight:700}.survey-note{margin-top:12px;padding:10px 12px;background:#f8fafc;border:1px solid #e5e9ef;border-radius:7px;font-size:12px;color:#475467}

/* V0.5.0b document batch drop zone */
.ydg-dropzone{border:2px dashed #aeb8c4;border-radius:12px;padding:28px 18px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:6px;background:#fafbfc;transition:.15s ease}.ydg-dropzone:hover,.ydg-dropzone.drag-over{border-color:#315eaa;background:#eef4ff;transform:translateY(-1px)}.ydg-dropzone span{font-size:.9rem;color:#687386}.drop-file-list{margin-top:10px;max-height:190px;overflow:auto;padding:8px 2px}.notice.warn{background:#fff6e5!important;color:#8a5a00!important}

/* V0.5.0c */
.ydg-dropzone{border:2px dashed var(--border,#aab4c3);border-radius:12px;padding:28px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:6px;background:rgba(127,127,127,.04)}
.ydg-dropzone.drag-over{border-style:solid;transform:scale(1.005)}
.drop-file-list{margin-top:10px;max-height:220px;overflow:auto}
hr{border:0;border-top:1px solid var(--border,#ddd);margin:22px 0}

/* V0.5.0d — statuts accessibles */
.pill.bad{background:#fde8e7!important;color:#8f1d1d!important;border:1px solid #f4b9b5}.pill.ok{background:#e7f6ec!important;color:#116c35!important}.pill.warn{background:#fff4d8!important;color:#765000!important}
/* V0.5.1: atelier documentaire large et lisible */
.modal:has(#facts-review){width:min(96vw,1600px);max-width:1600px}.modal:has(#facts-review) .modal-body{max-height:86vh;overflow:auto}#facts-review{overflow-x:auto}#facts-review table{min-width:1250px}#facts-review td{vertical-align:top}.pill.bad{color:#8a1c1c;background:#fde8e8;border-color:#f4bcbc}.pill.ok{color:#176b3a;background:#e7f7ed}.pill.warn{color:#755300;background:#fff4ce}

/* V0.5.1d — UX catalogue/profils Beacon */
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.section-heading h3{margin:0 0 5px}.section-heading p{margin:0;max-width:900px;line-height:1.45}.profile-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.profile-action-card,.catalog-edit-card{border:1px solid #e4e7ec;border-radius:10px;background:#fbfcfe;padding:13px}.profile-action-card label,.catalog-edit-card label{margin:0}.compact-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.compact-actions button,.catalog-edit-card button{width:auto;min-width:0;padding:8px 11px;font-size:11px}.catalog-edit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}.catalog-edit-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.catalog-edit-card button{align-self:end;white-space:nowrap}.profile-settings-panel,.catalog-edit-panel{overflow:hidden}@media(max-width:1100px){.catalog-edit-grid{grid-template-columns:1fr}.catalog-edit-card{grid-template-columns:minmax(0,1fr) auto}}@media(max-width:760px){.profile-action-grid{grid-template-columns:1fr}.catalog-edit-card{grid-template-columns:1fr}.catalog-edit-card button{justify-self:start}}

.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.detail-card{border:1px solid #dfe5ee;border-radius:12px;padding:14px;background:#fff}.module-hero{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}.mono{overflow-wrap:anywhere}
.ai-profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin:12px 0}.ai-profile-card{border:1px solid var(--line,#dfe5ee);border-radius:12px;padding:14px;background:#fafbfd}.ai-profile-card h3{margin:0 0 10px}.ai-pricing-note{padding:10px;border-radius:10px;background:#f6f8fc}.checkline{display:flex;gap:8px;align-items:flex-start;margin-top:8px}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.knowledge-service-item{padding:12px 0;border-bottom:1px solid var(--line,#e5e7eb)}
/* V0.5.4 — compact forms + contextual help */
.help-dot{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid #9aa8bc;border-radius:50%;font-size:12px;font-weight:700;color:#53657b;background:#fff;cursor:help;vertical-align:middle;margin-left:5px;position:relative}.help-dot:hover:after,.help-dot:focus:after{content:attr(data-help);position:absolute;z-index:9999;left:22px;top:-8px;width:280px;padding:9px 11px;border-radius:9px;background:#172033;color:#fff;font-weight:400;font-size:12px;line-height:1.35;box-shadow:0 8px 24px #0004;text-align:left}.ai-profile-table{display:grid;gap:8px;margin:12px 0}.ai-profile-row{display:grid;grid-template-columns:minmax(170px,1.3fr) minmax(180px,2fr) repeat(3,minmax(105px,1fr)) minmax(90px,.7fr) minmax(105px,.8fr);gap:8px;align-items:end;border:1px solid var(--line,#dfe5ee);border-radius:10px;padding:10px;background:#fafbfd}.ai-profile-row.head{font-weight:700;background:#eef3fa;align-items:center}.radio-batch-serials{min-height:220px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.linked-equip-list{display:grid;gap:8px}.linked-equip-item{border:1px solid var(--line,#dfe5ee);border-radius:9px;padding:10px}.form-section-title{grid-column:1/-1;font-weight:800;margin-top:4px;padding-top:8px;border-top:1px solid var(--line,#e5e7eb)}
@media(max-width:1050px){.ai-profile-row{grid-template-columns:1fr 1fr}.ai-profile-row.head{display:none}}

/* V0.5.7 — moteur de notifications transversal (HUB-NOT-001) */
.notif-bell{position:relative;font-size:15px;line-height:1}
.notif-badge{position:absolute;top:-6px;right:-6px;background:#c62828;color:#fff;border-radius:999px;font-size:10px;font-weight:700;padding:1px 5px;min-width:16px;text-align:center}
.notif-list{display:grid;gap:8px;max-height:70vh;overflow:auto}
.notif-item{border:1px solid var(--line,#dfe5ee);border-radius:10px;padding:10px 12px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.notif-item.sev-CRITICAL{border-left:4px solid #c62828}
.notif-item.sev-WARNING{border-left:4px solid #b78103}
.notif-item.sev-INFO{border-left:4px solid #3b6fd8}
.notif-item .actions{display:flex;gap:6px;flex-shrink:0}
/* V0.5.7b — correction d'affichage : les 7 colonnes ne tenaient pas dans la fenêtre modale,
   la colonne Origine était tronquée et une barre de défilement horizontale apparaissait.
   La modale des réglages est élargie et les colonnes passent en libellés empilés sous 1200px. */
.modal:has(#notif-settings-body){width:min(96vw,1280px);max-width:1280px}
.modal:has(#notif-settings-body) .modal-body{max-height:82vh;overflow:auto}
.notif-settings-row{display:grid;grid-template-columns:minmax(200px,2fr) 72px 96px 72px 104px 128px minmax(140px,1fr);gap:12px;align-items:center;border:1px solid var(--line,#dfe5ee);border-radius:10px;padding:10px 12px;background:#fafbfd;margin-bottom:6px}
.notif-settings-row.head{font-weight:700;background:#eef3fa;position:sticky;top:0;z-index:2}
.notif-settings-row input[type=number],.notif-settings-row select{width:100%;min-width:0;box-sizing:border-box}
.notif-settings-row label{margin:0;display:flex;align-items:center;justify-content:center}
.notif-settings-origin{display:flex;flex-direction:column;gap:4px;align-items:flex-start;font-size:11px;line-height:1.25}
.notif-settings-origin button{padding:2px 7px;font-size:10px;width:auto;min-width:0}
@media(max-width:1200px){
  .notif-settings-row{grid-template-columns:1fr 1fr;gap:8px}
  .notif-settings-row.head{display:none}
  .notif-settings-row>*{min-width:0}
  .notif-settings-row [data-col]::before{content:attr(data-col);display:block;font-size:10px;font-weight:700;color:#5b6b80;margin-bottom:2px}
  .notif-settings-row label[data-col]{display:block;text-align:left}
}

/* V0.5.8 — SESS-001 : expiration de session visible dans la barre supérieure */
.session-indicator{font-size:11px;color:#5b6b80;padding:4px 9px;border-radius:999px;background:#eef2f7;white-space:nowrap}
.session-indicator:empty{display:none}
.session-indicator.warn{background:#fff4d8;color:#765000}
.session-indicator.danger{background:#fde8e7;color:#8f1d1d;font-weight:700}
/* V0.5.11 catalogue hiérarchique / SAV documentaire */
.modal-card:has(.catalog-detail-page){width:min(1380px,98vw);max-height:94vh;padding:18px}
.catalog-detail-page{min-width:0}.catalog-identity-grid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(320px,1.2fr) minmax(260px,.8fr);gap:14px}.catalog-section{overflow:hidden}.catalog-section .table-wrap{max-height:52vh}.knowledge-service-item.service-card{border:1px solid #e2e6ed;border-radius:10px;padding:14px;margin:10px 0;background:#fff}.service-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.service-head h4{margin:8px 0 0}.doc-mini{padding:7px 0;border-bottom:1px solid #edf0f4;overflow-wrap:anywhere}.catalog-source-btn{white-space:nowrap;padding:6px 9px;font-size:11px}@media(max-width:1000px){.catalog-identity-grid{grid-template-columns:1fr}.modal-card:has(.catalog-detail-page){width:98vw}}
  .kf-review th:nth-child(4),.kf-review td:nth-child(4){display:none}
  .kf-review th:nth-child(3),.kf-review td:nth-child(3){width:34%}
}

/* V0.5.11 — Ingénierie RF / DAS */
.das-tree{display:grid;gap:4px;margin:10px 0}
.das-node{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line,#dfe5ee);border-radius:8px;background:#fafbfd;font-size:13px}
.das-node .actions{margin-left:auto;display:flex;gap:5px}
.das-node .actions button{padding:2px 8px;font-size:11px}
.modal:has(#das-body){width:min(96vw,1280px);max-width:1280px}
.modal:has(#das-body) .modal-body,.modal:has(#rf-specs-list) .modal-body{max-height:84vh;overflow:auto}
.modal:has(#rf-specs-list){width:min(94vw,1100px)}

/* V0.5.19 — bascule simple/expert */
.mode-switch{display:flex;align-items:center;gap:6px}
.mode-switch button{padding:5px 14px;font-size:12px}

/* V0.5.22b */
.context-help{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid currentColor;border-radius:50%;font-size:12px;font-weight:700;cursor:help;vertical-align:middle;opacity:.72;margin-left:4px}.dashboard-domain-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.dashboard-domain{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:5px;padding:14px}.dashboard-domain span{font-weight:400;opacity:.72}

/* V0.5.22d — dashboard, IA export and readable engineering */
.dashboard-ops-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin-top:14px}.dashboard-ops-card{background:#fff;border:1px solid #e2e6ed;border-radius:12px;padding:16px;text-align:left;color:#172033}.dashboard-ops-card b{display:block;font-size:24px;margin-bottom:4px}.dashboard-ops-card span{color:#667085;font-weight:500}.dashboard-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.dashboard-alert{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #edf0f4}.dashboard-alert:last-child{border-bottom:0}.ai-context-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.ai-context-section{border:1px solid #e2e6ed;border-radius:12px;padding:14px;background:#fbfcfe}.ai-context-section h3{margin:0 0 8px}.ai-volume-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.ai-volume-summary div{background:#f4f7fb;border-radius:9px;padding:10px}.ai-volume-summary b{display:block;font-size:17px}.ai-doc-list{max-height:260px;overflow:auto;border:1px solid #e2e6ed;padding:8px;border-radius:8px;background:#fff}.ai-progress{margin-top:10px;padding:12px;border-radius:8px;background:#eef4ff;color:#174ea6}.ai-context-modal{width:min(1120px,96vw)!important}.electrical-result-note{font-size:12px;color:#667085;margin-top:8px}@media(max-width:900px){.ai-context-layout{grid-template-columns:1fr}.ai-volume-summary{grid-template-columns:1fr 1fr}}

/* V0.5.22e — validation Knowledge lisible et messages d'erreur explicites */
.notice.bad{background:#feeceb!important;color:#b42318!important;border:1px solid #f7b9b5}
.notice.ok{background:#e7f6ec!important;color:#137a3b!important;border:1px solid #bde6c9}
.knowledge-review-modal{width:min(1480px,98vw)!important;max-height:94vh!important}
.knowledge-review-modal #facts-review .table-wrap{max-height:66vh;overflow:auto}
.knowledge-review-modal #facts-review table{min-width:1180px;table-layout:fixed}
.knowledge-review-modal #facts-review th:nth-child(1),.knowledge-review-modal #facts-review td:nth-child(1){width:15%}
.knowledge-review-modal #facts-review th:nth-child(2),.knowledge-review-modal #facts-review td:nth-child(2){width:18%;overflow-wrap:anywhere}
.knowledge-review-modal #facts-review th:nth-child(3),.knowledge-review-modal #facts-review td:nth-child(3){width:39%;white-space:normal;overflow-wrap:anywhere;line-height:1.35}
.knowledge-review-modal #facts-review th:nth-child(4),.knowledge-review-modal #facts-review td:nth-child(4){width:8%}
.knowledge-review-modal #facts-review th:nth-child(5),.knowledge-review-modal #facts-review td:nth-child(5){width:8%}
.knowledge-review-modal #facts-review th:nth-child(6),.knowledge-review-modal #facts-review td:nth-child(6){width:12%}
.knowledge-review-modal #facts-review .actions{flex-wrap:wrap}
@media(max-width:900px){.knowledge-review-modal{width:99vw!important;padding:12px}.knowledge-review-modal #facts-review table{min-width:1050px}}
/* V0.5.25a compact knowledge/catalog cleanup */
.compact-details>summary{cursor:pointer;padding:4px 0}.compact-details .nested-panel{padding-top:14px}.compact-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}.compact-kpis>div{border:1px solid #e5e7eb;border-radius:10px;padding:12px;background:#fff}.compact-kpis b{display:block;font-size:1.35rem}.compact-kpis span{color:#667085;font-size:.86rem}.product-summary-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin:12px 0}.knowledge-doc-toolbar{margin:8px 0 12px}.product-sheet-clean .catalog-section{margin-top:14px}@media(max-width:900px){.compact-kpis,.product-summary-grid{grid-template-columns:1fr 1fr}}

/* V0.5.25d - fiche produit métier professionnelle */
.modal-card.product-pro-modal{width:min(1420px,97vw);height:min(900px,94vh);max-height:94vh;padding:0;overflow:hidden;display:flex;flex-direction:column}.modal-card.product-pro-modal .modal-head{padding:18px 24px;border-bottom:1px solid #e5e7eb;background:#fff;flex:0 0 auto}.modal-card.product-pro-modal .modal-head h2{font-size:18px}.modal-card.product-pro-modal #modal-body{overflow:auto;padding:0;flex:1;background:#f7f9fc}.product-pro-page{min-height:100%;color:#172033}.product-pro-hero{display:grid;grid-template-columns:230px minmax(0,1fr) 260px;gap:24px;padding:26px;background:#fff;border-bottom:1px solid #e5e7eb}.product-hero-image{height:190px;border:1px solid #e1e6ee;border-radius:14px;background:#fff;display:grid;place-items:center;overflow:hidden}.product-hero-image img{width:100%;height:100%;object-fit:contain;padding:12px}.product-hero-image.empty-media{background:#f8fafc;color:#98a2b3;text-align:center;padding:25px}.product-pro-title .eyebrow{text-transform:uppercase;letter-spacing:.08em;color:#667085;font-size:11px;font-weight:800}.product-pro-title h2{font-size:30px;margin:6px 0 4px;line-height:1.12}.product-ref{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;color:#344054;margin:8px 0}.product-badges{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}.product-pro-title p{color:#667085;max-width:700px;line-height:1.5}.product-pro-commercial{border-left:1px solid #e5e7eb;padding-left:24px;display:flex;flex-direction:column;gap:12px;justify-content:center}.product-price b{font-size:26px;display:block}.product-price span{font-size:12px;color:#667085}.product-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.product-counts span{background:#f8fafc;border:1px solid #e5e7eb;border-radius:9px;padding:8px;text-align:center;font-size:11px;color:#667085}.product-counts b{display:block;font-size:17px;color:#172033}.product-pro-tabs{position:sticky;top:0;z-index:2;display:flex;gap:2px;padding:0 24px;background:#fff;border-bottom:1px solid #e5e7eb}.product-pro-tabs button{background:transparent;color:#667085;border-radius:0;padding:14px 16px;border-bottom:3px solid transparent}.product-pro-tabs button.active{color:#155eef;border-bottom-color:#155eef}.product-pane{display:none;padding:24px}.product-pane.active{display:block}.product-summary-professional{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:16px}.product-info-card{background:#fff;border:1px solid #e1e6ee;border-radius:14px;padding:20px;min-height:210px}.product-info-card h3,.product-tech-head h3{margin:0 0 16px}.product-info-card dl{display:grid;grid-template-columns:minmax(120px,.8fr) 1.2fr;gap:10px 14px;margin:0}.product-info-card dt{color:#667085;font-size:12px}.product-info-card dd{margin:0;font-weight:700;overflow-wrap:anywhere}.document-readiness{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.document-readiness>div{border:1px solid #e5e7eb;border-radius:10px;padding:12px;text-align:center;background:#f8fafc}.document-readiness>div.ready{background:#eefbf3;border-color:#b7e4c7}.document-readiness b{display:block;font-size:24px}.document-readiness span{font-size:11px;color:#667085}.product-empty-state{display:flex;flex-direction:column;gap:8px;color:#667085;background:#f8fafc;border:1px dashed #d0d5dd;border-radius:10px;padding:18px}.product-empty-state.large{padding:40px;text-align:center;align-items:center}.product-tech-head{margin-bottom:16px}.product-tech-head p{color:#667085}.product-tech-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.product-tech-grid>div{background:#fff;border:1px solid #e1e6ee;border-radius:10px;padding:13px}.product-tech-grid span{display:block;color:#667085;font-size:11px;margin-bottom:5px}.product-tech-grid b{font-size:13px}.product-media-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.product-media-card{background:#fff;border:1px solid #e1e6ee;border-radius:12px;overflow:hidden}.product-media-preview{height:155px;display:grid;place-items:center;background:#f8fafc}.product-media-preview img{width:100%;height:100%;object-fit:contain;padding:8px}.product-media-icon{font-size:28px;font-weight:900;color:#667085}.product-media-meta{padding:12px;display:flex;flex-direction:column;gap:7px}.product-media-meta b{font-size:12px;overflow-wrap:anywhere}.product-media-meta span{font-size:11px;color:#667085}.product-media-meta button{align-self:flex-start;padding:6px 10px;font-size:11px}@media(max-width:1050px){.product-pro-hero{grid-template-columns:180px 1fr}.product-pro-commercial{grid-column:1/-1;border-left:0;border-top:1px solid #e5e7eb;padding:16px 0 0}.product-summary-professional{grid-template-columns:1fr}.product-tech-grid{grid-template-columns:repeat(2,1fr)}.product-media-grid{grid-template-columns:repeat(2,1fr)}}

/* V0.5.25d */
.product-pro-modal{width:min(96vw,1500px)!important;max-width:1500px!important;height:min(92vh,980px);overflow:auto}.product-pro-page{min-height:70vh}.product-pro-hero{grid-template-columns:minmax(260px,360px) 1fr minmax(220px,300px)!important}.product-hero-image{min-height:300px}.product-pane{padding-bottom:30px}.actions{flex-wrap:wrap}

/* V0.5.27 — CORRECTIF : les styles product-sheet-* de V0.5.26 sont retirés, la fonction
   qui les utilisait était du code mort (voir RELEASE_NOTES_V0.5.27.md). La fiche produit
   réellement active est la version à onglets (.product-pro-*, définie plus haut dans ce
   fichier) : le style d'impression ci-dessous s'applique à celle-là, la seule qui compte.
   « Digne d'être imprimée » : tous les onglets deviennent visibles en même temps à
   l'impression, boutons d'action masqués, mise en page à une colonne. */
@media print{
  .product-pro-tabs, #product-refresh-web, [data-open-product-doc], .modal-close{display:none}
  .product-pane{display:block !important;page-break-inside:avoid;margin-bottom:16px}
  .product-pro-hero{box-shadow:none;border-bottom:2px solid #1a2330;padding-bottom:12px}
  .product-media-preview img{max-width:120px}
}

/* V0.5.29 — provenance et édition catalogue */
.catalog-edit-help{margin:4px 0 18px;padding:14px 16px;border:1px solid #f0c36a;background:#fff8e8;border-radius:10px;display:flex;flex-direction:column;gap:6px}.catalog-edit-help span{font-size:12px;color:#667085}.prov-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;background:#fff0d6;border:1px solid #f0a43a;vertical-align:-2px;margin-right:5px}.catalog-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}.catalog-edit-field{display:flex;flex-direction:column;gap:5px}.catalog-edit-field.wide{grid-column:1/-1}.catalog-edit-field>span{font-size:12px;font-weight:700;color:#475467}.catalog-edit-field input,.catalog-edit-field textarea{width:100%}.catalog-edit-field textarea{min-height:90px}.catalog-edit-field .analysis-derived{background:#fff4df!important;border-color:#f0a43a!important;box-shadow:inset 3px 0 0 #f0a43a}.catalog-edit-field .analysis-derived:focus{outline-color:#e28b13}.product-pro-commercial button{width:100%}@media(max-width:800px){.catalog-edit-grid{grid-template-columns:1fr}.catalog-edit-field.wide{grid-column:auto}}

/* V0.5.33 — éditeur d'implantation Beacon grand format */
.modal-card.beacon-plan-modal{width:min(98vw,1900px)!important;max-width:1900px!important;height:94vh;max-height:94vh;padding:0;overflow:hidden;display:flex;flex-direction:column}.beacon-plan-modal .modal-head{padding:12px 18px;border-bottom:1px solid #e2e6ed;flex:0 0 auto}.beacon-plan-modal #modal-body{padding:0;overflow:hidden;flex:1;min-height:0}.beacon-editor{height:100%;display:flex;flex-direction:column;min-height:0}.beacon-editor-top{display:flex;gap:12px;align-items:end;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid #e2e6ed;background:#fff}.beacon-editor-top>label{min-width:300px;flex:1}.beacon-editor-top select{width:100%}.bp-zoom,.bp-export{display:flex;gap:6px;align-items:center}.bp-zoom button.active{background:#344054;color:#fff}.beacon-editor-main{display:grid;grid-template-columns:260px minmax(0,1fr) 230px;min-height:0;flex:1}.beacon-editor-side,.beacon-editor-properties{padding:12px;background:#fff;overflow:auto;min-height:0}.beacon-editor-side{border-right:1px solid #e2e6ed}.beacon-editor-properties{border-left:1px solid #e2e6ed}.beacon-editor-properties label{display:block;margin:9px 0;font-size:12px;font-weight:700}.beacon-editor-properties input{width:100%;margin-top:4px}.beacon-editor-properties button{width:100%;margin-top:7px}.bp-two{display:grid;grid-template-columns:1fr 1fr;gap:7px}.bp-list-head{font-size:12px;font-weight:800;margin:12px 0 5px;color:#344054}.bp-beacon-list{display:grid;gap:4px}.bp-beacon-row{display:flex!important;justify-content:space-between;align-items:center;text-align:left;width:100%;padding:8px 9px!important;background:#f8fafc!important;color:#172033!important;border:1px solid #e2e6ed!important;border-radius:7px!important;font-size:12px!important}.bp-beacon-row small{color:#667085;margin-left:6px}.bp-beacon-row.active{border-color:#155eef!important;background:#eef4ff!important;color:#155eef!important}.bp-empty{font-size:12px;color:#98a2b3;padding:7px}.beacon-editor-work{min-width:0;min-height:0;display:flex;flex-direction:column;background:#dfe4eb}.bp-hint{padding:7px 12px;background:#f8fafc;border-bottom:1px solid #d0d5dd;font-size:12px;color:#475467}.bp-viewport{position:relative;overflow:auto;flex:1;min-height:0;padding:18px}.bp-viewport.pan-active{cursor:grab}.bp-viewport.pan-active:active{cursor:grabbing}.bp-canvas{max-width:none!important;overflow:visible!important;transform-origin:0 0}.bp-canvas>img{max-width:none!important;max-height:none!important;width:auto;height:auto;display:block}.bp-canvas .beacon-marker.selected,.bp-canvas .beacon-plan-label.selected{outline:3px solid #f79009;outline-offset:2px}.bp-canvas .plan-lines polyline{fill:none;stroke:#174ea6;stroke-width:.35;vector-effect:non-scaling-stroke}@media(max-width:1100px){.beacon-editor-main{grid-template-columns:220px minmax(0,1fr)}.beacon-editor-properties{display:none}}@media(max-width:760px){.beacon-editor-main{grid-template-columns:1fr}.beacon-editor-side{max-height:220px;border-right:0;border-bottom:1px solid #e2e6ed}.beacon-editor-top>label{min-width:100%}}

/* V0.5.33a — Beacon implantation is a real page, not a modal. Desktop layout is preserved. */
.beacon-plan-page{height:calc(100vh - 112px);min-height:620px;display:flex;flex-direction:column;margin:0 -10px}.beacon-plan-page-head{display:flex;align-items:center;gap:10px;padding:0 4px 10px;flex:0 0 auto}.beacon-plan-page-head .spacer{flex:1}.beacon-plan-page .beacon-editor{background:#fff;border:1px solid #e2e6ed;border-radius:12px;overflow:hidden;flex:1;min-height:0}.beacon-plan-page .beacon-editor-main{min-height:0;flex:1}.beacon-plan-page .bp-viewport{overscroll-behavior:contain;touch-action:pan-x pan-y}.beacon-plan-page .beacon-editor-side{width:auto}.beacon-plan-page-mode main{padding-bottom:8px}
@media(max-width:820px){
 body.beacon-plan-page-mode .app{display:block}.beacon-plan-page-mode .sidebar{display:none!important}.beacon-plan-page-mode main{padding:0 8px 8px}.beacon-plan-page-mode .app-topbar{margin:0 -8px 8px;padding:0 8px}.beacon-plan-page-mode .page-header{padding:0 4px;margin-bottom:6px}.beacon-plan-page-mode .page-header h1{font-size:17px;line-height:1.2}.beacon-plan-page-mode #page-subtitle{display:none}.beacon-plan-page{height:calc(100dvh - 104px);min-height:520px;margin:0}.beacon-plan-page-head{padding:0 0 6px}.beacon-plan-page-head>span{display:none}.beacon-plan-page .beacon-editor{border-radius:9px}.beacon-plan-page .beacon-editor-top{padding:7px;gap:6px;align-items:center}.beacon-plan-page .beacon-editor-top>label{min-width:100%;margin:0}.beacon-plan-page .beacon-editor-top label{font-size:11px}.beacon-plan-page .beacon-editor-top select{padding:7px 9px}.beacon-plan-page .bp-zoom,.beacon-plan-page .bp-export{gap:4px;flex-wrap:wrap}.beacon-plan-page .bp-zoom button,.beacon-plan-page .bp-export button{padding:7px 9px;font-size:11px}.beacon-plan-page .beacon-editor-main{display:flex;flex-direction:column}.beacon-plan-page .beacon-editor-side{order:2;max-height:170px;min-height:92px;border:0;border-top:1px solid #e2e6ed;padding:7px;overflow:auto}.beacon-plan-page .beacon-editor-side>input{padding:7px 9px}.beacon-plan-page .beacon-editor-work{order:1;flex:1;min-height:220px}.beacon-plan-page .bp-hint{padding:5px 8px;font-size:10px}.beacon-plan-page .bp-viewport{padding:6px;min-height:0}.beacon-plan-page .beacon-editor-properties{display:none}.beacon-plan-page .bp-list-head{margin:6px 0 3px}.beacon-plan-page .bp-beacon-list{display:flex;gap:4px;overflow-x:auto;padding-bottom:2px}.beacon-plan-page .bp-beacon-row{min-width:115px;width:auto!important;padding:6px 7px!important}.beacon-plan-page details .bp-beacon-list{display:flex}.beacon-plan-page #bp-counts{font-size:10px}.beacon-plan-page .plan-canvas>img{max-height:none}.beacon-plan-page .beacon-marker{width:28px;height:28px}.beacon-plan-page-head #bp-back{padding:7px 10px;font-size:11px}
}


/* V0.5.33b — genuine responsive shell. Desktop rules above remain unchanged. */
.mobile-nav-toggle{display:none;background:#101827;color:#fff;border-radius:7px;padding:6px 9px;font-size:18px;line-height:1;flex:0 0 auto}
@media(max-width:820px){
 html,body{max-width:100%;overflow-x:hidden}
 .app{display:block!important;min-width:0;width:100%}
 .sidebar{display:flex;position:fixed!important;z-index:1000;left:0;top:0;bottom:0;width:min(86vw,320px)!important;min-width:0!important;height:100dvh!important;padding:16px 12px;transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 32px #0004;overflow-y:auto;background:#101827}
 body.mobile-nav-open .sidebar{transform:translateX(0)}
 body.mobile-nav-open:after{content:'';position:fixed;inset:0;background:#10182780;z-index:999}
 .sidebar .side-brand{padding:8px}.sidebar .side-brand img{max-height:82px;width:auto}.sidebar nav{display:block!important;margin-top:12px!important;overflow:visible!important}.sidebar-foot{display:grid!important}
 main{width:100%!important;min-width:0!important;padding:0 12px 20px!important;margin:0!important;overflow:hidden}
 .app-topbar{height:auto!important;min-height:48px;margin:0 -12px 12px!important;padding:7px 12px!important;display:flex!important;gap:7px;align-items:flex-start!important;position:sticky!important;top:0!important;z-index:30!important}
 .mobile-nav-toggle{display:block!important}
 .context-bar{display:flex!important;flex:1;min-width:0;gap:5px!important;flex-wrap:wrap!important;overflow:visible}
 .top-context-logo,.top-context-sep{display:none!important}.top-context-name{font-size:10px}.top-context-select{max-width:none!important;min-width:0!important;width:auto!important;flex:1 1 120px;height:32px!important;font-size:11px!important}
 .topbar-actions{gap:4px!important;flex:0 0 auto}.topbar-actions #refresh{display:none}.session-indicator{font-size:10px;white-space:nowrap}.notif-bell{padding:6px!important}
 .page-header{margin:6px 0 10px!important}.page-header h1{font-size:22px!important;line-height:1.15;overflow-wrap:anywhere}.page-header #page-subtitle{font-size:11px}
 #content,.panel,.card,.module-hero,.hub-welcome{min-width:0!important;max-width:100%!important}
 .cards{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}.card,.panel{padding:12px}.card .n{font-size:24px}.card .l{font-size:12px;overflow-wrap:anywhere}
 .toolbar,.compact-toolbar{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:7px!important}.toolbar .spacer{display:none}.toolbar input,.toolbar select,.toolbar button,.compact-toolbar input,.compact-toolbar select{width:100%!important;min-width:0!important;max-width:none!important}
 .table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}.table-wrap table{width:max-content!important;min-width:100%!important}.table-wrap th,.table-wrap td{white-space:normal;min-width:110px}
 .form-grid,.catalog-edit-grid{grid-template-columns:1fr!important}.form-grid .full,.catalog-edit-field.wide{grid-column:auto!important}
 .modal{padding:6px!important}.modal-card{width:calc(100vw - 12px)!important;max-width:none!important;max-height:96dvh!important;padding:12px!important}
 .actions{flex-wrap:wrap}.actions button{flex:1 1 auto}
 .pager{flex-wrap:wrap;gap:7px}.pager-controls{flex-wrap:wrap}.pager-controls label{min-width:0}
 .crm-dashboard-head,.hub-welcome,.module-hero{flex-direction:column!important;align-items:flex-start!important}.kpi-six,.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .client-workspace,.history-grid,.equipment-sheet,.product-pro-hero,.product-summary-professional,.product-tech-grid,.product-media-grid{grid-template-columns:1fr!important}
 body.beacon-plan-page-mode main{padding:0 6px 6px!important;overflow:visible}.beacon-plan-page-mode .app-topbar{margin:0 -6px 6px!important;padding:6px!important}.beacon-plan-page-mode .mobile-nav-toggle{display:none!important}
 .beacon-plan-page{height:calc(100dvh - 82px)!important;min-height:480px!important}.beacon-plan-page .beacon-editor-top{display:grid!important;grid-template-columns:1fr!important}.beacon-plan-page .bp-zoom,.beacon-plan-page .bp-export{width:100%;justify-content:flex-start}.beacon-plan-page .beacon-editor-side{max-height:145px!important}.beacon-plan-page .beacon-editor-work{min-height:260px!important}
}
@media(max-width:430px){.cards,.kpi-six,.kpi-strip{grid-template-columns:1fr 1fr!important}.session-indicator{display:none}.page-header h1{font-size:20px!important}.top-context-select{flex-basis:105px}.beacon-plan-page .bp-export button{flex:1}}

/* V0.5.33c — Beacon placement legibility */
.bp-colors{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.bp-colors label{margin:4px 0}.bp-colors input[type="color"]{height:38px;padding:3px;cursor:pointer}.bp-canvas .plan-lines polyline{stroke-width:2.8!important}.beacon-plan-label.attached{transform:translate(15px,-50%)}

.client-main-tabs,.site-module-tabs{display:flex;gap:5px;border-bottom:1px solid #d8dee9;margin:14px 0;overflow:auto}.client-main-tabs button,.site-module-tabs button{background:transparent;color:#344054;border:0;border-radius:0;padding:10px}.site-client-list{display:flex;flex-direction:column;gap:8px}.site-client-row{display:grid;grid-template-columns:1fr 1fr 20px;align-items:center;text-align:left;background:#fff!important;color:#101828!important;border:1px solid #e4e7ec!important;padding:12px!important}.site-client-row small{display:block;color:#667085;margin-top:4px}.site-full-head{display:flex;justify-content:space-between;align-items:flex-start;margin-top:14px}.site-module-picker{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.site-module-picker label{display:flex;gap:5px;align-items:center;border:1px solid #e4e7ec;border-radius:6px;padding:7px;background:#fff}

/* V0.5.38c — photos de dossier SAV visibles depuis l'interface web (jusqu'ici uploadées
   par l'application terrain mais jamais affichées côté web). */
.sav-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:14px}.sav-photo-thumb{display:block;border:1px solid #e2e6ed;border-radius:10px;overflow:hidden;background:#f8f9fb;text-decoration:none;color:#344054}.sav-photo-thumb img{width:100%;height:100px;object-fit:cover;display:block;background:#eef2f7}.sav-photo-thumb span{display:block;font-size:11px;padding:6px 8px;color:#667085}
.lightbox{position:fixed;inset:0;background:#000c;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:50;padding:20px}.lightbox-bar{position:absolute;top:14px;right:14px;display:flex;gap:8px;z-index:1}.lightbox-bar button{background:#fff;color:#172033}.lightbox-bar .icon{font-size:22px;padding:4px 10px}.lightbox img{max-width:92vw;max-height:88vh;border-radius:8px;background:#fff}
button.link-as-text{background:transparent;border:0;padding:0;text-align:left;color:#1e5eff;cursor:pointer;font-family:inherit}
.modal-card.sav-case-modal{width:min(920px,96vw)}
button.card-filter-btn{width:100%;text-align:left;color:inherit;font-weight:inherit;cursor:pointer}button.card-filter-btn.active-filter{border-color:#1e5eff;background:#eef2ff}
/* V0.5.40 — éditeur visuel de procédures */
.procedure-layout{display:grid;grid-template-columns:minmax(180px,240px) 1fr;gap:16px}.procedure-editor{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:16px;margin-top:16px}#proc-canvas .detail-card{margin-bottom:10px}@media(max-width:800px){.procedure-layout,.procedure-editor{grid-template-columns:1fr}}

/* V0.5.40f — SAV form and reconciliation report */
.sav-form-grid,.sav-advanced-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sav-form-grid>label,.sav-advanced-grid>label{min-width:0}
.sav-advanced-grid .full{grid-column:1/-1}
.sav-check,.sav-none-check{display:flex;align-items:center;gap:8px}
.sav-check input[type="checkbox"],.sav-none-check input[type="checkbox"]{width:auto;flex:0 0 auto}
.sav-accessories-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.sav-accessories-row>input{flex:1;min-width:180px}
.radio-summary{line-height:1.6}
@media(max-width:820px){.sav-form-grid,.sav-advanced-grid{grid-template-columns:1fr}.sav-advanced-grid .full{grid-column:auto}}

/* V0.5.41 — plan de travail SAV : un écran par dossier, champs selon l'étape */
.swb{display:flex;flex-direction:column;gap:12px}
.swb-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.swb-head{display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}
.swb-head-main{display:flex;flex-direction:column;gap:6px;min-width:260px;flex:1}
.swb-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.swb-title h2{margin:0}
.swb-equip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:16px}
.swb-id{color:#475467}.swb-fault{background:#f8fafc;border:1px solid #e4e7ec;border-radius:8px;padding:8px 10px;font-size:14px}
.swb-chip{display:inline-block;font-size:12px;border:1px solid #d0d5dd;border-radius:999px;padding:2px 9px;background:#fff;color:#344054;white-space:nowrap}
.swb-chips{display:flex;flex-direction:column;gap:6px;align-items:flex-start;max-width:340px}
.swb-cell{display:block;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.swb-alerts{display:flex;flex-direction:column;gap:6px}.swb-alert{border-radius:8px;padding:8px 12px;font-size:14px;border:1px solid #fedf89;background:#fffaeb;color:#93370d}.swb-alert.bad{border-color:#fecdca;background:#fef3f2;color:#b42318}
.swb-stepper{display:flex;gap:6px;flex-wrap:wrap}
.swb-step{display:flex;align-items:center;gap:8px;border:1px solid #d0d5dd;background:#fff;color:#344054;border-radius:999px;padding:7px 14px;font-weight:500;cursor:pointer}
.swb-step .num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#eaecf0;font-size:12px}
.swb-step.done .num{background:#d1fadf;color:#05603a}.swb-step.current{border-color:#1e5eff;background:#eef2ff;color:#1e3a8a}.swb-step.current .num{background:#1e5eff;color:#fff}.swb-step.viewing{box-shadow:0 0 0 2px #1e5eff55}
.swb-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.swb-actions select{max-width:190px}
.swb-dirty{color:#b54708;font-size:13px;display:inline-flex;gap:8px;align-items:center}
.swb-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:12px;align-items:start}
.swb-main,.swb-side{display:flex;flex-direction:column;gap:12px;min-width:0}
.swb .panel{margin:0}.swb h3{margin:0 0 8px}
.swb-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.swb-fields .full{grid-column:1/-1}
.swb-note{margin:8px 0 0}.req{color:#b42318;font-size:11px;font-weight:600}
.swb-summary,.swb-others,.swb-history{margin-top:10px;font-size:13px}.swb-summary summary,.swb-others summary,.swb-history summary{cursor:pointer;color:#475467}.swb-summary p{margin:4px 0}
.swb-proc{display:flex;gap:12px;justify-content:space-between;align-items:center;border:1px solid #e4e7ec;border-radius:8px;padding:8px 10px;margin:6px 0}
.swb-stepcard{border:2px solid #1e5eff33;background:#f5f8ff;border-radius:10px;padding:12px;margin:10px 0}
.swb-yn{display:flex;gap:10px;margin:8px 0}.swb-yn button{flex:1;font-size:18px;padding:12px}.swb-yn .no{background:#475467}
.swb-measure{display:flex;align-items:center;gap:8px;margin:8px 0}.swb-measure input{max-width:180px;font-size:20px}.swb-measure .unit{font-size:16px;color:#475467}
.swb-notefield{display:block;margin-top:10px;font-size:13px}
.swb-done{list-style:none;padding:0;margin:8px 0;font-size:14px}.swb-done li{padding:6px 0;border-top:1px solid #eaecf0}.swb-done li small{display:block}
.swb-frozen{font-size:12px}.swb-hrun{border-top:1px solid #eaecf0;padding:6px 0}
.swb-doc{padding:8px 0;border-top:1px solid #eaecf0}.swb-doc:first-of-type{border-top:0}
.swb-list{padding-left:18px;margin:6px 0}.swb-list small{display:block}
.swb-mini{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.swb-mini input,.swb-mini select{min-width:0;flex:1 1 120px}.swb-mini input[name=text],.swb-mini input[name=comment],.swb-mini input[type=file]{flex:1 1 100%}.swb-mini input[name=qty]{flex:0 0 70px}
.swb-filter{display:flex;gap:6px;flex-wrap:wrap}.swb-filter button.active{background:#1e5eff;color:#fff}
.swb-events{list-style:none;padding:0;margin:8px 0}.swb-events li{display:grid;grid-template-columns:150px 1fr 150px;gap:10px;padding:6px 0;border-top:1px solid #eaecf0;font-size:14px}.swb-events .when,.swb-events .who{color:#667085;font-size:12px}.swb-events .who{text-align:right}
.swb-events li.ev-proc .what{color:#1e3a8a}.swb-events li.ev-photo .what{color:#475467}
button.small{padding:4px 10px;font-size:12px}
.swb .sav-accessories-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.swb .sav-accessories-row input[type=text],.swb .sav-accessories-row>input:not([type]){flex:1;min-width:160px}
@media(max-width:980px){.swb-grid{grid-template-columns:1fr}.swb-fields{grid-template-columns:1fr}.swb-events li{grid-template-columns:1fr}.swb-events .who{text-align:left}.swb-chips{max-width:none}}

/* V0.5.42 — arbre décisionnel visuel, pièces, aide d'étape, compte rendu */
body.te-open{overflow:hidden}
.te-overlay{position:fixed;inset:0;z-index:60;background:#f3f5f9;display:flex;flex-direction:column}
.te-top{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#fff;border-bottom:1px solid #d9dee8;flex-wrap:wrap}
.te-top .spacer{flex:1}.te-dirty{color:#b54708;font-size:13px}
.te-main{flex:1;display:flex;min-height:0}
.te-palette{width:200px;flex:0 0 200px;background:#fff;border-right:1px solid #d9dee8;padding:10px;overflow:auto}
.te-palette h4,.te-props h4{margin:10px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#475467}
.te-pal{display:flex;align-items:center;gap:8px;width:100%;margin:3px 0;padding:6px 8px;border:1px solid #cbd5e1;border-radius:8px;background:var(--c,#fff);color:#1b2430;font-weight:500;text-align:left;cursor:pointer;font-size:13px}
.te-canvas{flex:1;overflow:auto;background:#f8fafc;background-image:radial-gradient(#d5dbe6 1px,transparent 1px);background-size:20px 20px;position:relative}
.te-props{width:330px;flex:0 0 330px;background:#fff;border-left:1px solid #d9dee8;padding:10px 12px;overflow:auto}
.te-props label{display:block;margin:6px 0;font-size:13px;color:#344054}.te-props input,.te-props textarea,.te-props select{width:100%;box-sizing:border-box}
.te-props .te-check{display:flex;gap:8px;align-items:center}.te-props .te-check input{width:auto}
.te-row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.te-opt{display:flex;gap:6px;margin-top:8px}.te-opt button{flex:0 0 32px}
.te-chips{display:flex;gap:4px;flex-wrap:wrap;margin:4px 0}.te-addpart{display:flex;gap:6px}.te-cats{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;font-size:12px}.te-cats label{margin:1px 0;display:flex;gap:4px;align-items:center}.te-cats input{width:auto}
.te-actions{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.te-issues{list-style:none;padding:0;margin:4px 0;font-size:13px}.te-issues li{padding:3px 0 3px 18px;position:relative}.te-issues li:before{content:'⚠';position:absolute;left:0;color:#b54708}.te-issues li.error:before{content:'✖';color:#b42318}
.te-sizer{position:relative}.te-stage{position:absolute;left:0;top:0;transform-origin:0 0}
.te-svg{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.te-edge .hit{stroke:transparent;stroke-width:16;fill:none;pointer-events:stroke;cursor:pointer}
.te-edge .line{stroke:#64748b;stroke-width:2;fill:none;pointer-events:none}.te-edge text{font-size:12px;fill:#334155;paint-order:stroke;stroke:#f8fafc;stroke-width:4px;pointer-events:none}
.te-edge.on .line{stroke:#1e5eff;stroke-width:3}.te-edge.sel .line{stroke:#e11d48;stroke-width:3}
.te-temp{stroke:#1e5eff;stroke-width:2;stroke-dasharray:5 4;display:none}.te-temp.on{display:block}
.te-nodes{position:absolute;left:0;top:0}
.te-node{position:absolute;box-sizing:border-box;cursor:grab;touch-action:none;user-select:none}
.te-node .te-body{position:absolute;inset:0;background:var(--c);border:2px solid #94a3b8;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:6px;padding:4px 10px;text-align:center;font-size:12.5px;line-height:1.2;color:#1b2430;overflow:hidden}
.te-node .te-icon{font-size:15px;flex:0 0 auto}.te-node .te-title{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.te-node.te-decision .te-body{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);border:0;border-radius:0;padding:6px 38px;background:var(--c)}
.te-node.te-decision{filter:drop-shadow(0 0 0 #94a3b8) drop-shadow(0 1px 1px #64748b)}
.te-node.te-end .te-body{border-radius:999px;background:#334155;color:#fff;border-color:#334155}
.te-node.sel .te-body{border-color:#1e5eff;box-shadow:0 0 0 3px #1e5eff44}.te-node.te-decision.sel{filter:drop-shadow(0 0 3px #1e5eff) drop-shadow(0 0 3px #1e5eff)}
.te-node.visited .te-body{border-color:#1e5eff;background:#dbeafe}.te-node.current .te-body{border-color:#e11d48;box-shadow:0 0 0 3px #e11d4844}
.te-start{position:absolute;left:-4px;top:-10px;background:#1e5eff;color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;pointer-events:none}
.te-flags{position:absolute;right:4px;bottom:-9px;display:flex;gap:2px;font-size:11px;pointer-events:none}.te-flags i{font-style:normal;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:0 3px;color:#b42318}
.te-port{position:absolute;left:50%;bottom:-8px;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:#1e5eff;border:2px solid #fff;cursor:crosshair;box-shadow:0 0 0 1px #1e5eff}
.te-node.te-decision .te-port{bottom:-8px}
.swb-choice{display:flex;flex-direction:column;gap:8px;margin:8px 0}.swb-choice button{padding:12px;font-size:15px;text-align:left}
.swb-warn{background:#fffaeb;border:1px solid #fedf89;color:#93370d;border-radius:8px;padding:8px 10px;margin:8px 0;font-weight:500}
.swb-help{background:#fff;border:1px solid #d9dee8;border-radius:8px;padding:6px 10px;margin:8px 0}.swb-help summary{cursor:pointer;font-weight:600;color:#1e3a8a}.swb-help p{margin:6px 0;white-space:pre-wrap}
.swb-tools{margin:6px 0}.swb-partlist{width:100%;margin:6px 0}.swb-parts-list li{margin:6px 0}
.swb-partpick{margin-top:10px;border-top:1px solid #eaecf0;padding-top:8px}
.swb-report textarea{width:100%;box-sizing:border-box}
@media(max-width:900px){.te-palette{display:none}.te-props{width:240px;flex-basis:240px}}

/* V0.5.42a — décision après diagnostic, tableau de bord atelier */
.swb-decide{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin:10px 0}
.swb-dec{display:flex;flex-direction:column;gap:4px;text-align:left;padding:12px;border-radius:10px;border:2px solid #cbd5e1;background:#fff;color:#1b2430;cursor:pointer}
.swb-dec b{font-size:15px}.swb-dec span{font-size:12.5px;color:#475467;font-weight:400}
.swb-dec.REPAIR{border-color:#16a34a}.swb-dec.SUPPLIER{border-color:#1e5eff}.swb-dec.IRREPARABLE{border-color:#b42318}.swb-dec.CLIENT_REFUSAL{border-color:#b54708}
.swb-dec:hover{background:#f8fafc}
.dash-sav{margin-bottom:12px}.dash-sav h4{margin:12px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#475467}
.dash-pipe{display:flex;align-items:stretch;gap:6px;flex-wrap:wrap;margin:10px 0}
.dash-stage{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:118px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#1b2430;cursor:pointer}
.dash-stage b{font-size:26px;line-height:1}.dash-stage span{font-size:12.5px;color:#475467;font-weight:500}.dash-stage small{font-size:11px;color:#b54708}
.dash-stage.zero{opacity:.55}.dash-stage:hover{border-color:#1e5eff;background:#eef2ff}.dash-arrow{align-self:center;color:#98a2b3;font-size:20px}
.swb-step.skipped{opacity:.55;border-style:dashed}
.te-zoom{display:flex;align-items:center;gap:6px;margin-right:10px}.te-zoom-val{min-width:48px;text-align:center;font-weight:600;color:#344054}.te-hint{padding:4px 14px;font-size:12px;color:#667085;background:#fff;border-top:1px solid #d9dee8}.te-sub{max-width:34vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-overlay{z-index:70}.pv-title{max-width:26vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pv-pageno input{width:64px;padding:4px 6px;text-align:center}#pv-q{width:190px;padding:5px 8px}.pv-side{width:290px;flex:0 0 290px;background:#fff;border-right:1px solid #d9dee8;overflow:auto;padding:6px}.pv-side h4{margin:10px 6px 4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#475467}.pv-toc-item{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;background:none;border:0;border-radius:6px;padding:5px 8px;color:#1b2430;font-weight:500;font-size:13px;cursor:pointer}.pv-toc-item:hover{background:#eef2ff}.pv-toc-item span{color:#667085;flex:0 0 auto}.pv-scroll{flex:1;overflow:auto;background:#525659;padding:18px;cursor:grab;text-align:center}.pv-scroll.grabbing{cursor:grabbing}.pv-sheet{position:relative;display:inline-block;margin:0 auto;box-shadow:0 2px 14px rgba(0,0,0,.45);background:#fff}.pv-sheet img{display:block;max-width:none;user-select:none;-webkit-user-drag:none}.pv-loading{position:absolute;left:0;right:0;top:0;padding:8px;background:rgba(255,255,255,.85);font-size:13px}

/* ===== V0.5.42b ===== */
.fa-hint{display:block;margin-top:3px;font-size:.8rem;color:#667085;font-weight:400}
.fa-error{display:block;margin-top:3px;font-size:.84rem;color:#b42318;font-weight:650}
.fa-invalid{border-color:#d92d20!important;box-shadow:0 0 0 2px rgba(217,45,32,.15)}
label.check{display:flex;align-items:center;gap:8px;font-weight:500}label.check input{width:auto}
.row-actions{display:flex;gap:6px;flex-wrap:wrap}
.logo-thumb{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid #d9dee8;border-radius:8px;background:#fff;overflow:hidden}
.logo-thumb img,.logo-big img{max-width:100%;max-height:100%;object-fit:contain}
.logo-big{display:inline-flex;align-items:center;justify-content:center;width:200px;height:96px;border:1px dashed #cbd5e1;border-radius:10px;background:#fff;overflow:hidden}
.logo-fallback{font-weight:800;color:#64748b}
.oc-layout{display:grid;grid-template-columns:210px 1fr;gap:16px;align-items:start}
.oc-tabs{display:flex;flex-direction:column;gap:4px;position:sticky;top:12px}
.oc-tabs button{text-align:left;background:#fff;color:#1b2430;border:1px solid #d9dee8;border-radius:8px;padding:9px 12px;font-weight:600}
.oc-tabs button.active{background:#1e5eff;color:#fff;border-color:#1e5eff}
.oc-tabs.horizontal{flex-direction:row;flex-wrap:wrap;position:static;margin:10px 0}
.oc-grid{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:14px}
.oc-checks{display:grid;gap:6px;margin:8px 0}
.oc-logo-preview{margin:10px 0}
.map-preview{margin-top:12px}.map-tiles{display:grid;grid-template-columns:repeat(3,256px);gap:0;max-width:100%;overflow:auto}.map-tiles img{width:256px;height:256px;background:#e5e7eb}
.dash-profile{display:inline-flex;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden;background:#fff}
.dash-profile button{border:0;border-radius:0;background:transparent;color:#344054;padding:8px 14px;font-weight:650}
.dash-profile button.active{background:#1e5eff;color:#fff}
.dash-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#fff;color:#1b2430;border:1px solid #d9dee8;border-radius:10px;padding:10px 14px}
.dash-kpi b{font-size:1.5rem}.dash-kpi span{font-size:.82rem;color:#667085;font-weight:500}.dash-kpi.warn{border-color:#f79009;background:#fffaeb}
button.dash-kpi:hover{border-color:#1e5eff}
.dashboard-alert.bad{border-left:3px solid #d92d20}.dashboard-alert.warn{border-left:3px solid #f79009}.dashboard-alert.info{border-left:3px solid #1e5eff}
.dash-block h4{margin:10px 0 4px}
b.warn{color:#b54708}b.bad{color:#b42318}
.proc-summary{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;margin:10px 0}
.proc-summary>div{background:#fff;border:1px solid #d9dee8;border-radius:10px;padding:8px 14px;display:flex;flex-direction:column}
.proc-summary>div b{font-size:1.4rem}.proc-summary>div span{font-size:.8rem;color:#667085}.proc-summary .sep{background:transparent;border:0;width:10px;padding:0}
.proc-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px}
.proc-card{background:#fff;border:1px solid #d9dee8;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px}
.proc-card h4{margin:2px 0}.proc-card .row-actions{margin-top:auto;padding-top:8px}
.proc-card-head{display:flex;gap:6px;flex-wrap:wrap}
.pill.origin-MANUFACTURER{background:#e0e7ff;color:#3730a3}.pill.origin-PROPOSAL{background:#dcfce7;color:#166534}.pill.origin-CUSTOM{background:#fef3c7;color:#92400e}
.pill.sym{background:#f1f5f9;color:#334155}
.pack-card .kpi-strip{margin:10px 0}
.lic-key{font-size:1.2em;margin-top:10px;word-break:break-all;background:#f8fafc;border:1px solid #d9dee8;border-radius:8px;padding:10px}
.lic-summary{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 18px;margin-bottom:10px}.lic-summary>div{display:flex;flex-direction:column}
.wide-modal{max-width:1100px!important;width:96vw!important}
.help-layout{display:grid;grid-template-columns:300px 1fr;gap:18px;align-items:start}
.help-nav{position:sticky;top:12px;max-height:calc(100vh - 40px);overflow:auto;background:#fff;border:1px solid #d9dee8;border-radius:12px;padding:10px}
.help-nav input{width:100%;box-sizing:border-box;margin-bottom:8px}
.help-section h4{margin:12px 6px 4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#475467}
.help-link{display:block;width:100%;text-align:left;background:none;border:0;border-radius:6px;padding:6px 8px;color:#1b2430;font-weight:500;cursor:pointer}
.help-link:hover{background:#eef2ff}.help-link.active{background:#1e5eff;color:#fff}
.help-main{background:#fff;border:1px solid #d9dee8;border-radius:12px;padding:20px 26px;min-width:0}
.help-summary{font-size:1.05rem;color:#344054}.help-crumb{font-size:.82rem}
.help-steps li,.help-tips li{margin:6px 0;line-height:1.5}
.help-problem{border:1px solid #e4e7ec;border-radius:8px;padding:8px 12px;margin:6px 0;background:#f9fafb}.help-problem summary{cursor:pointer;font-weight:600}
.help-see{display:flex;gap:6px;flex-wrap:wrap}
.help-here{font-size:.85rem}
.offer-features{margin:4px 0 0 18px;padding:0;font-size:.85rem;color:#475467}.offer-yes{color:#067647;font-weight:800;font-size:1.1rem}
.roadmap-sep{margin:28px 0 8px}
.swb-symptoms{margin-bottom:12px}.swb-symptoms .chips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.chip{border:1px solid #cbd5e1;background:#fff;color:#1b2430;border-radius:999px;padding:5px 12px;font-weight:600;font-size:.85rem}
.chip.active{background:#1e5eff;color:#fff;border-color:#1e5eff}.chip small{opacity:.8;font-weight:500}.chip.clear{background:#f2f4f7}
.swb-tips{background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:8px 14px;margin:8px 0}.swb-tips ul{margin:6px 0 2px 18px}
.swb-proc.recommended{border-color:#16a34a;background:#f0fdf4}
.swb-alert.info{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}
.swb-exploded .swb-fig-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.swb-fig-frame{display:block;width:100%;background:#fff;border:1px solid #d9dee8;border-radius:10px;padding:6px;cursor:zoom-in;min-height:120px}
.swb-fig-frame img{width:100%;height:auto;display:block}
.dl-app .table-wrap{margin-top:8px}
