:root{
  --navy:#0c1d33;--navy2:#132b49;--ink:#102039;--muted:#66758a;--line:#d9e2ec;--bg:#f3f6fa;--card:#ffffff;
  --red:#e4202b;--red-soft:#ffe8ea;--yellow:#f6bd22;--yellow-soft:#fff6d8;--green:#10a94b;--green-soft:#dff7e8;
  --ready:#72d993;--ready-soft:#e8faee;--blue:#2469d8;--blue-soft:#e9f1ff;--grey:#a7b2c0;--shadow:0 10px 28px rgba(23,48,78,.08);
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:184px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#0b1c32 0%,#122c4a 100%);color:#fff;padding:20px 12px 18px;display:flex;flex-direction:column;gap:18px}.brand-block{height:98px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.97);border-radius:16px;padding:9px}.brand-logo{max-width:132px;max-height:78px;object-fit:contain}.nav-list{display:flex;flex-direction:column;gap:7px}.nav-item{border:0;background:transparent;color:#dae5f3;display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:10px;text-align:left;font-size:14px;min-height:44px}.nav-item:hover,.nav-item.active{background:linear-gradient(90deg,#1856a7,#244f89);color:#fff}.nav-icon{width:22px;text-align:center;font-size:18px}.site-card{margin-top:auto;display:flex;flex-direction:column;gap:4px;padding:16px 10px 8px;color:#fff}.site-card strong{font-size:21px}.site-card small{color:#b7c8dc}.tower-mark{height:86px;position:relative;margin-bottom:4px}.tower-mark span:nth-child(1){position:absolute;width:7px;height:53px;background:#b8c8d8;left:31px;bottom:0;border-radius:4px}.tower-mark span:nth-child(2){position:absolute;width:46px;height:12px;background:#839bb4;left:11px;bottom:45px;border-radius:9px}.tower-mark span:nth-child(3){position:absolute;width:28px;height:17px;border-radius:50% 50% 20% 20%;background:#5f7895;left:20px;bottom:57px}.workspace{min-width:0}.topbar{height:104px;background:#fff;border-bottom:1px solid var(--line);padding:18px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px;position:sticky;top:0;z-index:20}.title-wrap h1{margin:0;font-size:30px;letter-spacing:-.8px}.title-wrap p{margin:2px 0 0;color:#29405f;font-size:15px}.top-actions{display:flex;align-items:center;gap:16px}.search-box{display:flex;align-items:center;gap:8px;background:#f1f5f9;border:1px solid #dce5ef;border-radius:10px;padding:0 11px;height:42px;width:255px}.search-box input{border:0;outline:0;background:transparent;min-width:0;width:100%}.local-badge{font-size:11px;font-weight:800;letter-spacing:.5px;color:#406079;background:#eef5fb;border:1px solid #d7e5f0;padding:8px 10px;border-radius:999px;white-space:nowrap}.pulse-dot{display:inline-block;width:7px;height:7px;background:#19ad54;border-radius:50%;margin-right:6px}.date-block{display:flex;flex-direction:column;color:#223957;font-size:12px;white-space:nowrap}.date-block small{margin-top:2px}.profile{display:flex;align-items:center;gap:9px}.profile small{display:block;color:var(--muted);font-size:11px;margin-top:1px}.avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#0e233d;color:#fff;font-size:12px}.main-content{padding:14px 18px 26px;max-width:1700px;margin:0 auto}.page{display:none}.page.active{display:block}.dashboard-grid{display:grid;grid-template-columns:minmax(0,2.15fr) minmax(310px,.8fr);gap:14px;align-items:start}.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 8px rgba(15,39,65,.03)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #e5ebf2}.panel-head h2,.panel-head h3{margin:0;font-size:15px}.subtle{color:var(--muted);font-size:12px}.map-panel{overflow:hidden}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line);background:#fbfcfe}.segmented{display:flex;gap:5px;flex-wrap:wrap}.segmented button,.filter-chip{border:1px solid #d7e1eb;background:#fff;color:#263d5b;border-radius:8px;padding:8px 12px;min-height:38px}.segmented button.active,.filter-chip.active{background:#112844;color:#fff;border-color:#112844}.map-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:11px;color:#496077}.legend span{display:inline-flex;align-items:center;gap:4px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.project-map{position:relative;min-height:430px;background:linear-gradient(#f4f8fc,#edf3f8);overflow:hidden;padding:12px}.project-map svg{width:100%;height:auto;display:block;min-height:395px}.asset-marker{cursor:pointer}.asset-marker circle{stroke:#fff;stroke-width:2.5;filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}.asset-marker text{font-weight:800;pointer-events:none}.asset-marker.selected circle{stroke:#102039;stroke-width:3.5}.status-inprogress{fill:var(--yellow)}.status-ready{fill:var(--ready)}.status-blocked{fill:var(--red)}.status-completed{fill:var(--green)}.status-unknown{fill:var(--grey)}.asset-quick{margin-top:12px;overflow:hidden}.quick-main{padding:15px}.asset-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.asset-title-row h2{margin:0;font-size:28px;letter-spacing:-.5px}.status-pill{border-radius:999px;font-weight:800;font-size:12px;padding:6px 11px;display:inline-flex;align-items:center;gap:6px}.pill-inprogress{background:var(--yellow-soft);color:#775900}.pill-ready{background:var(--ready-soft);color:#14662f}.pill-blocked{background:var(--red-soft);color:#a31622}.pill-completed{background:var(--green-soft);color:#0a7132}.asset-subline{color:#52657a;margin-top:3px}.quick-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.quick-actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid #ced9e5;background:#fff;color:#16304f;border-radius:9px;padding:9px 12px;min-height:40px;font-weight:700}.btn.primary{background:#112844;color:#fff;border-color:#112844}.btn.danger{background:#fff0f1;color:#a4141e;border-color:#ffcbd0}.btn.success{background:#e8f8ee;color:#0b6d31;border-color:#c5edd3}.metric-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:14px}.metric-box{background:#f7f9fc;border:1px solid #e7edf3;border-radius:9px;padding:11px}.metric-box span{font-size:11px;color:#5d6e83}.metric-box strong{display:block;font-size:20px;margin-top:2px}.mini-bar{height:6px;border-radius:999px;background:#e3e9f0;margin-top:7px;overflow:hidden}.mini-bar i{display:block;height:100%;background:#2bbb60;border-radius:999px}.info-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:14px}.info-item span{font-size:11px;color:#66788c;display:block}.info-item strong{font-size:13px;display:block;margin-top:3px;overflow-wrap:anywhere}.blocker-banner{margin-top:13px;border-radius:9px;padding:11px 12px;background:#fff0f1;color:#a91620;border:1px solid #ffcdd1;display:flex;justify-content:space-between;gap:10px;align-items:center}.tabs{display:flex;gap:4px;padding:0 12px;border-top:1px solid #e4eaf1;background:#fafcff;overflow:auto}.tab-btn{border:0;background:transparent;padding:11px 14px;color:#50647a;font-weight:700;white-space:nowrap;border-bottom:3px solid transparent}.tab-btn.active{color:#0f2a4a;border-bottom-color:#276be1}.tab-content{padding:14px;max-height:400px;overflow:auto}.right-stack{display:flex;flex-direction:column;gap:12px}.overview-card{padding:14px}.overview-progress{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.big-progress{height:20px;border-radius:8px;background:#edf2f7;overflow:hidden}.big-progress i{height:100%;display:block;background:linear-gradient(90deg,#2dc866,#24ad55);border-radius:8px}.big-percent{font-size:28px;font-weight:900}.overview-caption{font-size:11px;color:#607187;text-align:right;margin-top:-4px}.status-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:13px}.status-card{background:#f7f9fc;border:1px solid #e6ecf2;border-radius:9px;padding:9px}.status-card .dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:5px}.status-card strong{font-size:18px}.status-card small{display:block;color:#607187;margin-top:2px}.key-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}.key-card{background:#f7f9fc;border:1px solid #e5ebf2;border-radius:9px;padding:11px}.key-card span{font-size:11px;color:#65768b}.key-card strong{font-size:22px;display:block;margin-top:2px}.key-card small{color:#607187}.activity-list{padding:4px 10px 8px}.activity-item{display:grid;grid-template-columns:12px 46px 60px 1fr;gap:8px;padding:9px 2px;border-bottom:1px solid #edf1f5;align-items:start;font-size:11px}.activity-item:last-child{border-bottom:0}.activity-item .act-dot{width:9px;height:9px;border-radius:50%;margin-top:3px}.activity-item strong{font-size:11px}.activity-item .act-main{color:#223a57}.activity-item .act-meta{color:#6e7e91;margin-top:2px}.report-shortcuts{display:flex;gap:6px;padding:10px;flex-wrap:wrap}.report-shortcuts button{flex:1;min-width:74px;border:1px solid #dce4ee;border-radius:8px;padding:9px;background:#f7f9fc;color:#233b58}.report-shortcuts button:hover{border-color:#2c69d5;color:#1f5dc4}.empty{padding:18px;text-align:center;color:#6b7c8f}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px}.data-table{border-collapse:collapse;width:100%;font-size:12px}.data-table th{position:sticky;top:0;background:#f0f4f8;color:#203957;text-align:left;padding:9px;border-bottom:1px solid #dce4ed;white-space:nowrap}.data-table td{padding:9px;border-bottom:1px solid #edf1f5;vertical-align:top}.data-table tr:hover td{background:#fafcff}.row-click{cursor:pointer}.controls-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.controls-row input,.controls-row select,.field input,.field select,.field textarea{border:1px solid #ced9e5;background:#fff;border-radius:8px;padding:9px 10px;min-height:40px;color:#17324f}.controls-row input{min-width:220px}.page-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-end;margin-bottom:12px}.page-head h2{margin:0;font-size:23px}.page-head p{margin:4px 0 0;color:#64768a;font-size:13px}.stats-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:12px}.stat-tile{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}.stat-tile span{color:#64758a;font-size:11px}.stat-tile strong{display:block;font-size:24px;margin-top:2px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.field label{display:block;color:#51647a;font-size:11px;font-weight:700;margin-bottom:4px}.field textarea{width:100%;min-height:84px;resize:vertical}.field.full{grid-column:1/-1}.modal-backdrop{position:fixed;inset:0;background:rgba(6,17,31,.48);display:grid;place-items:center;z-index:100;padding:18px}.modal{width:min(720px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.modal-head{padding:14px 16px;border-bottom:1px solid #e3e9f0;display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0}.modal-body{padding:14px 16px}.modal-foot{padding:12px 16px;border-top:1px solid #e3e9f0;display:flex;justify-content:flex-end;gap:8px}.icon-btn{border:0;background:#eef3f8;width:38px;height:38px;border-radius:8px}.finding-card{border:1px solid #e0e7ef;border-radius:9px;padding:10px;margin-bottom:8px;background:#fff}.finding-card .finding-top{display:flex;justify-content:space-between;gap:8px}.finding-card .finding-id{font-size:10px;color:#728196}.finding-card p{font-size:12px;margin:5px 0;color:#233b58;line-height:1.45}.finding-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.small-select{border:1px solid #ced9e5;border-radius:7px;padding:6px 7px;background:#fff;font-size:11px}.history-item{padding:9px 0;border-bottom:1px solid #edf1f5}.history-item strong{font-size:12px}.history-item p{margin:2px 0;color:#485d73;font-size:12px}.history-item small{color:#78889a}.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:12px 0}.report-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:13px}.report-card strong{font-size:24px;display:block}.report-card span{font-size:11px;color:#65768a}.data-manager-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.paste-box{background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px}.paste-box textarea{width:100%;min-height:190px;border:1px solid #ccd8e5;border-radius:8px;padding:9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;resize:vertical}.paste-box code{font-size:10px;color:#576a7e;display:block;margin:6px 0;white-space:normal}.toast{position:fixed;right:22px;bottom:22px;background:#102843;color:#fff;padding:11px 14px;border-radius:9px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s;z-index:200;font-size:12px}.toast.show{opacity:1;transform:translateY(0)}.coverage-note{padding:9px 12px;background:#fff7df;border:1px solid #f2df9d;border-radius:8px;color:#6f590d;font-size:11px}.toolbar-spacer{flex:1}.muted-btn{border:0;background:transparent;color:#2864c6;font-weight:700}.search-results{position:absolute;top:78px;right:322px;background:#fff;border:1px solid #d8e1eb;border-radius:9px;box-shadow:var(--shadow);width:310px;z-index:80;max-height:350px;overflow:auto}.search-result{display:block;width:100%;border:0;background:#fff;text-align:left;padding:9px 11px;border-bottom:1px solid #edf1f5}.search-result:hover{background:#f4f8fd}.search-result strong{display:block}.search-result small{color:#6b7c90}.hidden{display:none!important}
@media(max-width:1200px){.app-shell{grid-template-columns:78px minmax(0,1fr)}.brand-block{height:66px;padding:5px}.brand-logo{max-width:58px}.nav-item{justify-content:center;padding:10px}.nav-item span:last-child,.site-card strong,.site-card>span,.site-card small,.tower-mark{display:none}.site-card{padding:5px}.dashboard-grid{grid-template-columns:1fr}.right-stack{display:grid;grid-template-columns:1fr 1fr}.top-actions .date-block{display:none}.search-box{width:220px}}
@media(max-width:820px){.app-shell{display:block}.sidebar{position:sticky;top:0;z-index:50;flex-direction:row;padding:7px 8px;gap:8px;overflow-x:auto;align-items:center}.brand-block{width:60px;min-width:60px;height:50px}.nav-list{flex-direction:row;gap:4px}.nav-item{min-width:52px;min-height:48px}.site-card{display:none}.topbar{position:static;height:auto;padding:12px 14px;align-items:flex-start}.title-wrap h1{font-size:24px}.top-actions{flex-wrap:wrap;justify-content:flex-end}.profile,.local-badge{display:none}.search-box{width:210px}.main-content{padding:10px}.right-stack{grid-template-columns:1fr}.metric-row{grid-template-columns:1fr 1fr}.info-grid{grid-template-columns:1fr 1fr}.project-map{min-height:360px}.project-map svg{min-height:330px}.stats-strip{grid-template-columns:1fr 1fr}.data-manager-grid{grid-template-columns:1fr}.report-grid{grid-template-columns:1fr 1fr}.search-results{top:95px;right:14px;width:min(310px,calc(100vw - 28px))}}
@media(max-width:520px){.topbar{display:block}.top-actions{margin-top:10px;justify-content:flex-start}.search-box{width:100%}.metric-row,.info-grid,.form-grid,.status-cards{grid-template-columns:1fr}.quick-top{display:block}.quick-actions{margin-top:10px}.stats-strip{grid-template-columns:1fr}.report-grid{grid-template-columns:1fr}.activity-item{grid-template-columns:12px 45px 1fr}.activity-item .act-asset{display:none}}

/* ===== V1.1 visual refinement — closer to the approved mock-up ===== */
:root{
  --navy:#0a1a2d;--navy2:#102a47;--ink:#0d1d34;--muted:#6a7b8e;--line:#dbe4ed;--bg:#f4f7fb;--card:#fff;
  --red:#df2d3a;--red-soft:#ffeaec;--yellow:#f0bd2c;--yellow-soft:#fff5d0;--green:#16994d;--green-soft:#e3f7ea;
  --ready:#7dd99a;--ready-soft:#e5f8eb;--blue:#2469d8;--blue-soft:#e9f1ff;--grey:#a7b2c0;--shadow:0 12px 32px rgba(18,43,70,.07);
}
.app-shell{grid-template-columns:172px minmax(0,1fr)}
.sidebar{padding:18px 10px 16px;background:linear-gradient(180deg,#07182a 0%,#102c4a 100%);gap:16px}
.brand-block{height:86px;border-radius:12px;padding:7px;background:#fff}
.brand-logo{max-width:124px;max-height:70px}
.nav-item{border-radius:9px;padding:10px 11px;font-size:13px;color:#dce7f4}
.nav-item:hover,.nav-item.active{background:linear-gradient(90deg,#174f92,#1f5fa9)}
.site-card{padding:14px 10px 6px}
.topbar{height:90px;padding:14px 22px;gap:18px;background:#fff}
.title-wrap{min-width:205px}
.title-wrap h1{font-size:29px;line-height:1.05}
.title-wrap p{font-size:14px;margin-top:4px}
.top-tabs{display:flex;align-items:center;gap:6px;padding:5px;background:#eef3f8;border-radius:10px;border:1px solid #e1e8ef}
.top-tab{border:0;background:transparent;color:#102039;min-height:38px;padding:8px 16px;border-radius:8px;font-size:13px}
.top-tab.active{background:#0f2743;color:#fff;box-shadow:0 2px 7px rgba(15,39,67,.16)}
.top-actions{gap:10px;min-width:0}
.search-box{height:40px;width:226px;background:#f6f8fb;border-color:#dbe4ed}
.global-asset-select,.control-select{border:1px solid #d4dee8;background:#fff;color:#17314e;border-radius:9px;min-height:40px;padding:8px 10px}
.global-asset-select{width:170px}
.local-badge{padding:7px 9px}
.main-content{padding:14px 16px 28px}
.dashboard-grid{grid-template-columns:minmax(0,2.32fr) minmax(345px,.88fr);gap:13px}
.panel{border-radius:10px;box-shadow:0 3px 12px rgba(20,46,73,.035)}
.panel-head{padding:11px 13px}
.panel-head h2,.panel-head h3{font-size:14px}
.clean-head{padding:0 0 10px!important;border:0!important}
.hero-map-panel{background:#fff}
.map-toolbar{padding:9px 11px;background:#fff}
.map-tool-groups,.map-filter-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.map-toolbar-full{align-items:flex-start}
.map-filter-right{justify-content:flex-end}
.segmented{gap:4px}
.segmented button,.filter-chip{min-height:34px;padding:7px 11px;border-radius:7px;font-size:12px;background:#f8fafc}
.segmented button.active,.filter-chip.active{background:#102844;border-color:#102844;color:#fff}
.scope-switch button{min-width:76px}
.legend{font-size:10px;gap:8px}
.legend i{width:8px;height:8px}
.project-map{min-height:408px;padding:8px 10px 5px;background:#f5f8fb}
.project-map svg{min-height:390px}
.map-page-canvas{min-height:540px}
.map-page-canvas svg{min-height:520px}
.asset-marker{cursor:pointer;outline:none}
.asset-marker .marker-hit{fill:transparent;stroke:none}
.asset-marker .marker-box{stroke-width:.38;filter:drop-shadow(0 1px 1px rgba(20,43,68,.12));transition:.12s ease}
.asset-marker .marker-text{font-size:1.08px;font-weight:850;fill:#17304d;pointer-events:none;letter-spacing:-.02px}
.asset-marker .marker-text-light{fill:#fff}
.asset-marker .status-inprogress{fill:#fff1b9;stroke:#d6a90d}
.asset-marker .status-ready{fill:#dff6e7;stroke:#67bd82}
.asset-marker .status-blocked{fill:#db3341;stroke:#b81725}
.asset-marker .status-completed{fill:#168d48;stroke:#0b6c34}
.asset-marker .status-unknown{fill:#e9eef3;stroke:#9cabb9}
.asset-marker:hover .marker-box{stroke:#102844;stroke-width:.62}
.asset-marker.selected .marker-box{stroke:#0d1d34;stroke-width:.78;filter:drop-shadow(0 0 2px rgba(13,29,52,.25))}
.asset-marker:focus-visible .marker-box{stroke:#2469d8;stroke-width:.78}
.overview-card{padding:13px}
.overview-progress{grid-template-columns:1fr auto;gap:9px}
.big-progress{height:18px;border-radius:6px}
.big-percent{font-size:27px}
.status-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px}
.status-card{appearance:none;text-align:left;color:inherit;border:1px solid #e5ebf1;background:#f8fafc;border-radius:8px;padding:8px 7px;min-width:0}
.status-card strong{font-size:17px;line-height:1}
.status-card small{font-size:9px;line-height:1.15;margin-top:5px;min-height:22px}
.status-card .dot{width:8px;height:8px}
.kpi-click{cursor:pointer}
.kpi-click:hover{border-color:#b8c8d8;background:#fff}
.key-grid{gap:7px;padding:11px}
.key-card{appearance:none;text-align:left;color:inherit;border:1px solid #e5ebf2;background:#f8fafc;border-radius:8px;padding:10px;min-height:82px}
.key-card span{font-size:10px}
.key-card strong{font-size:21px}
.key-card small{font-size:10px}
.coverage-strip{margin:0 11px 11px;padding:8px 10px;border:1px solid #ece4c7;background:#fffaf0;border-radius:8px;display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:7px;color:#6d5a1e;font-size:10px}
.coverage-strip strong{font-size:13px}
.activity-item{grid-template-columns:10px 40px 56px 1fr;gap:7px;padding:8px 2px;font-size:10px}
.activity-item strong,.activity-item .act-main{font-size:10px}
.report-shortcuts button{padding:8px;font-size:11px}
.asset-quick{margin-top:11px}
.quick-main{padding:13px}
.asset-hero{display:grid;grid-template-columns:165px minmax(0,1fr);gap:16px;align-items:stretch}
.asset-hero-body{min-width:0}
.asset-visual{border:1px solid #dce5ed;border-radius:9px;background:linear-gradient(180deg,#f8fafc,#eef3f7);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:165px;overflow:hidden;color:#5a6e82;font-size:11px;font-weight:750}
.asset-visual svg{width:92%;height:auto;max-height:115px}
.asset-title-row h2{font-size:27px}
.asset-subline{font-size:12px}
.metric-row{gap:7px;margin-top:12px}
.metric-box{padding:9px;background:#f7f9fc}
.metric-box strong{font-size:18px}
.info-grid{gap:8px;margin-top:12px}
.info-item strong{font-size:12px}
.tabs{background:#fbfcfe}
.tab-btn{font-size:12px;padding:10px 13px}
.tab-content{padding:12px}
.filter-bar{align-items:center;background:#fff;border:1px solid #e0e7ee;border-radius:10px;padding:9px;margin-bottom:11px}
.controls-row input,.controls-row select{min-height:39px}
.controls-row input{min-width:220px;flex:1 1 250px}
.controls-row .control-select{min-width:180px;flex:0 1 220px}
.compact-status{max-width:590px;justify-content:flex-end}
.report-filter-panel{padding:11px}
.report-filter-panel .filter-bar{border:0;padding:0;margin:0 0 7px}
.report-grid{gap:8px}
.report-card{border-radius:9px;padding:12px}
.report-card strong{font-size:22px}
.search-results{top:69px;right:390px;width:300px;border-radius:9px}

@media(max-width:1450px){
  .top-tabs{display:none}
  .global-asset-select{width:155px}
  .dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(330px,.85fr)}
}
@media(max-width:1200px){
  .app-shell{grid-template-columns:76px minmax(0,1fr)}
  .dashboard-grid{grid-template-columns:1fr}
  .right-stack{display:grid;grid-template-columns:1fr 1fr}
  .top-actions .date-block{display:none}
  .search-box{width:205px}
  .global-asset-select{width:155px}
  .status-cards{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:900px){
  .topbar{height:auto;align-items:flex-start;flex-wrap:wrap}
  .title-wrap{min-width:180px}
  .top-actions{flex:1;justify-content:flex-end;flex-wrap:wrap}
  .search-box,.global-asset-select{width:min(240px,100%)}
  .asset-hero{grid-template-columns:130px minmax(0,1fr)}
  .asset-visual{min-height:145px}
}
@media(max-width:820px){
  .app-shell{display:block}
  .sidebar{position:sticky;top:0;z-index:50;flex-direction:row;padding:7px 8px;gap:8px;overflow-x:auto;align-items:center}
  .brand-block{width:58px;min-width:58px;height:48px}
  .nav-list{flex-direction:row;gap:4px}
  .nav-item{min-width:52px;min-height:46px}
  .site-card{display:none}
  .topbar{position:static;padding:11px 12px}
  .title-wrap h1{font-size:23px}
  .profile,.local-badge{display:none}
  .main-content{padding:9px}
  .right-stack{grid-template-columns:1fr}
  .project-map{min-height:330px;padding:5px}
  .project-map svg{min-height:315px}
  .map-page-canvas{min-height:420px}
  .map-page-canvas svg{min-height:405px}
  .asset-hero{grid-template-columns:1fr}
  .asset-visual{display:none}
  .metric-row{grid-template-columns:1fr 1fr}
  .info-grid{grid-template-columns:1fr 1fr}
  .status-cards{grid-template-columns:repeat(4,1fr)}
  .map-toolbar{align-items:flex-start;flex-direction:column}
  .map-filter-right{justify-content:flex-start;width:100%}
  .compact-status{justify-content:flex-start}
  .filter-bar{align-items:stretch}
  .controls-row input,.controls-row .control-select,.controls-row select{width:100%;min-width:0;flex:1 1 100%}
  .search-results{top:94px;right:12px;width:min(310px,calc(100vw - 24px))}
}

/* ===== V1.2 operational feedback ===== */
.asset-marker .status-inprogress{fill:#f2c94c;stroke:#c89d00}
.asset-marker .status-ready{fill:#75d996;stroke:#3eab64}
.asset-marker .status-blocked{fill:#dc3545;stroke:#aa1e2a}
.asset-marker .status-completed{fill:#168d48;stroke:#0a6a33}
.asset-marker .marker-box{stroke-width:.45}
.asset-marker.selected .marker-box{stroke:#08182b;stroke-width:.9;filter:drop-shadow(0 0 2.5px rgba(8,24,43,.32))}
.recent-comments{margin-top:2px}
.comment-entry{border:1px solid #e3e9ef;background:#f8fafc;border-radius:8px;padding:9px 10px;margin-top:7px;color:#263e59;font-size:12px;line-height:1.45}
.comment-entry small{display:block;color:#78889a;margin-top:4px;font-size:10px}
.nen-original{margin-top:5px;padding-top:5px;border-top:1px dashed #e1e7ed;line-height:1.4}

/* V1.3 — persistent SAIS visibility, status colours and owner controls */
.field-help{margin-top:5px;color:#7a8999;font-size:10px;line-height:1.35}
.inline-edit{border:0;background:transparent;color:#2864c6;font-weight:800;font-size:10px;padding:0 0 0 6px;min-height:auto}
.sais-tab-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.sais-summary{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.sais-count{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:800;border:1px solid transparent}
.count-open{background:#ffe8ea;color:#b31d2a;border-color:#f3b6bc}
.count-verification{background:#fff4ce;color:#866200;border-color:#edd480}
.count-closed{background:#e1f7e9;color:#126b38;border-color:#a9dfbb}
.sais-section-head{margin:12px 0 7px;padding:8px 10px;border-radius:8px;background:#f4f7fa;color:#263d58;font-size:12px;font-weight:900;border-left:4px solid #e2a900}
.sais-section-head small{font-weight:600;color:#758598;margin-left:5px}
.sais-section-head.closed-head{border-left-color:#168d48;margin-top:16px}
.finding-card.sais-finding{border-left-width:4px}
.finding-card.sais-open{border-left-color:#dc3545}
.finding-card.sais-verification{border-left-color:#e3ae00}
.finding-card.sais-closed{border-left-color:#168d48}
.finding-copy{min-width:0;flex:1}
.finding-meta-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.sais-status-badge{display:inline-flex;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:900;border:1px solid transparent}
.badge-open{background:#ffe8ea;color:#b31d2a;border-color:#efb1b8}
.badge-verification{background:#fff4ce;color:#7e5c00;border-color:#efd47b}
.badge-closed{background:#e1f7e9;color:#126b38;border-color:#a9dfbb}
.small-select.sais-status{font-weight:800;min-width:106px}
.small-select.sais-status-open{background:#ffe8ea;border-color:#e99da6;color:#a91825}
.small-select.sais-status-verification{background:#fff4ce;border-color:#e5c75d;color:#725400}
.small-select.sais-status-closed{background:#e1f7e9;border-color:#96d4aa;color:#0f6634}
.small-select.sais-status.compact{min-width:104px}
.point-owner-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid #edf1f5;margin-top:8px;padding-top:8px}
.owner-label{font-size:10px;font-weight:800;color:#66778b;min-width:68px}
.owner-control{display:inline-flex;gap:5px;align-items:center;min-width:0}
.owner-control .sais-responsible{min-width:145px;max-width:220px}
.mini-owner-btn{width:30px;height:30px;border:1px solid #ccd8e5;background:#f5f8fb;color:#1f5fbd;border-radius:7px;font-weight:900;font-size:15px;line-height:1}
.mini-owner-btn:hover{background:#eaf2fd;border-color:#9fbce4}
.point-comment{margin-top:7px;padding:7px 8px;border-radius:7px;background:#f7f9fb;color:#50647a;font-size:11px}
.owner-registry{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 12px}
.owner-registry span{display:inline-flex;padding:5px 8px;border:1px solid #d9e2ec;background:#f7f9fc;border-radius:999px;font-size:10px;font-weight:700;color:#435a73}
.metric-box.metric-open{border-top:3px solid #dc3545}
.metric-box.metric-open .mini-bar i{background:#dc3545}
.metric-box.metric-verification{border-top:3px solid #e3ae00}
.metric-box.metric-verification .mini-bar i{background:#e3ae00}
.metric-box.metric-closed{border-top:3px solid #168d48}
.metric-box.metric-closed .mini-bar i{background:#168d48}
@media(max-width:520px){.sais-tab-head{display:block}.sais-tab-head .btn{margin-top:8px;width:100%}.point-owner-row{align-items:flex-start}.owner-control{width:100%}.owner-control .sais-responsible{flex:1;max-width:none}.finding-actions.sais-actions{width:100%;margin-top:6px}.finding-actions.sais-actions .sais-status{width:100%}}

/* V1.4 — comment management + audit log */
.comment-entry{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.comment-entry-main{min-width:0;flex:1}
.comment-actions{display:flex;gap:5px;flex-wrap:wrap;flex-shrink:0}
.comment-action-btn{border:1px solid #d7e0e9;background:#fff;color:#38516c;border-radius:7px;padding:5px 8px;font-size:10px;font-weight:700;min-height:30px}
.comment-action-btn:hover{border-color:#8fa4b8;background:#f6f9fc}
.comment-action-btn.delete{color:#a31520;border-color:#efc5ca;background:#fff8f8}
.comment-action-btn.delete:hover{background:#fff0f1}
.comment-edited{color:#6f8093;font-size:10px;margin-top:3px}
.history-item{position:relative;padding-right:130px}
.history-item.deleted-comment{opacity:.75;background:#fff8f8;border:1px dashed #efc8cc;border-radius:8px;padding:9px 130px 9px 10px;margin:6px 0}
.history-item-actions{position:absolute;right:0;top:7px;display:flex;gap:5px}
.history-item.deleted-comment .history-item-actions{display:none}
.audit-filter-panel{padding:12px;margin-bottom:12px}
.audit-type{display:inline-flex;align-items:center;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;margin-left:5px;background:#edf2f7;color:#53677d}
.audit-type.comment{background:#e8f8ee;color:#0c6b31}
.audit-type.comment-audit{background:#fff0f1;color:#9b1b25}
.audit-type.sais{background:#e9f7ee;color:#126d34}
.audit-type.nen{background:#edf4ff;color:#245ea7}
.audit-type.asset{background:#fff5d9;color:#765900}
.audit-type.system,.audit-type.data{background:#eef2f6;color:#53667b}
@media(max-width:820px){.comment-entry{flex-direction:column}.comment-actions{width:100%}.comment-action-btn{flex:1}.history-item,.history-item.deleted-comment{padding-right:10px}.history-item-actions{position:static;margin-top:7px}}

/* V1.5 — Works Finished */
.info-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
.works-finished-select{width:100%;min-height:42px;border-radius:9px;border:1px solid #d5dfe9;padding:8px 10px;font-weight:850}
.works-finished-select.works-no{background:#fff4ce;color:#725400;border-color:#e4c95d}
.works-finished-select.works-yes{background:#e1f7e9;color:#0f6634;border-color:#9dd8b0}
.works-text-yes{color:#0f763b}
.works-text-no{color:#806100}
@media(max-width:1100px){.info-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V1.6 — installation, readiness, software and tests are independent */
.overview-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
.readiness-select,.software-select{width:100%;min-height:42px;border-radius:9px;border:1px solid #d5dfe9;padding:8px 10px;font-weight:850}
.readiness-select.ready-yes,.software-select.software-ok{background:#e1f7e9;color:#0f6634;border-color:#9dd8b0}
.readiness-select.ready-no,.software-select.software-not{background:#fff4ce;color:#725400;border-color:#e4c95d}
.mini-state{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:850;white-space:nowrap}
.state-ready{background:#e1f7e9;color:#0f6634}
.state-notready{background:#fff4ce;color:#725400}
.overview-test-strip{display:flex;gap:10px;flex-wrap:wrap}
.overview-test-strip>span{display:flex;align-items:center;gap:8px;border:1px solid #dbe4ec;border-radius:10px;padding:8px 10px;background:#f8fafc}
.test-pill{display:inline-flex;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:900}
.test-passed{background:#e1f7e9;color:#0f6634}
.test-failed{background:#fde8ea;color:#a91825}
.test-not-tested{background:#edf1f5;color:#627286}
.tests-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}
.tests-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.test-card{border:1px solid #dbe4ec;border-radius:12px;padding:13px;background:#fff}
.test-card.passed{border-left:4px solid #39a867}
.test-card.failed{border-left:4px solid #cf3545}
.test-card.not-tested{border-left:4px solid #aeb9c5}
.test-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.test-type{font-size:16px;font-weight:900;color:#17304c}
.test-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.test-form-grid .full{grid-column:1/-1}
.asset-status-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1100px){.asset-status-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.overview-controls{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.tests-grid{grid-template-columns:1fr}.overview-controls{grid-template-columns:1fr}.asset-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* V1.7 — map selection preview, inline asset expansion, cleaner asset overview */
.asset-map-preview{border-top:1px solid #e0e8f0;background:#fff;padding:11px 13px;display:grid;grid-template-columns:minmax(190px,.9fr) minmax(330px,1.4fr);gap:10px 16px;align-items:center}
.preview-identity{display:flex;align-items:center;justify-content:space-between;gap:10px}.preview-identity strong{font-size:20px;color:#122b49;display:block}.preview-identity span{display:block;color:#687b90;font-size:11px;margin-top:2px}.preview-primary-line{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.preview-primary-line>div{border:1px solid #e1e8ef;border-radius:8px;padding:7px 9px;background:#f8fafc}.preview-primary-line span{display:block;color:#6a7b8e;font-size:9px;font-weight:750;line-height:1.2}.preview-primary-line strong{display:block;margin-top:3px;font-size:12px}.preview-secondary-line{grid-column:1/2;display:flex;gap:8px 13px;flex-wrap:wrap;color:#50667d;font-size:10px}.preview-actions{grid-column:2/3;display:flex;justify-content:flex-end}.preview-actions .btn{min-width:155px}
.overview-primary-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.compact-status-field{min-width:0}.compact-status-field select{width:100%}.overview-help-line{font-size:11px;color:#687b90;margin:7px 0 11px}.overview-main .overview-test-strip{margin-bottom:12px}.recent-comments>label{display:block;color:#51647a;font-size:11px;font-weight:700;margin-bottom:6px}
.asset-expanded-row>td{padding:0!important;background:#f6f9fc!important}.asset-expanded-row .asset-quick{margin:8px;border-color:#cdd9e6;box-shadow:0 4px 14px rgba(20,48,80,.06)}.row-click.expanded td{background:#edf4fb!important}.row-click.expanded{outline:1px solid #c7d8eb;outline-offset:-1px}
.map-page-canvas{min-height:500px}.map-page-canvas svg{min-height:475px}
@media(max-width:980px){.asset-map-preview{grid-template-columns:1fr}.preview-secondary-line,.preview-actions{grid-column:1}.preview-actions{justify-content:flex-start}.overview-primary-status{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.preview-primary-line,.overview-primary-status{grid-template-columns:1fr}.asset-map-preview{padding:9px}.preview-actions .btn{width:100%}}

/* V1.8 — map and detail UX */
.asset-summary-card{margin-top:12px}
.asset-details-panel{margin-top:8px}
.asset-details-panel .tabs{border-top:0}
.preview-actions-lower{display:flex;justify-content:flex-end;margin-top:16px;padding-top:12px;border-top:1px solid #e3eaf1}
.details-toggle{min-width:150px}
.summary-status-line{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}
.summary-status-line>div{border:1px solid #dfe7ef;border-radius:9px;background:#f8fafc;padding:8px 9px;min-width:0}
.summary-status-line span{display:block;color:#6a7c8f;font-size:10px;font-weight:700;margin-bottom:4px}
.summary-status-line strong{font-size:12px}
.map-zoom-controls{display:flex;align-items:center;gap:5px;background:#fff;border:1px solid #d8e2eb;border-radius:9px;padding:3px}
.map-zoom-controls button{border:0;background:#eef3f7;color:#17304c;border-radius:6px;min-width:32px;height:32px;font-size:18px;font-weight:850;cursor:pointer}
.map-zoom-controls button:hover{background:#dfe9f3}
.map-zoom-controls .zoom-reset{font-size:11px;padding:0 9px}
.map-zoom-controls span{font-size:10px;font-weight:800;color:#6a7c8f;min-width:38px;text-align:center}
.nen-finding.nen-open{border-left:4px solid #cf3545;background:#fff9fa}
.nen-finding.nen-closed{border-left:4px solid #39a867;background:#fbfffc}
.nen-status-open{background:#fde8ea!important;color:#a91825!important;border-color:#efb6bc!important;font-weight:800}
.nen-status-closed{background:#e1f7e9!important;color:#0f6634!important;border-color:#a8ddba!important;font-weight:800}
@media(max-width:1100px){.summary-status-line{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.summary-status-line{grid-template-columns:repeat(2,minmax(0,1fr))}.preview-actions-lower{justify-content:stretch}.details-toggle{width:100%}}

.nen-table-row.nen-open td:first-child{box-shadow:inset 4px 0 0 #cf3545}
.nen-table-row.nen-closed td:first-child{box-shadow:inset 4px 0 0 #39a867}

/* ===============================================================
   V2.0 — return to the strong mock-up composition
   =============================================================== */
.app-shell{grid-template-columns:184px minmax(0,1fr)}
.sidebar{
  padding:18px 0 0!important;
  gap:14px!important;
  overflow:hidden;
  background:linear-gradient(180deg,#0a1b30 0%,#102b49 100%);
}
.brand-block{
  height:86px!important;
  margin:0 14px!important;
  padding:6px!important;
  background:transparent!important;
  border-radius:0!important;
}
.brand-logo{
  max-width:132px!important;
  max-height:75px!important;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.18));
}
.nav-list{padding:0 12px;gap:6px!important}
.nav-item{border-radius:7px!important;padding:10px 11px!important;font-size:13px!important}
.sidebar-project-photo{
  margin-top:auto;
  position:relative;
  width:100%;
  height:300px;
  overflow:hidden;
  background:#0b1b2d;
  border:0;
  border-radius:0;
}
.sidebar-project-photo img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center center;
  filter:saturate(.86) contrast(1.03) brightness(.88);
}
.sidebar-project-photo:after{
  content:"";
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(10,28,49,.02) 15%,rgba(10,28,49,.22) 50%,rgba(8,23,40,.95) 100%);
}
.sidebar-project-overlay{
  position:absolute;left:17px;right:14px;bottom:18px;z-index:2;
  color:#fff;display:flex;flex-direction:column;gap:4px;
}
.sidebar-project-overlay strong{font-size:20px;line-height:1.05}
.sidebar-project-overlay span{font-size:12px;font-weight:700}
.sidebar-project-overlay small{font-size:10px;color:#c8d6e5}

.topbar{
  height:86px!important;
  padding:11px 24px!important;
  gap:18px!important;
}
.title-brand-wrap{
  display:flex;align-items:center;gap:15px;min-width:340px;
}
.cegitech-logo{
  width:124px;height:46px;object-fit:contain;display:block;
  padding-right:14px;border-right:1px solid #dce4ec;
}
.dashboard-title-text h1{font-size:24px!important;line-height:1.04;margin:0}
.dashboard-title-text p{font-size:12px!important;margin:3px 0 0!important}
.search-box,.global-asset-select,.local-badge{display:none!important}
.top-tabs{margin-left:auto;margin-right:auto}
.top-tab{min-width:74px}
.top-actions{gap:13px!important}

.main-content{padding:12px!important}
.dashboard-grid{grid-template-columns:minmax(0,2.1fr) minmax(290px,.78fr)!important;gap:12px!important}
.hero-map-panel{overflow:hidden}
.map-toolbar{
  padding:9px 11px!important;
  min-height:54px;
  background:#fbfcfe;
}
.map-tool-groups{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.scope-switch button{min-width:70px}
.floor-switch button{min-width:70px}
.project-map{
  padding:4px 6px 2px!important;
  min-height:455px;
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
  background:#f5f8fb;
}
.project-map .operational-map-svg{
  width:100%;
  height:455px;
  display:block;
}
.map-page-canvas{
  min-height:560px!important;
}
.map-page-canvas .operational-map-svg{
  height:560px!important;
}
.asset-chip-shadow{filter:drop-shadow(0 .25px .35px rgba(20,47,74,.18))}
.asset-marker{cursor:pointer;outline:none}
.asset-marker:hover rect:nth-of-type(2){stroke:#163c66!important;stroke-width:.65!important}
.asset-marker.selected rect:nth-of-type(2){stroke:#0d2745!important;stroke-width:.85!important}
.map-meta{gap:10px!important}
.legend{font-size:10px!important;gap:9px!important}
.legend i{width:8px!important;height:8px!important}

.asset-summary-card{margin-top:10px!important}
.asset-summary-card .asset-hero{grid-template-columns:120px minmax(0,1fr)!important}
.asset-summary-card .asset-visual{min-height:112px}
.asset-summary-card .metric-row{grid-template-columns:repeat(4,minmax(0,1fr))}
.summary-status-line{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.preview-actions-lower{margin-top:10px!important;padding-top:9px!important}
.details-toggle{min-width:145px}

.right-stack{gap:10px!important}
.overview-card{padding:12px!important}
.status-cards{grid-template-columns:repeat(4,1fr)!important}
.status-card{padding:8px 6px!important;text-align:left}
.status-card strong{font-size:16px!important}
.status-card small{font-size:9px}
.key-grid{padding:10px!important}
.key-card{padding:9px!important}
.activity-list{padding:3px 9px 7px!important}

@media(max-width:1180px){
  .app-shell{grid-template-columns:168px minmax(0,1fr)}
  .dashboard-grid{grid-template-columns:minmax(0,1.7fr) 285px!important}
  .project-map,.project-map .operational-map-svg{min-height:420px;height:420px}
  .cegitech-logo{width:108px}
  .title-brand-wrap{min-width:290px}
}
@media(max-width:980px){
  .dashboard-grid{grid-template-columns:1fr!important}
  .right-stack{display:grid!important;grid-template-columns:1fr 1fr!important}
  .project-map,.project-map .operational-map-svg{min-height:480px;height:480px}
}
@media(max-width:760px){
  .app-shell{grid-template-columns:78px minmax(0,1fr)}
  .sidebar-project-photo{display:none}
  .brand-block{margin:0 6px!important}
  .brand-logo{max-width:65px!important}
  .nav-list{padding:0 6px}
  .nav-item span:last-child{display:none}
  .nav-item{justify-content:center}
  .title-brand-wrap{min-width:0}
  .cegitech-logo{width:92px;border-right:0;padding-right:0}
  .dashboard-title-text{display:none}
  .top-tabs{display:none}
  .right-stack{grid-template-columns:1fr!important}
  .map-toolbar{align-items:flex-start!important}
  .map-tool-groups{width:100%}
  .project-map,.project-map .operational-map-svg{min-height:410px;height:410px}
}

/* V2.1 — operational map accuracy + motion sidebar */
.sidebar-motion-visual{
  margin-top:auto;
  position:relative;
  width:100%;
  height:318px;
  overflow:hidden;
  background:#07182a;
}
.sidebar-motion-visual svg{width:100%;height:100%;display:block}
.sidebar-motion-visual:after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(7,24,42,0) 38%,rgba(7,24,42,.18) 58%,rgba(7,24,42,.92) 100%);
  pointer-events:none;
}
.sidebar-motion-copy{
  position:absolute;left:18px;right:14px;bottom:18px;z-index:2;color:#fff;
  display:flex;flex-direction:column;gap:2px;
}
.sidebar-motion-copy strong{font-size:19px;line-height:1.05;letter-spacing:.2px}
.sidebar-motion-copy span{font-size:19px;font-weight:850;line-height:1.05}
.sidebar-motion-copy small{margin-top:7px;color:#b7cbdd;font-size:9px;font-weight:700;letter-spacing:.7px}
.motion-light{stroke-dasharray:18 9;animation:walkRail 2.8s linear infinite}
.motion-light-b{animation-delay:-1.4s}
.motion-pulse{animation:walkPulse 2.2s linear infinite}
@keyframes walkRail{to{stroke-dashoffset:-54}}
@keyframes walkPulse{to{stroke-dashoffset:-32}}

.gatehouse rect:first-child{filter:drop-shadow(0 .4px .5px rgba(23,47,70,.10))}
.backpack-zone path{filter:drop-shadow(0 .4px .5px rgba(23,47,70,.08))}
.asset-marker{cursor:pointer;transition:transform .14s ease}
.asset-marker:hover{transform:translateY(-.25px)}
.asset-marker.selected{filter:drop-shadow(0 0 2px rgba(21,121,209,.45))}
.operational-map-svg{shape-rendering:geometricPrecision}
.project-map{background:linear-gradient(180deg,#f9fbfd 0%,#f3f7fa 100%)!important}
.map-toolbar{border-bottom:1px solid #dce5ed}
.floor-switch button.active,.scope-switch button.active{
  box-shadow:0 0 0 1px rgba(55,129,199,.18),0 3px 10px rgba(23,70,112,.10);
}

/* V2.2 — first-floor AB-Link + corrected 3rd floor */
.integrated-ab-link{filter:drop-shadow(0 .35px .5px rgba(20,47,72,.08))}
.ab-mini-chip text{letter-spacing:-.02em}
.gh4-service-pocket{filter:drop-shadow(0 .3px .45px rgba(31,61,89,.08))}

/* V2.3 — CegiTech-only sidebar + isolated 1st-floor AB-Link */
.cegitech-sidebar-logo{
  max-width:138px!important;
  max-height:68px!important;
  filter:none!important;
}
.brand-block{
  height:78px!important;
  padding:2px 8px 4px!important;
}
.sidebar-motion-visual{
  height:330px!important;
  border-top:1px solid rgba(116,196,255,.08);
}
.sidebar-motion-copy strong,
.sidebar-motion-copy span{
  letter-spacing:2.2px;
  font-size:17px!important;
}
.sidebar-motion-copy small{
  max-width:138px;
  line-height:1.45;
  letter-spacing:1.15px!important;
  color:#a9bfd2!important;
}
.motion-light{stroke-dasharray:18 10;animation:walkRail 2.45s linear infinite}
.motion-pulse{animation:walkPulse 1.9s linear infinite}
.side-ab-link{filter:drop-shadow(0 .45px .65px rgba(20,47,72,.09))}

/* V2.4 — sidebar matches supplied reference; subtler asset selection */
.brand-block{
  height:65px!important;
  margin:0!important;
  padding:0!important;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  overflow:hidden;
}
.ref-sidebar-logo{
  width:100%!important;
  height:64px!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  object-position:top center!important;
  filter:none!important;
}
.sidebar-reference-visual{
  margin-top:auto;
  position:relative;
  width:100%;
  height:330px;
  overflow:hidden;
  background:#07182a;
}
.sidebar-reference-visual img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center bottom;
}
.sidebar-reference-glow{
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(180deg,rgba(4,21,38,.06) 0%,rgba(4,21,38,0) 28%,rgba(15,111,202,.09) 58%,rgba(4,21,38,.16) 100%),
    linear-gradient(92deg,transparent 0 20%,rgba(78,192,255,.09) 48%,transparent 75%);
  background-size:100% 100%,220% 100%;
  animation:sidebarGlowSweep 4.5s linear infinite;
}
@keyframes sidebarGlowSweep{
  from{background-position:0 0,-80% 0}
  to{background-position:0 0,110% 0}
}
.title-brand-wrap{min-width:255px!important}
.cegitech-logo{display:none!important}
.asset-marker.selected{
  filter:drop-shadow(0 .35px .45px rgba(20,38,55,.24))!important;
  transform:translateY(-.12px);
}
.asset-marker.selected rect{
  filter:none!important;
}
.asset-marker:hover{
  transform:translateY(-.10px);
}

/* ===============================================================
   V2.5 — premium sidebar rebuilt from scratch
   =============================================================== */
.premium-sidebar{
  position:relative!important;
  isolation:isolate;
  overflow:hidden!important;
  padding:0!important;
  gap:0!important;
  background:#071726!important;
}
.sidebar-art{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:-3;
  display:block;
}
.sidebar-vignette{
  position:absolute;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:
    linear-gradient(180deg,rgba(3,13,23,.18) 0%,rgba(3,13,23,.08) 22%,rgba(3,13,23,.18) 48%,rgba(3,13,23,.42) 100%),
    linear-gradient(90deg,rgba(2,12,22,.35),transparent 34%,transparent 66%,rgba(2,12,22,.28));
}
.premium-brand{
  position:relative;
  z-index:2;
  height:80px!important;
  min-height:80px;
  margin:0!important;
  padding:13px 14px 8px!important;
  background:linear-gradient(180deg,rgba(5,19,34,.78),rgba(5,19,34,.34))!important;
  border:0!important;
  overflow:visible!important;
  display:flex;
  align-items:flex-start!important;
  justify-content:flex-start!important;
}
.cegitech-native-logo{
  width:100%;
  height:auto;
  max-width:154px;
  filter:drop-shadow(0 2px 8px rgba(0,0,0,.25));
}
.premium-nav{
  position:relative;
  z-index:3;
  padding:2px 10px 0!important;
  gap:6px!important;
}
.premium-nav .nav-item{
  position:relative;
  overflow:hidden;
  min-height:44px;
  border-radius:8px!important;
  padding:10px 12px!important;
  background:rgba(8,26,45,.40)!important;
  border:1px solid rgba(121,182,230,.07)!important;
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease!important;
}
.premium-nav .nav-item:before{
  content:"";
  position:absolute;
  left:-40%;
  top:0;
  width:34%;
  height:100%;
  background:linear-gradient(90deg,transparent,rgba(85,196,255,.10),transparent);
  transform:skewX(-16deg);
  transition:left .45s ease;
}
.premium-nav .nav-item:hover:before{left:120%}
.premium-nav .nav-item:hover{
  background:rgba(12,47,78,.66)!important;
  border-color:rgba(78,168,238,.20)!important;
  transform:translateX(2px);
}
.premium-nav .nav-item.active{
  background:linear-gradient(90deg,rgba(14,92,164,.92),rgba(12,66,119,.78))!important;
  border-color:#34b9ff!important;
  box-shadow:
    inset 0 0 0 1px rgba(92,209,255,.18),
    0 0 14px rgba(26,148,227,.34),
    0 3px 10px rgba(0,0,0,.24)!important;
}
.premium-nav .nav-item.active:after{
  content:"";
  position:absolute;
  left:0;
  top:8px;
  bottom:8px;
  width:2px;
  border-radius:2px;
  background:#8be5ff;
  box-shadow:0 0 9px #42c7ff;
}
.premium-nav .nav-icon{
  color:#eef8ff!important;
  text-shadow:0 0 8px rgba(78,190,255,.38);
}
.premium-nav .nav-item span:last-child{
  color:#f2f8fd!important;
  font-weight:650;
  letter-spacing:.05px;
}
.sidebar-message{
  position:absolute;
  z-index:4;
  left:18px;
  right:14px;
  bottom:22px;
  color:#fff;
  display:flex;
  flex-direction:column;
  gap:2px;
  pointer-events:none;
  text-shadow:0 2px 8px rgba(0,0,0,.45);
}
.sidebar-message-line{
  display:block;
  width:36px;
  height:3px;
  border-radius:3px;
  margin-bottom:10px;
  background:linear-gradient(90deg,#35bfff,#1979d0);
  box-shadow:0 0 10px rgba(70,202,255,.55);
}
.sidebar-message strong{
  font-size:17px;
  line-height:1.05;
  letter-spacing:2.25px;
  font-weight:760;
}
.sidebar-message small{
  margin-top:8px;
  color:#9eb9ce;
  font-size:8.4px;
  line-height:1.45;
  font-weight:700;
  letter-spacing:1.08px;
  max-width:142px;
}

.sb-motion-rail{
  stroke-dasharray:24 14;
  animation:premiumRailFlow 3.2s linear infinite;
}
.sb-motion-b{animation-delay:-1.6s}
.sb-center-pulse{animation:premiumPulse 2.1s linear infinite}
@keyframes premiumRailFlow{to{stroke-dashoffset:-76}}
@keyframes premiumPulse{to{stroke-dashoffset:-34}}

@media(max-width:760px){
  .premium-brand{padding:13px 7px!important;height:68px!important;min-height:68px}
  .cegitech-native-logo{width:64px}
  .premium-nav{padding:3px 6px!important}
  .premium-nav .nav-item{padding:10px 8px!important}
  .sidebar-message{display:none}
}

/* V2.6 — status driven map + separate SED / Construction points */
.asset-status-select{width:100%;min-height:42px;border-radius:9px;border:1px solid #d5dfe9;padding:8px 10px;font-weight:850}
.asset-status-inprogress{background:#fff4ce;color:#725400;border-color:#e4c95d}
.asset-status-blocked{background:#fde8ea;color:#a91825;border-color:#efb6bc}
.asset-status-completed{background:#e1f7e9;color:#0f6634;border-color:#9dd8b0}
.metric-row-six{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.metric-row-six .metric-box span{font-size:9.5px}
.metric-row-six .metric-box strong{font-size:18px}
.metric-row-six .metric-box small{display:block;margin-top:3px;color:#7a8998;font-size:8.5px}
.metric-sed{border-top:3px solid #6b59c7!important}
.metric-construction{border-top:3px solid #3175a8!important}
.overview-openpoint-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0}
.overview-openpoint-strip span{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid #dce5ed;border-radius:9px;background:#f8fafc}
.overview-openpoint-strip strong{font-size:11px;color:#29435e}
.overview-openpoint-strip b{font-size:17px;color:#102a45}
.project-point-card.point-open{border-left:4px solid #cf3545;background:#fff9fa}
.project-point-card.point-closed{border-left:4px solid #39a867;background:#fbfffc}
.project-point-status-open{background:#fde8ea!important;color:#a91825!important;border-color:#efb6bc!important;font-weight:800}
.project-point-status-closed{background:#e1f7e9!important;color:#0f6634!important;border-color:#a8ddba!important;font-weight:800}
.project-point-table-row.point-open td:first-child{box-shadow:inset 4px 0 0 #cf3545}
.project-point-table-row.point-closed td:first-child{box-shadow:inset 4px 0 0 #39a867}
.open-points-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.open-point-section+.open-point-section{margin-top:16px}
.status-cards-three{grid-template-columns:repeat(3,1fr)!important}
.readiness-overview{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;margin-top:10px;padding:9px 10px;border:1px solid #dfe7ee;border-radius:9px;background:#f8fafc}
.readiness-overview span{font-size:10px;color:#687c90;font-weight:700}
.readiness-overview strong{font-size:18px;color:#173653}
.readiness-overview small{grid-column:1/-1;font-size:9px;color:#8795a3}
.key-grid-six{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.sed-kpi{border-left:3px solid #6b59c7!important}
.construction-kpi{border-left:3px solid #3175a8!important}
.sed-stat{border-top:3px solid #6b59c7}
.construction-stat{border-top:3px solid #3175a8}
.page-head-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.findings-domain-tabs{flex-wrap:wrap}
@media(max-width:1180px){.metric-row-six{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:720px){.metric-row-six{grid-template-columns:repeat(2,minmax(0,1fr))!important}.open-points-head{align-items:flex-start;flex-direction:column}}

/* V2.7 — SED / Construction are classifications of SAIS_POINTS */
.count-sed{background:#eeeafd;color:#5943ad}
.count-construction{background:#e7f1f8;color:#245f88}
.bucket-pill{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:850;white-space:nowrap}
.bucket-sed{background:#eeeafd;color:#5943ad}
.bucket-construction{background:#e7f1f8;color:#245f88}

/* ===============================================================
   V2.8 — repeatable tests, inspection register, professional map markers
   =============================================================== */
.test-pill.test-in-progress,
.test-card.in-progress .test-pill{background:#fff0c9;color:#785800;border-color:#e2c25f}
.tests-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.tests-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.test-card{border:1px solid #dce5ed;border-radius:11px;background:#fff;padding:11px}
.test-card.in-progress{border-left:4px solid #d6a10d}
.test-card.passed{border-left:4px solid #2f9e5b}
.test-card.failed{border-left:4px solid #d43d4d}
.test-card.not-tested{border-left:4px solid #9aabba}

.inspection-pill{display:inline-flex;align-items:center;justify-content:center;min-width:78px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:850;border:1px solid transparent}
.inspection-planned{background:#edf2f7;color:#566b7f;border-color:#d4dee7}
.inspection-notplanned{background:#f4f1fb;color:#5b4a86;border-color:#d8cff0}
.daily-stream-list li span{font-family:inherit;word-break:break-word}
.daily-stream-list li small{white-space:nowrap;color:#5d6f7d}
.inspection-passed{background:#e5f7eb;color:#13663a;border-color:#a7dbba}
.inspection-failed{background:#fde9eb;color:#a71927;border-color:#efb8be}
.inspections-register .inspection-asset-row{cursor:default}
.inspections-register .inspection-asset-row.expanded{background:#f6f9fc}
.inspection-expand-row td{padding:12px!important;background:#f4f7fa}
.inspection-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.inspection-stage-card{background:#fff;border:1px solid #d9e3ec;border-radius:12px;padding:13px;box-shadow:0 4px 12px rgba(24,56,82,.05)}
.inspection-stage-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:11px}
.inspection-stage-head h3{margin:0 0 3px;font-size:17px}
.inspection-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.inspection-fields .full{grid-column:1/-1}
.inspection-inspector-control{display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:6px}
.verified-points-head{display:flex;justify-content:space-between;align-items:center;margin:13px 0 7px;padding-top:10px;border-top:1px solid #e5ebf0}
.inspection-point-list{max-height:320px;overflow:auto;border:1px solid #e1e8ee;border-radius:9px}
.inspection-point-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 9px;border-bottom:1px solid #edf1f4;background:#fff;font-size:10px}
.inspection-point-row:last-child{border-bottom:0}
.inspection-point-row.checked{background:#edf9f1}
.inspection-point-row small{color:#718294;white-space:nowrap}
.compact-btn{padding:6px 8px!important;font-size:10px!important}

.premium-map-icons .device-marker{cursor:pointer;transition:transform .14s ease,filter .14s ease}
.premium-map-icons .device-marker:hover{transform:translateY(-.10px);filter:drop-shadow(0 1px 1px rgba(20,46,70,.18))}
.premium-map-icons .device-marker.selected{filter:drop-shadow(0 1px 1px rgba(20,46,70,.28))!important}
.premium-map-icons .device-marker text{paint-order:stroke;stroke:#f7fafc;stroke-width:.22;stroke-linejoin:round}
.premium-map-icons .gatehouse{filter:drop-shadow(0 .35px .45px rgba(20,46,70,.08))}

@media(max-width:1180px){
  .inspection-detail-grid{grid-template-columns:1fr}
  .tests-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .inspection-fields{grid-template-columns:1fr}
  .inspection-point-row{grid-template-columns:20px minmax(0,1fr)}
  .inspection-point-row small{grid-column:2;white-space:normal}
}

/* ===============================================================
   V2.9 — dedicated Tests register + SAIS findings -> RE-SAIS workflow
   =============================================================== */

/* Asset labels are now inside the technical device marker. */
.premium-map-icons .device-marker text{
  paint-order:normal!important;
  stroke:none!important;
  letter-spacing:-.02em;
}
.premium-map-icons .device-marker rect{
  vector-effect:non-scaling-stroke;
}

/* Dedicated Tests page */
.tests-page-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
  padding:10px;
  border:1px solid #dce5ed;
  border-radius:11px;
  background:#f8fafc;
}
.tests-group-switch{flex:0 0 auto}
.tests-filter-row{
  margin:0!important;
  flex:1;
  justify-content:flex-end;
}
#testsRegister .table-date-input{
  min-width:125px;
  padding:7px 8px;
  border:1px solid #d6e0e8;
  border-radius:7px;
  background:#fff;
}
#testsRegister .table-comment-input{
  min-width:230px;
  width:100%;
  padding:7px 8px;
  border:1px solid #d6e0e8;
  border-radius:7px;
  background:#fff;
}
#testsRegister .test-status{min-width:112px}

/* Inspections starts as a clean asset register. */
.inspection-stage-button{
  padding:0;
  border:0;
  background:transparent;
  cursor:pointer;
  border-radius:999px;
  transition:transform .12s ease,filter .12s ease;
}
.inspection-stage-button:hover{
  transform:translateY(-1px);
  filter:drop-shadow(0 2px 4px rgba(25,56,82,.15));
}
.inspections-register .inspection-asset-row.expanded td{
  background:#f4f8fb;
}
.inspection-expand-row td{
  padding:14px!important;
  background:#f2f6f9!important;
}
.inspection-stage-wide{
  max-width:none;
  width:100%;
}
.inspection-findings-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:13px 0 9px;
  padding-top:11px;
  border-top:1px solid #e3eaf0;
}
.inspection-findings-toolbar>div:first-child{
  display:flex;
  align-items:baseline;
  gap:8px;
}
.inspection-findings-toolbar strong{font-size:13px}
.inspection-findings-toolbar span{font-size:10px;color:#748596}
.inspection-findings-list{
  border:1px solid #dde6ed;
  border-radius:10px;
  overflow:hidden;
  background:#fff;
}
.inspection-finding-row{
  position:relative;
  display:grid;
  grid-template-columns:5px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  min-height:67px;
  padding:9px 10px 9px 0;
  border-bottom:1px solid #edf1f4;
}
.inspection-finding-row:last-child{border-bottom:0}
.finding-status-rail{
  align-self:stretch;
  width:4px;
  border-radius:0 4px 4px 0;
  background:#a7b5c2;
}
.rail-open{background:#d63b49}
.rail-verification{background:#d8aa18}
.rail-closed{background:#39a765}
.result-planned{background:#9aaab8}
.result-passed{background:#39a765}
.result-failed{background:#d63b49}
.inspection-finding-main>div{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
}
.inspection-finding-main p{
  margin:5px 0 3px;
  font-size:11px;
  line-height:1.4;
  color:#253d55;
}
.inspection-finding-main small{
  color:#7a8a99;
  font-size:9.5px;
}
.inspection-finding-actions{
  min-width:112px;
  text-align:right;
}
.moved-badge{
  display:inline-flex;
  padding:5px 8px;
  border-radius:999px;
  background:#e8f1f8;
  color:#285c84;
  font-size:9.5px;
  font-weight:800;
}
.resais-result-control{
  display:grid;
  grid-template-columns:1fr;
  gap:5px;
  min-width:135px;
}
.resais-result-control label{
  font-size:8.5px;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:#78899a;
  font-weight:800;
}
.resais-result-control select{
  min-width:125px;
  padding:6px 7px;
  border:1px solid #d5dfe7;
  border-radius:7px;
  background:#fff;
  font-weight:750;
}
.inspection-fields{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.inspection-fields .full{grid-column:1/-1!important}

@media(max-width:1100px){
  .tests-page-toolbar{align-items:flex-start;flex-direction:column}
  .tests-filter-row{width:100%;justify-content:flex-start}
  .inspection-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:760px){
  .inspection-finding-row{grid-template-columns:5px minmax(0,1fr)}
  .inspection-finding-actions,.resais-result-control{grid-column:2;text-align:left}
  .inspection-fields{grid-template-columns:1fr!important}
  .tests-filter-row{flex-direction:column;align-items:stretch}
}





/* ===============================================================
   V3.5 — map-scale redesign for actual readability
   =============================================================== */
.dashboard-grid{
  grid-template-columns:minmax(0,3.0fr) minmax(300px,.72fr)!important;
  gap:12px!important;
}
.map-stage{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:10px;
  align-items:stretch;
  background:#f5f8fb;
}
.map-stage.with-ab-sidecar{
  grid-template-columns:minmax(0,1fr) 190px;
  padding:7px 7px 8px 7px;
}
.map-stage.with-ab-sidecar>.project-map{
  padding:0!important;
  border:1px solid #e0e7ed;
  border-radius:9px;
  background:#f8fafc;
}
.hero-map-panel .map-stage>.project-map{
  min-height:525px!important;
}
.hero-map-panel .map-stage>.project-map .operational-map-svg{
  height:525px!important;
  min-height:525px!important;
}
.map-stage-page>.project-map{
  min-height:650px!important;
}
.map-stage-page>.project-map .operational-map-svg{
  height:650px!important;
  min-height:650px!important;
}
.premium-map-icons .final-es-tag,
.premium-map-icons .final-mw-tag{
  cursor:pointer;
}
.premium-map-icons .final-es-tag:hover,
.premium-map-icons .final-mw-tag:hover{
  transform:none!important;
  filter:drop-shadow(0 .45px .65px rgba(16,44,68,.16))!important;
}
.premium-map-icons .final-es-tag.selected,
.premium-map-icons .final-mw-tag.selected{
  transform:none!important;
  filter:drop-shadow(0 .45px .70px rgba(16,44,68,.20))!important;
}
.premium-map-icons .asset-id-text{
  font-family:Inter,Arial,sans-serif!important;
  font-weight:900!important;
  fill:#fff!important;
  stroke:none!important;
  paint-order:normal!important;
  letter-spacing:0!important;
}

/* AB-Link is intentionally outside the A-Pier SVG so it no longer shrinks the floor plan. */
.ab-link-sidecar{
  position:relative;
  min-width:0;
  border:1px solid #d9e3eb;
  border-radius:10px;
  background:linear-gradient(180deg,#0b2742,#081c31);
  padding:11px 9px 10px;
  overflow:hidden;
  box-shadow:0 5px 16px rgba(15,43,68,.10);
}
.ab-link-sidecar:before{
  content:"";
  position:absolute;
  left:50%;
  top:69px;
  bottom:33px;
  width:18px;
  transform:translateX(-50%);
  border-radius:8px;
  background:linear-gradient(180deg,#173954,#0e2940);
  border:1px solid rgba(126,174,211,.18);
}
.ab-side-head{
  position:relative;
  z-index:2;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:7px;
  margin-bottom:11px;
}
.ab-side-head span{
  display:block;
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.10em;
  color:#84a8c5;
  font-weight:800;
}
.ab-side-head strong{
  display:block;
  margin-top:1px;
  color:#fff;
  font-size:15px;
}
.ab-side-head .muted-btn{
  color:#b9d4e7!important;
  font-size:8.5px!important;
  white-space:nowrap;
}
.ab-side-track{
  position:relative;
  z-index:2;
  display:grid;
  gap:15px;
  padding:7px 0 4px;
}
.ab-side-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:21px;
}
.ab-side-asset{
  position:relative;
  min-width:0;
  min-height:49px;
  border:1px solid #41617c;
  border-radius:8px;
  background:#f8fbfd;
  padding:6px 5px 5px 9px;
  text-align:left;
  box-shadow:0 2px 6px rgba(0,0,0,.14);
  cursor:pointer;
}
.ab-side-asset strong{
  display:block;
  color:#092a47;
  font-size:12px;
  line-height:1.05;
  font-weight:900;
}
.ab-side-asset small{
  display:block;
  margin-top:4px;
  font-size:7.5px;
  color:#65788a;
}
.ab-side-status{
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:4px;
  border-radius:8px 0 0 8px;
}
.ab-progress .ab-side-status{background:#dca710}
.ab-blocked .ab-side-status{background:#d83a48}
.ab-finished .ab-side-status{background:#2aa65b}
.ab-side-asset.selected{
  outline:2px solid #2bb7ed;
  outline-offset:1px;
}
.ab-side-foot{
  position:absolute;
  left:0;right:0;bottom:8px;
  z-index:2;
  color:#7293ad;
  text-align:center;
  font-size:7.5px;
  letter-spacing:.08em;
  font-weight:800;
}

/* Keep right-side dashboard concise so the map gets the width. */
.right-stack .panel{min-width:0}
.key-grid-six{grid-template-columns:repeat(2,minmax(0,1fr))!important}

@media(max-width:1280px){
  .dashboard-grid{grid-template-columns:minmax(0,2.55fr) minmax(280px,.78fr)!important}
  .map-stage.with-ab-sidecar{grid-template-columns:minmax(0,1fr) 174px}
}
@media(max-width:1080px){
  .dashboard-grid{grid-template-columns:1fr!important}
  .right-stack{grid-template-columns:1fr 1fr!important}
  .map-stage.with-ab-sidecar{grid-template-columns:minmax(0,1fr) 185px}
}
@media(max-width:780px){
  .right-stack{grid-template-columns:1fr!important}
  .map-stage.with-ab-sidecar{grid-template-columns:1fr}
  .ab-link-sidecar{min-height:270px}
  .hero-map-panel .map-stage>.project-map,
  .hero-map-panel .map-stage>.project-map .operational-map-svg{min-height:460px!important;height:460px!important}
}

/* ===============================================================
   V3.7 — V3.5 layout restored, marker scale/layout corrected
   =============================================================== */

/* Keep the V3.5 dashboard composition. */
.dashboard-grid{
  grid-template-columns:minmax(0,3fr) minmax(300px,.72fr)!important;
  gap:12px!important;
}
.map-stage.with-ab-sidecar{
  grid-template-columns:minmax(0,1fr) 190px!important;
}

/* Slightly larger map canvas, without changing the page layout. */
.hero-map-panel .map-stage>.project-map{
  min-height:555px!important;
}
.hero-map-panel .map-stage>.project-map .operational-map-svg{
  min-height:555px!important;
  height:555px!important;
}
.map-stage-page>.project-map{
  min-height:675px!important;
}
.map-stage-page>.project-map .operational-map-svg{
  min-height:675px!important;
  height:675px!important;
}

/* Final balanced markers. No external labels, no scale-on-hover. */
.premium-map-icons .balanced-es-marker,
.premium-map-icons .balanced-mw-marker{
  cursor:pointer;
  transition:filter .10s ease;
}
.premium-map-icons .balanced-es-marker:hover,
.premium-map-icons .balanced-mw-marker:hover,
.premium-map-icons .balanced-es-marker.selected,
.premium-map-icons .balanced-mw-marker.selected{
  transform:none!important;
  filter:drop-shadow(0 .45px .65px rgba(15,44,68,.17))!important;
}
.premium-map-icons .balanced-es-marker .asset-id-text,
.premium-map-icons .balanced-mw-marker .asset-id-text{
  font-family:Inter,Arial,sans-serif!important;
  font-weight:900!important;
  fill:#ffffff!important;
  stroke:none!important;
  paint-order:normal!important;
  letter-spacing:0!important;
}
.premium-map-icons .balanced-es-marker .asset-id-plate,
.premium-map-icons .balanced-mw-marker .asset-id-plate{
  vector-effect:non-scaling-stroke;
}

/* Make GH labels slightly clearer while keeping the same geometry. */
.premium-map-icons .gatehouse text{
  font-size:1.30px!important;
}

@media(max-width:1280px){
  .dashboard-grid{
    grid-template-columns:minmax(0,2.55fr) minmax(280px,.78fr)!important;
  }
  .map-stage.with-ab-sidecar{
    grid-template-columns:minmax(0,1fr) 175px!important;
  }
}
@media(max-width:1080px){
  .dashboard-grid{grid-template-columns:1fr!important}
  .right-stack{grid-template-columns:1fr 1fr!important}
}

/* ===============================================================
   V3.8 — larger map icons, V3.7 layout retained
   =============================================================== */
.premium-map-icons .balanced-es-marker .asset-id-text,
.premium-map-icons .balanced-mw-marker .asset-id-text{
  font-family:Inter,Arial,sans-serif!important;
  font-weight:900!important;
  fill:#fff!important;
  stroke:none!important;
  paint-order:normal!important;
}
.premium-map-icons .balanced-es-marker:hover,
.premium-map-icons .balanced-mw-marker:hover,
.premium-map-icons .balanced-es-marker.selected,
.premium-map-icons .balanced-mw-marker.selected{
  transform:none!important;
}

/* ===============================================================
   V3.9 — longer MW tags + Liftinstituut inspections
   =============================================================== */
.premium-map-icons .balanced-mw-marker .asset-id-plate{
  vector-effect:non-scaling-stroke;
}
.inspections-register-wide{
  min-width:1280px;
}
.inspection-stats-nine{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.liftinstituut-stat{
  border-top:3px solid #2c6f9f;
}
.liftinstituut-inspection-card{
  border-left:4px solid #2c6f9f;
}
.liftinstituut-note{
  margin-top:12px;
  padding:11px 12px;
  border:1px solid #d8e5ef;
  border-radius:9px;
  background:#f3f8fc;
}
.liftinstituut-note strong{
  display:block;
  color:#173d5b;
  font-size:12px;
}
.liftinstituut-note span{
  display:block;
  margin-top:3px;
  color:#6c8092;
  font-size:10px;
}
@media(max-width:900px){
  .inspection-stats-nine{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ===============================================================
   V4.0 — Extra Works, Photos, richer Asset workspace
   =============================================================== */

/* Extra Works */
.extra-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.extra-works-list{display:grid;gap:10px}
.extra-work-card{background:#fff;border:1px solid #dce5ec;border-radius:11px;padding:13px 14px;box-shadow:0 2px 8px rgba(16,43,66,.035)}
.extra-work-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.extra-work-head h3{margin:4px 0 0;font-size:15px;color:#132f49}
.extra-kicker{display:flex;gap:7px;align-items:center;font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#718496;font-weight:800}
.priority-pill{padding:3px 6px;border-radius:999px;background:#edf2f6;color:#5e7181}
.priority-high{background:#fff0d2;color:#8a5b00}.priority-critical{background:#fde8eb;color:#a51f2c}.priority-low{background:#edf6ef;color:#37734c}
.extra-work-percent{font-size:22px;font-weight:900;color:#12334f}
.extra-progress-track{height:7px;background:#e7edf2;border-radius:999px;overflow:hidden;margin:10px 0}
.extra-progress-track i{display:block;height:100%;background:linear-gradient(90deg,#1b89c9,#28a660);border-radius:999px}
.extra-assets{display:flex;gap:5px;flex-wrap:wrap}
.extra-assets button{border:1px solid #d7e1e9;background:#f8fafc;border-radius:6px;padding:5px 7px;color:#16344e;font-size:10px;font-weight:900;cursor:pointer}
.extra-assets button small{display:block;font-size:7px;font-weight:600;color:#7b8995;margin-top:2px}
.extra-meta{display:flex;flex-wrap:wrap;gap:12px 18px;margin-top:10px;font-size:9px;color:#748596}
.extra-meta strong{color:#344f67}
.extra-notes{margin:9px 0 0;padding:8px 10px;background:#f7f9fb;border-radius:7px;color:#41596e;font-size:10px;line-height:1.45}
.extra-work-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:11px;padding-top:10px;border-top:1px solid #edf1f4}
.extra-progress-buttons{display:flex;gap:4px}
.extra-progress-buttons button{border:1px solid #d3dee6;background:#fff;padding:5px 7px;border-radius:6px;font-size:9px;font-weight:800;color:#5c6e7e;cursor:pointer}
.extra-progress-buttons button.active{background:#102d49;border-color:#102d49;color:#fff}
.extra-done{opacity:.82}.extra-done .extra-progress-track i{background:#2ba65b}
.danger-text{color:#ad2433!important}
.extra-work-form .extra-asset-selector{border:1px solid #dbe4eb;border-radius:9px;padding:9px;background:#f8fafc}
.extra-selector-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
.extra-selector-toolbar input{min-width:220px}
.extra-asset-group{margin-top:8px}.extra-asset-group>strong{font-size:9px;color:#63788b;text-transform:uppercase;letter-spacing:.05em}
.extra-asset-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;margin-top:5px}
.extra-asset-choice{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:5px;padding:6px;border:1px solid #d8e1e8;border-radius:6px;background:#fff;cursor:pointer}
.extra-asset-choice input{grid-row:1/3;margin:1px 0 0}.extra-asset-choice span{font-size:10px;font-weight:900;color:#163650}.extra-asset-choice small{font-size:7px;color:#81909d}
.required-note{font-size:8px;color:#a06b00}

/* Photos */
.photo-stats{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.photo-folder-strip{display:flex;gap:8px;overflow-x:auto;padding:2px 0 10px}
.photo-folder-card{flex:0 0 auto;min-width:135px;border:1px solid #d9e3ea;background:#fff;border-radius:9px;padding:9px 10px;text-align:left;cursor:pointer}
.photo-folder-card.selected{border-color:#259fd5;box-shadow:0 0 0 2px rgba(37,159,213,.12)}
.photo-folder-card .photo-folder-icon{float:left;margin-right:8px;color:#2b759f}.photo-folder-card strong{display:block;font-size:10px;color:#173751}.photo-folder-card small{display:block;margin-top:2px;font-size:8px;color:#7d8d9b}
.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.photo-card{background:#fff;border:1px solid #dce5ec;border-radius:10px;overflow:hidden}
.photo-thumb-wrap{position:relative;aspect-ratio:4/3;background:linear-gradient(135deg,#dce6ed,#eef3f7);overflow:hidden}
.photo-thumb-wrap img{position:relative;z-index:2;width:100%;height:100%;object-fit:cover;display:block}
.photo-thumb-placeholder{position:absolute;inset:0;display:grid;place-items:center;color:#8fa0ad;font-size:11px;font-weight:900;letter-spacing:.12em}
.photo-card-body{padding:9px}.photo-card-head{display:flex;justify-content:space-between;gap:8px}.photo-card-head strong{display:block;font-size:11px;color:#112f49}.photo-card-head span{display:block;font-size:8px;color:#6e8192;margin-top:2px}.photo-card-head time{font-size:7.5px;color:#82909d;white-space:nowrap}
.photo-file-name{font-size:8px;color:#7f8c98;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-card-body p{font-size:9px;color:#475e72;line-height:1.4}.photo-card-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:7px;padding-top:7px;border-top:1px solid #eef2f5}
.photo-storage-note{margin-top:10px;padding:8px 10px;border-radius:7px;background:#f5f8fa;color:#708294;font-size:8.5px}
.photo-file-input{padding:9px!important;border:1px dashed #b9c9d6!important;background:#f8fafc!important}

/* Asset Management workspace */
.asset-management-workspace{padding:14px;background:#f5f8fb;border-radius:10px}
.asset-management-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;background:#fff;border:1px solid #dce5ec;border-radius:9px}
.asset-management-title{display:flex;align-items:center;gap:10px}.asset-management-title h2{margin:0;color:#102f4a}.asset-management-head p{margin:3px 0 0;font-size:9px;color:#718494}
.asset-management-kpis{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-top:9px}
.asset-management-kpis>div{padding:9px;background:#fff;border:1px solid #dce5ec;border-radius:8px}.asset-management-kpis span{display:block;font-size:8px;color:#758797}.asset-management-kpis strong{display:block;margin-top:2px;font-size:16px;color:#173650}
.asset-management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:9px}
.asset-management-card{background:#fff;border:1px solid #dce5ec;border-radius:9px;padding:11px;min-width:0}
.am-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px}.am-card-head h3{margin:0;font-size:12px;color:#163751}
.am-status-list,.am-inspection-list,.am-test-summary{display:grid;gap:6px}.am-status-list>div,.am-inspection-list>div,.am-test-summary>div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid #eef2f5}.am-status-list>div:last-child,.am-inspection-list>div:last-child,.am-test-summary>div:last-child{border-bottom:0}.am-status-list span,.am-inspection-list span,.am-test-summary span{font-size:8.5px;color:#718494}.am-inspection-list small,.am-test-summary small{font-size:7.5px;color:#83919c;margin-left:auto}
.am-blocker{margin-top:8px;padding:8px;background:#fff1f2;border:1px solid #f3cfd3;border-radius:7px}.am-blocker strong{font-size:8px;color:#9d2935}.am-blocker p{font-size:9px;color:#6f3d43;margin:3px 0 0}.am-clear{margin-top:8px;padding:8px;border-radius:7px;background:#edf7f0;color:#47815a;font-size:8.5px}
.am-extra-list{display:grid;gap:6px}.am-extra-list>div{display:grid;grid-template-columns:minmax(0,1fr) 95px 35px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid #eef2f5}.am-extra-list strong{display:block;font-size:9px;color:#1d3a53}.am-extra-list small{display:block;font-size:7px;color:#85929e;margin-top:2px}.am-mini-progress{height:6px;background:#e8eef3;border-radius:999px;overflow:hidden}.am-mini-progress i{display:block;height:100%;background:#258ec7}.am-extra-list>div>span{font-size:8px;font-weight:800;color:#566b7c;text-align:right}
.am-folder-counts{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}.am-folder-counts span{font-size:7.5px;background:#eff4f7;padding:4px 6px;border-radius:999px;color:#607486}.am-folder-counts strong{color:#1a4969}
.asset-photo-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.asset-photo-mini{position:relative;aspect-ratio:4/3;background:#e4ebf0;border-radius:6px;overflow:hidden}.asset-photo-mini img{width:100%;height:100%;object-fit:cover;display:block}.asset-photo-mini span{position:absolute;left:3px;bottom:3px;padding:2px 4px;background:rgba(7,28,45,.72);color:#fff;border-radius:3px;font-size:6px}
.am-activity-list{display:grid;gap:5px}.am-activity-list>div{padding:6px;border-bottom:1px solid #edf1f4}.am-activity-list strong{display:block;font-size:8.5px;color:#1f3b53}.am-activity-list span{display:block;font-size:7.5px;color:#718292;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.am-activity-list small{font-size:6.5px;color:#9aa5ae}
.compact-empty{padding:10px!important;font-size:8.5px!important}.large-empty{grid-column:1/-1;padding:30px!important}

/* Navigation emphasis */
.nav-item[data-page="extra"] .nav-icon{color:#67d7ff}.nav-item[data-page="photos"] .nav-icon{color:#67d7ff}

@media(max-width:1180px){
  .extra-asset-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .asset-management-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:900px){
  .extra-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .extra-work-foot,.extra-selector-toolbar,.asset-management-head{align-items:stretch;flex-direction:column}
  .extra-asset-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .asset-management-grid{grid-template-columns:1fr}
}
@media(max-width:620px){
  .photo-grid{grid-template-columns:1fr}
  .extra-asset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .asset-management-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ===============================================================
   V4.1 — Extra Works per-asset completion model
   =============================================================== */
.extra-asset-register{min-width:1040px}
.extra-asset-register-row{cursor:pointer}
.extra-asset-register-row:hover td{background:#f6fafc}
.extra-asset-completion-cell{display:grid;grid-template-columns:minmax(90px,1fr) 36px;gap:8px;align-items:center}
.extra-asset-completion-cell .extra-progress-track{margin:0;height:7px}
.extra-asset-completion-cell strong{font-size:9px;color:#29465f;text-align:right}
.extra-asset-status{display:inline-flex;padding:5px 7px;border-radius:999px;font-size:8px;font-weight:850;white-space:nowrap}
.extra-status-no-extra-works{background:#eef2f5;color:#6e7e8b}
.extra-status-not-started{background:#f1f4f7;color:#5e7080}
.extra-status-in-progress{background:#fff3cf;color:#7d5c00}
.extra-status-completed{background:#e7f7ec;color:#247044}
.extra-back-link{border:0;background:transparent;padding:0;margin:0 0 4px;color:#3283b4;font-size:9px;font-weight:800;cursor:pointer}
.extra-asset-detail-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.extra-summary-status{font-size:12px!important}
.asset-extra-completion{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.asset-extra-completion label{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:#738595;font-weight:800}
.asset-extra-completion select{min-width:92px;padding:6px 8px;border:1px solid #cbd8e2;border-radius:7px;background:#fff;color:#14324b;font-weight:900}
.extra-assignment-list{margin-top:9px;padding:8px 9px;border:1px solid #e0e7ed;border-radius:7px;background:#f8fafc}
.extra-assignment-list>span{display:block;font-size:7.5px;text-transform:uppercase;letter-spacing:.05em;color:#7a8b99;font-weight:800;margin-bottom:5px}
.extra-assignment-list>div{display:flex;gap:5px;flex-wrap:wrap}
.extra-assignment-chip{display:inline-flex;gap:4px;align-items:center;padding:4px 6px;border-radius:6px;background:#edf2f6;color:#526879;font-size:8px}
.extra-assignment-chip.current{background:#e2f3fb;color:#1a6e9c;box-shadow:inset 0 0 0 1px #b9dff0}
.extra-assignment-chip strong{font-size:8px}
.extra-choice-progress{grid-column:2/3;display:flex;align-items:center;justify-content:space-between;gap:5px;margin-top:5px;padding-top:5px;border-top:1px solid #edf1f4}
.extra-choice-progress span{font-size:7px;color:#7c8d9b}
.extra-choice-progress select{width:72px;padding:3px 4px;border:1px solid #ced9e2;border-radius:5px;background:#fff;font-size:8px;font-weight:800;color:#1d405b}
.extra-choice-progress select:disabled{opacity:.38}
.extra-asset-choice.selected{border-color:#58acd2;background:#f1f9fc;box-shadow:0 0 0 1px rgba(67,158,200,.08)}
.extra-asset-choice{grid-template-columns:auto 1fr!important;grid-template-rows:auto auto auto!important}
.extra-choice-name{align-self:center}
@media(max-width:900px){
  .extra-asset-detail-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ===============================================================
   V4.2 — Asset Control + SAIS outstanding + no-extra=100%
   =============================================================== */
.control-pill{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:24px;padding:4px 7px;border-radius:999px;
  font-size:8px;font-weight:900;white-space:nowrap;
}
.control-to-check{background:#eef2f5;color:#627483}
.control-ok{background:#e6f7ec;color:#1f7141}
.control-issue{background:#fff3d3;color:#7b5b00}
.control-not-working{background:#fde8eb;color:#a51f2c}
.control-missing-material{background:#f3eafd;color:#6a3a91}
.asset-control-select{
  min-width:112px;padding:5px 7px;border:1px solid #d2dde5;border-radius:7px;
  background:#fff;font-size:8.5px;font-weight:800;color:#28455c;
}
.control-select-ok{background:#effaf2;border-color:#c8e8d1;color:#226c3f}
.control-select-issue{background:#fff8e7;border-color:#efddaf;color:#755800}
.control-select-not-working{background:#fff0f2;border-color:#efc8ce;color:#9f2432}
.control-select-missing-material{background:#f8f1fd;border-color:#e1cdef;color:#663b86}
.cell-subtle{display:block;margin-top:2px;font-size:7px;color:#83919d;font-weight:500;white-space:nowrap}
.asset-management-kpis>div .control-pill{margin-top:4px}
.asset-management-kpis>div small{display:block;margin-top:3px;font-size:7px;color:#7d8d9a}
.extra-asset-register{min-width:1240px!important}

/* ===============================================================
   V4.3 — group Extra Works and Tests by work
   =============================================================== */
.extra-view-switch,.tests-view-switch{align-self:center}
.extra-work-group-grid,.test-work-group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.extra-work-group-card,.test-work-group-card{border:1px solid #d9e3ea;background:#fff;border-radius:10px;padding:12px;text-align:left;cursor:pointer;box-shadow:0 2px 8px rgba(15,43,66,.035);transition:.12s ease}
.extra-work-group-card:hover,.test-work-group-card:hover{border-color:#84bcd8;box-shadow:0 4px 14px rgba(20,65,95,.08);transform:translateY(-1px)}
.work-group-top,.test-work-group-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.work-group-top h3,.test-work-group-head h3{margin:3px 0 0;font-size:14px;color:#153650}
.work-group-top>strong,.test-work-group-head>strong{font-size:20px;color:#173c59}
.work-group-category,.test-work-group-head span{font-size:7.5px;text-transform:uppercase;letter-spacing:.07em;color:#7d8e9d;font-weight:850}
.work-group-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:8px;color:#718494;margin-top:8px}
.work-group-assets,.test-group-assets{display:flex;gap:4px;flex-wrap:wrap;margin-top:9px}
.work-group-assets span,.test-group-assets span{display:inline-flex;gap:4px;padding:4px 5px;border-radius:5px;background:#eff4f7;color:#4b6477;font-size:7.5px}
.work-group-assets strong{font-size:7px}.work-group-assets em,.test-group-assets em{font-style:normal;font-size:7.5px;color:#6e8191;padding:4px}
.work-detail-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.work-scope-note{margin:0 0 10px;padding:9px 11px;background:#f7f9fb;border:1px solid #e0e7ed;border-radius:8px}
.work-scope-note strong{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:#708394}.work-scope-note p{margin:3px 0 0;font-size:9px;color:#425b70}
.work-involved-assets{min-width:1000px}.work-asset-progress-cell{display:grid;grid-template-columns:92px minmax(80px,1fr);gap:8px;align-items:center}.work-asset-progress-cell .extra-progress-track{margin:0}
.test-group-kpis{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.test-group-kpis span{padding:4px 6px;border-radius:999px;background:#eef2f5;color:#627483;font-size:7.5px;font-weight:800}.test-group-kpis .tg-pass{background:#e7f7ec;color:#267046}.test-group-kpis .tg-progress{background:#fff3cf;color:#795a00}.test-group-kpis .tg-fail{background:#fde8eb;color:#a32230}
.test-work-group-card>small{display:block;margin-top:8px;color:#83919d;font-size:7.5px}.test-group-assets-table{min-width:1080px}.text-link-btn{border:0;background:transparent;color:#227dad;font-weight:800;font-size:9px;padding:0;cursor:pointer}
.am-sais-points-list{display:grid;gap:6px}.am-sais-points-list>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:7px;align-items:flex-start;padding:6px 0;border-bottom:1px solid #eef2f5}.am-sais-points-list strong{font-size:8px;color:#17364f}.am-sais-points-list p{margin:2px 0 0;font-size:7.5px;color:#6b7f91;line-height:1.35}
.sais-mini-status{display:inline-flex;justify-content:center;padding:4px 5px;border-radius:999px;font-size:6.5px;font-weight:900}.sais-mini-open{background:#fde9eb;color:#a32331}.sais-mini-verification{background:#fff3d2;color:#765800}.sais-mini-closed{background:#e7f7ec;color:#267046}.am-more-note{margin-top:7px;font-size:7.5px;color:#768898}
@media(max-width:1150px){.extra-work-group-grid,.test-work-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.extra-work-group-grid,.test-work-group-grid{grid-template-columns:1fr}.work-detail-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* ===============================================================
   V4.4 — grouped Findings/Inspections + repaired Photos
   =============================================================== */
.finding-asset-grid,.inspection-asset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.finding-asset-card{border:1px solid #dbe4eb;background:#fff;border-radius:10px;padding:11px;text-align:left;cursor:pointer;box-shadow:0 2px 7px rgba(15,42,64,.035)}
.finding-asset-card:hover,.inspection-asset-card:hover{border-color:#8abbd5;box-shadow:0 4px 13px rgba(19,63,91,.08)}
.finding-asset-card.has-open{border-left:4px solid #d2a21b}.finding-asset-card.clear{border-left:4px solid #2ca45b}
.finding-asset-head,.inspection-card-main{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.finding-asset-head>div:first-child strong,.inspection-card-main>div:first-child strong{display:block;font-size:13px;color:#153650}
.finding-asset-head>div:first-child span,.inspection-card-main>div:first-child span{display:block;font-size:7.5px;color:#7d8d9b;margin-top:2px}
.finding-asset-head>div:last-child,.inspection-card-main>div:last-child{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.finding-asset-total{display:flex;justify-content:space-between;align-items:end;margin-top:10px;padding-top:8px;border-top:1px solid #edf1f4}.finding-asset-total span{font-size:8px;color:#708394}.finding-asset-total strong{font-size:20px;color:#173e5b}
.finding-asset-metrics,.finding-asset-classification{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.finding-asset-metrics span,.finding-asset-classification span{padding:4px 6px;border-radius:5px;background:#f0f4f7;font-size:7.5px;color:#607486}.finding-asset-metrics strong{color:#183d59}
.inspection-asset-card{border:1px solid #dbe4eb;background:#fff;border-radius:10px;padding:0;overflow:hidden;box-shadow:0 2px 7px rgba(15,42,64,.035)}
.inspection-card-main{width:100%;border:0;background:#fff;padding:10px;text-align:left;cursor:pointer}
.inspection-card-stages{display:grid;border-top:1px solid #e5ebf0}.inspection-card-stages button{display:grid;grid-template-columns:88px auto;grid-template-rows:auto auto;gap:3px 7px;align-items:center;border:0;border-bottom:1px solid #edf1f4;background:#fafcfd;padding:8px 10px;text-align:left;cursor:pointer}.inspection-card-stages button:last-child{border-bottom:0}.inspection-card-stages button:hover{background:#f3f8fb}.inspection-card-stages button>span:first-child{font-size:8.5px;font-weight:900;color:#26465f}.inspection-card-stages button small{grid-column:1/3;font-size:7px;color:#82919d}
.inspection-asset-stage-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.inspection-asset-stage-tab{display:grid;grid-template-columns:1fr auto;gap:5px;align-items:center;border:1px solid #d8e2ea;background:#fff;border-radius:9px;padding:9px;text-align:left;cursor:pointer}.inspection-asset-stage-tab.active{border-color:#3aa5d6;background:#f1f9fc;box-shadow:0 0 0 2px rgba(58,165,214,.09)}.inspection-asset-stage-tab>span:first-child{font-size:10px;font-weight:900;color:#173852}.inspection-asset-stage-tab small{grid-column:1/3;font-size:7.5px;color:#81909d}
.photo-capture-actions{display:flex;align-items:center;gap:8px;margin-top:7px}.photo-capture-actions span{font-size:8px;color:#7e8d99}.photo-camera-btn{position:relative;overflow:hidden;cursor:pointer}.photo-camera-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}
.photo-storage-note strong{color:#3d566b}
.realistic-escalator-art{opacity:.94}
@media(max-width:1120px){.finding-asset-grid,.inspection-asset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.finding-asset-grid,.inspection-asset-grid,.inspection-asset-stage-tabs{grid-template-columns:1fr}}

/* ===============================================================
   V4.5 — animated realistic escalator sidebar
   =============================================================== */
.animated-escalator-art{
  opacity:.97!important;
}
.aes-moving-step-track{
  animation:aesStepTravel .82s linear infinite;
  transform-origin:center;
  transform-box:fill-box;
  will-change:transform;
}
@keyframes aesStepTravel{
  from{transform:translateY(0)}
  to{transform:translateY(-28px)}
}
.aes-handrail-flow{
  stroke-dasharray:22 12;
  animation:aesHandrailTravel 1.15s linear infinite;
}
.aes-handrail-right{animation-delay:-.575s}
@keyframes aesHandrailTravel{
  to{stroke-dashoffset:68}
}
.aes-terminal-pulse{
  animation:aesTerminalPulse 1.7s ease-in-out infinite;
  transform-origin:center;
  transform-box:fill-box;
}
@keyframes aesTerminalPulse{
  0%,100%{opacity:.42;transform:scale(.82)}
  50%{opacity:1;transform:scale(1.18)}
}
.aes-step-bodies{
  filter:drop-shadow(0 .7px .7px rgba(0,0,0,.28));
}
/* ===============================================================
   V4.6 — map floating asset window + two physical Control Columns
   =============================================================== */

/* Main map keeps its full width. AB-Link is accessed from the toolbar scope button. */
.map-stage,
.map-stage-page{
  position:relative!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  padding:0!important;
}
.map-stage.with-ab-sidecar{
  grid-template-columns:minmax(0,1fr)!important;
  padding:0!important;
}

/* Selected asset is now a floating window ON the map instead of content underneath it. */
.map-asset-overlay{
  position:absolute;
  top:12px;
  right:12px;
  z-index:40;
  width:min(510px,calc(100% - 24px));
  max-height:calc(100% - 24px);
  overflow:auto;
  padding:0;
  border-radius:12px;
  filter:drop-shadow(0 14px 28px rgba(9,37,61,.20));
  scrollbar-width:thin;
}
.map-asset-overlay.is-expanded{
  width:min(720px,calc(100% - 24px));
}
.map-asset-overlay .asset-summary-card,
.map-asset-overlay .asset-details-panel{
  margin:0!important;
  border:1px solid #cfdce6!important;
  box-shadow:none!important;
}
.map-asset-overlay .asset-details-panel{
  margin-top:7px!important;
}
.map-asset-overlay .asset-summary-card{
  background:rgba(255,255,255,.985);
}
.map-overlay-close{
  position:sticky;
  float:right;
  top:7px;
  right:7px;
  z-index:55;
  width:30px;
  height:30px;
  margin:7px 7px -37px 0;
  border:1px solid #cfdae3;
  border-radius:50%;
  background:#fff;
  color:#36536a;
  font-size:19px;
  line-height:1;
  font-weight:800;
  box-shadow:0 2px 7px rgba(15,45,70,.13);
}
.map-overlay-close:hover{background:#eff5f8}
.map-asset-overlay .quick-main{padding:12px}
.map-asset-overlay .asset-hero{
  grid-template-columns:118px minmax(0,1fr);
  gap:11px;
}
.map-asset-overlay .asset-visual{
  min-height:118px;
}
.map-asset-overlay .asset-visual svg{
  max-height:86px;
}
.map-asset-overlay .asset-title-row h2{
  font-size:23px;
}
.map-asset-overlay .quick-actions{
  padding-right:34px;
  gap:5px;
}
.map-asset-overlay .quick-actions .btn{
  min-height:33px;
  padding:6px 8px;
  font-size:8.5px;
}
.map-asset-overlay .metric-row-six{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.map-asset-overlay .metric-box{
  padding:7px;
}
.map-asset-overlay .metric-box span{
  font-size:8px;
}
.map-asset-overlay .metric-box strong{
  font-size:15px;
}
.map-asset-overlay .metric-box small{
  font-size:6.5px;
}
.map-asset-overlay .preview-actions-lower{
  margin-top:9px;
  padding-top:8px;
}
.map-asset-overlay .details-toggle{
  min-height:34px;
  min-width:120px;
  padding:6px 10px;
  font-size:9px;
}
.map-summary-status{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
}
.map-summary-status>div{
  padding:7px!important;
}
.map-summary-status span{
  font-size:8px!important;
}

/* Operational status fields in map Open Details are read-only. */
.readonly-status-grid{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:7px!important;
}
.readonly-status-item{
  border:1px solid #dfe7ee;
  border-radius:8px;
  background:#f8fafc;
  padding:8px;
}
.readonly-status-item label{
  display:block;
  margin-bottom:5px;
  color:#6b7e90;
  font-size:8px;
  font-weight:800;
}
.control-columns-readonly{
  min-width:0;
}

/* Two physical Control Columns per asset. */
.control-columns-pills{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  align-items:center;
}
.control-columns-pills>span{
  display:inline-flex;
  align-items:center;
  gap:3px;
}
.control-columns-pills b{
  font-size:6.5px;
  color:#728492;
  font-weight:900;
}
.control-columns-pills .control-pill{
  min-height:20px;
  padding:3px 5px;
  font-size:7px;
}
.control-columns-selects{
  display:grid;
  gap:4px;
  min-width:150px;
}
.control-columns-selects label{
  display:grid;
  grid-template-columns:24px minmax(0,1fr);
  align-items:center;
  gap:4px;
}
.control-columns-selects label>span{
  font-size:7px;
  color:#6e8192;
  font-weight:900;
}
.control-column-select{
  width:100%;
  min-width:118px;
  min-height:28px;
  padding:4px 6px;
  border:1px solid #d1dce5;
  border-radius:6px;
  font-size:7.5px;
  font-weight:800;
  color:#29465d;
  background:#fff;
}
.control-select-ok{background:#effaf2!important;border-color:#c8e8d1!important;color:#226c3f!important}
.control-select-issue{background:#fff8e7!important;border-color:#efddaf!important;color:#755800!important}
.control-select-not-working{background:#fff0f2!important;border-color:#efc8ce!important;color:#9f2432!important}
.control-select-missing-material{background:#f8f1fd!important;border-color:#e1cdef!important;color:#663b86!important}
.control-select-to-check{background:#f4f6f8!important;border-color:#dce3e8!important;color:#5f7180!important}

/* Assets is the editing location for operational status fields. */
#assetsTable td:nth-child(5){
  min-width:165px;
}

/* Old AB-Link sidecar is intentionally suppressed in V4.6. */
.ab-link-sidecar{display:none!important}

@media(max-width:900px){
  .map-asset-overlay,
  .map-asset-overlay.is-expanded{
    width:calc(100% - 16px);
    top:8px;
    right:8px;
    max-height:calc(100% - 16px);
  }
  .map-asset-overlay .asset-hero{grid-template-columns:1fr}
  .map-asset-overlay .asset-visual{display:none}
  .readonly-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .map-summary-status{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ===============================================================
   V4.7 — photo viewer, Metrics and printable filtered reports
   =============================================================== */

/* Global print action */
.print-report-btn{
  border:1px solid #cfdae3;
  background:#fff;
  color:#173b57;
  border-radius:8px;
  min-height:36px;
  padding:7px 10px;
  font-size:8.5px;
  font-weight:900;
  white-space:nowrap;
  cursor:pointer;
  box-shadow:0 1px 4px rgba(15,45,70,.04);
}
.print-report-btn:hover{border-color:#83b8d2;background:#f4f9fc}

/* Photo library: photos are explicitly openable */
.photo-open-button{
  display:block;
  width:100%;
  padding:0;
  border:0;
  cursor:zoom-in;
  text-align:left;
}
.photo-open-hint{
  position:absolute;
  right:7px;
  bottom:7px;
  z-index:4;
  padding:4px 7px;
  border-radius:999px;
  background:rgba(7,32,52,.78);
  color:#fff;
  font-size:7px;
  font-weight:900;
  opacity:0;
  transform:translateY(3px);
  transition:.14s ease;
}
.photo-open-button:hover .photo-open-hint{opacity:1;transform:translateY(0)}
.photo-open-button:hover img{transform:scale(1.025)}
.photo-thumb-wrap img{transition:transform .18s ease}

.photo-viewer-backdrop{
  position:fixed;
  inset:0;
  z-index:4000;
  display:grid;
  place-items:center;
  padding:24px;
  background:rgba(3,15,25,.88);
  backdrop-filter:blur(6px);
}
.photo-viewer{
  width:min(1180px,96vw);
  max-height:94vh;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  background:#071622;
  border:1px solid rgba(171,208,230,.25);
  border-radius:14px;
  overflow:hidden;
  box-shadow:0 24px 70px rgba(0,0,0,.46);
}
.photo-viewer-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  padding:11px 13px;
  background:#0d2233;
  border-bottom:1px solid rgba(183,214,233,.14);
  color:#fff;
}
.photo-viewer-head strong{display:block;font-size:12px}
.photo-viewer-head span{display:block;margin-top:2px;font-size:8px;color:#9eb4c3}
.photo-viewer-head .btn{background:#173c57;color:#fff;border-color:#315b75}
.photo-viewer-head .icon-btn{color:#fff;border-color:#506b7c}
.photo-viewer-stage{
  position:relative;
  min-height:430px;
  display:grid;
  place-items:center;
  overflow:auto;
  background:#03090e;
}
.photo-viewer-stage img{
  display:block;
  max-width:100%;
  max-height:78vh;
  object-fit:contain;
}
.photo-viewer-loading{color:#9db1bf;font-size:10px}
.photo-viewer-note{
  padding:10px 13px;
  background:#0d2233;
  border-top:1px solid rgba(183,214,233,.14);
  color:#dce8ef;
}
.photo-viewer-note strong{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:#86a3b7}
.photo-viewer-note p{margin:4px 0 0;font-size:9px;line-height:1.45}

.asset-photo-mini,.asset-detail-photo{
  appearance:none;
  border:0;
  cursor:zoom-in;
}
.asset-photo-mini i{
  position:absolute;
  right:3px;
  top:3px;
  padding:2px 4px;
  border-radius:3px;
  background:rgba(7,28,45,.72);
  color:#fff;
  font-size:6px;
  font-style:normal;
  opacity:0;
}
.asset-photo-mini:hover i{opacity:1}
.asset-detail-photo-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.asset-detail-photo{
  background:#fff;
  border:1px solid #dce5ec;
  border-radius:8px;
  padding:7px;
  text-align:left;
}
.asset-detail-photo-image{
  position:relative;
  aspect-ratio:4/3;
  overflow:hidden;
  border-radius:6px;
  background:#e7edf2;
}
.asset-detail-photo-image img{width:100%;height:100%;display:block;object-fit:cover}
.asset-detail-photo-image span{
  position:absolute;right:5px;bottom:5px;
  padding:3px 6px;border-radius:999px;
  background:rgba(6,28,45,.75);color:#fff;font-size:6.5px;font-weight:900;
}
.asset-detail-photo>strong{display:block;margin-top:6px;font-size:8.5px;color:#183950}
.asset-detail-photo>small{display:block;margin-top:2px;font-size:7px;color:#81909c}
.asset-detail-photo>p{margin:5px 0 0;font-size:7.5px;color:#5e7181;line-height:1.35}

/* All SAIS points in Assets */
.asset-sais-all-card{grid-column:1/-1}
.asset-sais-all-card .am-card-head>div small{
  display:block;margin-top:2px;font-size:7px;color:#80909d
}
.am-sais-points-all{
  max-height:460px;
  overflow:auto;
  padding-right:4px;
}
.am-sais-points-all .am-sais-row{
  grid-template-columns:82px minmax(0,1fr);
}
.am-sais-points-all .am-sais-row small{
  display:block;
  margin-top:3px;
  font-size:6.8px;
  color:#82919c;
}
.sais-row-closed{opacity:.72}

/* Metrics */
.metrics-page{--metric-border:#dce5ec}
.metrics-kpi-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.metrics-kpi{
  min-width:0;
  padding:11px 12px;
  background:#fff;
  border:1px solid var(--metric-border);
  border-radius:9px;
  box-shadow:0 2px 8px rgba(15,43,66,.03);
}
.metrics-kpi span{display:block;font-size:8px;color:#718494}
.metrics-kpi strong{display:block;margin-top:3px;font-size:20px;color:#153751}
.metrics-kpi small{display:block;margin-top:3px;font-size:7.5px;color:#82909c}

.metrics-chart-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin-bottom:10px;
}
.metrics-chart-grid-wide{grid-template-columns:repeat(2,minmax(0,1fr))}
.metric-chart-card{
  min-width:0;
  padding:11px;
  background:#fff;
  border:1px solid var(--metric-border);
  border-radius:9px;
  box-shadow:0 2px 8px rgba(15,43,66,.03);
}
.metric-chart-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  margin-bottom:9px;
}
.metric-chart-head h3{margin:0;font-size:10px;color:#173650}
.metric-chart-head>strong{font-size:15px;color:#31536a}
.metric-donut-wrap{
  display:grid;
  grid-template-columns:118px minmax(0,1fr);
  gap:11px;
  align-items:center;
}
.metric-donut{
  position:relative;
  width:108px;height:108px;
  border-radius:50%;
  display:grid;place-items:center;
}
.metric-donut i{
  position:absolute;
  width:65px;height:65px;
  border-radius:50%;
  background:#fff;
  box-shadow:inset 0 0 0 1px #e5ebf0;
}
.metric-donut b{position:relative;z-index:2;font-size:18px;color:#163751}
.metric-legend{display:grid;gap:5px}
.metric-legend>span{
  display:grid;
  grid-template-columns:8px minmax(0,1fr) auto auto;
  gap:5px;align-items:center;
  font-size:7.5px;color:#607486;
}
.metric-legend>span>i{width:8px;height:8px;border-radius:2px}
.metric-legend strong{font-size:8px;color:#203e56}
.metric-legend small{font-size:6.7px;color:#8b98a3}

.metric-bars{display:grid;gap:7px}
.metric-bar-row{
  display:grid;
  grid-template-columns:minmax(95px,.8fr) minmax(100px,2fr) 42px;
  gap:7px;align-items:center;
}
.metric-bar-row>span{font-size:7.5px;color:#607486;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metric-bar-row>div{height:7px;background:#edf2f5;border-radius:999px;overflow:hidden}
.metric-bar-row>div>i{display:block;height:100%;background:linear-gradient(90deg,#258fc8,#32aa69);border-radius:999px}
.metric-bar-row>strong{text-align:right;font-size:8px;color:#28465d}

.metrics-section{margin-bottom:10px}
.inspection-metric-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
}
.inspection-metric-grid>div{
  display:grid;
  grid-template-columns:1fr auto auto auto;
  align-items:center;
  gap:6px;
  padding:9px;
  border:1px solid #e0e7ed;
  border-radius:8px;
  background:#f9fbfc;
}
.inspection-metric-grid>div>strong{font-size:9px;color:#1a3d57}
.inspection-metric-grid>div>span{padding:4px 5px;border-radius:999px;font-size:6.8px;font-weight:800}
.metric-pass{background:#e6f7ec;color:#267045}
.metric-fail{background:#fde9eb;color:#a42331}
.metric-plan{background:#edf2f5;color:#667988}
.metric-unplanned{background:#f3f0fb;color:#5b4a86}
.inspection-metric-grid small{grid-column:1/-1;font-size:6.5px;color:#8b98a3}

.metrics-attention-table table{min-width:1050px}

/* Print report header lives in DOM only when printing. */
.print-report-meta{
  display:none;
}

/* PRINT / SAVE PDF
   The browser prints the current DOM, therefore rows/cards hidden by filters stay hidden. */
@media print{
  @page{size:A4 landscape;margin:10mm}
  html,body{
    background:#fff!important;
    color:#111!important;
    font-size:9pt!important;
  }
  .sidebar,.topbar,.toast,.modal-backdrop,.photo-viewer-backdrop,.print-report-btn{
    display:none!important;
  }
  .workspace{
    margin:0!important;
    width:100%!important;
    min-width:0!important;
  }
  .main-content{
    padding:0!important;
    width:100%!important;
    max-width:none!important;
  }
  .page{
    display:block!important;
    padding:0!important;
  }
  .print-report-meta{
    display:block!important;
    margin:0 0 7mm;
    padding:0 0 4mm;
    border-bottom:1.5px solid #1b4967;
  }
  .print-report-meta>div{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:10mm;
  }
  .print-report-meta strong{font-size:15pt;color:#153751}
  .print-report-meta span{font-size:8pt;color:#617384}
  .print-report-meta p{margin:2mm 0 0;font-size:8pt;color:#3e5365}
  .page-head{margin-bottom:5mm!important}
  .page-head button,.page-head .quick-actions button,
  .controls-row,.filter-bar,.segmented,
  .quick-actions .btn,.muted-btn,.details-toggle,
  .map-zoom-controls,.map-filter-right,.photo-card-actions,
  .extra-progress-buttons,.preview-actions,.map-overlay-close{
    display:none!important;
  }
  .panel,.metric-chart-card,.metrics-kpi,.finding-asset-card,.inspection-asset-card,.extra-work-group-card,.test-work-group-card,.photo-card{
    box-shadow:none!important;
    break-inside:avoid;
  }
  .dashboard-grid{
    grid-template-columns:1fr!important;
  }
  .right-stack{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:4mm!important;
  }
  .map-panel{
    margin-bottom:5mm!important;
  }
  .project-map,.map-page-canvas{
    min-height:115mm!important;
    height:115mm!important;
  }
  .map-asset-overlay{
    position:absolute!important;
    width:48%!important;
    max-height:105mm!important;
    overflow:hidden!important;
    filter:none!important;
  }
  .asset-details-panel{display:none!important}
  .table-wrap,.am-sais-points-all,.photo-folder-strip{
    overflow:visible!important;
    max-height:none!important;
  }
  .data-table{
    width:100%!important;
    min-width:0!important;
    font-size:7pt!important;
  }
  .data-table th,.data-table td{
    padding:2.1mm 1.5mm!important;
  }
  tr,td,th{break-inside:avoid}
  .finding-asset-grid,.inspection-asset-grid,.extra-work-group-grid,.test-work-group-grid,.photo-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  .metrics-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .metrics-chart-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .metrics-chart-grid-wide{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .photo-card img,.asset-detail-photo img,.asset-photo-mini img{
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
  *{
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
}

@media(max-width:1120px){
  .metrics-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metrics-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .asset-detail-photo-grid,.metrics-chart-grid,.metrics-chart-grid-wide,.inspection-metric-grid{grid-template-columns:1fr}
  .metrics-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric-donut-wrap{grid-template-columns:100px minmax(0,1fr)}
  .metric-donut{width:92px;height:92px}
  .metric-donut i{width:56px;height:56px}
}

/* ===============================================================
   V4.8 — Configurable Report Builder
   =============================================================== */
.report-builder-modal{
  width:min(1120px,95vw)!important;
  max-width:1120px!important;
  max-height:92vh!important;
}
.report-builder{display:grid;gap:11px}
.report-builder-intro{
  display:grid;gap:3px;
  padding:10px 12px;
  border:1px solid #cfe0ea;
  border-radius:9px;
  background:#f4f9fc;
}
.report-builder-intro strong{font-size:10px;color:#153b57}
.report-builder-intro span{font-size:8px;color:#667b8d;line-height:1.45}
.report-builder-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.report-builder-grid .field.full{grid-column:1/-1}
.report-assets-field{min-width:0}
.report-asset-selector{
  border:1px solid #dbe4eb;
  border-radius:9px;
  padding:9px;
  background:#f8fafc;
}
.report-selector-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:8px;
}
.report-selector-toolbar>input{min-width:250px}
.report-asset-group{margin-top:8px}
.report-asset-group>strong{
  display:block;
  margin-bottom:5px;
  font-size:8px;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#6d8192;
}
.report-asset-grid{
  display:grid;
  grid-template-columns:repeat(8,minmax(0,1fr));
  gap:5px;
}
.report-asset-choice{
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  column-gap:5px;
  padding:6px;
  border:1px solid #d7e1e8;
  border-radius:6px;
  background:#fff;
  cursor:pointer;
}
.report-asset-choice input{grid-row:1/3;margin:1px 0 0}
.report-asset-choice span{font-size:9px;font-weight:900;color:#173650}
.report-asset-choice small{font-size:6.5px;color:#84929d}
.report-asset-choice:has(input:checked){
  border-color:#57a9d0;
  background:#eef8fc;
}
.report-section-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
}
.report-section-grid label{
  display:flex;
  align-items:center;
  gap:6px;
  min-height:36px;
  padding:7px 8px;
  border:1px solid #d9e3ea;
  border-radius:7px;
  background:#fff;
  font-size:8px;
  color:#405b70;
  font-weight:800;
}
.report-section-grid label:has(input:checked){
  border-color:#58abd1;
  background:#f0f9fc;
  color:#176c98;
}
.report-toggle-field{
  display:flex!important;
  flex-direction:column;
  justify-content:flex-end;
  gap:8px;
  padding-bottom:3px;
}
.report-toggle-field>label{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:8px!important;
  color:#4d6578;
}
.report-builder-note{
  padding:8px 10px;
  border-left:3px solid #2b94c7;
  background:#f7fafc;
  font-size:8px;
  color:#607486;
}
.report-builder-note strong{color:#234c68}

/* Generated configurable report lives offscreen until print dialog opens. */
.configured-report-host{
  position:fixed;
  left:-100000px;
  top:0;
  width:1120px;
  background:#fff;
  z-index:-1;
}
.configured-report-document{
  color:#172d3e;
  background:#fff;
  font-family:Inter,Arial,sans-serif;
}
.configured-report-cover{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:20px;
  padding:0 0 14px;
  margin:0 0 14px;
  border-bottom:2px solid #173f5c;
}
.configured-report-cover>div:first-child>span{
  display:block;
  margin-bottom:3px;
  font-size:8px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#2b759f;
}
.configured-report-cover h1{
  margin:0;
  font-size:24px;
  color:#143650;
}
.configured-report-cover p{
  margin:4px 0 0;
  font-size:9px;
  color:#607486;
}
.configured-report-cover>div:last-child{text-align:right}
.configured-report-cover>div:last-child strong{
  display:block;
  font-size:9px;
  color:#38566c;
}
.configured-report-cover>div:last-child small{
  display:block;
  margin-top:2px;
  font-size:7px;
  color:#81909c;
}
.configured-report-unit{
  margin-bottom:14px;
}
.configured-report-unit-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
  margin:0 0 10px;
  padding:9px 11px;
  border:1px solid #d6e1e9;
  border-left:5px solid #226f9a;
  border-radius:7px;
  background:#f6f9fb;
}
.configured-report-unit-head span{
  font-size:7px;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#708496;
  font-weight:900;
}
.configured-report-unit-head h2{
  margin:2px 0 0;
  font-size:17px;
  color:#153751;
}
.configured-report-unit-head p{
  margin:2px 0 0;
  font-size:8px;
  color:#708294;
}
.configured-report-unit-head>div:last-child{text-align:right}
.configured-report-unit-head>div:last-child strong{font-size:11px;color:#1c4a68}
.configured-report-unit-head>div:last-child small{display:block;margin-top:2px;font-size:7px;color:#7d8d9a}

.configured-report-section{
  margin:0 0 11px;
  break-inside:auto;
}
.configured-report-section>h3{
  margin:0 0 6px;
  padding:5px 7px;
  border-bottom:1.5px solid #3d7697;
  background:#f3f7fa;
  font-size:10px;
  color:#173a54;
}
.configured-report-section h4{
  margin:7px 0 4px;
  font-size:8px;
  color:#34566e;
}
.configured-report-section table{
  width:100%;
  border-collapse:collapse;
  table-layout:auto;
  font-size:7px;
}
.configured-report-section th{
  padding:4px 5px;
  border:1px solid #d4dfe7;
  background:#eaf1f5;
  color:#25465d;
  text-align:left;
  font-size:6.8px;
  font-weight:900;
}
.configured-report-section td{
  padding:4px 5px;
  border:1px solid #dce5eb;
  vertical-align:top;
  line-height:1.35;
}
.configured-report-section tr:nth-child(even) td{background:#fbfcfd}
.report-subsection{margin-bottom:8px}
.report-empty{
  padding:8px;
  border:1px dashed #d6e0e7;
  border-radius:6px;
  color:#7b8b98;
  font-size:8px;
  background:#fafcfd;
}
.report-summary-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:5px;
}
.report-summary-grid>div{
  min-width:0;
  padding:6px 7px;
  border:1px solid #dce5eb;
  border-radius:5px;
  background:#fbfcfd;
}
.report-summary-grid span{
  display:block;
  font-size:6.2px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:#7b8b98;
}
.report-summary-grid strong{
  display:block;
  margin-top:2px;
  font-size:8.5px;
  color:#213f56;
}
.report-summary-grid small{
  display:block;
  margin-top:2px;
  font-size:6px;
  color:#85939e;
}
.report-alert{
  display:flex;
  gap:8px;
  margin-top:6px;
  padding:6px 8px;
  border:1px solid #efc9ce;
  border-radius:5px;
  background:#fff3f4;
  font-size:7px;
}
.report-alert strong{color:#9d2935}
.report-alert span{color:#674a4e}
.report-compact-columns{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
  margin-top:7px;
}
.report-compact-columns>div{
  padding:6px 8px;
  border:1px solid #dce5eb;
  border-radius:5px;
}
.report-compact-columns h4{margin:0 0 4px}
.report-compact-columns p{
  display:grid;
  grid-template-columns:95px 1fr;
  gap:6px;
  margin:0;
  padding:3px 0;
  border-bottom:1px solid #edf1f4;
  font-size:6.8px;
}
.report-compact-columns p:last-child{border-bottom:0}
.report-compact-columns p strong{color:#27465d}
.report-compact-columns p span{color:#6b7e8d}
.report-metrics-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:5px;
}
.report-metrics-grid>div{
  padding:7px;
  border:1px solid #d9e3e9;
  border-radius:5px;
  background:#f8fafb;
}
.report-metrics-grid span{display:block;font-size:6.3px;color:#748696}
.report-metrics-grid strong{display:block;margin-top:2px;font-size:11px;color:#173d59}
.configured-report-photo-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
}
.configured-report-photo{
  min-width:0;
  padding:5px;
  border:1px solid #d9e2e8;
  border-radius:5px;
  break-inside:avoid;
}
.configured-report-photo-img{
  position:relative;
  aspect-ratio:4/3;
  overflow:hidden;
  border-radius:3px;
  background:#edf1f4;
}
.configured-report-photo-img img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.configured-report-photo-img span{
  position:absolute;
  right:3px;
  bottom:3px;
  padding:2px 4px;
  border-radius:3px;
  background:rgba(9,34,51,.75);
  color:#fff;
  font-size:5px;
}
.configured-report-photo>strong{display:block;margin-top:4px;font-size:6.8px;color:#28475e}
.configured-report-photo>small{display:block;margin-top:1px;font-size:5.8px;color:#7e8d99}
.configured-report-photo>p{margin:3px 0 0;font-size:6px;color:#617585;line-height:1.3}
.report-new-page{break-before:page}

@media print{
  /* Configured reports replace the dashboard completely. */
  body.printing-configured-report #app,
  body.printing-configured-report .modal-backdrop,
  body.printing-configured-report .photo-viewer-backdrop,
  body.printing-configured-report #printReportMeta{
    display:none!important;
  }
  body.printing-configured-report .configured-report-host{
    display:block!important;
    position:static!important;
    left:auto!important;
    top:auto!important;
    width:auto!important;
    z-index:auto!important;
  }
  body.printing-configured-report .configured-report-document{
    display:block!important;
  }
  body.printing-configured-report .configured-report-section table{
    font-size:6.5pt!important;
  }
  body.printing-configured-report .configured-report-section th,
  body.printing-configured-report .configured-report-section td{
    padding:1.5mm 1.3mm!important;
  }
  body.printing-configured-report .configured-report-cover{
    margin-bottom:4mm;
    padding-bottom:3mm;
  }
  body.printing-configured-report .configured-report-cover h1{font-size:18pt}
  body.printing-configured-report .configured-report-unit-head{margin-bottom:3mm;padding:2.5mm 3mm}
  body.printing-configured-report .configured-report-section{margin-bottom:3mm}
  body.printing-configured-report .configured-report-section>h3{font-size:8.5pt;padding:1.4mm 2mm}
  body.printing-configured-report .report-summary-grid{grid-template-columns:repeat(7,minmax(0,1fr))}
  body.printing-configured-report .configured-report-photo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  body.printing-configured-report .configured-report-photo-img{max-height:39mm}
}

@media(max-width:1000px){
  .report-asset-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .report-section-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .report-builder-grid{grid-template-columns:1fr!important}
  .report-builder-grid .field.full{grid-column:1}
  .report-selector-toolbar{align-items:stretch;flex-direction:column}
  .report-selector-toolbar>input{min-width:0;width:100%}
  .report-asset-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .report-section-grid{grid-template-columns:1fr}
}

/* ===============================================================
   V4.9 — compact report pagination + metrics charts + Findings composition
   =============================================================== */

/* Asset SAIS / Findings card goes back to half-width in the 2-column asset workspace.
   All points remain available inside the scrollable card. */
.asset-sais-all-card{
  grid-column:auto!important;
}
.asset-sais-all-card .am-sais-points-all{
  max-height:420px;
}
.asset-sais-all-card + .asset-management-card{
  align-self:start;
}

/* Findings Responsible filter */
#findingAssetResponsibleFilter,
#findingDetailResponsible{
  min-width:145px;
}

/* Metrics inside CONFIGURED reports */
.report-metric-chart-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
  margin-top:7px;
}
.report-metric-chart{
  min-width:0;
  padding:7px;
  border:1px solid #d9e3e9;
  border-radius:6px;
  background:#fbfcfd;
  break-inside:avoid;
}
.report-metric-chart>h4{
  margin:0 0 6px;
  font-size:7.2px;
  color:#294960;
}
.report-metric-donut-layout{
  display:grid;
  grid-template-columns:70px minmax(0,1fr);
  gap:7px;
  align-items:center;
}
.report-metric-donut{
  position:relative;
  width:64px;
  height:64px;
  border-radius:50%;
  display:grid;
  place-items:center;
}
.report-metric-donut>i{
  position:absolute;
  width:39px;
  height:39px;
  border-radius:50%;
  background:#fff;
  box-shadow:inset 0 0 0 1px #e3e9ed;
}
.report-metric-donut>strong{
  position:relative;
  z-index:2;
  font-size:10px;
  color:#173b55;
}
.report-metric-legend{
  display:grid;
  gap:3px;
}
.report-metric-legend>span{
  display:grid;
  grid-template-columns:6px minmax(0,1fr) auto auto;
  gap:4px;
  align-items:center;
  font-size:5.7px;
  color:#667a89;
}
.report-metric-legend>span>i{
  width:6px;height:6px;border-radius:2px;
}
.report-metric-legend b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.report-metric-legend strong{font-size:6px;color:#29475d}
.report-metric-legend small{font-size:5.2px;color:#8c98a2}

.report-metric-bars{
  display:grid;
  gap:3px;
}
.report-metric-bars>div{
  display:grid;
  grid-template-columns:minmax(58px,.9fr) minmax(70px,1.7fr) 30px;
  gap:4px;
  align-items:center;
}
.report-metric-bars>div>span{
  font-size:5.7px;
  color:#667987;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.report-metric-bars>div>b{
  display:block;
  height:5px;
  background:#ebf0f3;
  border-radius:999px;
  overflow:hidden;
}
.report-metric-bars>div>b>i{
  display:block;
  height:100%;
  background:linear-gradient(90deg,#268fc7,#36aa69);
  border-radius:999px;
}
.report-metric-bars>div>strong{
  font-size:5.8px;
  color:#29485e;
  text-align:right;
}
.report-inspection-metrics{
  margin-top:7px;
  padding:6px 7px;
  border:1px solid #d9e3e9;
  border-radius:6px;
  break-inside:avoid;
}
.report-inspection-metrics>h4{
  margin:0 0 5px;
  font-size:7px;
  color:#294960;
}
.report-inspection-metrics>div{
  display:grid;
  grid-template-columns:90px auto auto auto;
  gap:5px;
  align-items:center;
  padding:3px 0;
  border-bottom:1px solid #edf1f4;
}
.report-inspection-metrics>div:last-child{border-bottom:0}
.report-inspection-metrics>div>strong{font-size:6.2px;color:#29485e}
.report-inspection-metrics>div>span{
  padding:2px 4px;
  border-radius:999px;
  font-size:5.2px;
  font-weight:800;
}

/* Let the browser fill each A4 page naturally.
   No forced page break per asset or per function. */
.report-new-page{
  break-before:auto!important;
  page-break-before:auto!important;
}
.configured-report-unit,
.configured-report-section{
  break-before:auto!important;
  page-break-before:auto!important;
}
.configured-report-unit-head,
.report-summary-grid,
.report-compact-columns,
.report-metric-chart,
.report-inspection-metrics,
.configured-report-photo{
  break-inside:avoid;
  page-break-inside:avoid;
}
.configured-report-section table{
  break-inside:auto;
  page-break-inside:auto;
}
.configured-report-section tr{
  break-inside:avoid;
  page-break-inside:avoid;
}
.report-unit-asset{
  margin-bottom:8px!important;
  padding-bottom:4px;
  border-bottom:1px solid #dce4e9;
}

/* Configured print uses compact typography so related sections share the page when possible. */
@media print{
  body.printing-configured-report .configured-report-cover{
    margin-bottom:2.5mm!important;
    padding-bottom:2mm!important;
  }
  body.printing-configured-report .configured-report-cover h1{
    font-size:15pt!important;
  }
  body.printing-configured-report .configured-report-unit{
    margin-bottom:2.5mm!important;
  }
  body.printing-configured-report .configured-report-unit-head{
    margin-bottom:1.8mm!important;
    padding:1.8mm 2.4mm!important;
  }
  body.printing-configured-report .configured-report-unit-head h2{
    font-size:11pt!important;
  }
  body.printing-configured-report .configured-report-section{
    margin-bottom:2mm!important;
  }
  body.printing-configured-report .configured-report-section>h3{
    margin-bottom:1.2mm!important;
    padding:1mm 1.6mm!important;
    font-size:7.8pt!important;
  }
  body.printing-configured-report .configured-report-section h4{
    margin:1.4mm 0 .8mm!important;
    font-size:6.8pt!important;
  }
  body.printing-configured-report .configured-report-section table{
    font-size:6pt!important;
  }
  body.printing-configured-report .configured-report-section th,
  body.printing-configured-report .configured-report-section td{
    padding:1mm 1.05mm!important;
    line-height:1.2!important;
  }
  body.printing-configured-report .report-summary-grid{
    grid-template-columns:repeat(7,minmax(0,1fr))!important;
    gap:1mm!important;
  }
  body.printing-configured-report .report-summary-grid>div{
    padding:1.2mm 1.4mm!important;
  }
  body.printing-configured-report .report-compact-columns{
    margin-top:1.3mm!important;
    gap:1.4mm!important;
  }
  body.printing-configured-report .report-compact-columns>div{
    padding:1.2mm 1.5mm!important;
  }
  body.printing-configured-report .report-metrics-grid{
    grid-template-columns:repeat(6,minmax(0,1fr))!important;
    gap:1mm!important;
  }
  body.printing-configured-report .report-metrics-grid>div{
    padding:1.2mm!important;
  }
  body.printing-configured-report .report-metric-chart-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:1.4mm!important;
    margin-top:1.4mm!important;
  }
  body.printing-configured-report .report-metric-chart{
    padding:1.4mm!important;
  }
  body.printing-configured-report .report-metric-donut{
    width:17mm!important;height:17mm!important;
  }
  body.printing-configured-report .report-metric-donut>i{
    width:10.5mm!important;height:10.5mm!important;
  }
  body.printing-configured-report .report-metric-donut-layout{
    grid-template-columns:19mm minmax(0,1fr)!important;
    gap:1.5mm!important;
  }
  body.printing-configured-report .report-inspection-metrics{
    margin-top:1.5mm!important;
    padding:1.3mm!important;
  }
}

@media(max-width:1100px){
  .report-metric-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .report-metric-chart-grid{grid-template-columns:1fr}
}

/* ===============================================================
   V5.0 — split RE-SAIS SED / Construction + verified closed styling
   =============================================================== */
.inspection-asset-stage-tabs{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.inspection-stats-five{
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
}
.inspection-metric-grid-four{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.inspection-owner-fixed{
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:6px 9px;
  border:1px solid #d7e1e8;
  border-radius:7px;
  font-size:9px;
  font-weight:900;
  letter-spacing:.02em;
}
.inspection-owner-fixed.owner-sed{
  background:#edf7fc;
  border-color:#b9d9ea;
  color:#1e6d96;
}
.inspection-owner-fixed.owner-construction{
  background:#f5f0fb;
  border-color:#d9c9ea;
  color:#68438b;
}
.resais-sed-card{
  border-top:3px solid #2c91c4!important;
}
.resais-construction-card{
  border-top:3px solid #7866b8!important;
}
.moved-sed{
  background:#e8f5fb!important;
  color:#236f98!important;
}
.moved-construction{
  background:#f3ecfa!important;
  color:#6b468c!important;
}

/* Passed + underlying SAIS Closed = unmistakably green in RE-SAIS. */
.verification-row.verified-closed-row{
  background:#effaf3!important;
  border-left:1px solid #c5e8d1;
}
.result-verified-closed{
  background:#2ea65d!important;
}
.verified-green-badge,
.verified-closed-badge{
  display:inline-flex;
  align-items:center;
  padding:4px 7px;
  border-radius:999px;
  background:#dff5e7;
  color:#1f7442;
  border:1px solid #b9e5c9;
  font-size:8px;
  font-weight:900;
}
.result-select-verified{
  background:#e9f8ee!important;
  border-color:#a9dcbc!important;
  color:#1d7140!important;
  font-weight:900!important;
}
.verified-closed-row .inspection-finding-main>div>strong{
  color:#1f7141;
}
.verified-closed-row .inspection-finding-main p{
  color:#365e48;
}

@media(max-width:1180px){
  .inspection-asset-stage-tabs{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .inspection-stats-five{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .inspection-metric-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:720px){
  .inspection-asset-stage-tabs,
  .inspection-stats-five,
  .inspection-metric-grid-four{grid-template-columns:1fr!important}
}

/* ===============================================================
   V5.1 — derived RE-SAIS status, Issue asset state, Home Project Pulse,
   and photo-realistic animated escalator sidebar
   =============================================================== */

/* Asset Status: Issue */
.pill-issue{
  background:#fff0df!important;
  color:#8a4700!important;
  border-color:#efc48d!important;
}
.asset-status-issue{
  background:#fff0df!important;
  color:#8a4700!important;
  border-color:#efc48d!important;
}
.issue-stat{
  border-top:3px solid #e9861a!important;
}
.issue-metric-kpi{
  border-top:3px solid #e9861a!important;
}
.asset-stats-six{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
}
.status-cards-four{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}

/* RE-SAIS status is not edited manually anymore. */
.resais-derived-status{
  min-height:42px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:7px 9px;
  border:1px solid #d9e3ea;
  border-radius:8px;
  background:#f8fafc;
}
.resais-derived-status small{
  max-width:135px;
  color:#778a99;
  font-size:7px;
  line-height:1.25;
  text-align:right;
}
.resais-derived-status .inspection-pill{
  flex:0 0 auto;
}

/* Useful information below the Home map without changing the main dashboard layout. */
.home-map-pulse{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
  padding:8px 8px 9px;
  border-top:1px solid #dce6ed;
  background:linear-gradient(180deg,#f8fbfd,#f2f6f9);
}
.home-pulse-card{
  position:relative;
  min-width:0;
  min-height:64px;
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-rows:auto auto;
  align-items:center;
  gap:2px 7px;
  padding:8px 9px 7px 11px;
  border:1px solid #dbe5ec;
  border-radius:8px;
  background:#fff;
  text-align:left;
  cursor:pointer;
  overflow:hidden;
}
.home-pulse-card:before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:3px;
  background:#8ea2b3;
}
.home-pulse-card span{
  font-size:7.5px;
  font-weight:900;
  color:#5d7284;
}
.home-pulse-card strong{
  grid-row:1/3;
  grid-column:2;
  align-self:center;
  font-size:17px;
  color:#173c57;
}
.home-pulse-card small{
  font-size:6.5px;
  color:#88959f;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.home-pulse-card:hover{
  border-color:#a9c9da;
  background:#fafdff;
}
.issue-pulse:before{background:#e9861a}
.sed-pulse:before{background:#2c91c4}
.construction-pulse:before{background:#7866b8}
.extra-pulse:before{background:#34a766}

/* More photographic sidebar treatment. */
.sidebar-photo-art{
  filter:saturate(.92) contrast(1.06) brightness(.86);
}
.sidebar-vignette{
  background:
    linear-gradient(180deg,rgba(3,13,23,.34) 0%,rgba(3,13,23,.20) 18%,rgba(3,13,23,.31) 48%,rgba(2,9,16,.66) 100%)!important,
    linear-gradient(90deg,rgba(2,11,19,.46),transparent 34%,transparent 66%,rgba(2,11,19,.42))!important;
}
.premium-nav .nav-item{
  background:rgba(6,22,36,.51)!important;
  border-color:rgba(153,209,238,.08)!important;
  backdrop-filter:blur(6px) saturate(115%)!important;
  -webkit-backdrop-filter:blur(6px) saturate(115%)!important;
}
.photo-moving-step-track{
  animation:photoStepTravel .92s linear infinite;
  will-change:transform;
}
@keyframes photoStepTravel{
  from{transform:translateY(0)}
  to{transform:translateY(-30px)}
}
.photo-handrail-flow{
  stroke-dasharray:18 11;
  animation:photoRailTravel 1.10s linear infinite;
  filter:drop-shadow(0 0 2px rgba(113,219,255,.30));
}
.photo-handrail-right{animation-delay:-.55s}
@keyframes photoRailTravel{
  to{stroke-dashoffset:58}
}
.photo-terminal-pulse{
  animation:photoTerminalPulse 1.8s ease-in-out infinite;
  transform-origin:center;
  transform-box:fill-box;
}
@keyframes photoTerminalPulse{
  0%,100%{opacity:.34;transform:scale(.82)}
  50%{opacity:.95;transform:scale(1.20)}
}
.photo-step-bodies{
  filter:drop-shadow(0 1px .65px rgba(0,0,0,.24));
}

/* Keep all four inspection lanes compact on larger screens. */
.inspection-asset-stage-tabs{
  gap:6px!important;
}
.inspection-asset-stage-tab{
  min-width:0;
}
.inspection-asset-stage-tab>span:first-child{
  line-height:1.15;
}

/* Print: include Issue correctly in status/pulse colors. */
@media print{
  .home-map-pulse{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    padding:2mm!important;
  }
  .home-pulse-card{
    min-height:14mm!important;
    padding:1.6mm 2mm!important;
  }
}

@media(max-width:1120px){
  .asset-stats-six{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  .home-map-pulse{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .asset-stats-six,
  .status-cards-four,
  .home-map-pulse{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* ===============================================================
   V5.2 — Market-grade Control Spine + Operational Command Deck
   =============================================================== */

/* ---------------------------------------------------------------
   CONTROL SPINE SIDEBAR
   --------------------------------------------------------------- */
.app-shell{
  grid-template-columns:206px minmax(0,1fr)!important;
}
.market-sidebar{
  position:relative!important;
  isolation:isolate;
  min-height:100vh;
  padding:0!important;
  overflow:hidden!important;
  background:#06131f!important;
  color:#fff;
}
.sidebar-photo-backdrop{
  position:absolute;
  inset:0;
  z-index:-4;
  background:
    linear-gradient(180deg,rgba(5,18,30,.92) 0%,rgba(5,18,30,.78) 44%,rgba(3,12,20,.42) 68%,rgba(2,8,14,.30) 100%),
    linear-gradient(180deg,#0a2235,#06131f);
  filter:saturate(.82) contrast(1.07);
  transform:scale(1.025);
}
.sidebar-photo-shade{
  position:absolute;
  inset:0;
  z-index:-3;
  background:
    linear-gradient(90deg,rgba(2,10,17,.78) 0%,rgba(3,13,22,.46) 58%,rgba(2,9,15,.68) 100%),
    linear-gradient(180deg,rgba(3,12,21,.16) 0%,rgba(3,12,21,.18) 48%,rgba(2,8,14,.72) 100%);
  box-shadow:inset -1px 0 0 rgba(126,190,226,.12);
}
.sidebar-shell{
  position:relative;
  z-index:2;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  padding:0 10px 12px;
}
.market-brand{
  flex:0 0 auto;
  height:auto!important;
  min-height:102px!important;
  margin:0 -10px 4px!important;
  padding:14px 15px 10px!important;
  display:block!important;
  background:
    linear-gradient(180deg,rgba(4,17,29,.98),rgba(5,19,32,.86))!important;
  border-bottom:1px solid rgba(121,188,228,.12)!important;
}
.market-brand .cegitech-native-logo{
  display:block;
  width:158px;
  max-width:100%;
  margin:0;
}
.sidebar-product-label{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  margin-top:7px;
  padding-top:7px;
  border-top:1px solid rgba(147,196,224,.10);
}
.sidebar-product-label span{
  font-size:6.7px;
  font-weight:900;
  letter-spacing:.105em;
  color:#d7edf9;
}
.sidebar-product-label small{
  font-size:5.4px;
  font-weight:800;
  letter-spacing:.08em;
  color:#6f9ab5;
}

.market-nav{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:3px 0 5px!important;
  gap:4px!important;
  scrollbar-width:none;
}
.market-nav::-webkit-scrollbar{display:none}
.market-nav .nav-item{
  position:relative;
  min-height:38px!important;
  padding:7px 8px!important;
  gap:8px!important;
  border:1px solid transparent!important;
  border-radius:7px!important;
  background:rgba(4,17,29,.52)!important;
  color:#b7cbd9!important;
  backdrop-filter:blur(7px) saturate(110%);
  -webkit-backdrop-filter:blur(7px) saturate(110%);
  box-shadow:none!important;
  transform:none!important;
}
.market-nav .nav-item:before{
  content:"";
  position:absolute;
  left:-1px;
  top:7px;
  bottom:7px;
  width:2px;
  border-radius:4px;
  background:transparent;
  transition:.16s ease;
}
.market-nav .nav-item:hover{
  background:rgba(10,34,54,.76)!important;
  color:#eef9ff!important;
  border-color:rgba(120,197,235,.14)!important;
}
.market-nav .nav-item.active{
  background:
    linear-gradient(90deg,rgba(25,126,178,.30),rgba(8,34,54,.82) 60%)!important;
  border-color:rgba(77,185,234,.26)!important;
  color:#fff!important;
  box-shadow:inset 0 0 22px rgba(32,157,216,.08)!important;
}
.market-nav .nav-item.active:before{
  background:#49d8ff;
  box-shadow:0 0 10px rgba(73,216,255,.68);
}
.market-nav .nav-icon{
  width:20px!important;
  font-size:12px!important;
  color:#6fa8c7;
  text-align:center;
}
.market-nav .nav-item.active .nav-icon{color:#66dfff}
.market-nav .nav-label{
  flex:1;
  min-width:0;
  font-size:8.8px;
  font-weight:760;
  letter-spacing:.01em;
}
.nav-badge{
  min-width:0;
  height:19px;
  display:none;
  place-items:center;
  padding:0 5px;
  border-radius:999px;
  background:rgba(128,164,185,.16);
  color:#aac4d3;
  font-size:6.5px;
  font-weight:900;
  border:1px solid rgba(141,189,216,.15);
}
.nav-badge.has-value{
  display:grid;
}
.market-nav [data-page="assets"] .nav-badge.has-value,
.market-nav [data-page="findings"] .nav-badge.has-value,
.market-nav [data-page="inspections"] .nav-badge.has-value{
  background:rgba(226,111,48,.18);
  color:#ffc69f;
  border-color:rgba(235,137,80,.23);
}
.market-nav [data-page="extra"] .nav-badge.has-value{
  background:rgba(75,165,111,.15);
  color:#a7e0bd;
  border-color:rgba(95,190,132,.20);
}

.sidebar-intelligence-card{
  flex:0 0 auto;
  margin:5px 0 7px;
  padding:9px 10px;
  border:1px solid rgba(127,190,224,.17);
  border-radius:9px;
  background:rgba(3,15,25,.72);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
  box-shadow:0 7px 22px rgba(0,0,0,.16);
}
.sidebar-intelligence-head{
  display:flex;
  align-items:center;
  gap:5px;
  color:#7fa7be;
  font-size:5.9px;
  letter-spacing:.10em;
}
.sidebar-intelligence-head .live-dot{
  width:6px;height:6px;border-radius:50%;
  background:#34c978;
  box-shadow:0 0 8px rgba(52,201,120,.68);
}
.sidebar-intelligence-status{
  margin-top:5px;
  font-size:9.5px;
  line-height:1.1;
  font-weight:900;
  letter-spacing:.035em;
  color:#e7f6fd;
}
.sidebar-intelligence-status[data-level="critical"]{color:#ff9a9f}
.sidebar-intelligence-status[data-level="attention"]{color:#ffbf78}
.sidebar-intelligence-status[data-level="stable"]{color:#79dfaa}
.sidebar-intelligence-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px;
  margin-top:7px;
}
.sidebar-intelligence-grid>div{
  padding:5px 6px;
  border-radius:6px;
  background:rgba(143,192,217,.07);
}
.sidebar-intelligence-grid span{
  display:block;
  font-size:5.6px;
  color:#7092a6;
}
.sidebar-intelligence-grid strong{
  display:block;
  margin-top:1px;
  font-size:10px;
  color:#dceef8;
}
.sidebar-intelligence-card>small{
  display:block;
  margin-top:6px;
  padding-top:6px;
  border-top:1px solid rgba(128,181,208,.10);
  color:#6d8ea1;
  font-size:5.7px;
}
.sidebar-photo-caption{
  flex:0 0 auto;
  position:relative;
  min-height:77px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  margin:0 -10px -12px;
  padding:11px 13px 14px;
  border-top:1px solid rgba(163,214,240,.12);
  background:linear-gradient(180deg,rgba(3,12,20,.22),rgba(2,8,14,.86));
}
.sidebar-photo-caption span{
  font-size:5.6px;
  font-weight:900;
  letter-spacing:.13em;
  color:#82a8bd;
}
.sidebar-photo-caption strong{
  margin-top:2px;
  font-size:13px;
  line-height:1;
  letter-spacing:.025em;
  color:#f2fbff;
}
.sidebar-photo-caption small{
  margin-top:4px;
  font-size:6.4px;
  color:#7f9eb0;
}

/* ---------------------------------------------------------------
   HOME — OPERATIONAL COMMAND DECK
   --------------------------------------------------------------- */
.home-command-deck{
  border-top:1px solid #d8e3ea;
  background:
    linear-gradient(180deg,#f9fbfd 0%,#f3f7f9 100%);
}
.command-deck-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:9px 11px 8px;
  border-bottom:1px solid #e0e8ed;
}
.command-deck-head>div{
  display:flex;
  align-items:center;
  gap:9px;
}
.command-deck-head h3{
  margin:0;
  font-size:10px;
  letter-spacing:-.01em;
  color:#173a54;
}
.command-live{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:4px 6px;
  border:1px solid #cfe2ec;
  border-radius:999px;
  background:#eef8fc;
  color:#317291;
  font-size:5.7px;
  font-weight:900;
  letter-spacing:.09em;
}
.command-live i{
  width:5px;height:5px;border-radius:50%;
  background:#31b76a;
  box-shadow:0 0 7px rgba(49,183,106,.50);
}
.command-deck-head p{
  margin:0;
  font-size:7px;
  color:#748593;
}
.command-deck-head p strong{color:#244b66}

.command-deck-grid{
  display:grid;
  grid-template-columns:1.22fr 1fr .84fr;
  gap:7px;
  padding:7px;
}
.command-panel{
  min-width:0;
  min-height:208px;
  overflow:hidden;
  border:1px solid #dbe4ea;
  border-radius:9px;
  background:#fff;
  box-shadow:0 2px 7px rgba(20,49,70,.025);
}
.command-panel-head{
  min-height:39px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
  padding:7px 8px;
  border-bottom:1px solid #e7edf1;
  background:#fbfcfd;
}
.command-panel-head>div{
  display:flex;
  align-items:center;
  gap:6px;
}
.command-panel-head>div>span{
  display:grid;
  place-items:center;
  width:20px;height:20px;
  border-radius:5px;
  background:#e8f3f8;
  color:#3b7897;
  font-size:5.8px;
  font-weight:900;
}
.command-panel-head h4{
  margin:0;
  font-size:8.7px;
  color:#193b54;
}
.command-panel-head>small{
  font-size:5.8px;
  color:#85939e;
}

/* Critical Actions */
.critical-actions-list{
  display:grid;
}
.critical-actions-list>button{
  width:100%;
  min-height:33px;
  display:grid;
  grid-template-columns:22px minmax(0,1fr) auto;
  align-items:center;
  gap:6px;
  padding:5px 7px;
  border:0;
  border-bottom:1px solid #eef2f5;
  background:#fff;
  text-align:left;
}
.critical-actions-list>button:last-child{border-bottom:0}
.critical-actions-list>button:hover{background:#f5fafc}
.critical-actions-list>button>b{
  display:grid;
  place-items:center;
  width:20px;height:20px;
  border-radius:5px;
  background:#182f42;
  color:#d9edf8;
  font-size:6px;
}
.critical-actions-list>button>div{
  min-width:0;
}
.critical-actions-list>button>div>strong{
  display:inline-block;
  margin-right:5px;
  font-size:8.2px;
  color:#183b54;
}
.critical-actions-list>button>div>span{
  font-size:6.2px;
  color:#82909b;
}
.critical-actions-list>button>div>small{
  display:flex;
  gap:3px;
  margin-top:3px;
  overflow:hidden;
}
.critical-actions-list>button>div>small i{
  display:inline-flex;
  align-items:center;
  padding:2px 4px;
  border-radius:999px;
  background:#f5eee9;
  color:#8a5738;
  font-size:5.4px;
  font-style:normal;
  white-space:nowrap;
}
.critical-actions-list>button>em{
  color:#53809a;
  font-size:6px;
  font-style:normal;
  font-weight:800;
}
.command-empty{
  padding:18px 10px;
  color:#7e8d98;
  font-size:7px;
}

/* Delivery Radar */
.delivery-radar{
  display:grid;
  gap:0;
  padding:3px 7px 5px;
}
.delivery-radar>button{
  display:grid;
  grid-template-columns:100px minmax(60px,1fr) 30px;
  align-items:center;
  gap:6px;
  min-height:19px;
  padding:2px 1px;
  border:0;
  background:transparent;
  text-align:left;
}
.delivery-radar>button:hover span{color:#176f99}
.delivery-radar>button>span{
  font-size:6.2px;
  color:#687b8a;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.delivery-radar>button>div{
  height:5px;
  overflow:hidden;
  border-radius:999px;
  background:#e9eef2;
}
.delivery-radar>button>div>i{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#2589bf 0%,#2ca66a 100%);
}
.delivery-radar>button>strong{
  font-size:6.4px;
  color:#27485f;
  text-align:right;
}

/* Site Pulse */
.site-pulse-panel{
  background:
    linear-gradient(150deg,#fff 0%,#fbfdfe 62%,#f2f8fb 100%);
}
.site-pulse-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
  padding:7px;
}
.site-pulse-grid>div{
  min-height:54px;
  padding:7px;
  border:1px solid #e0e8ed;
  border-radius:7px;
  background:#fff;
}
.site-pulse-grid span{
  display:block;
  font-size:5.8px;
  color:#788a98;
}
.site-pulse-grid strong{
  display:block;
  margin-top:2px;
  font-size:14px;
  line-height:1;
  color:#173b55;
}
.site-pulse-grid small{
  display:block;
  margin-top:3px;
  font-size:5.5px;
  color:#919ca5;
}
.command-last-update,
.command-evidence-line{
  margin:0 7px 5px;
  padding:6px 7px;
  border-radius:6px;
  background:#0f2a3d;
  color:#d9edf7;
}
.command-last-update span,
.command-evidence-line span{
  display:block;
  font-size:5.5px;
  color:#7da8bf;
}
.command-last-update strong{
  display:block;
  margin-top:2px;
  font-size:6.8px;
  color:#eefaff;
}
.command-evidence-line{
  display:grid;
  grid-template-columns:1fr auto;
  gap:2px 6px;
  background:#edf6fa;
  color:#24475e;
}
.command-evidence-line strong{
  font-size:7px;
}
.command-evidence-line small{
  grid-column:1/3;
  font-size:5.4px;
  color:#728795;
}

/* Remove the older pulse strip presentation if old styles remain in cascade. */
.home-map-pulse{display:none!important}

/* Market-grade subtle detail */
.hero-map-panel{
  overflow:hidden;
}
.hero-map-panel:after{
  content:"";
  position:absolute;
  pointer-events:none;
}

/* ---------------------------------------------------------------
   RESPONSIVE
   --------------------------------------------------------------- */
@media(max-width:1280px){
  .app-shell{grid-template-columns:190px minmax(0,1fr)!important}
  .command-deck-grid{grid-template-columns:1.15fr 1fr}
  .site-pulse-panel{grid-column:1/-1}
  .site-pulse-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:900px){
  .app-shell{grid-template-columns:176px minmax(0,1fr)!important}
  .command-deck-grid{grid-template-columns:1fr}
  .site-pulse-panel{grid-column:auto}
  .site-pulse-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .command-deck-head{align-items:flex-start;flex-direction:column}
  .command-deck-grid{padding:5px}
}

/* ---------------------------------------------------------------
   PRINT
   --------------------------------------------------------------- */
@media print{
  .home-command-deck{
    display:block!important;
    border:1px solid #dbe4ea!important;
    margin-top:2mm!important;
  }
  .command-deck-head{
    padding:1.5mm 2mm!important;
  }
  .command-deck-grid{
    grid-template-columns:1.15fr 1fr .85fr!important;
    gap:1.5mm!important;
    padding:1.5mm!important;
  }
  .command-panel{
    min-height:auto!important;
    break-inside:avoid;
  }
  .critical-actions-list>button{
    min-height:7mm!important;
  }
}

/* ===============================================================
   V5.3 — Operational Command Deck readability / scale upgrade
   The previous V5.2 deck was intentionally dense but too small.
   V5.3 makes it a first-class operational surface, not micro-text.
   =============================================================== */

.home-command-deck{
  background:linear-gradient(180deg,#fbfdfe 0%,#f4f7f9 100%)!important;
}

/* Main deck header */
.command-deck-head{
  min-height:58px!important;
  padding:12px 15px 11px!important;
  gap:18px!important;
}
.command-deck-head>div{
  gap:11px!important;
}
.command-deck-head h3{
  font-size:15px!important;
  font-weight:850!important;
  letter-spacing:-.025em!important;
}
.command-live{
  gap:6px!important;
  padding:6px 9px!important;
  font-size:8.5px!important;
  letter-spacing:.085em!important;
}
.command-live i{
  width:7px!important;
  height:7px!important;
}
.command-deck-head p{
  max-width:52%;
  font-size:10px!important;
  line-height:1.35!important;
}
.command-deck-head p strong{
  font-size:11px!important;
}

/* Overall composition */
.command-deck-grid{
  grid-template-columns:1.18fr 1.02fr .92fr!important;
  gap:10px!important;
  padding:10px!important;
}
.command-panel{
  min-height:288px!important;
  border-radius:11px!important;
  box-shadow:0 4px 14px rgba(20,49,70,.045)!important;
}
.command-panel-head{
  min-height:54px!important;
  padding:10px 12px!important;
  gap:10px!important;
}
.command-panel-head>div{
  gap:9px!important;
}
.command-panel-head>div>span{
  width:28px!important;
  height:28px!important;
  border-radius:7px!important;
  font-size:8px!important;
}
.command-panel-head h4{
  font-size:13px!important;
  font-weight:850!important;
}
.command-panel-head>small{
  font-size:8px!important;
  line-height:1.25!important;
  text-align:right;
}

/* Critical Actions */
.critical-actions-list>button{
  min-height:47px!important;
  grid-template-columns:30px minmax(0,1fr) auto!important;
  gap:9px!important;
  padding:7px 10px!important;
}
.critical-actions-list>button>b{
  width:28px!important;
  height:28px!important;
  border-radius:6px!important;
  font-size:8px!important;
}
.critical-actions-list>button>div>strong{
  margin-right:7px!important;
  font-size:11.5px!important;
}
.critical-actions-list>button>div>span{
  font-size:8.5px!important;
}
.critical-actions-list>button>div>small{
  gap:4px!important;
  margin-top:4px!important;
}
.critical-actions-list>button>div>small i{
  padding:3px 6px!important;
  font-size:7px!important;
}
.critical-actions-list>button>em{
  font-size:8px!important;
  white-space:nowrap;
}
.command-empty{
  padding:26px 14px!important;
  font-size:10px!important;
}

/* Delivery Radar */
.delivery-radar{
  gap:2px!important;
  padding:7px 11px 10px!important;
}
.delivery-radar>button{
  grid-template-columns:138px minmax(80px,1fr) 42px!important;
  gap:9px!important;
  min-height:27px!important;
  padding:3px 2px!important;
}
.delivery-radar>button>span{
  font-size:9px!important;
  font-weight:700!important;
}
.delivery-radar>button>div{
  height:8px!important;
}
.delivery-radar>button>strong{
  font-size:9px!important;
}

/* Site Pulse */
.site-pulse-grid{
  gap:8px!important;
  padding:10px!important;
}
.site-pulse-grid>div{
  min-height:74px!important;
  padding:10px!important;
  border-radius:8px!important;
}
.site-pulse-grid span{
  font-size:8.5px!important;
  font-weight:700!important;
}
.site-pulse-grid strong{
  margin-top:5px!important;
  font-size:23px!important;
}
.site-pulse-grid small{
  margin-top:5px!important;
  font-size:7.5px!important;
  line-height:1.25!important;
}
.command-last-update,
.command-evidence-line{
  margin:0 10px 8px!important;
  padding:9px 10px!important;
  border-radius:8px!important;
}
.command-last-update span,
.command-evidence-line span{
  font-size:7.5px!important;
}
.command-last-update strong{
  margin-top:4px!important;
  font-size:9px!important;
}
.command-evidence-line{
  gap:4px 8px!important;
}
.command-evidence-line strong{
  font-size:9px!important;
}
.command-evidence-line small{
  font-size:7.2px!important;
}

/* Make the whole below-map section visually deliberate rather than cramped. */
.hero-map-panel .home-command-deck{
  border-top:2px solid #d6e3ea!important;
}
.command-panel:hover{
  border-color:#c9dce7!important;
  box-shadow:0 6px 18px rgba(18,57,81,.07)!important;
}

/* Desktop keeps all three panels side by side while using the available width. */
@media(min-width:1281px){
  .command-deck-grid{
    grid-template-columns:1.23fr 1fr .92fr!important;
  }
}

/* Mid-size screens: two rows, still with readable text. */
@media(max-width:1280px){
  .command-deck-grid{
    grid-template-columns:1.15fr 1fr!important;
  }
  .site-pulse-panel{
    grid-column:1/-1!important;
  }
  .site-pulse-grid{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
  }
}

/* Tablet */
@media(max-width:900px){
  .command-deck-head p{
    max-width:none!important;
  }
  .command-deck-grid{
    grid-template-columns:1fr!important;
  }
  .site-pulse-panel{
    grid-column:auto!important;
  }
  .site-pulse-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}

/* Print remains compact enough for A4. */
@media print{
  .command-deck-head{
    min-height:auto!important;
    padding:2mm!important;
  }
  .command-deck-head h3{font-size:10pt!important}
  .command-live{font-size:6pt!important;padding:1mm 1.5mm!important}
  .command-deck-head p{font-size:6.5pt!important}
  .command-deck-grid{
    grid-template-columns:1.18fr 1fr .9fr!important;
    gap:1.5mm!important;
    padding:1.5mm!important;
  }
  .command-panel{
    min-height:auto!important;
  }
  .command-panel-head{
    min-height:auto!important;
    padding:1.5mm!important;
  }
  .command-panel-head h4{font-size:7.5pt!important}
  .critical-actions-list>button{
    min-height:8mm!important;
    padding:1.2mm 1.5mm!important;
  }
  .delivery-radar>button{
    min-height:5.5mm!important;
  }
  .site-pulse-grid>div{
    min-height:15mm!important;
  }
}

/* ===============================================================
   V5.4 — professional interactive Moving Walk / Escalator sidebar
   =============================================================== */

.app-shell{
  grid-template-columns:224px minmax(0,1fr)!important;
}
.mobility-sidebar{
  position:relative!important;
  isolation:isolate;
  min-height:100vh;
  padding:0!important;
  overflow:hidden!important;
  background:#06131f!important;
}
.mobility-sidebar-bg{
  position:absolute;
  inset:0;
  z-index:-4;
  background:
    radial-gradient(circle at 72% 18%,rgba(45,157,210,.18),transparent 28%),
    radial-gradient(circle at 18% 77%,rgba(33,105,150,.14),transparent 26%),
    linear-gradient(180deg,#081b2b 0%,#071522 46%,#040d15 100%);
}
.mobility-sidebar-grid{
  position:absolute;
  inset:0;
  z-index:-3;
  opacity:.28;
  background-image:
    linear-gradient(rgba(126,196,230,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(126,196,230,.045) 1px,transparent 1px);
  background-size:24px 24px;
  mask-image:linear-gradient(180deg,#000 0%,#000 68%,transparent 100%);
}
.mobility-shell{
  position:relative;
  z-index:2;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  padding:0 11px 12px;
}
.mobility-brand{
  flex:0 0 auto;
  height:auto!important;
  min-height:100px!important;
  margin:0 -11px 4px!important;
  padding:14px 16px 10px!important;
  display:block!important;
  background:
    linear-gradient(180deg,rgba(4,17,29,.96),rgba(5,19,32,.72))!important;
  border-bottom:1px solid rgba(121,188,228,.12)!important;
  box-shadow:0 10px 30px rgba(0,0,0,.10);
}
.mobility-brand .cegitech-native-logo{
  display:block;
  width:166px;
  max-width:100%;
}
.mobility-brand .sidebar-product-label{
  margin-top:8px!important;
  padding-top:8px!important;
}
.mobility-nav{
  flex:1 1 auto;
  min-height:180px;
  overflow:auto;
  padding:3px 0 6px!important;
  gap:4px!important;
  scrollbar-width:none;
}
.mobility-nav::-webkit-scrollbar{display:none}
.mobility-nav .nav-item{
  position:relative;
  min-height:38px!important;
  padding:7px 9px!important;
  gap:8px!important;
  border:1px solid transparent!important;
  border-radius:8px!important;
  background:rgba(5,20,33,.50)!important;
  color:#b7cbd8!important;
  backdrop-filter:blur(7px) saturate(112%);
  -webkit-backdrop-filter:blur(7px) saturate(112%);
  box-shadow:none!important;
  transform:none!important;
  transition:background .16s ease,border-color .16s ease,color .16s ease!important;
}
.mobility-nav .nav-item:before{
  content:"";
  position:absolute;
  left:-1px;
  top:7px;
  bottom:7px;
  width:2px;
  border-radius:4px;
  background:transparent;
}
.mobility-nav .nav-item:hover{
  background:rgba(11,37,57,.78)!important;
  border-color:rgba(105,191,232,.15)!important;
  color:#f2fbff!important;
}
.mobility-nav .nav-item.active{
  background:
    linear-gradient(90deg,rgba(25,130,181,.30),rgba(7,31,49,.88) 65%)!important;
  border-color:rgba(71,192,237,.26)!important;
  color:#fff!important;
}
.mobility-nav .nav-item.active:before{
  background:#4bdcff;
  box-shadow:0 0 11px rgba(75,220,255,.66);
}
.mobility-nav .nav-icon{
  width:20px!important;
  font-size:12px!important;
  color:#6ca8c9;
}
.mobility-nav .nav-item.active .nav-icon{color:#67e0ff}
.mobility-nav .nav-label{
  flex:1;
  min-width:0;
  font-size:8.9px;
  font-weight:780;
}

/* Interactive mobility visual */
.mobility-visual-card{
  --mobility-rx:0deg;
  --mobility-ry:0deg;
  --mobility-glow-x:50%;
  --mobility-glow-y:42%;
  flex:0 0 auto;
  position:relative;
  margin:6px 0 8px;
  border:1px solid rgba(116,190,225,.20);
  border-radius:12px;
  background:
    radial-gradient(circle at var(--mobility-glow-x) var(--mobility-glow-y),rgba(83,199,243,.13),transparent 38%),
    linear-gradient(180deg,rgba(10,35,53,.96),rgba(4,18,29,.98));
  box-shadow:
    0 12px 30px rgba(0,0,0,.22),
    inset 0 1px 0 rgba(206,242,255,.05);
  overflow:hidden;
  transform:
    perspective(700px)
    rotateX(var(--mobility-rx))
    rotateY(var(--mobility-ry));
  transform-style:preserve-3d;
  transition:transform .16s ease,border-color .18s ease,box-shadow .18s ease;
}
.mobility-visual-card:hover{
  border-color:rgba(103,209,250,.34);
  box-shadow:
    0 16px 36px rgba(0,0,0,.28),
    0 0 0 1px rgba(87,195,240,.04),
    inset 0 1px 0 rgba(216,246,255,.08);
}
.mobility-visual-card:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(120deg,transparent 0 36%,rgba(184,235,255,.045) 47%,transparent 58%),
    linear-gradient(180deg,rgba(255,255,255,.02),transparent 22%);
}
.mobility-visual-head{
  position:relative;
  z-index:4;
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:7px 8px 5px 9px;
  border-bottom:1px solid rgba(122,191,221,.10);
}
.mobility-visual-head>div:first-child{
  display:flex;
  align-items:center;
  gap:6px;
}
.mobility-visual-head strong{
  font-size:6.6px;
  line-height:1;
  letter-spacing:.10em;
  color:#b8d9e8;
  font-weight:900;
}
.mobility-live-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:#38cf7d;
  box-shadow:0 0 9px rgba(56,207,125,.72);
}
.mobility-mode-switch{
  display:inline-flex;
  gap:2px;
  padding:2px;
  border:1px solid rgba(126,188,218,.13);
  border-radius:6px;
  background:rgba(3,13,22,.48);
}
.mobility-mode-switch button{
  min-width:27px;
  height:21px;
  border:0;
  border-radius:4px;
  background:transparent;
  color:#698ca1;
  font-size:6.2px;
  font-weight:900;
  letter-spacing:.04em;
}
.mobility-mode-switch button:hover{color:#d9f4ff}
.mobility-mode-switch button.active{
  background:#123b55;
  color:#72e1ff;
  box-shadow:inset 0 0 0 1px rgba(94,203,245,.22);
}
.mobility-viewport{
  position:relative;
  height:153px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:
    linear-gradient(180deg,rgba(10,31,46,.38),rgba(3,14,23,.18)),
    radial-gradient(ellipse at center bottom,rgba(48,135,174,.11),transparent 60%);
}
.mobility-viewport:before{
  content:"";
  position:absolute;
  left:14px;
  right:14px;
  bottom:14px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(105,194,229,.22),transparent);
}
.mobility-scanline{
  position:absolute;
  z-index:3;
  left:0;
  right:0;
  top:-12px;
  height:14px;
  opacity:.22;
  background:linear-gradient(180deg,transparent,rgba(103,224,255,.18),transparent);
  animation:mobilityScan 5.4s linear infinite;
}
@keyframes mobilityScan{
  from{transform:translateY(0)}
  to{transform:translateY(170px)}
}
.mobility-machine-svg{
  position:relative;
  z-index:2;
  width:100%;
  height:100%;
  filter:drop-shadow(0 7px 8px rgba(0,0,0,.30));
  transform:translateZ(12px);
}
.mobility-machine{
  opacity:0;
  pointer-events:none;
  transition:opacity .25s ease;
}
.mobility-visual-card[data-mobility-mode="mw"] .mobility-mw{opacity:1}
.mobility-visual-card[data-mobility-mode="es"] .mobility-es{opacity:1}

/* Real movement: tread bed and both handrails */
.mw-moving-treads{
  animation:mwTreadTravel .70s linear infinite;
  will-change:transform;
}
@keyframes mwTreadTravel{
  from{transform:translateY(0)}
  to{transform:translateY(-7px)}
}
.es-moving-treads{
  animation:esTreadTravel .78s linear infinite;
  will-change:transform;
}
@keyframes esTreadTravel{
  from{transform:translate(0,0)}
  to{transform:translate(8px,-7px)}
}
.mw-rail-flow,
.es-rail-flow{
  stroke-dasharray:15 10;
  animation:mobilityRailTravel .95s linear infinite;
}
.rail-offset{animation-delay:-.47s}
@keyframes mobilityRailTravel{
  to{stroke-dashoffset:50}
}
.mobility-terminal-led{
  animation:mobilityTerminal 1.55s ease-in-out infinite;
  transform-origin:center;
  transform-box:fill-box;
}
@keyframes mobilityTerminal{
  0%,100%{opacity:.35;transform:scale(.78)}
  50%{opacity:1;transform:scale(1.28)}
}
.mobility-visual-card:hover .mw-moving-treads{animation-duration:.54s}
.mobility-visual-card:hover .es-moving-treads{animation-duration:.60s}
.mobility-visual-card:hover .mw-rail-flow,
.mobility-visual-card:hover .es-rail-flow{animation-duration:.73s}

.mobility-visual-footer{
  min-height:39px;
  position:relative;
  z-index:4;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:6px 9px 7px;
  border-top:1px solid rgba(118,188,219,.10);
  background:rgba(2,12,20,.46);
}
.mobility-visual-footer>div:first-child span{
  display:block;
  font-size:7.6px;
  font-weight:850;
  color:#ecf9ff;
}
.mobility-visual-footer>div:first-child strong{
  display:block;
  margin-top:2px;
  font-size:5.9px;
  font-weight:700;
  color:#79a8bf;
}
.mobility-health{
  display:flex;
  align-items:center;
  gap:4px;
  padding:4px 5px;
  border:1px solid rgba(73,197,128,.15);
  border-radius:999px;
  background:rgba(46,157,94,.07);
}
.mobility-health i{
  width:5px;height:5px;border-radius:50%;
  background:#39ca77;
}
.mobility-health span{
  font-size:4.8px;
  letter-spacing:.07em;
  color:#84cfa4;
  font-weight:900;
}

.mobility-signal-card{
  flex:0 0 auto;
  margin:0!important;
  border-color:rgba(119,190,224,.16)!important;
  background:rgba(3,15,25,.80)!important;
}

/* old V5.2 photo sidebar is disabled entirely */
.sidebar-photo-backdrop,
.sidebar-photo-shade,
.sidebar-photo-caption{
  display:none!important;
}

@media(max-width:1280px){
  .app-shell{grid-template-columns:210px minmax(0,1fr)!important}
  .mobility-viewport{height:141px}
}
@media(max-height:850px){
  .mobility-visual-card{margin-top:4px}
  .mobility-viewport{height:128px}
  .mobility-signal-card{display:none}
}
@media(max-height:720px){
  .mobility-visual-card{display:none}
}

@media print{
  .mobility-sidebar{display:none!important}
}
/* ===============================================================
   V5.5 — Asset mobility models + A-Pier Digital Twin sidebar
   =============================================================== */

/* ---------------------------------------------------------------
   ASSET VISUAL: the professional MW / ES simulation now belongs to
   the selected asset instead of the global sidebar.
   --------------------------------------------------------------- */
.asset-machine-visual{
  position:relative;
  min-height:154px!important;
  padding:0!important;
  border:1px solid #cadbe5!important;
  border-radius:11px!important;
  background:
    radial-gradient(circle at 58% 35%,rgba(77,190,234,.13),transparent 37%),
    linear-gradient(180deg,#0d2a3e 0%,#071c2a 100%)!important;
  color:#eaf8ff!important;
  overflow:hidden!important;
  box-shadow:inset 0 1px 0 rgba(222,247,255,.05),0 5px 14px rgba(14,50,73,.08);
}
.asset-machine-visual:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(120deg,transparent 0 38%,rgba(188,237,255,.035) 48%,transparent 60%),
    linear-gradient(180deg,rgba(255,255,255,.018),transparent 28%);
}
.asset-machine-topline{
  position:absolute;
  z-index:3;
  top:7px;
  left:8px;
  right:8px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
}
.asset-machine-topline span{
  color:#7fa8bc;
  font-size:5.7px;
  font-weight:900;
  letter-spacing:.10em;
}
.asset-machine-status-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  box-shadow:0 0 8px currentColor;
}
.status-dot-completed{background:#2eb86a;color:#2eb86a}
.status-dot-inprogress{background:#efbd2f;color:#efbd2f}
.status-dot-issue{background:#e9861a;color:#e9861a}
.status-dot-blocked{background:#df4454;color:#df4454}
.asset-machine-visual>svg{
  width:100%!important;
  height:118px!important;
  max-height:none!important;
  margin-top:8px;
  filter:drop-shadow(0 6px 7px rgba(0,0,0,.24));
}
.asset-machine-footer{
  position:absolute;
  z-index:3;
  left:0;
  right:0;
  bottom:0;
  min-height:37px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  padding:6px 8px 7px;
  border-top:1px solid rgba(125,195,225,.11);
  background:rgba(2,13,21,.55);
  text-align:left;
}
.asset-machine-footer>div strong{
  display:block;
  color:#eefaff;
  font-size:8px;
  line-height:1;
}
.asset-machine-footer>div span{
  display:block;
  margin-top:2px;
  color:#7ca4b8;
  font-size:5.8px;
}
.asset-machine-footer>small{
  max-width:58%;
  color:#88a9b9;
  font-size:5.5px;
  line-height:1.2;
  text-align:right;
}
.asset-mw-moving-treads{
  animation:assetMwTravel .70s linear infinite;
  will-change:transform;
}
@keyframes assetMwTravel{from{transform:translateY(0)}to{transform:translateY(-7px)}}
.asset-es-moving-treads{
  animation:assetEsTravel .78s linear infinite;
  will-change:transform;
}
@keyframes assetEsTravel{from{transform:translate(0,0)}to{transform:translate(8px,-7px)}}
.asset-rail-flow{
  stroke-dasharray:15 10;
  animation:assetRailTravel .95s linear infinite;
}
.asset-rail-offset{animation-delay:-.47s}
@keyframes assetRailTravel{to{stroke-dashoffset:50}}
.asset-terminal-led{
  animation:assetTerminalPulse 1.55s ease-in-out infinite;
  transform-origin:center;
  transform-box:fill-box;
}
@keyframes assetTerminalPulse{0%,100%{opacity:.35;transform:scale(.78)}50%{opacity:1;transform:scale(1.27)}}

/* Selected asset floating card gets enough space for the real model. */
.map-asset-overlay{
  width:min(590px,calc(100% - 24px))!important;
}
.map-asset-overlay.is-expanded{
  width:min(780px,calc(100% - 24px))!important;
}
.map-asset-overlay .asset-hero{
  grid-template-columns:158px minmax(0,1fr)!important;
  gap:12px!important;
}
.map-asset-overlay .asset-machine-visual{
  min-height:156px!important;
}
.map-asset-overlay .asset-machine-visual>svg{
  height:122px!important;
}

/* The same selected-asset model also appears in the expanded Assets workspace. */
.asset-management-head-visual{
  display:grid!important;
  grid-template-columns:158px minmax(210px,1fr) auto!important;
  align-items:center!important;
  gap:14px!important;
}
.asset-management-head-visual .asset-machine-compact{
  width:158px;
  min-height:112px!important;
}
.asset-management-head-visual .asset-machine-compact>svg{
  height:83px!important;
  margin-top:4px;
}
.asset-management-head-visual .asset-machine-compact .asset-machine-topline{
  top:5px;
}
.asset-management-head-visual .asset-machine-compact .asset-machine-footer{
  min-height:28px;
  padding:4px 6px;
}
.asset-management-head-visual .asset-machine-compact .asset-machine-footer>div strong{font-size:7px}
.asset-management-head-visual .asset-machine-compact .asset-machine-footer>div span,
.asset-management-head-visual .asset-machine-compact .asset-machine-footer>small{font-size:5px}
.asset-management-head-copy{min-width:0}

/* ---------------------------------------------------------------
   SIDEBAR VISUAL: A-Pier Digital Twin — infrastructure, not a machine
   illustration. This is the single visual identity of the shell.
   --------------------------------------------------------------- */
.pier-twin-card{
  --twin-rx:0deg;
  --twin-ry:0deg;
  --twin-x:50%;
  --twin-y:42%;
  flex:0 0 auto;
  position:relative;
  margin:6px 0 8px;
  overflow:hidden;
  border:1px solid rgba(111,190,225,.21);
  border-radius:12px;
  background:
    radial-gradient(circle at var(--twin-x) var(--twin-y),rgba(70,199,245,.13),transparent 34%),
    linear-gradient(180deg,rgba(8,31,47,.97),rgba(3,15,25,.99));
  box-shadow:0 13px 31px rgba(0,0,0,.24),inset 0 1px 0 rgba(219,246,255,.045);
  transform:perspective(760px) rotateX(var(--twin-rx)) rotateY(var(--twin-ry));
  transform-style:preserve-3d;
  transition:transform .16s ease,border-color .18s ease,box-shadow .18s ease;
}
.pier-twin-card:hover{
  border-color:rgba(100,213,250,.34);
  box-shadow:0 17px 38px rgba(0,0,0,.30),0 0 0 1px rgba(91,204,243,.035),inset 0 1px 0 rgba(220,247,255,.07);
}
.pier-twin-card:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(121deg,transparent 0 38%,rgba(194,239,255,.04) 49%,transparent 61%);
}
.pier-twin-head{
  position:relative;
  z-index:4;
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:7px;
  padding:7px 8px 6px 9px;
  border-bottom:1px solid rgba(118,188,219,.10);
}
.pier-twin-head>div{
  display:flex;
  align-items:center;
  gap:6px;
}
.pier-twin-head strong{
  color:#b9dbe9;
  font-size:6.4px;
  font-weight:900;
  letter-spacing:.10em;
}
.twin-live-dot{
  width:6px;height:6px;border-radius:50%;
  background:#40d787;
  box-shadow:0 0 9px rgba(64,215,135,.68);
}
.twin-state{
  padding:3px 5px;
  border:1px solid rgba(99,191,227,.14);
  border-radius:999px;
  background:rgba(20,79,104,.16);
  color:#6ed9fa;
  font-size:4.9px;
  font-weight:900;
  letter-spacing:.06em;
}
.pier-twin-viewport{
  position:relative;
  height:176px;
  overflow:hidden;
  background:
    radial-gradient(ellipse at 50% 82%,rgba(59,141,177,.10),transparent 55%),
    linear-gradient(180deg,rgba(7,27,41,.30),rgba(3,14,23,.08));
}
.pier-twin-svg{
  position:relative;
  z-index:2;
  width:100%;
  height:100%;
  filter:drop-shadow(0 8px 8px rgba(0,0,0,.25));
  transform:translateZ(13px);
}
.pier-twin-scan{
  position:absolute;
  z-index:3;
  left:7px;
  right:7px;
  top:-15px;
  height:18px;
  opacity:.26;
  pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(84,220,255,.18),transparent);
  animation:twinScan 5.7s linear infinite;
}
@keyframes twinScan{from{transform:translateY(0)}to{transform:translateY(203px)}}
.twin-live-routes{
  stroke-dasharray:8 7;
  animation:twinRouteFlow 2.25s linear infinite;
  filter:drop-shadow(0 0 2px rgba(79,210,251,.34));
}
@keyframes twinRouteFlow{to{stroke-dashoffset:-30}}
.twin-node{
  stroke:#d9f8ff;
  stroke-width:.55;
  filter:drop-shadow(0 0 2px rgba(129,226,255,.24));
}
.node-green{fill:#2fc36e}
.node-yellow{fill:#efbd2f}
.node-orange{fill:#eb8a20}
.node-red{fill:#df4555}
.twin-node-set .twin-node:nth-child(3n+1){animation:twinNodePulse 2.7s ease-in-out infinite}
.twin-node-set .twin-node:nth-child(3n+2){animation:twinNodePulse 3.2s ease-in-out infinite .5s}
.twin-node-set .twin-node:nth-child(3n){animation:twinNodePulse 2.9s ease-in-out infinite 1s}
@keyframes twinNodePulse{0%,100%{opacity:.62}50%{opacity:1}}
.twin-focus-node{
  transform-origin:center;
  transform-box:fill-box;
  animation:twinFocus 2.1s ease-in-out infinite;
}
@keyframes twinFocus{0%,100%{opacity:.58;transform:scale(.88)}50%{opacity:1;transform:scale(1.12)}}
.twin-structure{
  filter:drop-shadow(0 5px 5px rgba(0,0,0,.20));
}
.pier-twin-footer{
  position:relative;
  z-index:4;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  border-top:1px solid rgba(116,186,218,.10);
  background:rgba(2,12,20,.54);
}
.pier-twin-footer>div{
  min-width:0;
  padding:7px 6px 8px;
  text-align:center;
  border-right:1px solid rgba(115,181,211,.09);
}
.pier-twin-footer>div:last-child{border-right:0}
.pier-twin-footer span{
  display:block;
  color:#718fa1;
  font-size:5.3px;
}
.pier-twin-footer strong{
  display:block;
  margin-top:2px;
  color:#e8f8ff;
  font-size:10px;
}

/* Hide the V5.4 mobility panel if an older shell is ever merged. */
.mobility-visual-card{display:none!important}

@media(max-width:1280px){
  .pier-twin-viewport{height:160px}
  .asset-management-head-visual{grid-template-columns:145px minmax(180px,1fr) auto!important}
  .asset-management-head-visual .asset-machine-compact{width:145px}
}
@media(max-height:850px){
  .pier-twin-viewport{height:145px}
  .pier-twin-footer>div{padding:5px 4px 6px}
}
@media(max-height:730px){
  .pier-twin-card{display:none}
}
@media(max-width:900px){
  .asset-management-head-visual{grid-template-columns:1fr!important}
  .asset-management-head-visual .asset-machine-compact{width:100%;max-width:220px}
}
@media(max-width:760px){
  .map-asset-overlay .asset-hero{grid-template-columns:1fr!important}
  .map-asset-overlay .asset-machine-visual{display:block!important;min-height:146px!important}
}

@media print{
  .asset-machine-visual{display:none!important}
  .pier-twin-card{display:none!important}
}
/* ===============================================================
   V5.6 — Local tablet operation + full backup UX
   =============================================================== */

/* Tablet-local badge */
.tablet-local-badge{
  background:#edf8f2!important;
  border-color:#cce8d7!important;
  color:#2f6a4b!important;
}
.tablet-local-badge .pulse-dot{
  background:#24b467!important;
  box-shadow:0 0 0 4px rgba(36,180,103,.08);
}

/* Full Tablet Backup */
.tablet-backup-panel{
  margin:0 0 12px;
  overflow:hidden;
  border:1px solid #cddde7;
  border-radius:13px;
  background:
    linear-gradient(135deg,#f8fcfe 0%,#ffffff 45%,#f4f9fb 100%);
  box-shadow:0 7px 24px rgba(22,58,82,.055);
}
.tablet-backup-hero{
  min-height:82px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:14px 16px;
  border-bottom:1px solid #dce6ec;
  background:
    radial-gradient(circle at 10% 0%,rgba(48,163,214,.09),transparent 34%),
    linear-gradient(180deg,#fbfdfe,#f6fafc);
}
.tablet-backup-title{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
}
.tablet-device-icon{
  width:44px;
  height:54px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  border:2px solid #246f98;
  border-radius:7px;
  background:#0e2f45;
  color:#77dbff;
  font-size:28px;
  line-height:1;
  box-shadow:inset 0 0 0 3px #d7eff8,0 4px 12px rgba(14,58,84,.10);
}
.tablet-backup-title>div>span{
  display:block;
  font-size:7px;
  font-weight:900;
  letter-spacing:.105em;
  color:#59809a;
}
.tablet-backup-title h3{
  margin:2px 0 0;
  font-size:19px;
  letter-spacing:-.035em;
  color:#153a54;
}
.tablet-backup-title p{
  margin:4px 0 0;
  font-size:9px;
  color:#677e8e;
}
.tablet-backup-title p strong{color:#2c617d}
.tablet-backup-health{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:0 10px;
  border-radius:999px;
  font-size:7px;
  font-weight:950;
  letter-spacing:.07em;
}
.backup-ok{
  background:#e5f7eb;
  color:#267048;
  border:1px solid #c0e5cc;
}
.backup-warning{
  background:#fff1df;
  color:#8b5307;
  border:1px solid #efcf9e;
}

.tablet-backup-status-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:0;
  border-bottom:1px solid #e0e8ed;
}
.tablet-backup-status-grid>div{
  min-width:0;
  min-height:82px;
  padding:12px 14px;
  border-right:1px solid #e4eaee;
}
.tablet-backup-status-grid>div:last-child{border-right:0}
.tablet-backup-status-grid span{
  display:block;
  font-size:7px;
  font-weight:800;
  color:#718594;
}
.tablet-backup-status-grid strong{
  display:block;
  margin-top:4px;
  font-size:13px;
  color:#1d425b;
  overflow:hidden;
  text-overflow:ellipsis;
}
.tablet-backup-status-grid small{
  display:block;
  margin-top:4px;
  font-size:6.5px;
  line-height:1.3;
  color:#87949e;
}
.tablet-backup-status-grid .storage-warning{
  background:#fff8ee;
}
.tablet-backup-status-grid .storage-warning strong{color:#a05c0a}

.tablet-backup-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  padding:12px 14px 7px;
}
.tablet-backup-actions .btn{
  min-height:40px;
}
.tablet-backup-primary{
  min-width:158px;
  background:linear-gradient(180deg,#1a82b6,#156994)!important;
  box-shadow:0 5px 12px rgba(24,113,158,.13);
}
.tablet-backup-restore{
  min-width:150px;
  border-color:#91b7ca!important;
  color:#275c78!important;
  background:#f8fcfe!important;
}
.tablet-backup-actions .btn span{
  opacity:.7;
  font-size:.85em;
}
.tablet-backup-note{
  margin:0 14px 12px;
  padding:9px 11px;
  border-left:3px solid #2a8dbd;
  border-radius:0 6px 6px 0;
  background:#eef7fb;
  color:#5f7889;
  font-size:7.5px;
  line-height:1.5;
}
.tablet-backup-note strong{
  color:#255f7e;
}
.tablet-backup-progress{
  display:flex;
  align-items:center;
  gap:9px;
  margin:0 14px 12px;
  padding:9px 11px;
  border:1px solid #cfe3ed;
  border-radius:8px;
  background:#f4fbfe;
  color:#2d6684;
  font-size:8px;
  font-weight:800;
}
.tablet-backup-progress[hidden]{display:none!important}
.tablet-backup-progress i{
  width:15px;height:15px;
  flex:0 0 auto;
  border:2px solid #b5d6e6;
  border-top-color:#2788b7;
  border-radius:50%;
  animation:tabletBackupSpin .8s linear infinite;
}
@keyframes tabletBackupSpin{to{transform:rotate(360deg)}}

.project-json-box{
  border-style:dashed!important;
  background:#fafbfc!important;
}

/* ---------------------------------------------------------------
   Tablet-first touch targets
   --------------------------------------------------------------- */
@media(pointer:coarse){
  button,
  .btn,
  .muted-btn,
  .tab-btn,
  .top-tab,
  .nav-item,
  select,
  .segmented button,
  .icon-btn,
  .mini-owner-btn{
    touch-action:manipulation;
  }
  .btn,
  .muted-btn,
  .tab-btn,
  .segmented button{
    min-height:44px!important;
    padding-top:9px!important;
    padding-bottom:9px!important;
  }
  .icon-btn,
  .mini-owner-btn{
    min-width:44px!important;
    min-height:44px!important;
  }
  input,
  select,
  textarea{
    font-size:16px!important;
  }
  .nav-item{
    min-height:44px!important;
  }
  .data-table td,
  .data-table th{
    padding-top:10px!important;
    padding-bottom:10px!important;
  }
  .finding-asset-card,
  .inspection-asset-card,
  .extra-work-group-card,
  .test-work-group-card{
    min-height:72px;
  }
  .photo-card-actions button{
    min-height:42px!important;
  }
  /* Cursor-only effects are decorative; tablet does not depend on them. */
  .pier-twin-card,
  .asset-machine-visual{
    transform:none!important;
  }
}

/* ---------------------------------------------------------------
   Tablet landscape composition
   --------------------------------------------------------------- */
@media (pointer:coarse) and (orientation:landscape) and (max-width:1400px){
  .topbar{
    height:88px!important;
    padding:12px 18px!important;
  }
  .title-wrap h1{font-size:24px!important}
  .title-wrap p{font-size:11px!important}
  .main-content{
    padding:12px 12px 22px!important;
  }
  .dashboard-grid{
    grid-template-columns:minmax(0,2fr) minmax(290px,.82fr)!important;
    gap:11px!important;
  }
  .map-toolbar{
    min-height:55px;
  }
  .map-panel .project-map{
    min-height:430px;
  }
  .tablet-backup-status-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .tablet-backup-status-grid>div:nth-child(2){
    border-right:0;
  }
  .tablet-backup-status-grid>div:nth-child(-n+2){
    border-bottom:1px solid #e4eaee;
  }
}

/* Smaller tablet / portrait fallback */
@media(max-width:820px){
  .tablet-backup-hero{
    align-items:flex-start;
    flex-direction:column;
  }
  .tablet-backup-status-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .tablet-backup-status-grid>div{
    border-bottom:1px solid #e4eaee;
  }
  .tablet-backup-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .tablet-backup-actions .btn{
    width:100%;
  }
}

@media print{
  .tablet-backup-panel{
    display:none!important;
  }
}

/* ===============================================================
   V5.7 — Home backup / local save control
   =============================================================== */
.home-backup-card{
  overflow:hidden;
  border-color:#cbdfe9!important;
  background:
    radial-gradient(circle at 5% 0%,rgba(42,151,202,.11),transparent 31%),
    linear-gradient(180deg,#fbfdfe,#f5f9fb)!important;
  box-shadow:0 5px 18px rgba(19,59,84,.055)!important;
}
.home-backup-top{
  display:grid;
  grid-template-columns:38px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  padding:11px 12px 9px;
}
.home-backup-icon{
  width:38px;height:38px;
  display:grid;
  place-items:center;
  border-radius:9px;
  background:#123c58;
  color:#68dcff;
  font-size:17px;
  box-shadow:inset 0 0 0 1px rgba(124,218,255,.13);
}
.home-backup-copy{
  min-width:0;
}
.home-backup-copy>span{
  display:block;
  font-size:6px;
  font-weight:950;
  letter-spacing:.09em;
  color:#5f879e;
}
.home-backup-copy h3{
  margin:2px 0 0;
  font-size:12px;
  color:#173c56;
}
.home-backup-copy p{
  margin:2px 0 0;
  font-size:6.8px;
  color:#7e8f9c;
}
.home-backup-health{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:0 7px;
  border-radius:999px;
  font-size:5.8px;
  font-weight:950;
  letter-spacing:.05em;
  white-space:nowrap;
}
.home-backup-meta{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  border-top:1px solid #e0e8ed;
  border-bottom:1px solid #e0e8ed;
}
.home-backup-meta>div{
  min-width:0;
  padding:8px 10px;
}
.home-backup-meta>div:first-child{
  border-right:1px solid #e0e8ed;
}
.home-backup-meta span{
  display:block;
  font-size:6.2px;
  color:#7e909d;
}
.home-backup-meta strong{
  display:block;
  margin-top:3px;
  font-size:7.7px;
  color:#2a4f68;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.home-backup-actions{
  display:grid;
  grid-template-columns:1fr auto;
  gap:7px;
  padding:9px 10px 10px;
}
.home-backup-actions .btn{
  min-height:36px;
}
.home-backup-primary{
  background:linear-gradient(180deg,#1a83b7,#176b96)!important;
  box-shadow:0 4px 10px rgba(22,112,156,.12);
}
.home-backup-progress{
  display:flex;
  align-items:center;
  gap:7px;
  margin:0 10px 9px;
  padding:7px 8px;
  border:1px solid #cfe2ec;
  border-radius:7px;
  background:#f0f9fc;
  color:#326781;
  font-size:6.8px;
  font-weight:850;
}
.home-backup-progress[hidden]{display:none!important}
.home-backup-progress i{
  width:13px;height:13px;
  flex:0 0 auto;
  border:2px solid #b6d6e5;
  border-top-color:#2787b5;
  border-radius:50%;
  animation:tabletBackupSpin .8s linear infinite;
}

@media(pointer:coarse){
  .home-backup-actions .btn{
    min-height:44px!important;
  }
  .home-backup-copy h3{
    font-size:14px;
  }
  .home-backup-copy p{
    font-size:8px;
  }
  .home-backup-meta span{
    font-size:7.5px;
  }
  .home-backup-meta strong{
    font-size:9px;
  }
}

@media(max-width:1050px){
  .home-backup-top{
    grid-template-columns:38px minmax(0,1fr);
  }
  .home-backup-health{
    grid-column:1/-1;
    justify-self:start;
  }
  .home-backup-actions{
    grid-template-columns:1fr;
  }
}
/* ===============================================================
   V5.8 — first field-test workflow upgrades
   =============================================================== */

/* Map: two operational SAIS stream dots beside every asset */
.map-sais-indicators{pointer-events:none}
.map-sais-indicator circle{
  filter:drop-shadow(0 1px 1px rgba(12,34,48,.22));
}
.legend-extended{
  flex-wrap:wrap;
  row-gap:4px;
}
.legend-separator{
  width:1px!important;
  height:16px!important;
  background:#d6e0e7!important;
  border-radius:0!important;
  margin:0 2px;
}
.legend .sais-legend-dot{
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.legend .sais-legend-dot i{
  width:15px!important;
  height:15px!important;
  display:grid!important;
  place-items:center;
  border:1px solid #fff;
  box-shadow:0 0 0 1px #d6e0e7;
  color:#fff;
  font-size:7px;
  font-style:normal;
  font-weight:950;
}
.legend .sais-legend-dot .dot-green{background:#17a856!important}
.legend .sais-legend-dot .dot-red{background:#d93b4b!important}

/* Reusable SED / Construction stream state */
.sais-stream-pill{
  display:inline-grid;
  grid-template-columns:8px auto auto;
  align-items:center;
  gap:4px;
  min-width:0;
  padding:4px 6px;
  border:1px solid #d9e3e9;
  border-radius:7px;
  background:#f7f9fa;
  vertical-align:middle;
}
.sais-stream-pill>i{
  width:7px;height:7px;border-radius:50%;
  background:#93a2ae;
}
.sais-stream-pill>b{
  font-size:7px;
  color:#526d7e;
  white-space:nowrap;
}
.sais-stream-pill>strong{
  font-size:7px;
  white-space:nowrap;
  color:#556b78;
}
.sais-stream-pill>small{
  grid-column:2/4;
  display:block;
  margin-top:-1px;
  font-size:5.8px;
  color:#8b99a3;
  white-space:nowrap;
}
.sais-stream-pill.stream-finished{
  border-color:#bce4ca;
  background:#eaf8ef;
}
.sais-stream-pill.stream-finished>i{background:#17a856}
.sais-stream-pill.stream-finished>strong{color:#247248}
.sais-stream-pill.stream-open{
  border-color:#efc0c5;
  background:#fff0f1;
}
.sais-stream-pill.stream-open>i{background:#d93b4b}
.sais-stream-pill.stream-open>strong{color:#a52b39}
.sais-stream-pill.stream-none{
  opacity:.72;
}

.stream-overview-strip span{
  min-width:0;
}
.stream-overview-strip .sais-stream-pill{
  width:100%;
}
.metric-stream-finished{
  background:#eaf8ef!important;
  border-color:#bce4ca!important;
}
.metric-stream-finished strong{
  color:#247248!important;
  font-size:10px!important;
}

/* Home: Extra Works statistics directly under Key Metrics */
.home-extra-metrics{
  margin:10px 12px 0;
  overflow:hidden;
  border:1px solid #dce5ea;
  border-radius:9px;
  background:#fbfcfd;
}
.home-extra-metrics-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px 9px;
  border-bottom:1px solid #e4eaee;
}
.home-extra-metrics-head span{
  display:block;
  font-size:5.8px;
  font-weight:950;
  letter-spacing:.10em;
  color:#648497;
}
.home-extra-metrics-head h4{
  margin:1px 0 0;
  font-size:9px;
  color:#24485f;
}
.home-extra-metrics-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.home-extra-metrics-grid>button{
  min-width:0;
  min-height:68px;
  padding:9px 8px;
  border:0;
  border-right:1px solid #e6ebef;
  background:#fff;
  text-align:left;
}
.home-extra-metrics-grid>button:last-child{border-right:0}
.home-extra-metrics-grid>button:hover{background:#f4fafc}
.home-extra-metrics-grid span{
  display:block;
  font-size:6px;
  color:#7a8d9a;
}
.home-extra-metrics-grid strong{
  display:block;
  margin-top:3px;
  font-size:16px;
  color:#173d56;
}
.home-extra-metrics-grid small{
  display:block;
  margin-top:3px;
  font-size:5.8px;
  line-height:1.25;
  color:#8c99a2;
}
.home-extra-metrics-grid .extra-overdue-metric{
  background:#fff5ef;
}
.home-extra-metrics-grid .extra-overdue-metric strong{color:#b55720}

/* Assets: readiness/software are now editable directly in the table */
.asset-readiness-select,
.asset-software-select{
  min-width:104px;
  font-size:8px!important;
  font-weight:800;
}
.asset-readiness-select.readiness-ready,
.asset-software-select.software-ready{
  border-color:#addfc0!important;
  background:#edf9f1!important;
  color:#277447!important;
}
.asset-readiness-select.readiness-not-ready,
.asset-software-select.software-not-ready{
  border-color:#dfc6c8!important;
  background:#fff4f4!important;
  color:#9d3b43!important;
}

/* Findings: make SED / Construction state a first-class status */
.stream-classification{
  display:flex!important;
  flex-wrap:wrap;
  gap:5px;
  align-items:center;
}
.finding-closed-total{
  display:inline-flex;
  gap:4px;
  align-items:center;
  min-height:29px;
  padding:4px 7px;
  border:1px solid #e0e6ea;
  border-radius:7px;
  background:#f8fafb;
  color:#70818d;
  font-size:6.5px;
}
.finding-closed-total strong{color:#31556c}
.findings-detail-stats{
  grid-template-columns:repeat(7,minmax(0,1fr))!important;
}
.stream-stat-tile{
  padding:7px!important;
}
.stream-stat-tile .sais-stream-pill{
  width:100%;
}
.findings-global-stats{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
}
.stream-finished-stat{
  background:#edf9f1!important;
  border-color:#cce9d6!important;
}
.stream-finished-stat strong{color:#247248!important}

/* Inspection: multi-attempt RE-SAIS register */
.resais-fixed-fields{
  grid-template-columns:1fr 1fr!important;
}
.resais-attempt-register{
  margin:0 14px 14px;
  overflow:hidden;
  border:1px solid #d4e2e9;
  border-radius:10px;
  background:#fbfdfe;
}
.resais-attempt-register-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 10px;
  border-bottom:1px solid #dce6eb;
  background:
    radial-gradient(circle at 2% 0%,rgba(39,143,191,.08),transparent 30%),
    #f7fbfd;
}
.resais-attempt-register-head>div strong{
  display:block;
  font-size:10px;
  color:#1d445d;
}
.resais-attempt-register-head>div span{
  display:block;
  margin-top:2px;
  font-size:6.5px;
  color:#7b8e9a;
}
.resais-attempt-list{
  display:grid;
}
.resais-attempt-row{
  display:grid;
  grid-template-columns:72px 128px 150px 130px minmax(180px,1fr);
  gap:8px;
  align-items:end;
  padding:9px 10px;
  border-bottom:1px solid #e8edf0;
  background:#fff;
}
.resais-attempt-row:last-child{border-bottom:0}
.resais-attempt-row.latest-attempt{
  background:#f2f9fc;
  box-shadow:inset 3px 0 0 #258dbe;
}
.attempt-sequence{
  align-self:center;
}
.attempt-sequence span{
  display:block;
  font-size:5.6px;
  font-weight:900;
  letter-spacing:.08em;
  color:#7692a3;
}
.attempt-sequence strong{
  display:block;
  margin-top:2px;
  font-size:14px;
  color:#1d4a65;
}
.attempt-sequence small{
  display:inline-block;
  margin-top:3px;
  padding:2px 4px;
  border-radius:999px;
  background:#dff2fa;
  color:#287a9e;
  font-size:5px;
  font-weight:950;
}
.resais-attempt-row .field{
  margin:0!important;
}
.resais-attempt-row .field label{
  font-size:6.2px!important;
}
.resais-attempt-row input,
.resais-attempt-row select{
  width:100%;
  min-height:34px;
}
.attempt-comment-field{
  min-width:0;
}
.report-attempt-history{
  min-width:170px;
  line-height:1.4;
}

/* Print builder: domain selector belongs with findings controls */
.report-builder .field select#reportFindingsDomain{
  font-weight:800;
  color:#28536c;
}

/* Touch adjustments for field use on site */
@media(pointer:coarse){
  .sais-stream-pill{
    padding:6px 8px;
  }
  .sais-stream-pill>b,
  .sais-stream-pill>strong{
    font-size:9px;
  }
  .sais-stream-pill>small{
    font-size:7px;
  }
  .asset-readiness-select,
  .asset-software-select{
    min-height:44px!important;
    min-width:126px;
  }
  .home-extra-metrics-grid>button{
    min-height:82px;
  }
  .home-extra-metrics-grid span{font-size:7.5px}
  .home-extra-metrics-grid small{font-size:7px}
  .resais-attempt-register-head .btn{
    min-height:44px!important;
  }
  .resais-attempt-row input,
  .resais-attempt-row select{
    min-height:44px!important;
  }
}

@media(max-width:1280px){
  .findings-detail-stats,
  .findings-global-stats{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
  }
  .resais-attempt-row{
    grid-template-columns:64px 1fr 1fr;
  }
  .attempt-comment-field{
    grid-column:2/-1;
  }
}
@media(max-width:900px){
  .home-extra-metrics-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .home-extra-metrics-grid>button:nth-child(2){
    border-right:0;
  }
  .home-extra-metrics-grid>button:nth-child(-n+2){
    border-bottom:1px solid #e6ebef;
  }
  .resais-attempt-row{
    grid-template-columns:58px 1fr;
  }
  .attempt-comment-field{
    grid-column:2;
  }
}

@media print{
  .map-sais-indicator circle{
    filter:none!important;
  }
  .home-extra-metrics{
    break-inside:avoid;
  }
  .resais-attempt-register{
    break-inside:auto;
  }
  .resais-attempt-row{
    grid-template-columns:15mm 25mm 28mm 25mm 1fr!important;
    padding:1.5mm!important;
    gap:1.5mm!important;
    break-inside:avoid;
  }
}

.legend .sais-dot-key{
  display:inline-flex;
  align-items:center;
  gap:4px;
  color:#6f808c;
  font-size:6.5px;
}
.legend .sais-dot-key b{
  width:8px;
  height:8px;
  border-radius:50%;
  box-shadow:0 0 0 1px rgba(72,94,109,.10);
}

/* V5.8 field-test refinements */
.map-sais-indicator-back{
  filter:drop-shadow(0 1px 1px rgba(11,39,57,.14));
}
.findings-global-stats{
  grid-template-columns:repeat(7,minmax(0,1fr))!important;
}
.construction-finished-stat{
  background:#eef8f5!important;
}
@media(pointer:coarse){
  .map-sais-indicator circle{
    filter:drop-shadow(0 1px 1px rgba(12,34,48,.30));
  }
  .legend .sais-legend-dot i{
    width:18px!important;
    height:18px!important;
    font-size:8px!important;
  }
  .legend .sais-dot-key b{
    width:10px!important;
    height:10px!important;
  }
}
@media(max-width:1280px){
  .findings-global-stats{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
  }
}

/* ===============================================================
   V5.9 — compact map SAIS indicators + live Extra Works list
   =============================================================== */

/* Map S / C indicators: compact and visually subordinate to the asset marker. */
.map-sais-indicators{
  pointer-events:none;
}
.map-sais-indicator circle{
  filter:drop-shadow(0 .35px .45px rgba(14,43,61,.28))!important;
}
.map-sais-indicator text{
  paint-order:stroke;
  stroke:rgba(244,248,250,.72);
  stroke-width:.035px;
  stroke-linejoin:round;
}
/* V5.8 backing plate is no longer rendered. Keep this defensive rule. */
.map-sais-indicator-back{
  display:none!important;
}

/* Home / Key Metrics — actual Extra Work packages, not only aggregate KPIs. */
.home-extra-work-list{
  border-top:1px solid #e4eaee;
  background:#fff;
}
.home-extra-work-list-head{
  min-height:31px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:7px 9px;
  border-bottom:1px solid #edf1f3;
  background:#f8fafb;
}
.home-extra-work-list-head>span{
  font-size:6px;
  font-weight:950;
  letter-spacing:.085em;
  color:#657f90;
}
.home-extra-work-list-head>small{
  font-size:6px;
  color:#8a98a2;
}
.home-extra-work-list-body{
  display:grid;
  max-height:258px;
  overflow:auto;
  scrollbar-width:thin;
  scrollbar-color:#bfd0da transparent;
}
.home-extra-work-row{
  width:100%;
  display:grid;
  gap:6px;
  padding:9px 9px 8px;
  border:0;
  border-bottom:1px solid #edf1f3;
  background:#fff;
  text-align:left;
}
.home-extra-work-row:last-child{
  border-bottom:0;
}
.home-extra-work-row:hover{
  background:#f5fafc;
}
.home-extra-work-row.is-completed{
  background:#f7fbf8;
}
.home-extra-work-row.is-overdue{
  box-shadow:inset 3px 0 0 #d76a32;
}
.home-extra-work-main{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:7px;
}
.home-extra-work-main>div{
  min-width:0;
}
.home-extra-work-main strong{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:8.5px;
  color:#1b4058;
}
.home-extra-work-main span{
  display:block;
  margin-top:2px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:6.2px;
  color:#82909a;
}
.home-extra-work-main em{
  flex:0 0 auto;
  padding:3px 5px;
  border-radius:999px;
  background:#eef3f6;
  color:#5f7584;
  font-size:5.5px;
  font-style:normal;
  font-weight:900;
  white-space:nowrap;
}
.home-extra-work-row.is-completed .home-extra-work-main em{
  background:#e6f7eb;
  color:#277348;
}
.home-extra-work-row.is-overdue .home-extra-work-main em{
  background:#fff0e7;
  color:#a75523;
}
.home-extra-work-progress{
  display:grid;
  grid-template-columns:minmax(0,1fr) 31px;
  align-items:center;
  gap:7px;
}
.home-extra-work-progress>div{
  height:6px;
  overflow:hidden;
  border-radius:999px;
  background:#e8eef2;
}
.home-extra-work-progress>div>i{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#2589bd,#33a76e);
}
.home-extra-work-progress>strong{
  text-align:right;
  font-size:7px;
  color:#355a70;
}
.home-extra-work-meta{
  display:flex;
  flex-wrap:wrap;
  gap:4px 8px;
  font-size:5.9px;
  color:#87949d;
}
.home-extra-work-meta span{
  white-space:nowrap;
}
.home-extra-work-meta .overdue-text{
  color:#b65b28;
  font-weight:850;
}
.home-extra-empty{
  width:100%;
  min-height:62px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:3px;
  padding:10px;
  border:0;
  background:#fbfcfd;
  text-align:left;
}
.home-extra-empty strong{
  font-size:8px;
  color:#476579;
}
.home-extra-empty span{
  font-size:6.5px;
  color:#7f919e;
}

/* Tablet: list remains readable and comfortably touchable. */
@media(pointer:coarse){
  .home-extra-work-row{
    min-height:74px;
    padding:10px 10px!important;
  }
  .home-extra-work-main strong{
    font-size:10px;
  }
  .home-extra-work-main span{
    font-size:7.5px;
  }
  .home-extra-work-main em{
    font-size:6.5px;
    padding:4px 6px;
  }
  .home-extra-work-progress>div{
    height:8px;
  }
  .home-extra-work-progress>strong{
    font-size:8px;
  }
  .home-extra-work-meta{
    font-size:7px;
  }
  .home-extra-work-list-body{
    max-height:320px;
  }
}

/* ===============================================================
   V5.10 — tiny map SAIS dots + explicit clicked-asset FREE status
   =============================================================== */

/* Map dots: now intentionally tiny and completely free of white backing/stroke. */
.map-sais-indicator circle{
  filter:none!important;
  stroke:none!important;
}
.map-sais-indicator text,
.map-sais-indicator-back{
  display:none!important;
}

/* Immediate clicked-asset SAIS stream state */
.asset-stream-free-strip{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px;
  margin-top:7px;
}
.asset-stream-free{
  display:grid;
  grid-template-columns:7px auto 1fr;
  grid-template-areas:
    "dot label value"
    ". note note";
  align-items:center;
  gap:2px 6px;
  min-width:0;
  padding:7px 8px;
  border:1px solid #dbe4e9;
  border-radius:8px;
  background:#f7f9fa;
}
.asset-stream-free>i{
  grid-area:dot;
  width:7px;
  height:7px;
  border-radius:50%;
  background:#93a2ae;
}
.asset-stream-free>span{
  grid-area:label;
  font-size:6.5px;
  font-weight:900;
  letter-spacing:.04em;
  color:#627b8b;
  white-space:nowrap;
}
.asset-stream-free>strong{
  grid-area:value;
  justify-self:end;
  font-size:9px;
  font-weight:950;
  color:#546a78;
  white-space:nowrap;
}
.asset-stream-free>small{
  grid-area:note;
  font-size:5.8px;
  color:#86949d;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.asset-stream-free.is-free{
  border-color:#bfe2ca;
  background:#edf9f1;
}
.asset-stream-free.is-free>i{background:#17a856}
.asset-stream-free.is-free>strong{color:#1f7545}
.asset-stream-free.is-open{
  border-color:#edc1c5;
  background:#fff1f2;
}
.asset-stream-free.is-open>i{background:#d93b4b}
.asset-stream-free.is-open>strong{color:#a72d39}
.asset-stream-free.is-none{
  opacity:.72;
}
.expanded-stream-free-strip{
  margin:0 0 10px;
}

@media(pointer:coarse){
  .asset-stream-free{
    min-height:48px;
    padding:8px 9px;
  }
  .asset-stream-free>span{font-size:7.5px}
  .asset-stream-free>strong{font-size:10px}
  .asset-stream-free>small{font-size:6.7px}
}

/* ===============================================================
   V5.11 — map dot balance + SAIS stream status fit
   =============================================================== */

/* Medium map dots: visible on tablet, still subordinate to the asset marker. */
.map-sais-indicator circle{
  filter:drop-shadow(0 .25px .32px rgba(10,38,55,.26))!important;
  stroke:#17344a!important;
  stroke-width:.035px!important;
}
.map-sais-indicator-back,
.map-sais-indicator text{
  display:none!important;
}

/* The two SAIS stream states in the immediate map popup must never overflow. */
.preview-stream-free-strip{
  grid-template-columns:1fr!important;
  gap:5px!important;
  margin-top:7px!important;
}
.preview-stream-free-strip .asset-stream-free{
  grid-template-columns:8px minmax(0,1fr) auto!important;
  grid-template-areas:
    "dot label value"
    ". note value"!important;
  column-gap:7px!important;
  row-gap:2px!important;
  min-width:0!important;
  width:100%!important;
  padding:6px 8px!important;
}
.preview-stream-free-strip .asset-stream-free>span{
  min-width:0!important;
  white-space:normal!important;
  overflow-wrap:anywhere;
  line-height:1.15;
}
.preview-stream-free-strip .asset-stream-free>strong{
  align-self:center;
  justify-self:end;
  max-width:86px;
  white-space:nowrap!important;
  text-align:right;
}
.preview-stream-free-strip .asset-stream-free>small{
  min-width:0;
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:1.15;
}

/* Expanded map details can use two columns where there is more width. */
.expanded-stream-free-strip{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.expanded-stream-free-strip .asset-stream-free{
  min-width:0!important;
  overflow:hidden;
}
.expanded-stream-free-strip .asset-stream-free>span,
.expanded-stream-free-strip .asset-stream-free>small{
  min-width:0;
  white-space:normal!important;
  overflow-wrap:anywhere;
}
.expanded-stream-free-strip .asset-stream-free>strong{
  white-space:nowrap!important;
}

/* Protect SED/Construction metric cells from long labels. */
.map-asset-overlay .metric-sed,
.map-asset-overlay .metric-construction{
  min-width:0!important;
  overflow:hidden;
}
.map-asset-overlay .metric-sed span,
.map-asset-overlay .metric-construction span{
  white-space:normal!important;
  overflow-wrap:anywhere;
  line-height:1.12;
}
.map-asset-overlay .metric-sed small,
.map-asset-overlay .metric-construction small{
  white-space:normal!important;
  line-height:1.15;
}

@media(pointer:coarse){
  .preview-stream-free-strip .asset-stream-free{
    min-height:43px!important;
    padding:7px 9px!important;
  }
  .preview-stream-free-strip .asset-stream-free>span{
    font-size:7.2px!important;
  }
  .preview-stream-free-strip .asset-stream-free>strong{
    font-size:9px!important;
    max-width:92px;
  }
  .preview-stream-free-strip .asset-stream-free>small{
    font-size:6.4px!important;
  }
}

@media(max-width:620px){
  .expanded-stream-free-strip{
    grid-template-columns:1fr!important;
  }
}

/* ===============================================================
   V5.12 — larger map SAIS status dots
   =============================================================== */
.map-sais-indicator circle{
  filter:drop-shadow(0 .35px .45px rgba(7,31,47,.34))!important;
  stroke:#17344a!important;
  stroke-width:.055px!important;
}
.map-sais-indicator-back,
.map-sais-indicator text{
  display:none!important;
}

/* ===============================================================
   V5.13 — clearly identifiable SED / Construction map markers
   =============================================================== */
.map-sais-indicator circle{
  filter:drop-shadow(0 .45px .55px rgba(7,31,47,.34))!important;
  stroke:#17344a!important;
  stroke-width:.065px!important;
}
.map-sais-indicator text{
  display:block!important;
  pointer-events:none;
  paint-order:stroke;
  stroke:rgba(15,44,61,.22);
  stroke-width:.025px;
}
.map-sais-indicator-back{
  display:none!important;
}

/* ===============================================================
   V5.14 — positional SAIS legend
   =============================================================== */

/* Map dots use position only: upper = SED, lower = Construction. */
.map-sais-indicator text{
  display:none!important;
}

/* Legend: explain vertical meaning instead of showing S / C symbols. */
.legend .sais-legend-dot{
  display:none!important;
}
.sais-position-legend{
  display:inline-flex!important;
  align-items:center;
  gap:6px;
  min-width:0;
}
.sais-position-stack{
  display:grid!important;
  grid-template-rows:repeat(2,8px);
  gap:3px;
  flex:0 0 auto;
}
.sais-position-stack i{
  width:8px!important;
  height:8px!important;
  display:block!important;
  border-radius:50%!important;
  background:#718493!important;
  border:1px solid #29475b!important;
  box-shadow:none!important;
}
.sais-position-copy{
  display:grid!important;
  gap:1px;
  min-width:0;
}
.sais-position-copy b{
  display:block;
  font-size:6.3px;
  line-height:1.15;
  font-weight:850;
  color:#526f81;
  white-space:nowrap;
}
@media(pointer:coarse){
  .sais-position-stack{
    grid-template-rows:repeat(2,10px);
    gap:4px;
  }
  .sais-position-stack i{
    width:10px!important;
    height:10px!important;
  }
  .sais-position-copy b{
    font-size:7.2px;
  }
}

/* ===============================================================
   V5.15 — single combined SAIS map legend
   =============================================================== */
.sais-dot-key,
.sais-position-legend{
  display:none!important;
}
.sais-combined-legend{
  display:inline-flex!important;
  align-items:center;
  gap:7px;
  min-width:0;
}
.sais-combined-copy{
  display:grid!important;
  gap:3px;
  min-width:0;
}
.sais-combined-copy>b{
  font-size:6.5px;
  line-height:1.2;
  font-weight:900;
  color:#4e6b7d;
  white-space:nowrap;
}
.sais-combined-copy>small{
  display:flex!important;
  align-items:center;
  gap:4px;
  font-size:6px;
  color:#718592;
  white-space:nowrap;
}
.legend-mini-dot{
  width:7px!important;
  height:7px!important;
  border-radius:50%!important;
  display:inline-block!important;
  margin:0 1px 0 3px!important;
  box-shadow:none!important;
}
.legend-mini-dot:first-child{margin-left:0!important}
.legend-mini-dot.finished{background:#17a856!important}
.legend-mini-dot.open{background:#d93b4b!important}
.legend-mini-dot.none{background:#93a2ae!important}
.sais-combined-legend .sais-position-stack{
  grid-template-rows:repeat(2,9px)!important;
  gap:4px!important;
}
.sais-combined-legend .sais-position-stack i{
  width:9px!important;
  height:9px!important;
}
.sais-top-dot{background:#17a856!important}
.sais-bottom-dot{background:#d93b4b!important}

@media(pointer:coarse){
  .sais-combined-copy>b{font-size:7.4px}
  .sais-combined-copy>small{font-size:6.8px}
  .legend-mini-dot{
    width:8px!important;
    height:8px!important;
  }
}

/* ===============================================================
   V5.16 — Findings completion logic + cross-asset finding register
   =============================================================== */

/* Finished tiles are green ONLY when every applicable asset is finished. */
.stream-completion-stat{
  position:relative;
  overflow:hidden;
}
.stream-completion-stat strong{
  font-variant-numeric:tabular-nums;
}
.stream-completion-stat.completion-complete{
  background:#edf9f1!important;
  border-color:#bfe2ca!important;
}
.stream-completion-stat.completion-complete strong{
  color:#1f7545!important;
}
.stream-completion-stat.completion-complete:after{
  content:"100%";
  position:absolute;
  right:8px;
  top:7px;
  font-size:6px;
  font-weight:950;
  color:#3f8e5f;
}
.stream-completion-stat.completion-partial{
  background:#fff9e9!important;
  border-color:#ead9a7!important;
}
.stream-completion-stat.completion-partial strong{
  color:#856400!important;
}
.stream-completion-stat.completion-zero{
  background:#fff3f4!important;
  border-color:#efc6ca!important;
}
.stream-completion-stat.completion-zero strong{
  color:#a6313b!important;
}
.stream-completion-stat.completion-none{
  background:#f4f6f8!important;
  border-color:#dce3e8!important;
  opacity:.82;
}
.stream-completion-stat.completion-none strong{
  color:#687b89!important;
}

/* Findings main-view switch */
.findings-view-switch{
  flex:0 0 auto;
}
.findings-view-switch button{
  min-width:92px;
}

/* Cross-asset findings list */
.findings-list-workspace{
  display:grid;
  gap:10px;
}
.finding-list-scope-panel{
  border:1px solid #dce5eb;
  border-radius:10px;
  background:#fff;
  overflow:hidden;
}
.finding-list-scope-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:9px 10px;
  border-bottom:1px solid #e7edf1;
  background:#f8fafb;
}
.finding-list-scope-head>div>span{
  display:block;
  font-size:6px;
  font-weight:950;
  letter-spacing:.09em;
  color:#718794;
}
.finding-list-scope-head>div>strong{
  display:block;
  margin-top:2px;
  font-size:10px;
  color:#24485f;
}
.finding-list-scope-head .muted-btn.active{
  background:#e8f3f8;
  border-color:#b9d7e4;
  color:#24617f;
}
.finding-list-asset-chips{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  max-height:106px;
  overflow:auto;
  padding:8px 9px 9px;
  scrollbar-width:thin;
}
.finding-list-asset-chip{
  min-width:43px;
  min-height:28px;
  padding:4px 7px;
  border:1px solid #d7e0e6;
  border-radius:7px;
  background:#f7f9fa;
  color:#587080;
  font-size:7px;
  font-weight:850;
}
.finding-list-asset-chip:hover{
  background:#eef5f8;
}
.finding-list-asset-chip.selected{
  border-color:#6aa9c7;
  background:#e6f3f8;
  color:#175979;
  box-shadow:inset 0 0 0 1px rgba(47,128,167,.08);
}
.finding-list-filter-bar{
  margin-bottom:0!important;
}
.finding-list-filter-bar input{
  flex:1 1 260px;
}
.finding-list-filter-bar select{
  flex:0 1 180px;
  min-width:150px;
}
.finding-list-filter-bar select:disabled{
  opacity:.55;
  background:#f1f3f5;
}
.finding-list-summary{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px;
}
.finding-list-summary>span{
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-height:27px;
  padding:4px 7px;
  border:1px solid #dfe6eb;
  border-radius:7px;
  background:#f8fafb;
  color:#70818c;
  font-size:6.5px;
}
.finding-list-summary strong{
  color:#234a62;
  font-size:8px;
}
.finding-list-table-wrap{
  max-height:620px;
}
.findings-list-table{
  min-width:1040px;
}
.findings-list-table th:nth-child(1){min-width:105px}
.findings-list-table th:nth-child(2){min-width:70px}
.findings-list-table th:nth-child(3){min-width:105px}
.findings-list-table th:nth-child(4){min-width:130px}
.findings-list-table th:nth-child(5){min-width:360px}
.findings-list-table th:nth-child(6){min-width:150px}
.findings-list-table th:nth-child(7){min-width:110px}
.findings-list-table td:first-child strong{
  display:block;
  font-size:9px;
  color:#1c435a;
}
.findings-list-table td:first-child small{
  display:block;
  margin-top:2px;
  color:#80909a;
  font-size:6px;
  line-height:1.25;
}
.finding-list-description{
  line-height:1.35;
  color:#344f61;
}
.finding-domain-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:4px 7px;
  border-radius:999px;
  font-size:6.5px;
  font-weight:900;
  white-space:nowrap;
}
.finding-domain-pill.domain-sais{
  background:#e8f2f8;
  color:#28648b;
}
.finding-domain-pill.domain-nen{
  background:#edf1f4;
  color:#596e7b;
}
.bucket-nen{
  background:#edf1f4!important;
  color:#596e7b!important;
}

@media(pointer:coarse){
  .findings-view-switch button{
    min-width:110px;
  }
  .finding-list-scope-head{
    padding:10px 11px;
  }
  .finding-list-scope-head>div>span{
    font-size:7px;
  }
  .finding-list-scope-head>div>strong{
    font-size:11px;
  }
  .finding-list-asset-chip{
    min-width:50px;
    min-height:38px!important;
    padding:6px 8px!important;
    font-size:8px;
  }
  .finding-list-asset-chips{
    max-height:142px;
    gap:6px;
    padding:9px 10px 10px;
  }
  .finding-list-summary>span{
    min-height:34px;
    font-size:7.5px;
  }
  .finding-list-summary strong{
    font-size:9px;
  }
  .findings-list-table td{
    padding-top:10px!important;
    padding-bottom:10px!important;
  }
}

@media(max-width:820px){
  .findings-page .page-head{
    align-items:stretch;
  }
  .findings-view-switch{
    width:100%;
  }
  .findings-view-switch button{
    flex:1;
  }
  .finding-list-filter-bar select{
    width:100%;
    min-width:0;
    flex:1 1 100%;
  }
}

/* ===============================================================
   V5.17 — single SAIS legend + printable Findings List
   =============================================================== */

/* The map has only one legend now: SAIS positional/color meaning. */
.legend-sais-only{
  justify-content:flex-end;
}
.legend-sais-only .legend-separator{
  display:none!important;
}
.legend-sais-only .sais-combined-legend{
  margin-left:0!important;
}

/* Findings List page actions */
.findings-list-head-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.findings-list-head-actions>.btn{
  min-width:108px;
}

/* Dedicated print output for current Findings List filters. */
.findings-list-print-meta{
  margin-bottom:7px!important;
}
.findings-print-search{
  margin:6px 0 0;
  padding:5px 7px;
  border:1px solid #dce5eb;
  border-radius:5px;
  background:#f8fafb;
  color:#536b7c;
  font-size:7px;
}
.findings-list-print-table{
  table-layout:fixed!important;
}
.findings-list-print-table th:nth-child(1),
.findings-list-print-table td:nth-child(1){width:11%}
.findings-list-print-table th:nth-child(2),
.findings-list-print-table td:nth-child(2){width:8%}
.findings-list-print-table th:nth-child(3),
.findings-list-print-table td:nth-child(3){width:10%}
.findings-list-print-table th:nth-child(4),
.findings-list-print-table td:nth-child(4){width:13%}
.findings-list-print-table th:nth-child(5),
.findings-list-print-table td:nth-child(5){width:35%}
.findings-list-print-table th:nth-child(6),
.findings-list-print-table td:nth-child(6){width:13%}
.findings-list-print-table th:nth-child(7),
.findings-list-print-table td:nth-child(7){width:10%}
.findings-list-print-table td{
  overflow-wrap:anywhere;
}
.findings-list-print-table td small{
  color:#738695;
  font-size:5.8px;
}

@media(pointer:coarse){
  .findings-list-head-actions>.btn{
    min-height:44px;
  }
}

@media print{
  body.printing-configured-report .findings-list-print-document .configured-report-cover h1{
    font-size:17pt!important;
  }
  body.printing-configured-report .findings-list-print-document .report-summary-grid{
    grid-template-columns:repeat(7,minmax(0,1fr))!important;
  }
  body.printing-configured-report .findings-list-print-table{
    font-size:6.3pt!important;
  }
  body.printing-configured-report .findings-list-print-table th,
  body.printing-configured-report .findings-list-print-table td{
    padding:1.35mm 1.15mm!important;
    vertical-align:top!important;
  }
}

/* ===============================================================
   V5.18 — comprehensive operational Metrics
   =============================================================== */

.metrics-extra-works-section{
  border-top:3px solid #2f8fbf!important;
}
.metrics-extra-works-section .panel-head,
.metrics-delivery-domain-section .panel-head{
  align-items:flex-start;
}
.metrics-domain-kpi-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;
}
.metrics-domain-kpi-grid>div{
  min-width:0;
  padding:9px 10px;
  border:1px solid #dce5eb;
  border-radius:8px;
  background:#f8fafb;
}
.metrics-domain-kpi-grid span{
  display:block;
  color:#708391;
  font-size:7px;
  font-weight:750;
  line-height:1.2;
}
.metrics-domain-kpi-grid strong{
  display:block;
  margin-top:3px;
  color:#183f58;
  font-size:16px;
  line-height:1;
}
.metrics-domain-kpi-grid small{
  display:block;
  margin-top:4px;
  color:#8a98a2;
  font-size:6.3px;
  line-height:1.25;
}
.metrics-domain-kpi-grid .metric-domain-alert{
  border-color:#efc6ca;
  background:#fff3f4;
}
.metrics-domain-kpi-grid .metric-domain-alert strong{
  color:#b23742;
}
.metrics-extra-kpi-grid{
  grid-template-columns:repeat(5,minmax(0,1fr));
  margin-bottom:10px;
}
.metrics-extra-charts{
  margin-top:0!important;
}
.metrics-extra-work-table-wrap{
  margin-top:10px;
  max-height:410px;
}
.metrics-extra-work-table{
  min-width:920px;
}
.metrics-extra-work-table td strong{
  color:#24495f;
}
.metrics-overdue-row td{
  background:#fff6f3!important;
}
.metric-overdue-text{
  color:#b44b37!important;
  font-weight:900!important;
}
.metrics-domain-block-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.metrics-domain-block{
  min-width:0;
  border:1px solid #dce5eb;
  border-radius:10px;
  background:#fff;
  overflow:hidden;
}
.metrics-domain-block>header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-height:42px;
  padding:8px 10px;
  border-bottom:1px solid #e7edf1;
  background:#f7fafb;
}
.metrics-domain-block>header h4{
  margin:0;
  color:#20465d;
  font-size:10px;
}
.metrics-domain-block .metrics-domain-kpi-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  padding:9px;
}
.metrics-domain-block .metrics-domain-kpi-grid>div{
  padding:8px;
}
.metrics-domain-block .metrics-domain-kpi-grid strong{
  font-size:14px;
}

@media(max-width:1280px){
  .metrics-extra-kpi-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  .metrics-domain-block .metrics-domain-kpi-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}
@media(max-width:980px){
  .metrics-extra-kpi-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .metrics-domain-block-grid{
    grid-template-columns:1fr;
  }
}
@media(max-width:700px){
  .metrics-extra-kpi-grid,
  .metrics-domain-kpi-grid,
  .metrics-domain-block .metrics-domain-kpi-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(pointer:coarse){
  .metrics-domain-kpi-grid>div{
    min-height:66px;
    padding:10px;
  }
  .metrics-domain-kpi-grid span{font-size:8px}
  .metrics-domain-kpi-grid strong{font-size:18px}
  .metrics-domain-kpi-grid small{font-size:7px}
  .metrics-extra-work-table-wrap{
    max-height:520px;
  }
}
@media print{
  .metrics-extra-work-table-wrap{
    max-height:none!important;
    overflow:visible!important;
  }
  .metrics-domain-block-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .metrics-extra-kpi-grid{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
  }
}

/* ===============================================================
   V5.19 — consistent Assets KPI colours + deadline countdown
   =============================================================== */

/* Assets statistics: either all coloured or none. V5.19 uses all-coloured,
   with restrained semantic tints rather than one isolated coloured tile. */
.asset-status-stats .stat-tile{
  position:relative;
  overflow:hidden;
  border-top-width:3px!important;
}
.asset-status-stats .stat-tile:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.34;
}
.asset-status-stats .stat-tile span,
.asset-status-stats .stat-tile strong{
  position:relative;
  z-index:1;
}
.asset-stat-total{
  border-top-color:#4e83a8!important;
  background:#f3f8fb!important;
}
.asset-stat-total:after{background:linear-gradient(135deg,rgba(78,131,168,.10),transparent 62%)}
.asset-stat-total strong{color:#2e627f!important}

.asset-stat-progress{
  border-top-color:#d6aa1e!important;
  background:#fffaf0!important;
}
.asset-stat-progress:after{background:linear-gradient(135deg,rgba(214,170,30,.12),transparent 62%)}
.asset-stat-progress strong{color:#8a6a00!important}

.asset-stat-issue{
  border-top-color:#e9861a!important;
  background:#fff7ef!important;
}
.asset-stat-issue:after{background:linear-gradient(135deg,rgba(233,134,26,.12),transparent 62%)}
.asset-stat-issue strong{color:#a95e0d!important}

.asset-stat-blocked{
  border-top-color:#d44755!important;
  background:#fff3f4!important;
}
.asset-stat-blocked:after{background:linear-gradient(135deg,rgba(212,71,85,.11),transparent 62%)}
.asset-stat-blocked strong{color:#a12e39!important}

.asset-stat-finished{
  border-top-color:#2aa45a!important;
  background:#f0f9f3!important;
}
.asset-stat-finished:after{background:linear-gradient(135deg,rgba(42,164,90,.10),transparent 62%)}
.asset-stat-finished strong{color:#247744!important}

.asset-stat-ready{
  border-top-color:#2b94c7!important;
  background:#f0f8fc!important;
}
.asset-stat-ready:after{background:linear-gradient(135deg,rgba(43,148,199,.10),transparent 62%)}
.asset-stat-ready strong{color:#236f96!important}

/* Project deadline countdown */
.home-deadline-card{
  overflow:hidden;
  border-top:3px solid #d44755!important;
  background:
    radial-gradient(circle at 88% 15%,rgba(212,71,85,.08),transparent 34%),
    #fff!important;
}
.home-deadline-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:11px 12px 8px;
  border-bottom:1px solid #e8edf1;
}
.home-deadline-head>div>span{
  display:block;
  margin-bottom:2px;
  color:#b33c48;
  font-size:6px;
  font-weight:950;
  letter-spacing:.10em;
}
.home-deadline-head h3{
  margin:0;
  color:#173d57;
  font-size:12px;
}
.home-deadline-head>strong{
  color:#8f2d37;
  font-size:8px;
  white-space:nowrap;
}
.home-deadline-time{
  display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;
  align-items:center;
  gap:4px;
  padding:10px 12px;
}
.home-deadline-time>div{
  min-width:0;
  text-align:center;
}
.home-deadline-time strong{
  display:block;
  color:#173b55;
  font-size:24px;
  line-height:1;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.03em;
}
.home-deadline-time span{
  display:block;
  margin-top:4px;
  color:#81919d;
  font-size:5.8px;
  font-weight:850;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.home-deadline-time>i{
  color:#a9b4bc;
  font-size:18px;
  font-style:normal;
  font-weight:700;
}
.home-deadline-foot{
  display:flex;
  justify-content:space-between;
  gap:8px;
  padding:7px 12px 9px;
  border-top:1px solid #edf1f4;
  color:#6f808c;
  font-size:6px;
}
.home-deadline-foot small{
  color:#9aa5ad;
  white-space:nowrap;
}
.home-deadline-card.deadline-reached{
  border-top-color:#2aa45a!important;
}
.home-deadline-card.deadline-reached .home-deadline-head>div>span,
.home-deadline-card.deadline-reached .home-deadline-head>strong{
  color:#247744;
}

@media(pointer:coarse){
  .home-deadline-time strong{font-size:28px}
  .home-deadline-time span{font-size:6.8px}
  .home-deadline-foot{font-size:7px}
}

/* ===============================================================
   V5.20 — Login / Roles / Read-only viewer
   =============================================================== */
body.auth-locked{overflow:hidden;background:#061521}
body.auth-locked #app{visibility:hidden;pointer-events:none}
body.auth-ready #app{visibility:visible}
.auth-gate[hidden]{display:none!important}
.auth-gate{position:fixed;inset:0;z-index:10000;background:#061521;color:#102039}
.auth-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.28fr) minmax(390px,.72fr);background:#071824}
.auth-visual{position:relative;overflow:hidden;min-height:100vh;background:linear-gradient(145deg,#071724,#0a2638 52%,#0b334a)}
.auth-visual:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,15,24,.12),rgba(6,22,34,.2)),radial-gradient(circle at 68% 36%,rgba(55,194,241,.12),transparent 30%)}
.auth-grid{position:absolute;inset:-20%;opacity:.18;background-image:linear-gradient(rgba(85,187,225,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(85,187,225,.18) 1px,transparent 1px);background-size:46px 46px;transform:perspective(500px) rotateX(61deg) rotateZ(-11deg) scale(1.5);transform-origin:center}
.auth-line{position:absolute;height:2px;background:linear-gradient(90deg,transparent,#57d7ff,transparent);box-shadow:0 0 20px rgba(87,215,255,.35);transform-origin:left center}
.auth-line-one{width:65%;left:9%;top:48%;transform:rotate(-18deg)}
.auth-line-two{width:53%;left:38%;top:64%;transform:rotate(14deg)}
.auth-glow{position:absolute;width:440px;height:440px;border-radius:50%;left:18%;top:25%;background:radial-gradient(circle,rgba(57,180,226,.17),transparent 67%);filter:blur(4px)}
.auth-project-mark{position:absolute;left:9%;bottom:10%;display:grid;gap:4px;color:#fff}
.auth-project-mark span{font-size:13px;font-weight:950;letter-spacing:.24em;color:#77dcff}
.auth-project-mark strong{font-size:38px;letter-spacing:-.04em}
.auth-project-mark small{font-size:9px;font-weight:800;letter-spacing:.16em;color:#82a8bc}
.auth-panel{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:48px clamp(32px,5vw,72px);background:#f7f9fb;box-shadow:-28px 0 80px rgba(0,0,0,.16)}
.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:50px}
.auth-brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:11px;background:linear-gradient(135deg,#2acbe8,#1764ba);color:#fff;font-size:20px;font-weight:950;box-shadow:0 10px 24px rgba(27,122,177,.25)}
.auth-brand strong,.auth-brand span{display:block}.auth-brand strong{font-size:18px;color:#153b54}.auth-brand span{margin-top:2px;font-size:8px;font-weight:800;letter-spacing:.08em;color:#7c8f9d;text-transform:uppercase}
.auth-copy>span{font-size:7px;font-weight:950;letter-spacing:.12em;color:#2787b4}.auth-copy h1{margin:7px 0 8px;font-size:30px;line-height:1.08;letter-spacing:-.035em;color:#12374f}.auth-copy p{max-width:470px;margin:0;color:#71828e;font-size:11px;line-height:1.55}
.auth-form{display:grid;gap:13px;margin-top:25px}.auth-form label{display:grid;gap:6px;font-size:8px;font-weight:850;color:#516979}.auth-form input{width:100%;min-height:46px;border:1px solid #cedae2;border-radius:9px;padding:10px 12px;background:#fff;color:#173c55;font-size:14px;outline:none;box-shadow:0 1px 0 rgba(255,255,255,.8)}.auth-form input:focus{border-color:#4fa8d0;box-shadow:0 0 0 3px rgba(54,159,206,.12)}
.auth-primary{min-height:48px;margin-top:5px;border:0;border-radius:9px;background:linear-gradient(135deg,#176ba9,#158dbc);color:#fff;font-size:11px;font-weight:900;letter-spacing:.02em;box-shadow:0 12px 28px rgba(27,112,162,.2)}
.auth-access-summary{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:18px;padding:12px 0;border-top:1px solid #e3e9ed;border-bottom:1px solid #e3e9ed;color:#6c7f8c;font-size:8px}.auth-access-summary>span{display:flex;align-items:center;gap:6px}.auth-access-summary small{width:100%;color:#93a0a8}.auth-role-dot{width:7px;height:7px;border-radius:50%}.auth-role-dot.admin{background:#218e56}.auth-role-dot.viewer{background:#3989b8}
.auth-message{min-height:18px;margin-top:11px;padding:0;color:#b03642;font-size:8px;font-weight:750}.auth-message.show{padding:8px 9px;border:1px solid #efc8cb;border-radius:7px;background:#fff1f2}.auth-panel footer{margin-top:35px;padding-top:13px;border-top:1px solid #e4e9ed;color:#7a8d99}.auth-panel footer span,.auth-panel footer small{display:block}.auth-panel footer span{font-size:6.5px;font-weight:950;letter-spacing:.11em}.auth-panel footer small{margin-top:3px;font-size:7px}
.access-profile{border:0;background:transparent;text-align:left;cursor:pointer}.access-profile:hover{background:#f1f5f8}.access-logout{width:38px;height:38px;border:1px solid #dbe4ea;border-radius:9px;background:#fff;color:#526b7b;font-weight:900}.access-logout:hover{background:#f5f8fa;color:#a1343e}
.viewer-mode-chip{align-self:center;margin-left:12px;padding:4px 9px;border:1px solid #bcd6e4;border-radius:999px;background:#edf7fb;color:#236889;font-size:9px;font-weight:900;letter-spacing:.09em;white-space:nowrap}.access-admin-hidden{display:none!important}/* A read-only control must look exactly like the admin's: the old rule flattened every status colour to grey at 72% opacity, which is why viewer mode looked washed out. Keep the colour, drop only the interactivity, and cancel the browser's own graying of disabled form controls. */.access-readonly-control{cursor:default!important;opacity:1!important;-webkit-text-fill-color:currentColor!important}/* The hidden attribute loses to the author-set display on nav items, so the admin-only Data Manager entry stayed visible in a viewer's sidebar. */.nav-item[hidden],.top-tab[hidden]{display:none!important}
.access-manager{display:grid;gap:12px}.access-manager-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.access-manager-summary>div{padding:10px;border:1px solid #dce5eb;border-radius:8px;background:#f8fafb}.access-manager-summary span,.access-manager-summary strong{display:block}.access-manager-summary span{font-size:7px;color:#778995}.access-manager-summary strong{margin-top:3px;font-size:14px;color:#21465e}.access-user-list{display:grid;border:1px solid #dce5eb;border-radius:9px;overflow:hidden}.access-user-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto auto auto;align-items:center;gap:8px;padding:9px 10px;border-bottom:1px solid #e9eef1}.access-user-row:last-child{border-bottom:0}.access-user-row.disabled{opacity:.55;background:#f5f6f7}.access-user-avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#e5f1f7;color:#286887;font-size:8px;font-weight:950}.access-user-row>div:nth-child(2) strong,.access-user-row>div:nth-child(2) span{display:block}.access-user-row>div:nth-child(2) strong{font-size:9px;color:#23465c}.access-user-row>div:nth-child(2) span{margin-top:2px;font-size:6.5px;color:#7e8d97}.access-user-row>em{font-size:6.5px;font-style:normal;font-weight:850;color:#4f8665}.access-admin-lock{font-size:6.5px;color:#8a99a3}.danger-text{color:#b13b45!important}.access-add-viewer{padding:12px;border:1px solid #dce5eb;border-radius:9px;background:#fbfcfd}.access-add-viewer h4{margin:0;color:#1d465f}.access-add-viewer p{margin:4px 0 10px;color:#758793;font-size:8px}.access-security-note{display:flex;gap:8px;padding:9px 10px;border:1px solid #ead5a8;border-radius:8px;background:#fff9e9;color:#725b1c;font-size:7px;line-height:1.4}
@media(max-width:900px){.auth-screen{grid-template-columns:1fr}.auth-visual{display:none}.auth-panel{min-height:100vh;padding:32px clamp(24px,8vw,58px)}.access-user-row{grid-template-columns:34px minmax(0,1fr) auto}.access-user-row>button,.access-user-row>.access-admin-lock{grid-column:auto}.access-manager-summary{grid-template-columns:1fr 1fr 1fr}}
@media(pointer:coarse){.auth-form input,.auth-primary{min-height:52px}.access-logout{width:44px;height:44px}.viewer-mode-chip{min-height:0}.access-user-row .muted-btn{min-height:38px}}
@media print{.viewer-mode-chip,.access-logout{display:none!important}}

/* ---------------------------------------------------------------
   "Since your last visit" digest, its topbar bell and the NEW marker
---------------------------------------------------------------- */
.changes-bell{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 11px;border:1px solid #d7e2ea;border-radius:999px;background:#fff;color:#1f4d63;cursor:pointer;font-weight:800;font-size:11px}
.changes-bell:hover{border-color:#8fb9cf;background:#f3f9fc}
.changes-bell-icon{color:#c2410c;font-size:11px;line-height:1}
.changes-bell-count{background:#c2410c;color:#fff;border-radius:999px;min-width:19px;padding:1px 6px;text-align:center;font-size:11px;font-weight:900}
.digest-modal{max-width:640px}
.digest-lead{padding:11px 13px;border:1px solid #dbe6ee;border-left:3px solid #1f6f96;border-radius:9px;background:#f4fafd;color:#33566a;font-size:13px;line-height:1.55}
.digest-lead strong{color:#12384c;font-size:15px}
.digest-list{display:flex;flex-direction:column;gap:7px;margin-top:11px;max-height:52vh;overflow:auto}
.digest-row{display:grid;grid-template-columns:74px 92px 1fr;grid-template-areas:"asset count chips" ". meta meta";gap:4px 10px;width:100%;padding:10px 12px;border:1px solid #e3eaf0;border-radius:10px;background:#fff;text-align:left;font:inherit;cursor:pointer}
button.digest-row:hover{border-color:#8fb9cf;background:#f7fbfd}
.digest-asset{grid-area:asset;font-weight:900;color:#12384c;font-size:13px}
.digest-count{grid-area:count;color:#5b7386;font-size:12px}
.digest-count b{color:#c2410c;font-size:14px}
.digest-chips{grid-area:chips;display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end}
.digest-chip{padding:2px 8px;border-radius:999px;background:#eef4f8;color:#3d6076;font-size:11px;font-weight:700}
.digest-chip b{color:#12384c}
.digest-meta{grid-area:meta;color:#8496a3;font-size:11px}
.digest-note{margin:11px 0 0;color:#8496a3;font-size:11px;line-height:1.5}
/* Chrome greys out disabled <select> text through its UA sheet whenever the
   author never set a colour. :where() keeps this at a single class level, so it
   beats the UA grey but still loses to the two-class status colours. */
select:where(.access-readonly-control):disabled,input:where(.access-readonly-control):disabled{color:#17324f}
.new-since-visit{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:#c2410c;color:#fff;font-size:9px;font-weight:900;letter-spacing:.05em;vertical-align:middle}


/* ----------------------------------------------------------------
   Daily report (shown after sign-in, printable) + its topbar button
---------------------------------------------------------------- */
.daily-report-btn{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 13px;border:1px solid #d7e2ea;border-radius:999px;background:#fff;color:#1f4d63;font-size:13px;font-weight:800;cursor:pointer}
.daily-report-btn:hover{border-color:#8fb9cf;background:#f3f9fc}
.daily-report-modal{max-width:820px}
.daily-report{display:flex;flex-direction:column;gap:14px}
.daily-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;padding-bottom:10px;border-bottom:2px solid #17324f}
.daily-head span{display:block;font-size:11px;letter-spacing:.14em;font-weight:800;color:#5d6f7d}
.daily-head h4{margin:3px 0 0;font-size:17px;color:#12384c}
.daily-deadline{text-align:right}
.daily-deadline strong{display:block;font-size:22px;color:#17324f;line-height:1.1}
.daily-deadline small{display:block;font-size:12px;color:#5d6f7d}
.daily-deadline.urgent strong{color:#c2410c}
.daily-deadline.reached strong{color:#a3162a}
.daily-tiles{display:flex;flex-wrap:wrap;gap:9px}
.daily-tile{flex:1 1 138px;min-width:138px;padding:10px 12px;border:1px solid #dbe6ee;border-radius:11px;background:#f8fbfd}
.daily-tile span{display:block;font-size:12px;font-weight:700;color:#5b7386}
.daily-tile strong{display:block;font-size:22px;font-weight:900;color:#12384c;line-height:1.2}
.daily-tile small{display:block;font-size:11px;color:#7a8999}
.daily-section h5{margin:0 0 7px;font-size:13px;letter-spacing:.07em;text-transform:uppercase;color:#33566a}
.daily-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:34vh;overflow:auto}
.daily-list li{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:baseline;padding:7px 10px;border:1px solid #e3eaf0;border-radius:9px;background:#fff}
.daily-list li strong{font-size:13px;font-weight:900;color:#12384c}
.daily-list li span{font-size:12.5px;color:#4a6577}
.daily-list li small{font-size:11.5px;color:#8496a3}
.daily-note{margin:0;font-size:12.5px;color:#7a8999}

/* ----------------------------------------------------------------
   Readability pass: secondary text was too light and too small to
   read on site. Stronger contrast for helper/grey text.
---------------------------------------------------------------- */
.field-help{font-size:12px;color:#5f7280;line-height:1.45}
.subtle,.muted,small{color:#5f7280}

/* ----------------------------------------------------------------
   Map visibility: taller stage, crisper asset plates. Label sizes live
   in the SVG itself (user units), so they are NOT set from here.
---------------------------------------------------------------- */
.project-map{min-height:470px}
.project-map svg{min-height:450px}
.hero-map-panel .map-stage>.project-map{min-height:470px}
.operational-map-svg .asset-id-plate{stroke:#ffffff;stroke-width:.16}
.operational-map-svg .asset-marker:hover .asset-id-plate{fill:#154b74}


/* ===============================================================
   V6.2 — READABILITY SCALE (generated)
   Every small desktop/tablet text size raised ~15% with a 12px floor,
   asked for on site because labels, table cells and pills were too
   small to read on a tablet in daylight. Map SVG labels are excluded
   (their sizes are SVG user units, not px). Phone layer stays after
   this block and keeps the last word.
=============================================================== */
.nav-item{font-size:16px}
.local-badge{font-size:12.5px}
.date-block{font-size:14px}
.profile small{font-size:12.5px}
.avatar{font-size:14px}
.subtle{font-size:14px}
.legend{font-size:12.5px}
.status-pill{font-size:14px}
.metric-box span{font-size:12.5px}
.info-item span{font-size:12.5px}
.info-item strong{font-size:15px}
.overview-caption{font-size:12.5px}
.key-card span{font-size:12.5px}
.activity-item{font-size:12.5px}
.activity-item strong{font-size:12.5px}
.data-table{font-size:14px}
.page-head p{font-size:15px}
.stat-tile span{font-size:12.5px}
.field label{font-size:12.5px}
.finding-card .finding-id{font-size:12px}
.finding-card p{font-size:14px}
.small-select{font-size:12.5px}
.history-item strong{font-size:14px}
.history-item p{font-size:14px}
.report-card span{font-size:12.5px}
.paste-box textarea{font-size:12.5px}
.paste-box code{font-size:12px}
.toast{font-size:14px}
.coverage-note{font-size:12.5px}
.title-wrap p{font-size:16px}
.top-tab{font-size:15px}
.panel-head h2,.panel-head h3{font-size:16px}
.segmented button,.filter-chip{font-size:14px}
.status-card small{font-size:12px}
.key-card small{font-size:12px}
.coverage-strip{font-size:12px}
.coverage-strip strong{font-size:15px}
.activity-item strong,.activity-item .act-main{font-size:12px}
.report-shortcuts button{font-size:12.5px}
.asset-visual{font-size:12.5px}
.asset-subline{font-size:14px}
.tab-btn{font-size:14px}
.comment-entry{font-size:14px}
.comment-entry small{font-size:12px}
/* V1.3 — persistent SAIS visibility, status colours and owner controls */
.field-help{font-size:12px}
.inline-edit{font-size:12px}
.sais-count{font-size:12px}
.sais-section-head{font-size:14px}
.sais-status-badge{font-size:12px}
.owner-label{font-size:12px}
.point-comment{font-size:12.5px}
.owner-registry span{font-size:12px}
.comment-action-btn{font-size:12px}
.comment-edited{font-size:12px}
.audit-type{font-size:12px}
.mini-state{font-size:12.5px}
.test-pill{font-size:12px}
.preview-identity span{font-size:12.5px}
.preview-primary-line span{font-size:12px}
.preview-primary-line strong{font-size:14px}
.preview-secondary-line{font-size:12px}
.overview-help-line{font-size:12.5px}
.recent-comments>label{font-size:12.5px}
.summary-status-line span{font-size:12px}
.summary-status-line strong{font-size:14px}
.map-zoom-controls .zoom-reset{font-size:12.5px}
.map-zoom-controls span{font-size:12px}
.sidebar-project-overlay span{font-size:14px}
.sidebar-project-overlay small{font-size:12px}
.dashboard-title-text p{font-size:14px}
.sidebar-motion-copy small{font-size:12px}
.sidebar-message small{font-size:12px}
.metric-row-six .metric-box span{font-size:12px}
.metric-row-six .metric-box small{font-size:12px}
.overview-openpoint-strip strong{font-size:12.5px}
.readiness-overview span{font-size:12px}
.readiness-overview small{font-size:12px}
.bucket-pill{font-size:12px}
.inspection-pill{font-size:12px}
.inspection-point-row{font-size:12px}
.compact-btn{font-size:12px}
.inspection-findings-toolbar strong{font-size:15px}
.inspection-findings-toolbar span{font-size:12px}
.inspection-finding-main p{font-size:12.5px}
.inspection-finding-main small{font-size:12px}
.moved-badge{font-size:12px}
.resais-result-control label{font-size:12px}
.ab-side-head span{font-size:12px}
.ab-side-head .muted-btn{font-size:12px}
.ab-side-asset strong{font-size:14px}
.ab-side-asset small{font-size:12px}
.ab-side-foot{font-size:12px}
.liftinstituut-note strong{font-size:14px}
.liftinstituut-note span{font-size:12px}
.extra-kicker{font-size:12px}
.extra-assets button{font-size:12px}
.extra-assets button small{font-size:12px}
.extra-meta{font-size:12px}
.extra-notes{font-size:12px}
.extra-progress-buttons button{font-size:12px}
.extra-asset-group>strong{font-size:12px}
.extra-asset-choice span{font-size:12px}
.extra-asset-choice small{font-size:12px}
.required-note{font-size:12px}
.photo-folder-card strong{font-size:12px}
.photo-folder-card small{font-size:12px}
.photo-thumb-placeholder{font-size:12.5px}
.photo-card-head strong{font-size:12.5px}
.photo-card-head span{font-size:12px}
.photo-card-head time{font-size:12px}
.photo-file-name{font-size:12px}
.photo-card-body p{font-size:12px}
.photo-storage-note{font-size:12px}
.asset-management-head p{font-size:12px}
.asset-management-kpis span{font-size:12px}
.am-card-head h3{font-size:14px}
.am-status-list span,.am-inspection-list span,.am-test-summary span{font-size:12px}
.am-inspection-list small,.am-test-summary small{font-size:12px}
.am-blocker strong{font-size:12px}
.am-blocker p{font-size:12px}
.am-clear{font-size:12px}
.am-extra-list strong{font-size:12px}
.am-extra-list small{font-size:12px}
.am-extra-list>div>span{font-size:12px}
.am-folder-counts span{font-size:12px}
.am-activity-list strong{font-size:12px}
.am-activity-list span{font-size:12px}
.compact-empty{font-size:12px}
.extra-asset-completion-cell strong{font-size:12px}
.extra-asset-status{font-size:12px}
.extra-back-link{font-size:12px}
.extra-summary-status{font-size:14px}
.asset-extra-completion label{font-size:12px}
.extra-assignment-list>span{font-size:12px}
.extra-assignment-chip{font-size:12px}
.extra-assignment-chip strong{font-size:12px}
.extra-choice-progress span{font-size:12px}
.extra-choice-progress select{font-size:12px}
/* ===============================================================
   V4.2 — Asset Control + SAIS outstanding + no-extra=100%
   =============================================================== */
.control-pill{font-size:12px}
.asset-control-select{font-size:12px}
.cell-subtle{font-size:12px}
.asset-management-kpis>div small{font-size:12px}
.work-group-top h3,.test-work-group-head h3{font-size:16px}
.work-group-category,.test-work-group-head span{font-size:12px}
.work-group-meta{font-size:12px}
.work-group-assets span,.test-group-assets span{font-size:12px}
.work-group-assets strong{font-size:12px}
.work-group-assets em,.test-group-assets em{font-size:12px}
.work-scope-note strong{font-size:12px}
.work-scope-note p{font-size:12px}
.test-group-kpis span{font-size:12px}
.test-work-group-card>small{font-size:12px}
.text-link-btn{font-size:12px}
.am-sais-points-list strong{font-size:12px}
.am-sais-points-list p{font-size:12px}
.am-more-note{font-size:12px}
.finding-asset-head>div:first-child strong,.inspection-card-main>div:first-child strong{font-size:15px}
.finding-asset-head>div:first-child span,.inspection-card-main>div:first-child span{font-size:12px}
.finding-asset-total span{font-size:12px}
.finding-asset-metrics span,.finding-asset-classification span{font-size:12px}
.inspection-card-stages button>span:first-child{font-size:12px}
.inspection-card-stages button small{font-size:12px}
.inspection-asset-stage-tab>span:first-child{font-size:12px}
.inspection-asset-stage-tab small{font-size:12px}
.photo-capture-actions span{font-size:12px}
.map-asset-overlay .quick-actions .btn{font-size:12px}
.map-asset-overlay .metric-box span{font-size:12px}
.map-asset-overlay .details-toggle{font-size:12px}
.map-summary-status span{font-size:12px}
.readonly-status-item label{font-size:12px}
.control-columns-pills .control-pill{font-size:12px}
.control-columns-selects label>span{font-size:12px}
.control-column-select{font-size:12px}
/* ===============================================================
   V4.7 — photo viewer, Metrics and printable filtered reports
   =============================================================== */

/* Global print action */
.print-report-btn{font-size:12px}
.photo-open-hint{font-size:12px}
.photo-viewer-head strong{font-size:14px}
.photo-viewer-head span{font-size:12px}
.photo-viewer-loading{font-size:12px}
.photo-viewer-note strong{font-size:12px}
.photo-viewer-note p{font-size:12px}
.asset-detail-photo>strong{font-size:12px}
.asset-detail-photo>small{font-size:12px}
.asset-detail-photo>p{font-size:12px}
.asset-sais-all-card .am-card-head>div small{font-size:12px}
.metrics-kpi span{font-size:12px}
.metrics-kpi small{font-size:12px}
.metric-chart-head h3{font-size:12px}
.metric-legend>span{font-size:12px}
.metric-legend strong{font-size:12px}
.metric-bar-row>span{font-size:12px}
.metric-bar-row>strong{font-size:12px}
.inspection-metric-grid>div>strong{font-size:12px}
.report-builder-intro strong{font-size:12px}
.report-builder-intro span{font-size:12px}
.report-asset-group>strong{font-size:12px}
.report-asset-choice span{font-size:12px}
.report-section-grid label{font-size:12px}
.report-toggle-field>label{font-size:12px}
.report-builder-note{font-size:12px}
.configured-report-cover>div:first-child>span{font-size:12px}
.configured-report-cover p{font-size:12px}
.configured-report-cover>div:last-child strong{font-size:12px}
.configured-report-cover>div:last-child small{font-size:12px}
.configured-report-unit-head span{font-size:12px}
.configured-report-unit-head p{font-size:12px}
.configured-report-unit-head>div:last-child strong{font-size:12.5px}
.configured-report-unit-head>div:last-child small{font-size:12px}
.configured-report-section>h3{font-size:12px}
.configured-report-section h4{font-size:12px}
.configured-report-section table{font-size:12px}
.report-empty{font-size:12px}
.report-summary-grid strong{font-size:12px}
.report-alert{font-size:12px}
.report-metrics-grid strong{font-size:12.5px}
.report-metric-chart>h4{font-size:12px}
.report-metric-donut>strong{font-size:12px}
.report-inspection-metrics>h4{font-size:12px}
.inspection-owner-fixed{font-size:12px}
.verified-green-badge,
.verified-closed-badge{font-size:12px}
.resais-derived-status small{font-size:12px}
.home-pulse-card span{font-size:12px}
.market-nav .nav-icon{font-size:14px}
.market-nav .nav-label{font-size:12px}
.sidebar-intelligence-status{font-size:12px}
.sidebar-intelligence-grid strong{font-size:12px}
.sidebar-photo-caption strong{font-size:15px}
.command-deck-head h3{font-size:12px}
.command-deck-head p{font-size:12px}
.command-panel-head h4{font-size:12px}
.critical-actions-list>button>div>strong{font-size:12px}
.command-empty{font-size:12px}
.site-pulse-grid strong{font-size:16px}
.command-evidence-line strong{font-size:12px}
.command-live{font-size:12px}
.command-deck-head p strong{font-size:12.5px}
.command-panel-head>div>span{font-size:12px}
.command-panel-head>small{font-size:12px}
.critical-actions-list>button>b{font-size:12px}
.critical-actions-list>button>div>span{font-size:12px}
.critical-actions-list>button>div>small i{font-size:12px}
.critical-actions-list>button>em{font-size:12px}
.delivery-radar>button>span{font-size:12px}
.delivery-radar>button>strong{font-size:12px}
.site-pulse-grid span{font-size:12px}
.site-pulse-grid small{font-size:12px}
.command-last-update span,
.command-evidence-line span{font-size:12px}
.command-last-update strong{font-size:12px}
.command-evidence-line small{font-size:12px}
.mobility-nav .nav-icon{font-size:14px}
.mobility-nav .nav-label{font-size:12px}
.mobility-visual-footer>div:first-child span{font-size:12px}
.asset-machine-footer>div strong{font-size:12px}
.asset-management-head-visual .asset-machine-compact .asset-machine-footer>div strong{font-size:12px}
.pier-twin-footer strong{font-size:12px}
.tablet-backup-title>div>span{font-size:12px}
.tablet-backup-title p{font-size:12px}
.tablet-backup-health{font-size:12px}
.tablet-backup-status-grid span{font-size:12px}
.tablet-backup-status-grid strong{font-size:15px}
.tablet-backup-note{font-size:12px}
.tablet-backup-progress{font-size:12px}
.home-backup-copy h3{font-size:14px}
.home-backup-meta strong{font-size:12px}
.legend .sais-legend-dot i{font-size:12px}
.sais-stream-pill>b{font-size:12px}
.sais-stream-pill>strong{font-size:12px}
.metric-stream-finished strong{font-size:12px}
.home-extra-metrics-head h4{font-size:12px}
/* Assets: readiness/software are now editable directly in the table */
.asset-readiness-select,
.asset-software-select{font-size:12px}
.resais-attempt-register-head>div strong{font-size:12px}
.attempt-sequence strong{font-size:16px}
.home-extra-work-main strong{font-size:12px}
.home-extra-work-progress>strong{font-size:12px}
.home-extra-empty strong{font-size:12px}
.asset-stream-free>strong{font-size:12px}
.finding-list-scope-head>div>strong{font-size:12px}
.finding-list-asset-chip{font-size:12px}
.finding-list-summary strong{font-size:12px}
.findings-list-table td:first-child strong{font-size:12px}
.findings-print-search{font-size:12px}
.metrics-domain-kpi-grid span{font-size:12px}
.metrics-domain-block>header h4{font-size:12px}
.metrics-domain-block .metrics-domain-kpi-grid strong{font-size:16px}
.home-deadline-head h3{font-size:14px}
.home-deadline-head>strong{font-size:12px}
.auth-project-mark span{font-size:15px}
.auth-project-mark small{font-size:12px}
.auth-brand span{font-size:12px}
.auth-copy>span{font-size:12px}
.auth-copy p{font-size:12.5px}
.auth-form label{font-size:12px}
.auth-form input{font-size:16px}
.auth-primary{font-size:12.5px}
.auth-access-summary{font-size:12px}
.auth-message{font-size:12px}
.auth-panel footer small{font-size:12px}
.viewer-mode-chip{font-size:12px}
.access-manager-summary span{font-size:12px}
.access-manager-summary strong{font-size:16px}
.access-user-avatar{font-size:12px}
.access-user-row>div:nth-child(2) strong{font-size:12px}
.access-add-viewer p{font-size:12px}
.access-security-note{font-size:12px}
/* ---------------------------------------------------------------
   "Since your last visit" digest, its topbar bell and the NEW marker
---------------------------------------------------------------- */
.changes-bell{font-size:12.5px}
.changes-bell-icon{font-size:12.5px}
.changes-bell-count{font-size:12.5px}
.digest-lead{font-size:15px}
.digest-asset{font-size:15px}
.digest-count{font-size:14px}
.digest-count b{font-size:16px}
.digest-chip{font-size:12.5px}
.digest-meta{font-size:12.5px}
.digest-note{font-size:12.5px}
.new-since-visit{font-size:12px}
/* ----------------------------------------------------------------
   Daily report (shown after sign-in, printable) + its topbar button
---------------------------------------------------------------- */
.daily-report-btn{font-size:15px}
.daily-head span{font-size:12.5px}
.daily-deadline small{font-size:14px}
.daily-tile span{font-size:14px}
.daily-tile small{font-size:12.5px}
.daily-section h5{font-size:15px}
.daily-list li strong{font-size:15px}
.daily-list li span{font-size:14.5px}
.daily-list li small{font-size:13px}
.daily-note{font-size:14.5px}
/* ----------------------------------------------------------------
   Readability pass: secondary text was too light and too small to
   read on site. Stronger contrast for helper/grey text.
---------------------------------------------------------------- */
.field-help{font-size:14px}


/* ==============================================================
   V6.3 — ESCALATOR TWIN (sidebar) + METRICS STUDIO
   The sidebar card now shows a live escalator instead of a pier
   plan: the step band, handrail and drive all move, which is what
   this project actually delivers.
   ============================================================== */
.escalator-twin-svg .esc-tread{fill:url(#escTread);stroke:#e8f7ff;stroke-opacity:.30;stroke-width:.28}
.escalator-twin-svg .esc-riser{fill:url(#escRiser);stroke:#8fc4dd;stroke-opacity:.22;stroke-width:.25}
.escalator-twin-svg .esc-cleat{stroke:#5c8ba3;stroke-opacity:.55;stroke-width:.32}
.escalator-twin-svg .esc-comb{fill:#f4c33f;opacity:.92}
.escalator-twin-svg .esc-lattice path{stroke:#5aa6c7;stroke-opacity:.28;stroke-width:.55;fill:none}
.escalator-twin-svg .esc-step-band{animation:escStepFlow 1.55s linear infinite;will-change:transform}
@keyframes escStepFlow{from{transform:translate(0,0)}to{transform:translate(12px,-6px)}}
.escalator-twin-svg .esc-handrail{stroke-dasharray:14 10;animation:escRailFlow 1.9s linear infinite;filter:drop-shadow(0 0 2px rgba(79,210,251,.4))}
.escalator-twin-svg .esc-handrail-return{stroke-dasharray:10 12;animation:escRailFlowBack 2.4s linear infinite}
@keyframes escRailFlow{to{stroke-dashoffset:-48}}
@keyframes escRailFlowBack{to{stroke-dashoffset:44}}
.escalator-twin-svg .esc-glass{animation:escGlassBreath 6.5s ease-in-out infinite}
@keyframes escGlassBreath{0%,100%{opacity:.85}50%{opacity:1}}
.escalator-twin-svg .esc-led{stroke:#e7fbff;stroke-width:.5;filter:drop-shadow(0 0 3px rgba(129,226,255,.5))}
.escalator-twin-svg .led-green{fill:#3fd67f}
.escalator-twin-svg .led-yellow{fill:#f0c236}
.escalator-twin-svg .esc-led:nth-child(1){animation:escLed 2.6s ease-in-out infinite}
.escalator-twin-svg .esc-led:nth-child(2){animation:escLed 3.1s ease-in-out infinite .6s}
.escalator-twin-svg .esc-led:nth-child(3){animation:escLed 2.9s ease-in-out infinite 1.2s}
@keyframes escLed{0%,100%{opacity:.45;r:2.2}50%{opacity:1;r:2.8}}
.escalator-twin-svg .esc-drive{animation:escDrive 1.55s ease-in-out infinite}
.escalator-twin-svg .esc-drive-glow{animation:escDriveGlow 1.55s ease-in-out infinite}
@keyframes escDrive{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes escDriveGlow{0%,100%{opacity:.5}50%{opacity:.95}}
/* ---- Metrics studio ---------------------------------------------- */
.metrics-page .page-head h2{font-size:27px;letter-spacing:-.5px}
.metrics-pulse{
  position:relative;overflow:hidden;
  display:grid;grid-template-columns:170px minmax(0,1fr) minmax(300px,.9fr);
  gap:18px;align-items:center;
  margin-bottom:14px;padding:18px 20px;
  border:1px solid rgba(97,190,225,.22);border-radius:16px;
  background:
    radial-gradient(circle at 12% 18%,rgba(70,199,245,.20),transparent 42%),
    radial-gradient(circle at 88% 92%,rgba(42,192,111,.16),transparent 46%),
    linear-gradient(135deg,#0c2740 0%,#0a1f34 52%,#071726 100%);
  box-shadow:0 18px 42px rgba(8,26,44,.28),inset 0 1px 0 rgba(219,246,255,.07);
  color:#eaf6ff;
}
.metrics-pulse:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(118deg,transparent 0 40%,rgba(194,239,255,.05) 50%,transparent 62%)}
.pulse-ring-wrap{position:relative;width:150px;height:150px;justify-self:center}
.pulse-ring{width:100%;height:100%;transform:rotate(-90deg)}
.pulse-ring-track{fill:none;stroke:rgba(150,205,232,.16);stroke-width:11}
.pulse-ring-value{fill:none;stroke:url(#mpRing);stroke-width:11;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(80,220,255,.45));animation:pulseRingIn 1.15s cubic-bezier(.22,.7,.3,1) both}
@keyframes pulseRingIn{from{stroke-dashoffset:340}}
.pulse-ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.pulse-ring-label strong{font-size:33px;font-weight:900;letter-spacing:-1px;color:#f2fbff}
.pulse-ring-label span{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8fc0d8}
.pulse-eyebrow{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.16em;color:#67d3f7}
.pulse-copy h3{margin:6px 0 4px;font-size:23px;letter-spacing:-.4px;color:#f4fbff}
.pulse-copy p{margin:0;color:#a9c9dc;font-size:14px}
.pulse-badges{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.pulse-badge{padding:5px 11px;border-radius:999px;font-size:12px;font-weight:800;border:1px solid rgba(140,200,228,.24);background:rgba(16,52,78,.5);color:#cfe8f6}
.pulse-badge.good{background:rgba(30,133,79,.28);border-color:rgba(72,214,140,.45);color:#8ff0bb}
.pulse-badge.bad{background:rgba(150,42,50,.3);border-color:rgba(240,120,130,.45);color:#ffc0c6}
.pulse-tiles{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pulse-tiles>div{padding:10px 12px;border:1px solid rgba(140,200,228,.18);border-radius:11px;background:rgba(9,32,52,.55)}
.pulse-tiles span{display:block;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#86b3cb}
.pulse-tiles strong{display:block;font-size:22px;font-weight:900;margin-top:2px;color:#f1fbff}
.pulse-tiles small{display:block;margin-top:2px;font-size:11px;color:#8ab1c7}
.pulse-tiles .pulse-tile-alert{border-color:rgba(240,130,140,.4);background:rgba(78,24,30,.42)}
.pulse-tiles .pulse-tile-alert strong{color:#ffd3d7}

.metrics-chart-panel{margin-bottom:14px}
.metrics-chart-panel .panel-head{align-items:flex-start;flex-wrap:wrap}
.chart-key{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:#5d7286;font-weight:700}
.chart-key span{display:inline-flex;align-items:center;gap:6px}
.chart-key i{width:16px;height:0;border-top:3px solid #2f8fd6;border-radius:3px}
.chart-key .key-dash{border-top-style:dashed;border-top-color:#e0902c}
.chart-key .key-target{border-top-style:dashed;border-top-color:#2aa45a}
.chart-key .key-bar{height:12px;width:8px;border:0;border-radius:3px;background:linear-gradient(180deg,#59b9f0,#2472b8)}
.chart-frame{padding:12px 14px 4px}
.burndown-svg{width:100%;height:250px;display:block;overflow:visible}
.bd-grid{stroke:#e3ebf2;stroke-width:1}
.bd-axis{fill:#7b8b9c;font-size:11px;font-weight:700}
.bd-line{fill:none;stroke:#2f8fd6;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 2px 3px rgba(47,143,214,.28));stroke-dasharray:2600;animation:bdDraw 1.5s ease-out both}
@keyframes bdDraw{from{stroke-dashoffset:2600}to{stroke-dashoffset:0}}
.bd-area{animation:bdFade 1.3s ease-out .25s both}
@keyframes bdFade{from{opacity:0}to{opacity:1}}
.bd-pace{stroke:#e0902c;stroke-width:2.2;stroke-dasharray:7 6}
.bd-target{stroke:#2aa45a;stroke-width:2.2;stroke-dasharray:4 6}
.bd-deadline{stroke:#c2410c;stroke-width:1.6;stroke-dasharray:3 4;opacity:.7}
.bd-dot{fill:#fff;stroke:#2f8fd6;stroke-width:3}
.chart-foot{display:flex;flex-wrap:wrap;gap:18px;padding:6px 14px 13px;color:#5d7286;font-size:13px}
.chart-foot strong{color:#12324f;font-size:15px}

.velocity-chart{position:relative;display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:8px;align-items:end;height:190px;padding:16px 16px 8px}
.velocity-target-line{position:absolute;left:12px;right:12px;bottom:calc(30px + 152px * var(--vel-target,0));border-top:2px dashed #2aa45a;pointer-events:none}
.velocity-target-line span{position:absolute;right:0;top:-17px;font-size:11px;font-weight:800;color:#1f8b4c;background:#fff;padding:0 5px;border-radius:5px}
.velocity-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px}
.velocity-col i{display:block;width:100%;max-width:34px;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,#59b9f0,#2472b8);animation:velGrow .8s cubic-bezier(.2,.75,.3,1) both}
@keyframes velGrow{from{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1)}}
.velocity-col i.vel-good{background:linear-gradient(180deg,#49d489,#1f8b4c)}
.velocity-col i.vel-none{background:#dfe7ee}
.velocity-col b{font-size:12px;font-weight:900;color:#173453;min-height:14px}
.velocity-col span{font-size:11px;font-weight:800;color:#7b8b9c}
.velocity-chart-empty{height:150px}
.velocity-empty-note{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);display:flex;flex-direction:column;gap:3px;align-items:center;text-align:center;padding:12px 18px;border:1px dashed #cbd8e4;border-radius:12px;background:rgba(247,250,252,.9)}
.velocity-empty-note strong{font-size:14px;color:#28496b}
.velocity-empty-note span{font-size:12px;color:#71849a}

.metrics-heatmap-section .panel-head{align-items:center}
.heat-scale{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:800;color:#6b7c8f}
.heat-scale i{width:120px;height:9px;border-radius:999px;background:linear-gradient(90deg,#2aa45a,#efbd2f,#d44755)}
.metrics-heatmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;padding:14px}
.heat-tile{
  position:relative;display:flex;flex-direction:column;gap:2px;align-items:flex-start;
  padding:10px 10px 9px;border-radius:11px;border:1px solid rgba(11,40,66,.10);
  background:hsl(calc(148 - var(--heat,0) * 148) 62% calc(92% - var(--heat,0) * 22%));
  color:#123049;text-align:left;transition:transform .14s ease,box-shadow .16s ease;
}
.heat-tile:hover{transform:translateY(-2px);box-shadow:0 10px 22px rgba(15,45,72,.18);border-color:rgba(11,40,66,.24)}
.heat-tile strong{font-size:14px;font-weight:900;letter-spacing:-.2px}
.heat-tile span{font-size:19px;font-weight:900;line-height:1}
.heat-tile em{font-size:10px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#a3121f}

.metrics-kpi-grid .metrics-kpi{position:relative;overflow:hidden;transition:transform .14s ease,box-shadow .16s ease,border-color .16s ease}
.metrics-kpi-grid .metrics-kpi:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#59b9f0,#2aa45a)}
.metrics-kpi-grid .metrics-kpi.issue-metric-kpi:before{background:linear-gradient(90deg,#efbd2f,#d44755)}
.metrics-kpi-grid .metrics-kpi:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(15,45,72,.13);border-color:#bcd4e6}
.metric-chart-card{transition:transform .14s ease,box-shadow .16s ease}
.metric-chart-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(15,45,72,.12)}
.metric-bar-row>div>i{animation:barGrow .85s cubic-bezier(.2,.75,.3,1) both;transform-origin:left}
@keyframes barGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

@media(max-width:1180px){
  .metrics-pulse{grid-template-columns:150px minmax(0,1fr);grid-template-areas:"ring copy" "tiles tiles"}
  .pulse-ring-wrap{grid-area:ring}.pulse-copy{grid-area:copy}.pulse-tiles{grid-area:tiles}
}
@media(max-width:760px){
  .metrics-pulse{grid-template-columns:1fr;grid-template-areas:"ring" "copy" "tiles";text-align:center;padding:16px 14px}
  .pulse-badges{justify-content:center}
  .pulse-tiles>div{text-align:left}
  .burndown-svg{height:210px}
  .velocity-chart{grid-template-columns:repeat(7,minmax(0,1fr));height:170px}
  .velocity-col:nth-child(even):not(:first-child){display:none}
  .metrics-heatmap{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));padding:10px}
}

@media(prefers-reduced-motion:reduce){
  .escalator-twin-svg .esc-step-band,.escalator-twin-svg .esc-handrail,
  .escalator-twin-svg .esc-handrail-return,.escalator-twin-svg .esc-led,
  .escalator-twin-svg .esc-drive,.escalator-twin-svg .esc-drive-glow,
  .escalator-twin-svg .esc-glass{animation:none}
}

/* ===============================================================
   V7.0 — Workspace launcher, shared project deadline editor
   =============================================================== */
.launcher[hidden]{display:none!important}
.launcher{position:fixed;inset:0;z-index:90;overflow-y:auto;overflow-x:hidden;background:#061521;color:#eaf6ff;-webkit-overflow-scrolling:touch}
body.launcher-mode{overflow:hidden}
.launch-screen{position:relative;min-height:100%;display:flex;flex-direction:column;padding:22px clamp(18px,3.2vw,48px) 18px;isolation:isolate}
.launch-bg{position:fixed;inset:0;z-index:-1;overflow:hidden;background:linear-gradient(150deg,#061521 0%,#0a2234 46%,#0b3049 100%)}
.launch-grid{position:absolute;left:-20%;right:-20%;bottom:-30%;height:75%;opacity:.2;background-image:linear-gradient(rgba(85,187,225,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(85,187,225,.22) 1px,transparent 1px);background-size:52px 52px;transform:perspective(520px) rotateX(62deg);transform-origin:center top;animation:launchGrid 14s linear infinite}
@keyframes launchGrid{to{background-position:0 52px,0 0}}
.launch-glow{position:absolute;border-radius:50%;filter:blur(6px)}
.launch-glow.one{width:620px;height:620px;left:-120px;top:-180px;background:radial-gradient(circle,rgba(67,232,255,.14),transparent 66%)}
.launch-glow.two{width:720px;height:720px;right:-200px;bottom:-260px;background:radial-gradient(circle,rgba(51,209,122,.10),transparent 66%)}
.launch-head{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.launch-brand{display:flex;align-items:center;gap:14px;min-width:0}
.launch-logo{width:178px;height:auto;display:block;flex:none}
.launch-brand-tag{padding:5px 10px;border:1px solid rgba(126,196,230,.28);border-radius:999px;color:#8fd8f5;font-size:11px;font-weight:850;letter-spacing:.16em;white-space:nowrap}
.launch-head-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.launch-deadline{display:grid;gap:1px;padding:8px 14px;border-radius:12px;background:rgba(212,71,85,.12);border:1px solid rgba(255,120,132,.32);min-width:190px}
.launch-deadline span{color:#ff9aa4;font-size:10px;font-weight:900;letter-spacing:.14em}
.launch-deadline strong{color:#fff;font-size:18px;font-weight:850;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1.15}
.launch-deadline small{color:#9fb6c7;font-size:11px}
.launch-deadline.late{background:rgba(51,209,122,.12);border-color:rgba(51,209,122,.36)}
.launch-deadline.late span{color:#7fe3a9}
.launch-edit{height:40px;padding:0 14px;border-radius:10px;border:1px solid rgba(126,196,230,.36);background:rgba(16,42,71,.6);color:#d9f3ff;font:inherit;font-size:13px;font-weight:800;cursor:pointer;transition:.18s}
.launch-edit:hover,.launch-edit:focus-visible{background:#1e9fe8;border-color:#43e8ff;color:#fff;outline:none}
.launch-user{display:flex;align-items:center;gap:9px;padding:5px 12px 5px 5px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(126,196,230,.18)}
.launch-avatar{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,#43e8ff,#1765b7);color:#04131f;font-weight:900;font-size:13px}
.launch-user strong{display:block;color:#fff;font-size:13px;line-height:1.2}
.launch-user small{display:flex;align-items:center;gap:6px;color:#8fa9bb;font-size:11px}
.launch-role{font-style:normal;padding:1px 6px;border-radius:5px;font-size:9.5px;font-weight:900;letter-spacing:.08em}
.launch-role.admin{background:rgba(67,232,255,.16);color:#7deeff}
.launch-role.viewer{background:rgba(255,196,77,.16);color:#ffd27a}
.launch-logout{width:40px;height:40px;border-radius:10px;border:1px solid rgba(126,196,230,.26);background:transparent;color:#a8c6d8;display:grid;place-items:center;cursor:pointer;transition:.18s}
.launch-logout svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.launch-logout:hover,.launch-logout:focus-visible{color:#fff;border-color:#ff8a95;background:rgba(212,71,85,.22);outline:none}
.launch-title{margin:clamp(18px,4vh,44px) 0 clamp(16px,3vh,30px)}
.launch-title span{color:#43e8ff;font-size:12px;font-weight:900;letter-spacing:.2em}
.launch-title h1{margin:6px 0 6px;color:#fff;font-size:clamp(30px,3.6vw,50px);line-height:1.04;letter-spacing:-.035em}
.launch-title h1 b{color:#43e8ff}
.launch-title p{margin:0;color:#9db5c6;font-size:15px;max-width:640px}
.launch-tiles{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,1.8vw,26px);min-height:min(560px,calc(100vh - 290px))}
.launch-tile{position:relative;display:flex;flex-direction:column;text-align:left;padding:22px 24px 20px;border-radius:22px;border:1px solid rgba(126,196,230,.2);background:linear-gradient(160deg,rgba(16,42,71,.86),rgba(10,26,45,.92));color:inherit;font:inherit;cursor:pointer;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.28);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease;animation:launchIn .55s ease both}
.launch-tile.tile-nen{animation-delay:.08s}
@keyframes launchIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.launch-tile:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(circle at 80% 0%,rgba(67,232,255,.18),transparent 55%)}
.launch-tile.tile-nen:before{background:radial-gradient(circle at 80% 0%,rgba(51,209,122,.17),transparent 55%)}
.launch-tile:after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,#43e8ff,#1e9fe8,#1765b7)}
.launch-tile.tile-nen:after{background:linear-gradient(90deg,#33d17a,#43e8ff,#1e9fe8)}
.launch-tile:hover,.launch-tile:focus-visible{transform:translateY(-4px);border-color:rgba(67,232,255,.6);box-shadow:0 30px 70px rgba(0,0,0,.36),0 0 0 1px rgba(67,232,255,.25);outline:none}
.launch-tile.tile-nen:hover,.launch-tile.tile-nen:focus-visible{border-color:rgba(51,209,122,.6);box-shadow:0 30px 70px rgba(0,0,0,.36),0 0 0 1px rgba(51,209,122,.25)}
.launch-tile:hover:before,.launch-tile:focus-visible:before{opacity:1}
.launch-tile-top{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative}
.launch-kicker{display:inline-flex;align-items:center;gap:8px;color:#8fd8f5;font-size:11px;font-weight:900;letter-spacing:.16em}
.launch-kicker i{width:8px;height:8px;border-radius:50%;background:#43e8ff;box-shadow:0 0 0 4px rgba(67,232,255,.16);animation:launchPulse 2.2s ease-in-out infinite}
.tile-nen .launch-kicker{color:#8ff0b8}
.tile-nen .launch-kicker i{background:#33d17a;box-shadow:0 0 0 4px rgba(51,209,122,.16)}
@keyframes launchPulse{50%{box-shadow:0 0 0 7px rgba(67,232,255,0)}}
.launch-key{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;border:1px solid rgba(126,196,230,.3);color:#9fc0d4;font-size:12px;font-weight:800}
.launch-visual{position:relative;flex:1;min-height:150px;display:flex;align-items:center;justify-content:center;margin:8px 0 6px}
.launch-esc{width:min(100%,460px);height:auto;max-height:220px;filter:drop-shadow(0 18px 30px rgba(30,159,232,.25))}
.launch-steps{animation:launchStairs 1.1s linear infinite}
@keyframes launchStairs{from{transform:translate(0,0)}to{transform:translate(16px,-5.6px)}}
.launch-rail{animation:launchRail 1.6s linear infinite}
@keyframes launchRail{to{stroke-dashoffset:-16.95}}
.nen-visual{gap:clamp(16px,3vw,40px)}
.launch-ring{position:relative;width:clamp(120px,13vw,170px);aspect-ratio:1;flex:none}
.launch-ring svg{width:100%;height:100%;transform:rotate(-90deg);filter:drop-shadow(0 12px 26px rgba(51,209,122,.22))}
.launch-ring-fg{transition:stroke-dashoffset 1s ease;animation:launchRing 1.2s ease both}
@keyframes launchRing{from{stroke-dashoffset:289}}
.launch-ring>div{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.launch-ring strong{color:#fff;font-size:clamp(26px,2.6vw,36px);font-weight:850;letter-spacing:-.03em;line-height:1}
.launch-ring span{color:#8ff0b8;font-size:10px;font-weight:900;letter-spacing:.16em;margin-top:4px}
.launch-nen-flow{display:grid;gap:9px;counter-reset:flow}
.launch-nen-flow span{position:relative;display:flex;align-items:center;gap:10px;color:#8fa9bb;font-size:13px;font-weight:700;counter-increment:flow}
.launch-nen-flow span:before{content:counter(flow);width:24px;height:24px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(126,196,230,.3);font-size:11px;font-weight:900;color:#9fc0d4;flex:none}
.launch-nen-flow span.on{color:#e6fff1}
.launch-nen-flow span.on:before{content:"✓";background:#33d17a;border-color:#33d17a;color:#04131f}
.launch-tile-body{position:relative}
.launch-tile h2{margin:0 0 6px;color:#fff;font-size:clamp(24px,2.3vw,32px);letter-spacing:-.03em;line-height:1.1}
.launch-tile p{margin:0 0 14px;color:#a6bccb;font-size:14px;line-height:1.45;max-width:560px}
.launch-progress{margin-bottom:12px}
.launch-progress>div:first-child{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.launch-progress span{color:#9fb6c7;font-size:12px;font-weight:700}
.launch-progress strong{color:#fff;font-size:15px;font-variant-numeric:tabular-nums}
.launch-bar{height:8px;border-radius:99px;background:rgba(126,196,230,.14);overflow:hidden}
.launch-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1765b7,#1e9fe8,#43e8ff);transition:width .8s ease}
.launch-bar.nen i{background:linear-gradient(90deg,#1e9fe8,#43e8ff,#33d17a)}
.launch-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.launch-stat{padding:9px 10px;border-radius:12px;background:rgba(4,19,31,.42);border:1px solid rgba(126,196,230,.13);min-width:0}
.launch-stat.wide{grid-column:1/-1}
.launch-stat span{display:block;color:#8fa9bb;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.launch-stat strong{display:block;color:#fff;font-size:22px;line-height:1.15;font-variant-numeric:tabular-nums}
.launch-stat small{display:block;color:#7f97a9;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.launch-cta{position:relative;display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding:13px 16px;border-radius:13px;background:linear-gradient(90deg,#1765b7,#1e9fe8);color:#fff;font-size:15px;font-weight:850;transition:.25s}
.tile-nen .launch-cta{background:linear-gradient(90deg,#167a49,#22a861)}
.launch-cta svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s}
.launch-tile:hover .launch-cta svg,.launch-tile:focus-visible .launch-cta svg{transform:translateX(5px)}
.launch-tile:hover .launch-cta{filter:brightness(1.1)}
.launch-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px;color:#7f97a9;font-size:12px}
.launch-foot b{color:#cfe6f3}
.launch-foot kbd{display:inline-block;min-width:18px;padding:0 5px;border:1px solid rgba(126,196,230,.3);border-radius:5px;color:#cfe6f3;font:inherit;font-size:11px;text-align:center}
@media (max-width:1100px){.launch-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:860px){
  .launch-screen{padding:16px 14px 16px}
  .launch-tiles{grid-template-columns:1fr;min-height:0}
  .launch-tile{padding:18px 16px 16px;border-radius:18px}
  .launch-visual{min-height:120px;flex:none}
  .launch-esc{max-height:150px}
  .launch-title{margin:18px 0 14px}
  .launch-title p{font-size:13px}
  .launch-head{gap:10px}
  .launch-head-tools{width:100%;justify-content:flex-start;display:grid;grid-template-columns:1fr auto;gap:8px}
  .launch-deadline{grid-column:1/-1;min-width:0}
  .launch-user{min-width:0}
  .launch-user>div{min-width:0}
  .launch-user strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .launch-head-tools .launch-edit{grid-column:1/2;grid-row:3}
  .launch-head-tools .launch-logout{grid-column:2/3;grid-row:2}
  .launch-foot span:last-child{display:none}
}
@media (max-width:420px){.launch-logo{width:146px}.launch-brand-tag{display:none}.launch-nen-flow span{font-size:12px}.launch-stat strong{font-size:19px}}
@media (prefers-reduced-motion:reduce){.launch-grid,.launch-steps,.launch-rail,.launch-kicker i,.launch-tile,.launch-ring-fg{animation:none}}

/* Topbar + sidebar workspace switch */
.workspaces-btn{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 13px;border-radius:10px;border:1px solid #cfe0ee;background:#fff;color:#123a5c;font:inherit;font-size:13px;font-weight:800;white-space:nowrap;cursor:pointer;transition:.18s}
.workspaces-btn:hover,.workspaces-btn:focus-visible{border-color:#1e9fe8;color:#1765b7;box-shadow:0 0 0 3px rgba(30,159,232,.14);outline:none}
/* Desktop/tablet reach the launcher from the sidebar; the topbar is already
   full between 861px and 1800px, so the topbar copy is phone + wide only. */
@media (min-width:861px) and (max-width:1800px){.workspaces-btn{display:none!important}}
.nav-workspaces{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0 4px;padding-top:10px;border-top:1px solid rgba(126,196,230,.16)}
.ws-link{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;overflow:hidden;min-height:34px;padding:0 6px;border-radius:9px;border:1px solid rgba(126,196,230,.24);background:rgba(255,255,255,.04);color:#cfe6f3;font:inherit;font-size:11.5px;font-weight:800;text-decoration:none;cursor:pointer;white-space:nowrap;transition:.18s}
.ws-ico{width:15px;height:15px;flex:none;fill:currentColor;stroke:none}
.workspaces-btn .ws-ico{color:#1e9fe8}
.ws-link .ws-ico{color:#43e8ff}
.ws-link span{color:#43e8ff}
.ws-link b{color:#7fe3a9;font-weight:800}
.ws-link.ws-nen span{color:#33d17a}
.ws-link:hover,.ws-link:focus-visible{border-color:#43e8ff;background:rgba(67,232,255,.1);color:#fff;outline:none}

/* Home deadline card — editable date */
.home-deadline-head{flex-wrap:wrap}
.home-deadline-when{display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:0;margin-left:auto}
.home-deadline-when strong{color:#8f2d37;font-size:12px;white-space:nowrap}
.home-deadline-card.deadline-reached .home-deadline-when strong{color:#247744}
.deadline-edit-btn{padding:3px 9px;border-radius:7px;border:1px solid #e4c3c7;background:#fff6f7;color:#8f2d37;font:inherit;font-size:10.5px;font-weight:800;cursor:pointer;white-space:nowrap;transition:.18s}
.deadline-edit-btn:hover,.deadline-edit-btn:focus-visible{background:#8f2d37;border-color:#8f2d37;color:#fff;outline:none}
.home-deadline-card.deadline-reached .deadline-edit-btn{border-color:#bfe2cc;background:#f2fbf5;color:#247744}

/* Deadline editor modal */
.deadline-editor{display:grid;gap:12px;min-width:min(440px,100%)}
.deadline-editor .subtle{margin:0;color:#6a7b8e;font-size:13px}
.deadline-editor label{display:grid;gap:5px;color:#4b5f73;font-size:12px;font-weight:800}
.deadline-editor input{height:40px;padding:0 11px;border:1px solid #dbe4ed;border-radius:9px;font:inherit;font-size:14px;color:#0d1d34;background:#fff}
.deadline-editor input:focus{border-color:#1e9fe8;box-shadow:0 0 0 3px rgba(30,159,232,.14);outline:none}
.deadline-editor-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:10px}
.deadline-preview{padding:10px 12px;border-radius:10px;background:#eef6fd;border:1px solid #d4e7f7;color:#173d57;font-size:13px}
.deadline-history{display:grid;gap:6px;padding-top:10px;border-top:1px solid #e8edf1}
.deadline-history>span{color:#6a7b8e;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.deadline-history>div{display:flex;flex-wrap:wrap;gap:4px 8px;color:#4b5f73;font-size:12px}
.deadline-history strong{color:#0d1d34}
@media (max-width:520px){.deadline-editor-grid{grid-template-columns:1fr}}

/* ===============================================================
   V6.1 — PHONE LAYER (authoritative; must stay last in this file)

   The V5.2 and V5.4 sidebar redesigns above set `min-height:100vh` and
   `grid-template-columns` with `!important`, which silently defeated the
   original `max-width:820px` rules: on a phone the navigation column grew
   to the full viewport and pushed every page out of sight. Rather than
   patching those stale rules in place, this block is the single source of
   truth for phone layout and deliberately outranks them.

   Below 861px the sidebar becomes an off-canvas drawer driven by
   mobile-nav.js; above it nothing here applies.
   =============================================================== */

.nav-toggle{display:none}
.nav-scrim{display:none}

@media(max-width:860px){

  /* ---- shell ------------------------------------------------- */
  .app-shell{
    display:block!important;
    grid-template-columns:none!important;
    min-height:100dvh;
  }
  .workspace{min-width:0;width:100%}

  /* ---- sidebar as a drawer ----------------------------------- */
  #appSidebar.sidebar{
    position:fixed!important;
    top:0;
    left:0;
    z-index:130;
    width:min(84vw,300px);
    height:100vh;
    height:100dvh;
    min-height:0!important;
    max-height:none;
    padding:0!important;
    flex-direction:column!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    -webkit-overflow-scrolling:touch;
    transform:translateX(-100%);
    transition:transform .24s ease;
    box-shadow:none;
  }
  body.nav-open #appSidebar.sidebar{
    transform:translateX(0);
    box-shadow:0 0 44px rgba(0,0,0,.5);
  }
  .sidebar-shell{
    min-height:0!important;
    height:auto!important;
    padding:14px 12px 24px!important;
    gap:14px;
  }
  /* The shell is a flex column sized for a full-height desktop rail. In a
     scrolling drawer its children must keep their natural height instead of
     being squeezed to fit: without this the 48px nav rows collapsed to 37px
     and the PROJECT SIGNAL card was crushed to zero height. */
  .sidebar-shell>*{flex:0 0 auto}
  .nav-item{flex:0 0 auto}
  .pier-twin-card{margin-top:0!important}
  /* The decorative backdrops are absolutely positioned against the aside,
     which now scrolls; pin them so they cover the drawer, not just its top. */
  .mobility-sidebar-bg,.mobility-sidebar-grid,
  .sidebar-photo-backdrop,.sidebar-photo-shade{position:fixed!important;width:min(84vw,300px);height:100dvh}

  .nav-list{flex-direction:column!important;gap:6px}
  /* Deliberately ID-anchored: several earlier V5.x blocks set nav-item
     padding/min-height with !important and three-class specificity, which beat
     a plain `.nav-item` rule even from the end of the file. Touch targets must
     win, so the drawer's own id carries them. */
  #appSidebar .nav-list .nav-item{
    width:100%!important;
    min-width:0!important;
    min-height:48px!important;
    height:auto!important;
    justify-content:flex-start!important;
    padding:12px 12px!important;
    font-size:15px!important;
  }
  #appSidebar .nav-list .nav-item .nav-label{display:inline!important}
  .brand-block{width:auto!important;min-width:0!important;height:auto!important}


  /* ---- readability floor (generated) --------------------------
     The desktop design leans on 6-9px microtype, which is illegible on a
     phone. Every selector below is one that declares a sub-10px font-size
     somewhere earlier in this file, re-declared here at a readable size.
     SVG map labels are excluded on purpose: they scale with the viewBox. */
  .ab-side-asset small,
  .ab-side-foot,
  .access-admin-lock,
  .access-manager-summary span,
  .access-security-note,
  .access-user-row>div:nth-child(2) span,
  .access-user-row>em,
  .am-activity-list small,
  .am-activity-list span,
  .am-extra-list small,
  .am-folder-counts span,
  .am-inspection-list small,.am-test-summary small,
  .am-more-note,
  .am-sais-points-all .am-sais-row small,
  .am-sais-points-list p,
  .asset-detail-photo-image span,
  .asset-detail-photo>p,
  .asset-detail-photo>small,
  .asset-machine-footer>div span,
  .asset-machine-footer>small,
  .asset-machine-topline span,
  .asset-management-head-visual .asset-machine-compact .asset-machine-footer>div span, .asset-management-head-visual .asset-machine-compact .asset-machine-footer>small,
  .asset-management-head-visual .asset-machine-compact .asset-machine-footer>div strong,
  .asset-management-kpis>div small,
  .asset-photo-mini i,
  .asset-photo-mini span,
  .asset-sais-all-card .am-card-head>div small,
  .asset-stream-free>small,
  .asset-stream-free>span,
  .attempt-sequence small,
  .attempt-sequence span,
  .auth-copy>span,
  .auth-panel footer small,
  .auth-panel footer span,
  .cell-subtle,
  .command-deck-head p,
  .command-empty,
  .command-evidence-line small,
  .command-last-update span, .command-evidence-line span,
  .configured-report-cover>div:last-child small,
  .configured-report-photo-img span,
  .configured-report-photo>p,
  .configured-report-photo>small,
  .configured-report-photo>strong,
  .configured-report-section table,
  .configured-report-section th,
  .configured-report-unit-head span,
  .configured-report-unit-head>div:last-child small,
  .control-column-select,
  .control-columns-pills .control-pill,
  .control-columns-pills b,
  .control-columns-selects label>span,
  .critical-actions-list>button>div>small i,
  .extra-asset-choice small,
  .extra-assets button small,
  .extra-assignment-list>span,
  .extra-choice-progress span,
  .finding-asset-head>div:first-child span,.inspection-card-main>div:first-child span,
  .finding-asset-metrics span,.finding-asset-classification span,
  .finding-closed-total,
  .finding-domain-pill,
  .finding-list-scope-head>div>span,
  .finding-list-summary>span,
  .findings-list-print-table td small,
  .findings-list-table td:first-child small,
  .findings-print-search,
  .home-backup-copy>span,
  .home-backup-health,
  .home-backup-meta span,
  .home-backup-progress,
  .home-deadline-foot,
  .home-deadline-head>div>span,
  .home-deadline-time span,
  .home-extra-empty span,
  .home-extra-metrics-grid small,
  .home-extra-metrics-grid span,
  .home-extra-metrics-head span,
  .home-extra-work-list-head>small,
  .home-extra-work-list-head>span,
  .home-extra-work-main em,
  .home-extra-work-main span,
  .home-extra-work-meta,
  .home-pulse-card small,
  .home-pulse-card span,
  .inspection-asset-stage-tab small,
  .inspection-card-stages button small,
  .inspection-metric-grid small,
  .inspection-metric-grid>div>span,
  .legend .sais-dot-key,
  .metric-bar-row>span,
  .metric-legend small,
  .metric-legend>span,
  .metrics-domain-kpi-grid small,
  .metrics-kpi small,
  .mobility-health span,
  .mobility-mode-switch button,
  .mobility-visual-footer>div:first-child span,
  .mobility-visual-footer>div:first-child strong,
  .mobility-visual-head strong,
  .nav-badge,
  .photo-card-head time,
  .photo-open-hint,
  .preview-stream-free-strip .asset-stream-free>small,
  .preview-stream-free-strip .asset-stream-free>span,
  .report-alert,
  .report-asset-choice small,
  .report-compact-columns p,
  .report-inspection-metrics>div>span,
  .report-inspection-metrics>div>strong,
  .report-inspection-metrics>h4,
  .report-metric-bars>div>span,
  .report-metric-bars>div>strong,
  .report-metric-chart>h4,
  .report-metric-legend small,
  .report-metric-legend strong,
  .report-metric-legend>span,
  .report-metrics-grid span,
  .report-summary-grid small,
  .report-summary-grid span,
  .resais-attempt-register-head>div span,
  .resais-attempt-row .field label,
  .resais-derived-status small,
  .sais-combined-copy>b,
  .sais-combined-copy>small,
  .sais-mini-status,
  .sais-position-copy b,
  .sais-stream-pill>b,
  .sais-stream-pill>small,
  .sais-stream-pill>strong,
  .site-pulse-grid small,
  .stream-completion-stat.completion-complete:after,
  .tablet-backup-health,
  .tablet-backup-note,
  .tablet-backup-status-grid small,
  .tablet-backup-status-grid span,
  .tablet-backup-title>div>span,
  .test-group-kpis span,
  .test-work-group-card>small,
  .twin-state,
  .viewer-mode-banner strong,
  .work-group-assets em,.test-group-assets em,
  .work-group-assets span,.test-group-assets span,
  .work-group-assets strong,
  .work-group-category,.test-work-group-head span{font-size:11px!important}
  .ab-side-head .muted-btn,
  .ab-side-head span,
  .access-add-viewer p,
  .access-user-avatar,
  .am-activity-list strong,
  .am-blocker strong,
  .am-clear,
  .am-extra-list>div>span,
  .am-sais-points-list strong,
  .am-status-list span,.am-inspection-list span,.am-test-summary span,
  .asset-control-select,
  .asset-detail-photo>strong,
  .asset-extra-completion label,
  .asset-machine-footer>div strong,
  .asset-management-kpis span,
  .auth-access-summary,
  .auth-brand span,
  .auth-form label,
  .auth-message,
  .command-live,
  .command-panel-head>div>span,
  .command-panel-head>small,
  .compact-empty,
  .configured-report-cover>div:first-child>span,
  .configured-report-section h4,
  .configured-report-unit-head p,
  .critical-actions-list>button>b,
  .critical-actions-list>button>div>span,
  .critical-actions-list>button>div>strong,
  .critical-actions-list>button>em,
  .extra-asset-status,
  .extra-assignment-chip,
  .extra-assignment-chip strong,
  .extra-choice-progress select,
  .finding-asset-total span,
  .finding-list-asset-chip,
  .home-backup-copy p,
  .home-deadline-head>strong,
  .home-extra-empty strong,
  .home-extra-work-main strong,
  .home-extra-work-progress>strong,
  .inspection-card-stages button>span:first-child,
  .legend .sais-legend-dot i,
  .metric-bar-row>strong,
  .metric-legend strong,
  .metric-row-six .metric-box small,
  .metrics-domain-kpi-grid span,
  .metrics-kpi span,
  .photo-capture-actions span,
  .photo-card-head span,
  .photo-file-name,
  .photo-folder-card small,
  .photo-storage-note,
  .photo-viewer-head span,
  .photo-viewer-note strong,
  .readonly-status-item label,
  .report-asset-group>strong,
  .report-builder-intro span,
  .report-builder-note,
  .report-empty,
  .report-section-grid label,
  .report-summary-grid strong,
  .report-toggle-field>label,
  .required-note,
  .resais-result-control label,
  .site-pulse-grid span,
  .tablet-backup-progress,
  .verified-green-badge, .verified-closed-badge,
  .viewer-mode-banner span,
  .work-group-meta,
  .work-scope-note strong,
  /* Assets: readiness/software are now editable directly in the table */ .asset-readiness-select, .asset-software-select{font-size:12px!important}
  .access-user-row>div:nth-child(2) strong,
  .am-blocker p,
  .am-extra-list strong,
  .asset-management-head p,
  .asset-stream-free>strong,
  .audit-type,
  .auth-project-mark small,
  .command-evidence-line strong,
  .command-last-update strong,
  .command-panel-head h4,
  .configured-report-cover p,
  .configured-report-cover>div:last-child strong,
  .delivery-radar>button>span,
  .delivery-radar>button>strong,
  .extra-asset-completion-cell strong,
  .extra-asset-group>strong,
  .extra-back-link,
  .extra-kicker,
  .extra-meta,
  .extra-progress-buttons button,
  .finding-list-summary strong,
  .findings-list-table td:first-child strong,
  .home-backup-meta strong,
  .home-extra-metrics-head h4,
  .inspection-finding-main small,
  .inspection-metric-grid>div>strong,
  .inspection-owner-fixed,
  .market-nav .nav-label,
  .metric-row-six .metric-box span,
  .mobility-nav .nav-label,
  .moved-badge,
  .photo-card-body p,
  .photo-viewer-note p,
  .preview-primary-line span,
  .preview-stream-free-strip .asset-stream-free>strong,
  .readiness-overview small,
  .report-asset-choice span,
  .sais-status-badge,
  .sais-stream-pill>b, .sais-stream-pill>strong,
  .status-card small,
  .tablet-backup-title p,
  .work-scope-note p{font-size:13px!important}

  /* Three stragglers the generated pass could not reach, because a more
     specific compound selector or an inline size wins over the base rule. */
  #mainContent .control-pill,#mainContent small{font-size:12px!important}

  /* ---- home card order ----------------------------------------
     The dashboard is a two-column grid: a tall map column and a right stack.
     Collapsed to one column the deadline countdown, project overview and key
     metrics ended up below a full-height map, which is the wrong priority on a
     phone. display:contents dissolves both column wrappers so every panel
     becomes a direct flex item and can be reordered without touching the DOM. */
  .dashboard-grid{display:flex!important;flex-direction:column;gap:12px}
  .dashboard-grid>div{display:contents}
  /* The chip would collide with the avatar in the narrow topbar; the toast on a
     blocked edit carries the message on a phone. */
  .viewer-mode-chip{display:none!important}
  /* Four one-per-row status tiles made the overview card needlessly tall. */
  .status-cards-four{grid-template-columns:1fr 1fr!important}
  /* the asset column is hidden on a phone but still reserved 56px, squeezing the
     activity text into a narrow ribbon */
  .activity-item{grid-template-columns:10px 42px 1fr!important}
  .changes-bell{grid-area:bell;min-height:44px;min-width:34px;padding:0 7px;justify-content:center}
  .changes-bell-icon{display:none}
  .changes-bell[hidden]{display:none!important}
  .digest-row{grid-template-columns:1fr auto;grid-template-areas:"asset count" "chips chips" "meta meta";gap:6px}
  .digest-chips{justify-content:flex-start}
  .digest-list{max-height:none}
  /* The countdown is the reason people open this on site, and the map is how
     they find the asset they are standing next to -- so those two lead. */
  .home-deadline-card{order:1}
  .hero-map-panel{order:2}
  /* the deck is moved out of the map panel on phones (see
     placeCommandDeckForViewport) and needs the panel frame it used to inherit */
  .dashboard-grid>.home-command-deck{
    order:5;
    border:1px solid #dce6ee;
    border-radius:14px;
    overflow:hidden;
  }
  .overview-card{order:3}
  .right-stack>.panel:nth-child(4){order:4}   /* Key Metrics */
  .home-backup-card{order:5}
  .right-stack>.panel:nth-child(5){order:6}   /* Activity Log */
  .right-stack>.panel:nth-child(6){order:7}   /* Reports */

  /* ---- scrim ------------------------------------------------- */
  .nav-scrim{
    display:block;
    position:fixed;
    inset:0;
    z-index:125;
    background:rgba(4,13,22,.55);
    backdrop-filter:blur(1px);
  }
  .nav-scrim[hidden]{display:none}

  /* ---- hamburger --------------------------------------------- */
  .nav-toggle{
    display:inline-flex;
    flex-direction:column;
    justify-content:center;
    gap:5px;
    width:44px;
    height:44px;
    flex:0 0 44px;
    padding:0 10px;
    border:1px solid #d7e1eb;
    border-radius:10px;
    background:#fff;
  }
  .nav-toggle span{display:block;height:2px;background:#16304f;border-radius:2px}

  /* ---- topbar ------------------------------------------------ */
  .topbar{
    position:sticky!important;
    top:0;
    z-index:60;
    height:auto!important;
    min-height:0;
    padding:9px 12px!important;
    display:grid!important;
    grid-template-columns:44px minmax(0,1fr) auto auto auto auto;
    grid-template-areas:
      "burger title ws     bell   profile logout"
      "search search search search search  search"
      "tabs   tabs  tabs   tabs   tabs    tabs"
      "report report report report report  report";
    align-items:center;
    gap:8px 8px;
  }
  /* `.top-actions` is only a wrapper for desktop spacing. Dissolving it lets
     its children be placed individually in the topbar grid, so the phone
     layout needs no change to the markup the desktop layout depends on. */
  .top-actions{display:contents!important}
  .nav-toggle{grid-area:burger}
  .title-wrap{grid-area:title;min-width:0}
  .top-tabs{grid-area:tabs}
  .search-box{grid-area:search}
  .profile.access-profile{grid-area:profile}
  .access-logout{grid-area:logout}
  /* V7.0 — workspace switch shrinks to an icon button in the top row. */
  .workspaces-btn{grid-area:ws;width:44px;height:44px;padding:0;display:grid;place-items:center}
  .workspaces-btn span{display:none}
  .workspaces-btn .ws-ico{width:19px;height:19px}
  /* 38px avatar/logout are below the 44px minimum touch target. */
  .profile.access-profile,.access-logout{width:44px!important;height:44px!important;min-width:44px!important}
  .title-wrap,.title-brand-wrap{min-width:0!important}
  .dashboard-title-text{display:block!important}
  .dashboard-title-text h1,.title-wrap h1{font-size:16px!important;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .dashboard-title-text p,.title-wrap p{display:none!important}

  .top-tabs{
    display:flex;
    gap:6px;
    min-width:0;
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  .top-tabs::-webkit-scrollbar{display:none}
  .top-tab{white-space:nowrap;min-height:38px}

  /* The date read-out and the "local tablet" badge are ambient information;
     the profile and log-out controls are the only way to reach User Access
     and the password form, so they must survive on a phone. */
  .top-actions .date-block,.local-badge{display:none!important}
  .profile.access-profile{
    display:inline-flex!important;
    padding:0;
    border:0;
    background:transparent;
    gap:0;
  }
  .profile.access-profile>div:not(.avatar){display:none}
  .profile .avatar{width:38px;height:38px;font-size:11px}
  .access-logout{width:38px;height:38px;flex:0 0 38px}
  .print-report-btn{display:none!important}
  /* Without an explicit area the daily-report button auto-placed into an
     implicit row as a narrow pill with wrapped text; it gets its own row. */
  .daily-report-btn{grid-area:report;width:100%;justify-content:center;min-height:42px;font-size:14px}

  /* An earlier V5.x tablet block hides the search box outright with
     !important. Global asset search is the single most useful control in the
     field, so the phone layer explicitly puts it back. */
  .search-box{display:flex!important;width:100%!important;height:44px!important;margin:0!important}
  .search-box input{width:100%!important;font-size:16px!important}

  /* Modal forms were laid out for a 480px+ card, so inputs kept a fixed width
     and left a dead gutter on a phone. */
  .modal input:not([type=checkbox]):not([type=radio]),
  .modal select,.modal textarea{width:100%!important;box-sizing:border-box!important}
  /* The 16px anti-zoom size for inputs must not leak into secondary buttons —
     it made "Change password" render larger than the heading above it. */
  .modal .muted-btn,.modal .link-btn{font-size:13px!important}
  .global-asset-select{display:none!important}
  .search-results{
    position:fixed!important;
    top:auto!important;
    left:12px;
    right:12px!important;
    width:auto!important;
    max-height:52vh;
  }

  /* ---- page content ------------------------------------------ */
  .main-content{padding:10px 11px 30px!important}
  .page-head{flex-direction:column;align-items:flex-start;gap:8px}
  .page-head h2{font-size:19px}
  .dashboard-grid{grid-template-columns:1fr!important}
  /* This used to force .right-stack back to flex, which re-nested the six
     right-hand cards and defeated the phone `order` list above -- an
     !important declaration wins over the earlier display:contents no matter
     the specificity, so the map always sank to the bottom. Dissolving the
     wrapper instead lets every card sit directly in the single column and
     honour its own order. */
  .right-stack{display:contents!important}
  .metric-row,.metric-row-six,.info-grid,.stats-strip,.report-grid,
  .form-grid,.status-cards,.key-grid,.data-manager-grid,.tests-grid,
  .asset-status-grid,.summary-status-line,.overview-primary-status,
  .preview-primary-line,.extra-work-group-grid,.test-work-group-grid,
  .finding-asset-grid,.inspection-asset-grid,.work-detail-stats{
    grid-template-columns:1fr 1fr!important;
  }
  .form-grid,.data-manager-grid,.tests-grid{grid-template-columns:1fr!important}
  .quick-top{flex-direction:column;align-items:stretch}
  .quick-actions .btn,.preview-actions .btn{flex:1 1 auto}
  .asset-title-row h2{font-size:21px}
  /* The pier map has a fixed aspect ratio, so at 390px it would either be
     clipped by the container or shrink to an unreadable sliver. Keep it at a
     legible height and let the card pan sideways instead; the existing zoom
     controls still apply. */
  .project-map{min-height:0;overflow:auto!important;-webkit-overflow-scrolling:touch;padding:8px!important}
  .project-map svg{min-height:0}
  .operational-map-svg,
  .hero-map-panel .map-stage>.project-map .operational-map-svg,
  .map-stage-page>.project-map .operational-map-svg{height:390px!important;min-height:390px!important;width:660px!important;min-width:660px!important;max-width:none!important}
  .hero-map-panel .map-stage>.project-map,
  .map-stage-page>.project-map{height:auto!important;min-height:0!important}
  .tab-content{max-height:none}

  /* Wide tables stay readable by scrolling sideways inside their card
     instead of stretching the page and breaking the whole layout. */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .data-table{font-size:11.5px}
  .data-table th,.data-table td{padding:8px 7px}

  /* ---- modals become bottom sheets --------------------------- */
  .modal-backdrop{
    padding:0!important;
    place-items:end stretch!important;
  }
  .modal{
    width:100%!important;
    max-width:none!important;
    max-height:94dvh!important;
    border-radius:16px 16px 0 0!important;
  }
  .modal-foot{
    position:sticky;
    bottom:0;
    background:#fff;
    flex-wrap:wrap;
    gap:8px;
  }
  .modal-foot .btn{flex:1 1 auto;min-width:120px}

  .toast{left:12px;right:12px;bottom:14px;text-align:center}

  /* 16px is the threshold below which iOS Safari zooms the page on focus,
     which on this form-heavy app left the user scrolled sideways. */
  .search-box input,.controls-row input,.controls-row select,
  .field input,.field select,.field textarea,
  .auth-form input,.paste-box textarea{font-size:16px}
  .controls-row input{min-width:0;width:100%}
  .controls-row{flex-direction:column;align-items:stretch}
  .controls-row>*{width:100%}

  /* Touch targets */
  .btn,.segmented button,.filter-chip,.tab-btn,.icon-btn{min-height:44px}
  .small-select{min-height:38px}
}

/* Very narrow phones (iPhone SE and similar) drop to a single column. */
@media(max-width:400px){
  .metric-row,.metric-row-six,.info-grid,.stats-strip,.report-grid,
  .key-grid,.asset-status-grid,.summary-status-line,
  .overview-primary-status,.work-detail-stats{grid-template-columns:1fr!important}
  /* status tiles stay two-up even on the narrowest phones — one per row made
     the overview card scroll for no reason */
  .status-cards{grid-template-columns:1fr 1fr!important}
  .title-wrap h1{font-size:15px!important}
}

@media print{
  .nav-toggle,.nav-scrim{display:none!important}
}
