:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#172033;background:#eef2f7;font-synthesis:none;--navy:#17233b;--blue:#316fea;--line:#dde4ee;--muted:#667085}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}.app-shell{max-width:1440px;margin:auto;padding:18px 28px 60px}.topbar{position:sticky;top:12px;z-index:20;display:flex;justify-content:space-between;align-items:center;background:#fffffff0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:18px;padding:12px 18px;box-shadow:0 12px 35px #1f2d4714}.brand{display:flex;align-items:center;gap:12px}.brand>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--navy);color:#fff;font-weight:800}.brand div{display:flex;flex-direction:column}.brand small,small{color:var(--muted)}nav{display:flex;gap:6px}nav button{border:0;background:transparent;padding:11px 16px;border-radius:10px;color:var(--muted);font-weight:700;cursor:pointer}nav button.active{background:#eaf1ff;color:#2459c3}main{display:flex;flex-direction:column;gap:22px;margin-top:24px}.query-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:32px;border-radius:24px;color:#fff;background:linear-gradient(125deg,#14213a,#243f6c 70%,#316fea);box-shadow:0 18px 40px #1f345b2e}h1,h2,h3,p{margin-top:0}.query-bar h1{font-size:clamp(1.8rem,4vw,2.7rem);margin:6px 0}.query-bar p{color:#cbd7eb;margin:0}.eyebrow{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;font-weight:850;color:#3b72df}.query-bar .eyebrow{color:#91b8ff}.eyebrow.orange{color:#d97706}.query-form{display:flex;align-items:center;background:#fff;border-radius:14px;padding:5px;color:#344054;min-width:min(100%,390px)}.query-form>span{padding-left:12px;font:800 .75rem monospace;color:#98a2b3}.query-form input{min-width:0;flex:1;border:0;padding:12px;outline:0}.query-form button,.empty-state button{border:0;background:var(--blue);color:#fff;padding:12px 18px;border-radius:10px;font-weight:750;cursor:pointer}.query-form button:disabled{opacity:.55}.empty-state{min-height:360px;display:grid;place-items:center;align-content:center;text-align:center;background:#fff;border:1px dashed #cfd8e6;border-radius:24px;padding:35px}.empty-state div{font-size:4rem;color:#9db7e8}.empty-state p{color:var(--muted);max-width:530px}.freshness{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 18px;border:1px solid var(--line);background:#fff;border-radius:14px;color:var(--muted);font-size:.85rem}.freshness div{display:flex;gap:8px}.freshness em{font-style:normal;background:#edf3ff;color:#315fae;padding:3px 7px;border-radius:8px}.secondary,.excel{border:1px solid var(--line);background:#fff;color:#344054;padding:8px 12px;border-radius:9px;font-weight:700;cursor:pointer}.excel{background:#087d58;color:#fff;border-color:#087d58}.banner{display:flex;gap:12px;padding:14px 17px;border-radius:12px;border:1px solid}.banner strong{white-space:nowrap}.banner.error{background:#fff0f0;border-color:#fecaca;color:#a21d28}.banner.warning{background:#fff8e8;border-color:#f7d794;color:#8a5510}.banner.info{background:#eff6ff;border-color:#bfdbfe;color:#1d4e89}.section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:16px}.section-title h2{margin:4px 0 0;font-size:1.35rem}.section-title p,.section-title>span{margin:0;color:var(--muted);font-size:.83rem}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.kpi,.panel,.flow-card{background:#fff;border:1px solid var(--line);border-radius:16px}.kpi{padding:17px;box-shadow:0 8px 18px #1e2d4b0a}.kpi>span{font-size:.75rem;color:var(--muted);font-weight:750}.kpi div{display:flex;align-items:baseline;gap:6px;margin-top:8px}.kpi strong{font-size:1.75rem}.kpi small{font-size:.72rem}.kpi p{font-size:.72rem;color:var(--muted);margin:5px 0 0}.panel{padding:22px}.chart-panel{display:grid;grid-template-columns:minmax(230px,.8fr) minmax(400px,1.2fr);align-items:center}.chart{height:270px}.chart-panel .section-title{display:block;padding-right:25px}.chart-panel .section-title p{margin-top:10px;line-height:1.5}.flow-card{margin:10px;padding:18px;background:#fbfcfe}.flow-card header{display:flex;justify-content:space-between;gap:16px}.flow-card h3{margin:7px 0 3px}.flow-card header p{font-size:.78rem;color:var(--muted)}.badge{display:inline-block;max-width:300px;padding:5px 8px;border-radius:7px;background:#eaf1ff;color:#315fae;font-size:.7rem;font-weight:750}.badge.warning{background:#fff2d8;color:#8a5510}.badge.danger{background:#feecec;color:#a21d28}.badge.muted{background:#edf0f4;color:#667085}.flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));list-style:none;padding:0;margin:16px 0 0;gap:7px}.flow li{display:flex;gap:8px;padding:10px;border-radius:10px;background:#f3f5f8;min-height:86px}.flow i{width:10px;height:10px;border-radius:50%;background:#98a2b3;margin-top:4px;flex:0 0 auto}.flow li.completed i{background:#16a36a}.flow li.pending i{background:#e6a019}.flow li.cancelled i{background:#d14949}.flow li.not_applicable,.flow li.available_internal{background:#f6f7f9;color:#667085}.flow li.not_applicable i{background:#c0c6cf}.flow li.available_internal i{background:#0f9970}.flow li div{display:flex;flex-direction:column;gap:5px}.flow li strong{font-size:.75rem}.flow li span,.flow li small{font-size:.67rem}.filters{display:grid;grid-template-columns:2fr repeat(3,1fr) auto;gap:8px;margin-bottom:15px}.filters input,.filters select{min-width:0;border:1px solid var(--line);border-radius:9px;padding:10px;background:#fff}.check{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted)}.accordion{border-top:1px solid var(--line)}.accordion-head{width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;padding:14px 5px;display:flex;justify-content:space-between;align-items:center;text-align:left;cursor:pointer}.accordion-head span:first-child{display:flex;flex-direction:column;gap:4px}.notice{background:#f8fafc;border-left:3px solid #f59e0b;padding:10px 12px;color:#667085;font-size:.8rem}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.8rem}th{color:#667085;text-transform:uppercase;letter-spacing:.06em;font-size:.65rem;text-align:left;background:#f8fafc}th,td{padding:12px;border-bottom:1px solid #edf0f4;vertical-align:top}td strong,td small{display:block;margin-bottom:4px}.empty-cell{text-align:center;color:#667085;padding:28px}.negative{color:#b42318;font-weight:800}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#0f172aa8;display:grid;place-items:center;padding:20px}.modal{background:#fff;border-radius:20px;width:min(650px,100%);max-height:88vh;overflow:auto;padding:24px}.modal header{display:flex;justify-content:space-between}.modal header button{border:0;background:#eef1f5;border-radius:50%;font-size:1.5rem;width:36px;height:36px}.timeline{list-style:none;padding:0}.timeline li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:14px;border-left:2px solid #dde4ee}.timeline i{width:12px;height:12px;border-radius:50%;background:#98a2b3}.timeline li.current i{background:#316fea}.timeline li.alert{background:#fff3f2}.timeline li div,.timeline li>span{display:flex;flex-direction:column;gap:4px}.timeline li>span{text-align:right;font-weight:800}.timeline li small{font-size:.7rem}@media(max-width:850px){.app-shell{padding:10px 12px 40px}.topbar,.query-bar,.section-title,.freshness{align-items:stretch;flex-direction:column}.topbar{position:static}.brand small{display:none}nav{overflow:auto}.query-form{width:100%}.chart-panel{display:block}.filters{grid-template-columns:1fr 1fr}.flow{grid-template-columns:1fr}.freshness div{flex-wrap:wrap}}@media(max-width:520px){.topbar nav button{padding:9px;font-size:.75rem}.query-bar{padding:22px}.filters{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr 1fr}.panel{padding:15px}}.executive-overview{background:#fff;border:1px solid var(--line);border-top:5px solid #316fea;border-radius:20px;overflow:hidden;box-shadow:0 16px 36px #1e2d4b14}.executive-overview.attention{border-top-color:#d97706}.executive-overview.controlled{border-top-color:#0f9970}.executive-conclusion{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:26px 28px 20px}.executive-conclusion h2{font-size:1.65rem;margin:5px 0 8px}.executive-conclusion p{max-width:900px;margin:0;color:#475467;line-height:1.55}.executive-evidence{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8fafc}.executive-evidence article{display:flex;flex-direction:column;gap:4px;padding:19px 22px;border-right:1px solid var(--line)}.executive-evidence article:last-child{border:0}.executive-evidence strong{font-size:1.65rem;color:#17233b}.executive-evidence span{font-size:.76rem;font-weight:800;color:#344054;text-transform:uppercase;letter-spacing:.04em}.executive-evidence small{font-size:.7rem;line-height:1.4}.executive-attention{display:grid;grid-template-columns:220px 1fr;gap:20px;padding:18px 28px}.executive-attention>div{display:flex;flex-direction:column;gap:4px}.executive-attention ul{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:0;padding:0}.executive-attention li{display:flex;flex-direction:column;padding:9px 12px;background:#fff8e8;border-radius:9px}.executive-attention li span{font-size:.78rem;font-weight:750}.executive-attention li small{font-size:.68rem;margin-top:3px}.executive-chart{grid-template-columns:minmax(320px,1fr) minmax(360px,.8fr)}.chart-copy h2{margin:5px 0 8px}.chart-copy>p{color:var(--muted);font-size:.8rem;line-height:1.55;max-width:650px}.chart-facts{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:7px;margin-top:16px}.chart-facts div{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:8px 10px;background:#f8fafc;border-radius:8px;font-size:.74rem}.chart-facts i{width:9px;height:9px;border-radius:50%}.chart-facts strong{font-size:.9rem}.audit-group{margin-top:20px;border:1px solid var(--line);border-radius:14px;overflow:hidden}.audit-group>header{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;background:#f4f7fb;border-bottom:1px solid var(--line)}.audit-group>header>div{display:flex;align-items:center;gap:10px}.audit-group>header div div{display:flex;flex-direction:column}.audit-group>header small{font-size:.68rem;margin-top:2px}.audit-group>header b{font-size:.72rem;color:#475467}.audit-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;color:#fff;font-size:.72rem;font-weight:850}.materials-icon{background:#316fea}.rental-icon{background:#d99013}.rental-group>header{background:#fffaeb}.audit-columns,.audit-row{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(190px,1.25fr) minmax(190px,1.3fr) 110px 34px;gap:14px;align-items:center}.audit-columns{padding:9px 15px;color:#667085;background:#fbfcfe;border-bottom:1px solid var(--line);font-size:.61rem;text-transform:uppercase;letter-spacing:.07em;font-weight:750}.audit-row{width:100%;padding:13px 15px;border:0;border-bottom:1px solid #edf0f4;background:#fff;text-align:left;cursor:pointer;color:inherit}.audit-row:hover{background:#f9fbff}.audit-row>span{display:flex;flex-direction:column;gap:4px;min-width:0}.audit-row strong{font-size:.77rem;overflow-wrap:anywhere}.audit-row small{font-size:.67rem}.document-ref{font-family:ui-monospace,monospace;color:#315fae}.stage-pill{display:inline-block;width:max-content;max-width:100%;padding:4px 7px;border-radius:6px;background:#edf3ff;color:#315fae}.stage-pill.stage-pending,.stage-pill.stage-unknown{background:#fff3d6;color:#8a5510}.stage-pill.stage-completed,.stage-pill.stage-available_internal{background:#e8f7f1;color:#087d58}.stage-pill.stage-cancelled{background:#feecec;color:#a21d28}.expand-icon{font-size:1.15rem!important;color:#667085;align-items:center}.audit-row-wrap>.flow-card{margin:10px 15px 15px}@media(max-width:950px){.executive-evidence{grid-template-columns:1fr 1fr}.executive-evidence article:nth-child(2){border-right:0}.executive-evidence article:nth-child(-n+2){border-bottom:1px solid var(--line)}.executive-attention{grid-template-columns:1fr}.audit-columns{display:none}.audit-row{grid-template-columns:1.3fr 1fr 1.1fr 75px 25px}.executive-chart{grid-template-columns:1fr}.chart{height:320px}}@media(max-width:650px){.executive-conclusion{flex-direction:column;padding:21px}.executive-evidence{grid-template-columns:1fr}.executive-evidence article{border-right:0;border-bottom:1px solid var(--line)!important}.executive-attention{padding:17px 21px}.executive-attention ul,.chart-facts{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr auto;gap:8px}.audit-row>span:nth-child(2),.audit-row>span:nth-child(3),.audit-row>span:nth-child(4){grid-column:1}.audit-row>span:nth-child(5){grid-column:2;grid-row:1}.audit-group>header{align-items:flex-start}.audit-group>header b{white-space:nowrap}}.project-identity{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.project-identity b{color:#17233b;font-size:.82rem}.project-identity b:before{content:"·";margin-right:7px;color:#98a2b3}.stage-details{display:flex;flex-direction:column;gap:8px;margin:5px 0 0;padding-top:8px;border-top:1px solid #dde4ee;font-size:.66rem}.stage-detail{display:flex;flex-direction:column;gap:3px;min-width:0}.stage-details dt{color:#667085;line-height:1.35}.stage-details dd{margin:0;font-family:ui-monospace,monospace;font-weight:750;color:#344054;line-height:1.4;overflow-wrap:anywhere;word-break:normal}.stage-details dd.warning{color:#9a4b08;background:#fff1dc;border-left:3px solid #f59e0b;border-radius:6px;padding:6px 8px}.dispatch-filters{display:flex;align-items:center;gap:12px}.dispatch-filters select{border:1px solid var(--line);border-radius:9px;padding:9px;background:#fff;color:#344054;font-size:.78rem}@media(max-width:650px){.dispatch-filters{align-items:stretch;flex-direction:column}.dispatch-filters select{width:100%}}.scope-selector{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:16px 20px;background:#fff;border:1px solid var(--line);border-radius:14px}.scope-selector>div{display:flex;flex-direction:column;gap:3px}.scope-selector>div>strong{font-size:.95rem}.scope-selector>div>small{font-size:.7rem}.switch{display:flex;align-items:center;gap:10px;cursor:pointer;color:#344054;font-size:.78rem}.switch input{position:absolute;opacity:0;pointer-events:none}.switch>span{position:relative;width:44px;height:24px;border-radius:20px;background:#cbd3df;transition:.2s}.switch>span:after{content:"";position:absolute;width:18px;height:18px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #0003;transition:.2s}.switch input:checked+span{background:#316fea}.switch input:checked+span:after{transform:translate(20px)}.switch input:focus-visible+span{outline:3px solid #b8d0ff}.stage-facts{display:grid;grid-template-columns:repeat(2,minmax(170px,1fr));gap:8px;margin-top:16px}.stage-facts button{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding:10px;border:1px solid #e7ebf1;border-radius:9px;background:#f8fafc;color:#344054;text-align:left;cursor:pointer}.stage-facts button:hover{border-color:#b9cae9;background:#f3f7ff}.stage-facts i{width:10px;height:10px;border-radius:50%}.stage-facts span{font-size:.72rem}.stage-facts strong{font-size:1rem}.stage-facts b{min-width:37px;padding:3px 5px;border-radius:6px;background:#e9eef6;color:#475467;text-align:center;font-size:.68rem}.donut-chart{position:relative;min-height:320px}.donut-total{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none}.donut-total strong{font-size:2rem;color:#17233b}.donut-total span{font-size:.68rem;color:#667085;text-transform:uppercase;letter-spacing:.08em}@media(max-width:650px){.scope-selector{align-items:flex-start;flex-direction:column}.switch{width:100%}.stage-facts{grid-template-columns:1fr}.donut-chart{min-height:280px}}.visible-denominator{display:inline-flex;align-items:baseline;gap:4px;margin-top:9px;padding:6px 9px;border-radius:7px;background:#edf3ff;color:#475467;font-size:.72rem}.visible-denominator strong{font-size:1rem;color:#2459c3}.stage-facts button.excluded{opacity:.52;background:#f1f3f6}.stage-facts button.excluded span{text-decoration:line-through}.stage-facts button.excluded i{filter:grayscale(1)}.chart-help{display:block;margin-top:9px;font-size:.67rem;line-height:1.45}.pie-chart{min-height:340px}.pie-chart canvas{cursor:pointer}.stage-facts .stage-name{display:flex;flex-direction:column;gap:2px}.stage-facts .stage-name small{font-size:.61rem;line-height:1.25;color:#667085;text-transform:none}.stage-facts button.excluded .stage-name small{text-decoration:line-through}@media(max-width:650px){.pie-chart{min-height:285px}}.crm-stage-list button.excluded{opacity:.52;background:#f1f3f6}.crm-stage-list button.excluded span,.crm-stage-list button.excluded small{text-decoration:line-through}.crm-stage-list button.excluded i{filter:grayscale(1)}.crm-pipeline-chart canvas{cursor:pointer}.crm-filterbar{display:flex;align-items:flex-end;gap:10px;margin-bottom:16px;padding:12px 16px;background:#f8fafc;border:1px solid var(--line);border-radius:12px}.detail-filter-count{margin-left:auto;color:#667085;font-size:.72rem}@media(max-width:800px){.crm-stage-panel{grid-template-columns:1fr}.crm-kpis{grid-template-columns:repeat(2,1fr)}.crm-filterbar{flex-wrap:wrap}.detail-filter-count{width:100%;margin-left:0}}.crm-dashboard{display:flex;flex-direction:column;gap:14px}.crm-kpis{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px}.crm-kpis article{display:flex;flex-direction:column;gap:5px;padding:17px;background:#fff;border:1px solid var(--line);border-radius:14px}.crm-kpis article.warning{background:#fff8e8;border-color:#f7d794}.crm-kpis article.danger{background:#fff0f0;border-color:#fecaca}.crm-kpis span{font-size:.7rem;font-weight:800;text-transform:uppercase;color:#667085}.crm-kpis strong{font-size:1.45rem;color:#17233b}.crm-kpis small{font-size:.65rem}.crm-stage-panel{display:grid;grid-template-columns:minmax(360px,1.15fr) minmax(300px,.85fr);gap:24px;align-items:center}.crm-stage-copy h2{margin:5px 0 7px}.crm-stage-copy>p{color:#667085;font-size:.76rem}.crm-stage-list{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:7px;margin-top:14px}.crm-stage-list button{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:7px;padding:9px;border:1px solid #e5eaf1;border-radius:9px;background:#f8fafc;color:#344054;text-align:left;cursor:pointer}.crm-stage-list button.active{border-color:#316fea;background:#edf3ff}.crm-stage-list i{width:9px;height:9px;border-radius:50%}.crm-stage-list span{font-size:.72rem;font-weight:700}.crm-stage-list strong{font-size:.9rem}.crm-stage-list b{font-size:.66rem}.crm-stage-list small{grid-column:2/5;font-size:.62rem}.crm-pipeline-chart{height:310px}.crm-filterbar{display:flex;align-items:flex-end;gap:10px;padding:12px 16px;background:#fff;border:1px solid var(--line);border-radius:12px}.crm-filterbar label{display:flex;flex-direction:column;gap:5px;color:#667085;font-size:.7rem;font-weight:750}.crm-filterbar select{min-width:220px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff}.close-alert{display:inline-block;margin-top:5px;padding:4px 7px;border-radius:6px;font-size:.65rem;font-weight:750;background:#edf3ff;color:#315fae}.close-alert.due_soon{background:#fff2d8;color:#8a5510}.close-alert.overdue{background:#feecec;color:#a21d28}.close-alert.closed{background:#e8f7f1;color:#087d58}.close-alert.no_date{background:#edf0f4;color:#667085}.stage-current{font-size:.72rem}.modal header p{margin:4px 0 0;color:#667085;font-size:.75rem}.audit-filters{grid-template-columns:2fr repeat(2,1fr) auto}@media(max-width:1050px){.crm-kpis{grid-template-columns:repeat(3,1fr)}}@media(max-width:800px){.crm-stage-panel{grid-template-columns:1fr}.crm-kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.crm-kpis,.crm-stage-list{grid-template-columns:1fr}.crm-filterbar{align-items:stretch;flex-direction:column}.crm-filterbar select{width:100%;min-width:0}}
