:root{
  /* Aliases for names the stylesheet used but never defined. An undefined var() makes the
     whole declaration invalid, so the browser silently drops it: the review progress bars
     rendered with no fill at all, and several panels lost their borders. verify_review_flow.py
     now fails the build if any custom property is used without being defined. */
  --blue:var(--kcis-blue);--green:var(--kcis-green);--border:var(--line);--accent-soft:var(--accent2);
  --bg:#f4f6f8;--panel:#fff;--ink:#17212b;--muted:#687482;--line:#dce2e8;--nav:#10263d;--nav2:#183a5a;--accent:#1f5f8b;--accent2:#dbeaf5;--warn:#b87500;--bad:#a93838;--good:#2c7a4b;--shadow:0 4px 18px rgba(21,35,49,.08);--radius:14px;
}
*{box-sizing:border-box} body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:14px} button,input,select,textarea{font:inherit} a{color:inherit}
.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 18px;position:sticky;top:0;z-index:30}.brand-row,.user-row,.row-between,.toolbar,.card-head{display:flex;align-items:center}.brand-row{gap:10px}.user-row{justify-content:flex-end;gap:12px}.topbar-center{text-align:center}.brand-mark{width:54px;height:54px;border-radius:14px;background:var(--nav);color:white;font-weight:800;display:grid;place-items:center;letter-spacing:.7px}.brand-mark.small{width:38px;height:38px;border-radius:10px;font-size:12px}.tiny{font-size:11px;color:var(--muted);margin-top:2px}.sandbox-pill{display:inline-block;padding:6px 10px;border-radius:999px;background:#fff3cd;color:#7c5a00;border:1px solid #ecd88e;font-weight:700;font-size:11px;letter-spacing:.2px;margin:0 3px}.status-pill.good{background:#eaf7ee;color:#176533;border-color:#a7d8b5}.status-pill.bad{background:#fdecec;color:#992b2b;border-color:#efb0b0}.status-pill.warn{background:#fff3cd;color:#7c5a00;border-color:#ecd88e}
.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 64px)}.sidebar{background:var(--nav);padding:14px 10px;display:flex;flex-direction:column;gap:4px}.navbtn{width:100%;border:0;background:transparent;color:#dbe6ef;text-align:left;padding:10px 12px;border-radius:9px;cursor:pointer;font-weight:600;text-decoration:none}.navbtn:hover,.navbtn.active{background:var(--nav2);color:#fff}.linkbtn{display:block}.main-panel{padding:22px 28px 50px;max-width:1500px;width:100%;margin:0 auto}.page-title{font-size:23px;font-weight:800;margin-bottom:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}.single-card{max-width:1120px}.card h2{font-size:17px;margin:0 0 8px}.card h3{font-size:14px;margin:0 0 6px}.card-head{justify-content:space-between;gap:12px;margin-bottom:10px}.muted{color:var(--muted);font-size:12.5px;line-height:1.45}.subtle{background:#f8fafc;border:1px solid var(--line);padding:10px 12px;border-radius:10px;color:#4d5965}.row-between{justify-content:space-between;gap:12px}.stack{display:flex;flex-direction:column;gap:10px}.toolbar{gap:8px;flex-wrap:wrap;margin-bottom:14px}.toolbar.right{justify-content:flex-end}.searchbar{display:flex;gap:8px;align-items:center}.searchbar input,.searchbar select{min-width:260px;flex:1}.btn{border:1px solid #cbd5df;background:#fff;color:#22303c;border-radius:8px;padding:8px 11px;cursor:pointer;font-weight:650}.btn:hover{background:#f5f8fa}.btn.primary{background:var(--accent);border-color:var(--accent);color:white}.btn.secondary{background:#eef4f8;border-color:#bfd2df;color:#1b5278}.btn.danger{background:#fff2f2;border-color:#e4b9b9;color:#8e2e2e}.btn.ghost{background:transparent;border-color:transparent}.btn.wide{width:100%}.btn.huge{font-size:20px;padding:17px 22px;min-height:62px}.smallbtn{padding:6px 9px;font-size:12px}
input,select,textarea{width:100%;border:1px solid #cbd5df;border-radius:8px;padding:9px 10px;background:white;color:var(--ink)} textarea{min-height:100px;resize:vertical} label{font-size:12px;font-weight:700;color:#44515e;display:flex;flex-direction:column;gap:5px}.form-grid{display:grid;gap:12px;margin:12px 0}.form-grid.one{grid-template-columns:1fr}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stack-form{display:flex;flex-direction:column;gap:12px}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.metric{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;cursor:pointer}.metric:hover{border-color:#abc3d6}.metric .label{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.35px}.metric .value{font-size:22px;font-weight:800;margin-top:5px}.metric .hint{font-size:11px;color:var(--muted);margin-top:4px}.project-kpi-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:12px}.project-kpi-card{min-width:0;border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:#fff;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:5px}.project-kpi-card:hover{border-color:#9fbbcf;box-shadow:var(--shadow)}.project-kpi-card span{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.35px}.project-kpi-card b{font-size:17px;line-height:1.2;color:var(--text);overflow-wrap:anywhere}.project-kpi-card small{font-size:10px;color:var(--muted);line-height:1.25}.project-kpi-progress{height:5px;border-radius:999px;background:#e8eef3;overflow:hidden;margin-top:1px}.project-kpi-progress i{display:block;height:100%;border-radius:999px;background:var(--accent);max-width:100%}.metric-drill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 14px}.metric-drill-grid>div{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff}.metric-drill-grid span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:800;letter-spacing:.3px}.metric-drill-grid b{display:block;font-size:17px;margin-top:5px;overflow-wrap:anywhere}
.button-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.home-btn{min-height:76px;border:1px solid var(--line);border-radius:12px;background:white;padding:14px;text-align:left;cursor:pointer;font-weight:750}.home-btn:hover{border-color:#9fbbcf;box-shadow:var(--shadow)}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px} table{border-collapse:collapse;width:100%;background:#fff} th,td{padding:9px 10px;border-bottom:1px solid #e5eaee;text-align:left;vertical-align:top;white-space:nowrap} th{font-size:11px;text-transform:uppercase;letter-spacing:.35px;background:#f7f9fb;color:#56616d} tr:last-child td{border-bottom:0} tr.clickable{cursor:pointer} tr.clickable:hover td{background:#f5f9fc}.clicklink{color:#155a88;font-weight:700}.badge{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;font-size:11px;font-weight:750;background:#eef2f5;color:#4e5c68}.badge.good{background:#e6f5ec;color:#21663e}.badge.warn{background:#fff1d9;color:#815800}.badge.bad{background:#fdeaea;color:#8d3131}.badge.info{background:#e7f1f8;color:#245c81}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.tabbtn{border:1px solid #cbd5df;background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer}.tabbtn.active{background:var(--nav);color:#fff;border-color:var(--nav)}.empty-state{padding:36px;border:1px dashed #cbd5df;border-radius:12px;color:var(--muted);text-align:center;background:#fafbfc}.group-block{margin-bottom:16px}.group-title{font-size:15px;font-weight:800;margin:5px 0 8px;padding:8px 0;border-bottom:1px solid var(--line)}
.modal-backdrop{position:fixed;inset:0;background:rgba(10,20,30,.42);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:5vh 18px;overflow:auto}.modal-card{background:#fff;max-width:980px;width:100%;border-radius:16px;box-shadow:0 18px 55px rgba(0,0,0,.2);padding:18px;border:1px solid #d8e0e6}.modal-card.narrow{max-width:620px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.modal-head h2{margin:0;font-size:18px}.modal-close{border:0;background:#eef2f5;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:18px}.warning-box{border-left:4px solid var(--warn);background:#fff8e8;padding:12px;border-radius:9px;margin:10px 0}.warning-box.bad{border-color:var(--bad);background:#fff1f1}.success-box{border-left:4px solid var(--good);background:#ecf8f0;padding:12px;border-radius:9px;margin:10px 0}.inline-panel{border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:12px;background:#fbfcfd}.hidden{display:none!important}
.action-row{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff;display:grid;grid-template-columns:100px 1fr auto;gap:12px;align-items:center}.priority-dot{font-weight:800}.priority-dot.Critical{color:var(--bad)}.priority-dot.Important{color:var(--warn)}.priority-dot.Routine{color:var(--muted)}
.calendar-list{display:flex;flex-direction:column;gap:8px}.calendar-item{border:1px solid var(--line);border-left-width:5px;border-radius:10px;padding:11px 12px;background:#fff;cursor:pointer}.calendar-item.Critical{border-left-color:#b43636}.calendar-item.Important{border-left-color:#c27a00}.calendar-item.Routine{border-left-color:#6d7b87}.activity-tag{font-size:11px;color:var(--muted)}
.login-body,.kiosk-body{min-height:100vh;background:linear-gradient(135deg,#10263d,#204a6e);display:grid;place-items:center;padding:24px}.login-card{width:min(440px,95vw);background:#fff;border-radius:18px;padding:28px;box-shadow:0 24px 70px rgba(0,0,0,.28)}.login-card h1{margin:14px 0 8px}
/* The sign-in card is #fff, so this uses the TRANSPARENT logo rather than the
   white-tile one. The tile version carries built-in white padding, which pushed
   the mark visibly inboard of the heading below it; the trimmed transparent asset
   sits flush to the same left edge as the text. */
.login-logo-link{display:block;width:fit-content;border-radius:6px}
.login-logo{display:block;width:264px;max-width:100%;height:auto}
.login-logo-link:focus-visible{outline:2px solid #2f7fc4;outline-offset:3px}
/* The kiosk header sits on the dark blue body gradient, so here the same white
   tile is meant to read as a deliberate panel: rounded, with a soft shadow. */
.kiosk-logo{width:156px;height:52px;object-fit:contain;flex:0 0 auto;border-radius:9px;box-shadow:0 3px 10px rgba(0,0,0,.28)}
@media(max-width:520px){.login-logo{width:210px}.kiosk-logo{width:130px;height:44px}}.form-error{background:#fdeaea;color:#852b2b;padding:10px;border-radius:9px;margin:12px 0}.text-link{display:inline-block;margin-top:12px;color:#1e5e8b;font-weight:700}.kiosk-wrap{width:min(900px,96vw);margin:auto}.kiosk-head{display:flex;justify-content:space-between;align-items:center;color:white;margin-bottom:14px}.kiosk-head h1{display:inline-block;margin:0 0 0 10px;vertical-align:middle}.kiosk-head>div:first-child{display:flex;align-items:center}.kiosk-actions{display:grid;grid-template-columns:1fr;gap:12px;margin:16px 0}
@media(max-width:1200px){.project-kpi-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.button-grid{grid-template-columns:repeat(2,1fr)}.app-shell{grid-template-columns:190px 1fr}.main-panel{padding:18px}.topbar{grid-template-columns:1fr 1fr}.topbar-center{display:none}.form-grid.three,.form-grid.four{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.project-kpi-strip,.metric-drill-grid{grid-template-columns:1fr}.topbar{height:auto;min-height:60px}.user-row span{display:none}.app-shell{display:block}.sidebar{position:sticky;top:60px;z-index:20;flex-direction:row;overflow:auto;padding:7px;background:var(--nav)}.navbtn{width:auto;white-space:nowrap;padding:8px 10px}.main-panel{padding:14px}.metric-grid,.button-grid,.form-grid.two,.form-grid.three,.form-grid.four{grid-template-columns:1fr}.searchbar{align-items:stretch;flex-direction:column}.searchbar input,.searchbar select{min-width:0}.action-row{grid-template-columns:1fr}.modal-backdrop{padding:2vh 8px}}

/* Build 0.3 — persistent navigation and one-card workflow shell */
@media(min-width:761px){
  /* Greg 2026-09-22: the left tabs "need to scroll down and up with the page". This rule used to
   pin the sidebar to the viewport at a fixed height with its own inner scrollbar, so it never
   moved with the document and lower tabs needed a separate scroll gesture to reach. */
.sidebar{align-self:stretch}
}
.workflow-bar{position:sticky;top:64px;z-index:24;background:rgba(244,246,248,.97);backdrop-filter:blur(6px);padding:8px 0 10px;margin:-2px 0 12px;border-bottom:1px solid rgba(220,226,232,.9);display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.workflow-bar .tabbtn,.workflow-bar .btn{margin:0}
.workflow-content{min-height:160px}
.project-shell-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:8px}
.project-shell-head h2{margin:0 0 4px}
.file-stage-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.file-stage-row .file-name{font-weight:750;overflow-wrap:anywhere}
.file-stage-row .file-meta{font-size:11px;color:var(--muted);margin-top:3px}
.analysis-findings{display:flex;flex-direction:column;gap:8px;margin-top:10px}.analysis-findings .finding{padding:9px 10px;border-radius:9px;background:#f7fafc;border:1px solid var(--line)}
.action-row.clickable{cursor:pointer}.action-row.clickable:hover{border-color:#9fbbcf;background:#f8fbfd}
.one-card-host{max-width:1180px}
.module-control-card{max-width:1180px}
.sticky-subbar{position:sticky;top:64px;z-index:23;background:rgba(244,246,248,.97);padding:8px 0}
@media(max-width:760px){.workflow-bar{top:113px;overflow-x:auto;flex-wrap:nowrap}.workflow-bar>*{white-space:nowrap}.file-stage-row{grid-template-columns:1fr}.sidebar{max-height:53px}}

/* Build 0.4.1 — document-first New Project intake */
.new-project-intro{background:#f4f8fb;border:1px solid #c9dbe8;border-left:4px solid var(--accent);border-radius:10px;padding:12px 14px;margin-bottom:12px}
.project-drop-zone{border:2px dashed #9db7ca;border-radius:14px;background:#f8fbfd;min-height:132px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;cursor:pointer;transition:.15s ease;margin:10px 0 12px;outline:none}
.project-drop-zone:hover,.project-drop-zone:focus,.project-drop-zone.dragging{border-color:var(--accent);background:#edf6fc;box-shadow:0 0 0 3px rgba(43,112,158,.08)}
.drop-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#e4f0f8;color:var(--accent);font-size:25px;font-weight:800;margin-bottom:7px}
.drop-title{font-size:16px;font-weight:800;color:#243744;margin-bottom:3px}
.new-project-stage-list{margin:8px 0 10px}.empty-state.compact{padding:16px}
.document-filled{background:#fffbea;border-color:#d9be66}
.intake-suggestion-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0 10px}
.intake-suggestion{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff}.intake-suggestion span{display:block;text-transform:uppercase;font-size:10px;letter-spacing:.35px;color:var(--muted);font-weight:750;margin-bottom:3px}.intake-suggestion b{font-size:12px;overflow-wrap:anywhere}
@media(max-width:760px){.intake-suggestion-grid{grid-template-columns:1fr}.project-drop-zone{min-height:110px}}

/* Build 0.4.1 — controlled type-ahead reference fields */
.typeahead-wrap{position:relative;width:100%}
.typeahead-wrap>input{width:100%}
.typeahead-menu{position:absolute;z-index:80;left:0;right:0;top:calc(100% + 4px);max-height:260px;overflow:auto;background:#fff;border:1px solid #aebcc7;border-radius:9px;box-shadow:0 12px 28px rgba(24,41,54,.18);padding:4px}
.typeahead-menu[hidden]{display:none}
.typeahead-option{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:2px;border:0;background:#fff;padding:9px 10px;border-radius:6px;text-align:left;cursor:pointer;color:#1f2f39}
.typeahead-option:hover,.typeahead-option.active{background:#edf5fa}
.typeahead-option span{font-weight:750;font-size:13px}
.typeahead-option small{font-size:11px;color:var(--muted);font-weight:500}
.typeahead-option.add-option{border-top:1px solid var(--line);border-radius:0 0 6px 6px;margin-top:3px;padding-top:10px;color:var(--accent)}
.reference-selected{background:#f6fbf3;border-color:#88ad71}
.secondary-backdrop{z-index:1200;background:rgba(22,31,38,.44)}

.intentional-override{border-color:#b7791f!important;background:#fffaf0!important}.bid-recipient-row{padding:12px}.bid-recipient-row .toolbar{margin-top:6px}

.ai-review-panel{margin-top:12px;padding:14px;border:1px solid #d7e3ec;border-radius:12px;background:#f8fbfd}.ai-entity-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border:1px solid #dfe5e9;border-radius:10px;background:#fff}.finding.risk{border-left:4px solid #b86a16;background:#fff8ef}.group-title.small{font-size:13px;margin-top:14px}
.ai-field-table{display:grid;gap:7px;margin-top:8px}.ai-field-row{display:grid;grid-template-columns:minmax(180px,1.2fr) 70px minmax(220px,2fr);gap:12px;align-items:start;padding:9px 10px;border:1px solid var(--border);border-radius:9px;background:var(--panel)}.compact-table table{font-size:12px}@media(max-width:900px){.ai-field-row{grid-template-columns:1fr}.ai-field-row>div:nth-child(2){order:3}}

/* Build 0.5.1 — real-world project testing refinements */
.home-block{max-width:1120px}
.form-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}
.modal-card.persistent{outline:1px solid transparent}
.review-summary{border:1px solid #d7e3ec;border-radius:12px;background:#fff;padding:12px 14px;margin:10px 0}
.review-summary>p{margin:0;line-height:1.5}
.review-counts{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.review-count{display:inline-flex;gap:5px;align-items:center;padding:5px 8px;border-radius:999px;background:#eef4f8;color:#365264;font-size:11px;font-weight:750}
.review-section{border:1px solid var(--line);border-radius:11px;background:#fff;margin-top:9px;overflow:hidden}
.review-section>summary,.doc-discipline>summary{cursor:pointer;list-style:none;padding:11px 13px;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f8fafc}
.review-section>summary::-webkit-details-marker,.doc-discipline>summary::-webkit-details-marker{display:none}
.review-section>summary:after,.doc-discipline>summary:after{content:'+';font-size:17px;color:var(--muted)}
.review-section[open]>summary:after,.doc-discipline[open]>summary:after{content:'−'}
.review-section-body{padding:10px 12px}
.rfi-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:7px;line-height:1.45}
.project-actions-card{border-top:4px solid var(--accent)}
.project-actions-card .action-row{grid-template-columns:90px minmax(0,1fr) auto}
.document-section{border:1px solid var(--line);border-radius:12px;background:#fbfcfd;margin:10px 0;padding:0 10px 10px}
.document-section>.group-title{margin-top:0}
.doc-discipline{border:1px solid var(--line);border-radius:10px;background:#fff;margin-top:8px;overflow:hidden}
.doc-discipline>summary span{min-width:24px;height:24px;border-radius:999px;background:#eef2f5;display:grid;place-items:center;font-size:11px;color:#52606c}
.project-document-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.relationship-line{white-space:normal;line-height:1.35}
@media(max-width:1200px){.form-grid.five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.form-grid.five{grid-template-columns:1fr 1fr}.project-actions-card .action-row{grid-template-columns:1fr}}
@media(max-width:760px){.home-block{max-width:none}.form-grid.five{grid-template-columns:1fr}}

/* Build 0.6.1 — component-based bidding, Current Project Documents, Subcontractors, Final Review and Universal Intake */
.project-direction-card{border-top:4px solid #3f7aa0;background:linear-gradient(180deg,#fff,#fbfdff)}
.ai-direction-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}.ai-direction-bar textarea{min-height:76px}.direction-actions{display:flex;flex-direction:column;gap:8px;justify-content:center}.directive-history{margin-top:10px}.directive-history>summary{cursor:pointer;font-weight:750;color:#315d7a}
.review-item-list{display:flex;flex-direction:column;gap:7px}.review-item-card{width:100%;display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff;text-align:left;cursor:pointer;color:var(--ink)}.review-item-card:hover{border-color:#9fb9ca;background:#f8fbfd}.review-item-card.risk{border-left:4px solid #b87500}.review-item-card.question{border-left:4px solid #4f7390}.review-item-card.scope{border-left:4px solid #6e8f6e}.review-item-card.resolved{background:#f7fbf8;border-color:#b8d5bf}.review-check{font-size:18px;font-weight:800;color:#558063;line-height:1}.review-item-text{font-size:13px;line-height:1.4}.review-item-status{font-size:10px;font-weight:800;color:#607080;background:#eef3f6;border-radius:999px;padding:4px 7px;white-space:nowrap}.checkbox-row{flex-direction:row;align-items:center;gap:8px!important;font-weight:650}.checkbox-row input{width:auto}
.document-package{border:1px solid var(--line);border-radius:12px;background:#fff;margin:10px 0;overflow:hidden}.document-package>summary{cursor:pointer;display:flex;align-items:center;gap:10px;padding:12px 14px;background:#f7f9fb}.document-package>summary b{font-size:14px}.document-package>summary .muted{margin-left:auto}.document-package-body{padding:10px}.folder-icon{color:#52758c;font-weight:800}.important-set{border:1px solid #bfd5c5;border-radius:12px;background:#f7fbf8;padding:14px;margin-bottom:14px}.important-set h3{margin:0 0 3px}.empty-important{display:flex;align-items:center;justify-content:space-between;gap:20px}.important-page-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}.important-page{border:1px solid var(--line);border-radius:9px;background:#fff;padding:10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px}.important-page:hover{border-color:#8eb0c6;background:#f7fbfd}.important-page b{color:#245c81}.important-page span{font-size:12px;font-weight:700}.important-page small{font-size:10px;color:var(--muted);line-height:1.35}
.estimate-hero{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 14px}.estimate-hero>div{border:1px solid var(--line);border-radius:12px;background:#f9fbfc;padding:14px}.estimate-hero span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:750}.estimate-hero b{font-size:22px;display:block;margin-top:5px}.estimate-workflow-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.estimate-workflow-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px;text-align:left;cursor:pointer;min-height:96px}.estimate-workflow-card:hover{border-color:#97b6ca;box-shadow:var(--shadow)}.estimate-workflow-card b{display:block;font-size:14px;margin-bottom:6px}.estimate-workflow-card span{font-size:11.5px;color:var(--muted);line-height:1.4}.estimate-summary-list{display:flex;flex-direction:column;gap:7px}.estimate-summary-list button,.estimate-total-row{display:flex;justify-content:space-between;align-items:center;width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 12px}.estimate-summary-list button{cursor:pointer}.estimate-summary-list button:hover{background:#f7fafc}.estimate-total-row{background:#f4f8fb;font-weight:800}.readiness-list{display:flex;flex-direction:column;gap:8px}.readiness-row{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;justify-content:space-between;gap:12px}.readiness-row.good{border-left:4px solid var(--good)}.readiness-row.warn{border-left:4px solid var(--warn)}
.final-review-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}.final-review-metrics button{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px;text-align:left;cursor:pointer}.final-review-metrics button:hover{border-color:#9ab6c8}.final-review-metrics button.strong{background:#f1f6f9}.final-review-metrics span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:800}.final-review-metrics b{display:block;font-size:18px;margin-top:4px}.readiness-strip{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}.readiness-strip span{padding:6px 9px;border-radius:999px;font-size:11px;font-weight:800}.readiness-strip .good{background:#e6f5ec;color:#21663e}.readiness-strip .warn{background:#fff1d9;color:#815800}.final-scenario{display:flex;justify-content:space-between;gap:16px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.template-suggestion{margin-top:7px;padding:8px 10px;border-radius:8px;background:#f6f9fb;font-size:12px}.proposal-preview{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.proposal-header{background:var(--nav);color:#fff;padding:16px;display:flex;justify-content:space-between;align-items:center}.proposal-header b{font-size:17px}.proposal-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}.proposal-meta div{border-bottom:1px solid var(--line);padding-bottom:8px}.proposal-meta span{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:800}.proposal-meta b{display:block;margin-top:3px}
.calendar-card{max-width:none}.calendar-toolbar{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center}.calendar-toolbar>div:last-child{justify-content:flex-end}.calendar-month-title{font-size:20px;font-weight:850;text-align:center}.calendar-toolbar select{min-width:180px}.calendar-legend{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0 8px;font-size:11px;color:var(--muted)}.calendar-legend span{display:flex;align-items:center;gap:5px}.calendar-legend i{width:10px;height:10px;border-radius:3px;background:#6d7b87}.calendar-legend i.estimating{background:#3b82a6}.calendar-legend i.construction{background:#7a6a3e}.calendar-legend i.service-activity{background:#468067}.calendar-legend i.employee-pto{background:#8a68a8}.calendar-legend i.equipment-maintenance{background:#9b6756}.calendar-legend i.deadline-milestone{background:#b74b4b}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays>div{padding:8px;text-align:center;font-size:11px;text-transform:uppercase;font-weight:800;color:#607080;border-bottom:1px solid var(--line)}.calendar-grid{border-left:1px solid var(--line);border-top:1px solid var(--line)}.calendar-day{min-height:142px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;padding:6px}.calendar-day.outside{background:#f7f9fa}.calendar-day.today{background:#fffdf0;box-shadow:inset 0 0 0 2px #d9c56e}.calendar-day-number{font-size:11px;font-weight:800;color:#50606d;text-align:right;margin-bottom:4px}.calendar-day-events{display:flex;flex-direction:column;gap:4px}.calendar-event-pill{border:0;border-left:4px solid #6d7b87;border-radius:6px;background:#eef2f5;padding:5px 6px;text-align:left;cursor:pointer;overflow:hidden}.calendar-event-pill span{display:block;font-size:10.5px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-pill small{display:block;font-size:9px;color:#66737f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event-pill.estimating{background:#e8f3f8;border-left-color:#3b82a6}.calendar-event-pill.construction{background:#f4f0e4;border-left-color:#7a6a3e}.calendar-event-pill.service-activity{background:#e9f4ee;border-left-color:#468067}.calendar-event-pill.employee-pto{background:#f0e9f6;border-left-color:#8a68a8}.calendar-event-pill.equipment-maintenance{background:#f5ece8;border-left-color:#9b6756}.calendar-event-pill.deadline-milestone{background:#faeaea;border-left-color:#b74b4b}.calendar-event-pill.Critical{box-shadow:inset 0 0 0 1px #d99898}.calendar-more{border:0;background:transparent;color:#245c81;font-size:10px;font-weight:800;text-align:left;cursor:pointer;padding:2px}.calendar-source-note{margin-top:10px;color:var(--muted);font-size:11px}.calendar-list-event{border:1px solid var(--line);border-radius:9px;background:#fff;padding:10px;text-align:left;display:flex;flex-direction:column;gap:3px;cursor:pointer}.calendar-list-event span{font-size:11px;color:var(--muted)}
@media(max-width:1100px){.important-page-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.estimate-workflow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.final-review-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-day{min-height:120px}.calendar-event-pill small{display:none}}
@media(max-width:760px){.ai-direction-bar{grid-template-columns:1fr}.direction-actions{flex-direction:row}.review-item-card{grid-template-columns:24px 1fr}.review-item-status{grid-column:2}.important-page-grid,.estimate-hero,.estimate-workflow-grid,.final-review-metrics,.proposal-meta{grid-template-columns:1fr}.empty-important,.final-scenario{align-items:stretch;flex-direction:column}.calendar-toolbar{grid-template-columns:1fr}.calendar-month-title{order:-1}.calendar-weekdays,.calendar-grid{min-width:760px}.calendar-card{overflow-x:auto}.calendar-toolbar>div:last-child{justify-content:flex-start}}

/* Build 0.6.1 — bidding-flow consolidation */
.project-ai-compact{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(280px,1fr) auto auto;gap:10px;align-items:center;border:1px solid #b8cfdf;border-left:4px solid var(--accent);border-radius:12px;background:#fbfdff;padding:10px 12px}.project-ai-compact>div{min-width:0;display:flex;flex-direction:column}.project-ai-compact b{font-size:13px}.project-ai-compact span{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-ai-compact input{min-width:0}.clean-details{padding:0;overflow:hidden}.clean-details>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;padding:16px 18px}.clean-details>summary::-webkit-details-marker{display:none}.clean-details>summary h2{margin:0}.clean-details .details-chevron{font-size:18px;color:#577083}.clean-details[open] .details-chevron{transform:rotate(45deg)}.details-body{padding:0 18px 16px}.doc-discipline{border-top:1px solid var(--line);padding:0}.doc-discipline>summary{cursor:pointer;padding:10px 4px;font-weight:750;display:flex;gap:8px;align-items:center}.doc-discipline>summary span{font-size:10px;color:var(--muted)}.current-sheet-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:4px 0 10px}.current-sheet-card{border:1px solid var(--line);border-radius:10px;background:#fff;padding:11px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:0}.current-sheet-card:hover{border-color:#90aec3;background:#f8fbfd}.current-sheet-card b{font-size:12.5px;color:#1d557b;overflow-wrap:anywhere}.current-sheet-card span{font-size:10.5px;color:#4f5d69}.current-sheet-card small{font-size:9.5px;color:var(--muted)}
.estimate-component-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}.estimate-component-card{border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:9px;min-height:128px}.estimate-component-card:hover{border-color:#8caec5;box-shadow:var(--shadow)}.estimate-component-card>b{font-size:14px}.component-money{display:flex;flex-wrap:wrap;gap:6px 10px;color:#344451;font-size:10.5px;font-weight:700}.estimate-component-card small{color:var(--muted);line-height:1.35}.component-workspace{border-top:3px solid var(--accent);background:#fafcfd;border-radius:12px;padding:16px;margin-top:14px}.estimate-hero.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.coverage-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}.coverage-legend>div{border:1px solid var(--line);border-radius:9px;background:#fff;padding:9px 10px}.review-ai-inline{border:1px solid #bdd2df;border-radius:10px;background:#f7fbfd;padding:10px;margin:10px 0}.review-ai-inline b{display:block;margin-bottom:6px}.review-ai-inline textarea{min-height:74px;margin-bottom:7px}
.universal-intake-strip{margin-top:10px;border:1px dashed #8eb0c6;border-radius:11px;padding:10px 12px;background:#f8fbfd;display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer}.universal-intake-strip:hover,.universal-intake-strip.dragging{background:#eef6fb;border-color:#467fa4}.universal-intake-strip>div:first-child{min-width:0;display:flex;flex-direction:column;gap:2px}.universal-intake-strip b{font-size:12.5px}.universal-intake-strip span{font-size:10.5px;color:var(--muted);line-height:1.35}.intake-queue-row{border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px}
.sub-bid-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.sub-bid-card{border:1px solid var(--line);border-radius:12px;background:#fff;text-align:left;padding:14px;cursor:pointer;display:flex;flex-direction:column;gap:7px}.sub-bid-card:hover{border-color:#8faec3;box-shadow:var(--shadow)}.sub-bid-scope{font-size:12px;font-weight:750;color:#2d4557}.scope-chip-grid{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}.scope-check{flex-direction:row;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:7px 10px;background:#fff;cursor:pointer}.scope-check input{width:auto}.contact-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.contact-choice-grid label{flex-direction:row;align-items:flex-start;border:1px solid var(--line);border-radius:9px;background:#fff;padding:8px;gap:8px}.contact-choice-grid input{width:auto;margin-top:2px}.contact-choice-grid span{display:flex;flex-direction:column;gap:2px}.contact-choice-grid small{font-size:10px;color:var(--muted);font-weight:500}.current-doc-picker{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fbfcfd;padding:6px}.current-doc-picker label{flex-direction:row;align-items:flex-start;gap:7px;padding:7px;border-bottom:1px solid #edf1f4}.current-doc-picker label:last-child{border-bottom:0}.current-doc-picker input{width:auto;margin-top:2px}.current-doc-picker span{margin-left:auto;font-size:9.5px;color:var(--muted);text-align:right;max-width:45%}.scenario-price-line{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:10.5px;color:#465864;font-weight:700;margin-top:7px}.final-component-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:8px 0 12px}.final-component-grid button{border:1px solid var(--line);border-radius:10px;background:#fff;padding:11px;text-align:left;cursor:pointer}.final-component-grid button:hover{border-color:#92b0c3;background:#f8fbfd}.final-component-grid span,.final-component-grid small{display:block}.final-component-grid span{font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:800}.final-component-grid b{display:block;font-size:15px;margin:4px 0}.final-component-grid small{font-size:9.5px;color:#64737e}.scenario-pricing-table input{min-width:80px}.scenario-total-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.scenario-total-panel>div{border:1px solid var(--line);border-radius:10px;padding:10px;background:#f7fafc}.scenario-total-panel span{display:block;font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800}.scenario-total-panel b{display:block;font-size:18px;margin-top:4px}
@media(max-width:1100px){.estimate-component-grid,.final-component-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.current-sheet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-ai-compact{grid-template-columns:1fr auto}.project-ai-compact>div{grid-column:1/-1}.sub-bid-grid{grid-template-columns:1fr}}
@media(max-width:760px){.estimate-component-grid,.current-sheet-grid,.final-component-grid,.estimate-hero.compact,.scenario-total-panel,.contact-choice-grid{grid-template-columns:1fr}.project-ai-compact{grid-template-columns:1fr}.universal-intake-strip,.intake-queue-row{align-items:stretch;flex-direction:column}.current-doc-picker span{max-width:none;margin-left:0}.final-scenario{align-items:stretch;flex-direction:column}}

/* KCIS OS 0.7.0 Bidding Release Candidate refinements */
.current-sheet-card-wrap{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch;min-width:0}
.current-sheet-card-wrap .current-sheet-card{min-width:0;width:100%}
.sheet-manage-btn{align-self:stretch;min-width:74px}
.docs-ai-card{padding-bottom:16px}
.docs-ai-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.docs-ai-results{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.external-status{margin-top:16px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}
.external-status>summary{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;cursor:pointer}
.external-status>.stack{padding:0 14px 14px}
.external-pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.external-contact-choice{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.external-contact-choice:last-child{border-bottom:0}
.external-contact-choice input{width:auto}
.external-contact-choice span{display:flex;flex-direction:column;min-width:0}
.external-contact-choice small{color:var(--muted);overflow-wrap:anywhere}
.external-quote-head,.external-quote-line{display:grid;grid-template-columns:1fr 2.2fr .7fr .65fr .9fr .95fr;gap:6px;align-items:center}
.external-quote-head{font-size:12px;font-weight:700;color:var(--muted);padding:4px 2px}
.external-quote-line{margin-bottom:6px}
.external-quote-line input{min-width:0;width:100%}
.check-line{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;margin-top:22px}
.check-line input{width:auto}
@media(max-width:800px){.docs-ai-bar{grid-template-columns:1fr}.current-sheet-card-wrap{grid-template-columns:1fr}.sheet-manage-btn{min-height:42px}.external-quote-head{display:none}.external-quote-line{grid-template-columns:1fr 1fr}.external-quote-line .eq-desc{grid-column:1/-1}}

/* 0.7.0 Final Bidding RC - graphical bid basis / residential */
.new-project-type-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.new-project-type-card{border:1px solid var(--border);background:var(--panel);border-radius:16px;padding:20px;text-align:left;min-height:145px;cursor:pointer}.new-project-type-card b{display:block;font-size:18px;margin-bottom:10px}.new-project-type-card span{display:block;color:var(--muted);line-height:1.45}.new-project-type-card:hover{border-color:var(--accent);background:var(--accent-soft)}
.primary-workflow{border-width:2px!important}.irr-editor-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.irr-editor-toolbar select{width:auto;min-width:200px}.irr-plan-editor,.res-aerial-editor{position:relative;width:100%;aspect-ratio:10/7;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#f5f5f5}.irr-plan-editor img,.irr-plan-editor .irr-manual-canvas,.res-aerial-editor iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border:0}.irr-manual-canvas{display:grid;place-items:center;color:var(--muted);background:repeating-linear-gradient(0deg,#fafafa,#fafafa 39px,#ededed 40px),repeating-linear-gradient(90deg,transparent,transparent 39px,#ededed 40px)}#irrPlanSvg,#resBoundarySvg{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.irr-shape{cursor:pointer;vector-effect:non-scaling-stroke}.irr-shape.rotor{fill:rgba(34,116,210,.20);stroke:#2274d2;stroke-width:2}.irr-shape.mp_rotator{fill:rgba(45,163,89,.20);stroke:#2da359;stroke-width:2}.irr-shape.spray{fill:rgba(224,142,20,.18);stroke:#e08e14;stroke-width:2}.irr-shape.drip{fill:rgba(130,74,181,.17);stroke:#824ab5;stroke-width:2}.irr-shape.spray12_alt{fill:rgba(200,52,151,.15);stroke:#c83497;stroke-width:2;stroke-dasharray:7 5}.irr-shape.no_irrigation{fill:rgba(110,110,110,.13);stroke:#666;stroke-width:2;stroke-dasharray:5 4}.irr-shape.mainline{fill:none;stroke:#174fa7;stroke-width:4}.irr-shape.bore,.irr-shape.bore_figured{fill:none;stroke:#8a3ffc;stroke-width:6;stroke-dasharray:2 5;stroke-linecap:round}.irr-shape.bore_possible{fill:none;stroke:#8a3ffc;stroke-width:4;stroke-dasharray:2 7;opacity:.55}.irr-shape.area-keep_paving{fill:rgba(60,60,60,.10);stroke:#3c3c3c;stroke-width:2;stroke-dasharray:3 3}.irr-shape.sleeve{fill:none;stroke:#c62f29;stroke-width:7;stroke-dasharray:9 5}.irr-shape.water_source{fill:#078cb8;stroke:white;stroke-width:1}.irr-shape.backflow{fill:#d66a14;stroke:white;stroke-width:1}.irr-shape.controller{fill:#222;stroke:white;stroke-width:1}.irr-shape.selected{filter:drop-shadow(0 0 5px rgba(0,0,0,.65));stroke-width:5}.coverage-legend.compact{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0}.coverage-legend.compact span{font-size:11px;border:1px solid var(--border);border-radius:999px;padding:4px 8px;background:var(--panel)}
.res-aerial-editor iframe{pointer-events:none}.property-line{fill:rgba(30,110,210,.07);stroke:#1f6fd2;stroke-width:4;vector-effect:non-scaling-stroke}.irrigation-limit-line{fill:rgba(43,160,81,.09);stroke:#2ba051;stroke-width:4;stroke-dasharray:8 5;vector-effect:non-scaling-stroke}.boundary-handle{stroke:white;stroke-width:3;cursor:grab}.boundary-handle.property{fill:#1f6fd2}.boundary-handle.limit{fill:#2ba051}.legend-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:8px 0}.legend-swatch{display:inline-block;width:14px;height:4px;margin-right:5px;vertical-align:middle}.legend-swatch.property{background:#1f6fd2}.legend-swatch.irr-limit{background:#2ba051}.residential-overview-card{border-left:4px solid var(--accent)}
@media(max-width:800px){.new-project-type-grid{grid-template-columns:1fr}.irr-plan-editor,.res-aerial-editor{aspect-ratio:4/3}.irr-editor-toolbar select{width:100%}}

/* KCIS OS 0.8 workflow consolidation */
.review-item-card.quick-review{cursor:default;grid-template-columns:26px minmax(0,1fr) minmax(220px,auto);align-items:center}
.review-item-card.action{border-left:4px solid #756aa5}
.review-item-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.review-link-note{min-height:12px;color:var(--muted)}
.review-quick-controls{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.review-quick-controls select{min-width:135px;padding:6px 8px;font-size:11px}
.review-quick-controls .review-item-status{max-width:155px;overflow:hidden;text-overflow:ellipsis}
.capacity-guidance{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:12px;background:#f8fbfd}
.capacity-guidance.high{border-left:4px solid #b87500}.capacity-guidance.moderate{border-left:4px solid #b99b2f}.capacity-guidance.light{border-left:4px solid #59845f}.capacity-guidance.balanced{border-left:4px solid #527a95}
.capacity-price{display:flex;flex-direction:column;gap:3px;text-align:right;font-size:11px}.capacity-guidance>.tiny{grid-column:1/-1}
.seeded-note{font-weight:750;color:#4f775a!important}
.proposal-scope-language{border:1px solid var(--line);border-radius:11px;background:#fff}.proposal-scope-language>summary{padding:11px 13px;display:flex;justify-content:space-between;gap:10px;cursor:pointer}.proposal-language-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.proposal-language-box{border:1px solid var(--line);border-radius:9px;padding:10px;background:#fafcfd}.proposal-language-box>b{display:block;margin-bottom:7px}.proposal-line{display:flex;flex-direction:row;align-items:flex-start;gap:7px;font-weight:500;font-size:12px;margin:5px 0}.proposal-line input{width:auto;margin-top:2px}
.new-project-type-card.clean ul{margin:10px 0 14px;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.5}.new-project-type-card.clean em{font-style:normal;font-weight:800;color:var(--accent)}.new-project-type-card.clean-grid{}.new-project-selector-head{margin-bottom:12px}
@media(max-width:760px){.review-item-card.quick-review{grid-template-columns:24px 1fr}.review-quick-controls{grid-column:2;justify-content:flex-start}.capacity-guidance{grid-template-columns:1fr}.capacity-price{text-align:left}.proposal-language-grid{grid-template-columns:1fr}}

/* KCIS OS 0.9 Bidding Workflow Completion */
.guided-bid-steps{display:flex;flex-direction:column;gap:8px;margin:10px 0 16px}.guided-step{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:#fff}.guided-step.complete{border-color:#a6c9aa;background:#f5faf6}.guided-step.open{border-color:#d7c78d;background:#fffdf6}.guided-step-check{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);font-weight:900;color:var(--muted);background:#f7fafc}.guided-step.complete .guided-step-check{background:#e4f3e6;border-color:#8dbb94;color:#2f7640}.guided-step-main{min-width:0}.guided-step-main b{display:block;font-size:13px}.guided-step-main .tiny{margin-top:3px}.guided-step-status{font-size:11px;font-weight:800;white-space:nowrap}.guided-section-anchor{scroll-margin-top:120px}.component-guided-list{display:flex;flex-direction:column;gap:9px;margin-top:12px}.component-guided-step{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#fff}.component-guided-step.complete{border-left:4px solid #6aa878}.component-guided-step.needs-review,.component-guided-step.in-progress{border-left:4px solid #c5942a}.component-guided-step.not-started{border-left:4px solid #9aa9b2}.component-guided-step b{display:block}.component-guided-step .tiny{margin-top:2px}.scope-structure-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.scope-structure-grid textarea{min-height:112px}.action-link{border:0;background:transparent;color:var(--accent);font-weight:800;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.warn-text{color:#9b6200;font-weight:750}.success-text{color:#3f7c4d;font-weight:750}.guided-component{scroll-margin-top:120px}.pricing-history-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:10px 0}.pricing-history-summary>div{border:1px solid var(--line);border-radius:10px;background:#f8fbfd;padding:9px}.pricing-history-summary span{display:block;font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800}.pricing-history-summary b{display:block;font-size:15px;margin-top:3px}.material-price-row.recommended{background:#f1f8f2}.material-price-row.service-context{background:#fffaf0}.material-price-row.project-specific{border-left:3px solid #5f8bb1}.workflow-step-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.workflow-step-actions .btn{white-space:nowrap}
@media(max-width:900px){.scope-structure-grid{grid-template-columns:1fr}.guided-step,.component-guided-step{grid-template-columns:30px minmax(0,1fr)}.guided-step-status,.workflow-step-actions{grid-column:2}.pricing-history-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.pricing-history-summary{grid-template-columns:1fr}}
.global-back-btn{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* KCIS OS 0.10.0 — simplified estimator workflow */
.kcis-ai-bar{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;width:100%;padding:10px 12px;border:1px solid #c9d7e3;border-left:4px solid #12628d;border-radius:12px;background:#fff}.kcis-ai-bar input{border:0!important;box-shadow:none!important;font-size:15px;background:transparent}.kcis-ai-bar input:focus{outline:none}.ai-send-btn{min-width:44px;font-size:18px;padding:8px 12px}.ai-file-btn{white-space:nowrap}
.scope-builder-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.scope-builder-section{border:1px solid #d9e2ea;border-radius:10px;padding:10px;background:#fbfcfd}.scope-builder-list{display:flex;flex-direction:column;gap:7px;margin-top:8px}.scope-builder-item{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;border:1px solid #e3e9ee;border-radius:8px;padding:9px;background:#fff}.scope-builder-text{flex:1;line-height:1.35}.scope-builder-actions{display:flex;gap:5px}.sticky-modal-actions{position:sticky;bottom:-1px;background:#fff;padding-top:10px;border-top:1px solid #e6eaee;z-index:3}
.bid-basis-flow{display:flex;flex-direction:column;gap:16px}.bid-basis-flow section{border-bottom:1px solid #e3e8ec;padding-bottom:14px}.bid-basis-sheets{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}.bid-basis-sheet{display:flex;gap:9px;align-items:flex-start;border:1px solid #dbe3e9;border-radius:8px;padding:8px;background:#fff}.bid-basis-sheet input{margin-top:4px}.bid-basis-sheet span{display:flex;flex-direction:column;gap:2px}.bid-basis-sheet small{color:#66727c}.irr-plan-editor.large{height:min(72vh,850px);min-height:560px}.irr-plan-editor.large img,.irr-plan-editor.large svg{width:100%;height:100%}
.project-proposal-item small{display:block;color:#77838c;margin-left:24px;margin-top:2px}.proposal-line{padding:6px 4px;border-radius:6px}.proposal-line:hover{background:#f5f8fa}
@media(max-width:900px){.scope-builder-grid,.bid-basis-sheets{grid-template-columns:1fr}.irr-plan-editor.large{min-height:420px;height:62vh}}
/* KCIS OS 0.10 estimator simplification completion */
.scope-builder-summary{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}.scope-builder-summary span{background:#eef4f7;border:1px solid #d6e0e7;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.scope-builder-items{display:flex;flex-direction:column;gap:7px;margin-top:8px}.scope-builder-section{margin-bottom:12px}.scope-builder-item{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.scope-builder-actions{display:flex;gap:5px;flex-wrap:wrap}.mini-tag{display:inline-block;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.25px;margin-right:7px;background:#edf2f5;color:#4e6574}.mini-tag.inclusions{background:#edf8ef;color:#397147}.mini-tag.exclusions{background:#fff3ed;color:#9c5035}.mini-tag.rfis{background:#fff8df;color:#8b6b14}.mini-tag.notes{background:#f1eef9;color:#665392}.bid-basis-stage{border:1px solid #dde5eb;border-radius:11px;background:#fbfcfd;padding:12px}.bid-basis-stage>b{display:block;margin-bottom:3px}.bid-basis-sheet-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}.bid-basis-sheet-list.support{grid-template-columns:repeat(3,minmax(0,1fr))}.bid-basis-sheet-card{display:flex;align-items:flex-start;gap:8px;border:1px solid #dbe3e9;border-radius:8px;background:#fff;padding:8px;cursor:pointer;font-weight:500}.bid-basis-sheet-card:hover{border-color:#91b1c6;background:#f7fbfd}.bid-basis-sheet-card input{width:auto;margin-top:4px}.bid-basis-sheet-card span{display:flex;flex-direction:column;gap:2px;min-width:0}.bid-basis-sheet-card small{font-size:10px;color:var(--muted);overflow-wrap:anywhere}.irr-plan-editor.xl{height:min(78vh,920px);min-height:620px}.proposal-language-box{max-height:420px;overflow:auto}.proposal-line.project-proposal-item,.proposal-line.standard-clause{cursor:pointer}.proposal-line input:checked+span{font-weight:650}.proposal-line input:not(:checked)+span{opacity:.58}.project-shell,.workflow-content,.one-card-host{box-sizing:border-box}.project-shell-head,.workflow-bar,.workflow-content{max-width:1180px;margin-left:auto;margin-right:auto}.project-kpi-strip{grid-template-columns:repeat(auto-fit,minmax(155px,1fr))}
@media(max-width:1000px){.bid-basis-sheet-list.support,.bid-basis-sheet-list{grid-template-columns:1fr 1fr}.irr-plan-editor.xl{min-height:500px;height:68vh}}
@media(max-width:700px){.bid-basis-sheet-list.support,.bid-basis-sheet-list{grid-template-columns:1fr}.scope-builder-item{flex-direction:column}.scope-builder-actions{width:100%}.irr-plan-editor.xl{min-height:400px;height:58vh}}
.record-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0 14px}.record-field{border-bottom:1px solid #e5eaee;padding:8px 2px;min-width:0}.record-field span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:800;margin-bottom:3px}.record-field b{font-size:13px;overflow-wrap:anywhere}.project-info-record input[readonly]{border:0;background:transparent;padding-left:0}.step-work-head{margin-bottom:10px}.status-aware .project-kpi-card{min-width:0}.workflow-content>.stack,.workflow-content>.card,.workflow-content>.guided-section-anchor{max-width:1180px;margin-left:auto;margin-right:auto}
@media(max-width:900px){.record-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.record-grid{grid-template-columns:1fr}}

/* 0.10 Final Review quiet proposal assembly */
.proposal-standard-library{margin-top:8px;border-top:1px solid #e5e9ef;padding-top:7px}.proposal-standard-library>summary{cursor:pointer;font-size:12px;font-weight:700;color:#486174;list-style:none}.proposal-standard-library>summary::-webkit-details-marker{display:none}.proposal-standard-library>summary:after{content:' +';float:right}.proposal-standard-library[open]>summary:after{content:' −'}.proposal-standard-list{display:grid;gap:6px;margin-top:8px}.proposal-language-box>.proposal-line{margin-top:6px}

/* ============================================================================
   KCIS OS 0.11.0 — KC Irrigation Modern-Classy / Soft-3D Design System
   Brand direction: KCIS green + irrigation blue + graphite; depth communicates
   hierarchy without turning data screens into heavy skeuomorphic controls.
   ============================================================================ */
:root{
  --bg:#eef3f5;--panel:#ffffff;--ink:#18242c;--text:#18242c;--muted:#66757f;--line:#d6e0e5;
  --nav:#172126;--nav2:#223139;--accent:#1478bb;--accent-dark:#0d5e97;--accent2:#e5f2fa;
  --kcis-green:#189148;--kcis-green-dark:#0c6d35;--kcis-blue:#1478bb;--kcis-blue-dark:#0a5792;
  --graphite:#172126;--warn:#b97b0d;--bad:#a84242;--good:#21824a;
  --shadow:0 9px 24px rgba(31,49,59,.08),0 1px 2px rgba(31,49,59,.10);
  --shadow-raised:0 5px 0 rgba(7,67,108,.18),0 10px 18px rgba(20,63,88,.13),inset 0 1px 0 rgba(255,255,255,.55);
  --radius:14px;
}
body{background:linear-gradient(145deg,#f4f7f8 0%,#edf2f4 52%,#eaf0f2 100%);}
.topbar{height:74px;background:linear-gradient(180deg,#20292e 0%,#12191d 100%);border-bottom:1px solid #0b1013;box-shadow:0 4px 18px rgba(0,0,0,.18);color:#f7fbfd;padding:0 20px;grid-template-columns:minmax(285px,1fr) auto minmax(220px,1fr)}
.brand-row{gap:13px;min-width:0}.brand-logo-3d{width:174px;height:58px;object-fit:contain;object-position:left center;border-radius:7px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.3))}.brand-logo-link{display:flex;align-items:center;flex:0 0 auto;border-radius:7px;text-decoration:none;transition:opacity .12s ease}.brand-logo-link:hover{opacity:.88}.brand-logo-link:focus-visible{outline:2px solid #6cb8ff;outline-offset:3px}.brand-os-label{padding-left:11px;border-left:1px solid rgba(255,255,255,.16);white-space:nowrap}.brand-os-label>b{font-size:14px;letter-spacing:.3px}.brand-os-label .tiny{color:#b9c8d0;font-size:10px}.topbar .user-row{color:#dce8ed}.topbar .user-row .btn{color:#f3f8fa;border-color:#44535b;background:linear-gradient(#3b484f,#29343a)}
.topbar .sandbox-pill{box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 2px 6px rgba(0,0,0,.16)}
.app-shell{min-height:calc(100vh - 74px);grid-template-columns:220px minmax(0,1fr)}
.sidebar{background:linear-gradient(180deg,#182329 0%,#0f171b 100%);border-right:1px solid #26343b;box-shadow:4px 0 18px rgba(18,31,38,.09);padding-top:16px;position:relative}
.sidebar:before{content:"";position:absolute;top:0;right:0;width:2px;height:100%;background:linear-gradient(180deg,var(--kcis-blue),var(--kcis-green) 48%,transparent 92%);opacity:.7}
.navbtn{color:#c8d5db;border:1px solid transparent;transition:.16s ease;background:transparent}.navbtn:hover{background:linear-gradient(180deg,#2a3a42,#223139);border-color:#334851;color:#fff;transform:translateX(1px)}.navbtn.active{background:linear-gradient(180deg,#176fa6,#105985);border-color:#2184bd;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.19),0 3px 8px rgba(0,0,0,.22);position:relative}.navbtn.active:before{content:"";position:absolute;left:-2px;top:8px;bottom:8px;width:3px;border-radius:3px;background:#35b966;box-shadow:0 0 8px rgba(53,185,102,.45)}
.main-panel{padding:24px 30px 54px}.page-title{color:#16242d;letter-spacing:-.35px}
.card{border-color:#d7e0e4;background:linear-gradient(180deg,#fff 0%,#fcfdfd 100%);box-shadow:var(--shadow);position:relative}.card:before{content:"";position:absolute;left:12px;right:12px;top:0;height:1px;background:rgba(255,255,255,.95);pointer-events:none}.card:hover{border-color:#ccd9df}
.metric,.project-kpi-card,.home-btn,.inline-panel,.bid-basis-stage,.scope-builder-section{background:linear-gradient(180deg,#ffffff 0%,#f9fbfc 100%);border-color:#d7e1e6;box-shadow:0 2px 5px rgba(30,50,60,.045),inset 0 1px 0 #fff}
.metric:hover,.project-kpi-card:hover,.home-btn:hover{border-color:#a9c8d9;box-shadow:0 7px 16px rgba(24,71,99,.09),inset 0 1px 0 #fff;transform:translateY(-1px)}
.btn{border-color:#c4d1d8;background:linear-gradient(180deg,#fff 0%,#edf2f4 100%);color:#273943;box-shadow:0 2px 0 #c3cfd5,0 4px 8px rgba(28,50,61,.08),inset 0 1px 0 #fff;transition:transform .09s ease,box-shadow .09s ease,filter .12s ease}.btn:hover{background:linear-gradient(180deg,#fff,#e8eff2);filter:brightness(1.015)}.btn:active{transform:translateY(2px);box-shadow:0 0 0 #c3cfd5,0 2px 4px rgba(28,50,61,.10),inset 0 1px 3px rgba(25,45,55,.08)}
.btn.primary{background:linear-gradient(180deg,#2d96d4 0%,#1478bb 46%,#0c5d99 100%);border-color:#0d68a6;color:#fff;box-shadow:0 3px 0 #084d7e,0 6px 13px rgba(13,92,146,.24),inset 0 1px 0 rgba(255,255,255,.46);text-shadow:0 1px 1px rgba(0,0,0,.2)}.btn.primary:hover{background:linear-gradient(180deg,#37a2df 0%,#1883c6 48%,#0d66a3 100%)}.btn.primary:active{box-shadow:0 0 0 #084d7e,0 2px 4px rgba(13,92,146,.22),inset 0 2px 4px rgba(0,47,80,.18)}
.btn.secondary{background:linear-gradient(180deg,#f4fbff,#dfeef6);border-color:#a9c8d8;color:#155c84}.btn.danger{background:linear-gradient(180deg,#fff8f8,#f5dddd);border-color:#d9adad;color:#8f3131;box-shadow:0 2px 0 #d3a7a7,0 4px 8px rgba(115,40,40,.08),inset 0 1px 0 #fff}.btn.ghost{box-shadow:none;background:transparent;border-color:transparent}.btn.ghost:active{transform:none}
.tabbtn{background:linear-gradient(#fff,#edf2f4);box-shadow:0 2px 0 #c4cfd5,inset 0 1px 0 #fff;border-color:#c8d3d9;font-weight:700}.tabbtn.active{background:linear-gradient(180deg,#1d7db2,#125e8c);border-color:#0d5c8b;box-shadow:0 2px 0 #074870,inset 0 1px 0 rgba(255,255,255,.35)}
input,select,textarea{border-color:#c9d5db;background:linear-gradient(180deg,#fff,#fdfefe);box-shadow:inset 0 1px 2px rgba(25,45,55,.04)}input:focus,select:focus,textarea:focus{outline:none;border-color:#53a1cc;box-shadow:0 0 0 3px rgba(20,120,187,.10),inset 0 1px 2px rgba(25,45,55,.03)}
.badge.good,.status-pill.good{background:linear-gradient(#effaf2,#dff2e4);border:1px solid #abd6b8}.badge.info{background:linear-gradient(#f0f8fd,#e1f0f9);border:1px solid #b6d5e7}.badge.warn{background:linear-gradient(#fffaf0,#f9eccd);border:1px solid #e6d09d}.badge.bad{background:linear-gradient(#fff6f6,#f7dfdf);border:1px solid #e2bbbb}
.modal-backdrop{background:rgba(7,15,19,.56);backdrop-filter:blur(2px)}.modal-card{border-color:#cbd8df;box-shadow:0 28px 80px rgba(5,20,28,.34),inset 0 1px 0 #fff}.modal-head{padding-bottom:9px;border-bottom:1px solid #e2e8eb}.modal-close{background:linear-gradient(#f7f9fa,#e8edef);box-shadow:0 2px 0 #c9d3d8}

/* Conversational KCIS Job AI */
.kcis-ai-shell{width:100%;position:relative}.kcis-ai-bar{grid-template-columns:30px minmax(0,1fr) auto auto;padding:9px 11px;border:1px solid #a9cbdc;border-left:0;background:linear-gradient(180deg,#ffffff 0%,#f4fafc 100%);box-shadow:0 5px 14px rgba(18,88,126,.08),inset 0 1px 0 #fff;position:relative;overflow:hidden}.kcis-ai-bar:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#22a950 0%,#168fc4 100%)}.kcis-ai-bar:after{content:"";position:absolute;left:4px;right:0;top:0;height:1px;background:linear-gradient(90deg,rgba(34,169,80,.45),rgba(22,143,196,.28),transparent 62%)}
.ai-orb{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 24%,#d8fbff 0%,#40c3e2 17%,#147bc1 48%,#0d4f94 71%,#123d70 100%);box-shadow:0 3px 5px rgba(4,60,100,.28),inset 0 1px 1px rgba(255,255,255,.75);position:relative}.ai-orb span{width:8px;height:8px;border-radius:50%;background:#5bd26e;box-shadow:0 0 6px rgba(91,210,110,.8);position:absolute;right:3px;bottom:3px}.ai-mini-orb{display:inline-block;width:13px;height:13px;border-radius:50%;vertical-align:-2px;margin-right:5px;background:radial-gradient(circle at 35% 25%,#d8fbff,#2ca8d9 31%,#0b67ad 66%,#124a7a);box-shadow:0 1px 3px rgba(8,71,111,.28)}.ai-mini-orb.pulse{animation:kcisPulse 1.2s infinite}@keyframes kcisPulse{0%,100%{transform:scale(.92);opacity:.7}50%{transform:scale(1.12);opacity:1}}
.kcis-ai-thread{display:none;border:1px solid #c8dce6;border-top:0;border-radius:0 0 13px 13px;background:#fff;box-shadow:0 9px 20px rgba(24,67,90,.08);overflow:hidden;margin:0 7px}.kcis-ai-thread.open{display:block}.kcis-ai-thread.collapsed .ai-thread-body{display:none}.ai-thread-head{display:flex;justify-content:space-between;align-items:center;padding:7px 11px;background:linear-gradient(90deg,#f2f9fc,#f5fbf7);font-size:10px;font-weight:800;letter-spacing:.35px;text-transform:uppercase;color:#55717e;border-bottom:1px solid #e1ecef}.ai-collapse{width:24px;height:24px;border:0;border-radius:50%;background:#e8f1f5;color:#476574;cursor:pointer;font-weight:900}.ai-thread-body{display:flex;flex-direction:column;gap:8px;padding:11px 12px;max-height:510px;overflow:auto}.ai-msg{max-width:88%;border-radius:11px;padding:9px 11px;line-height:1.48;box-shadow:0 1px 3px rgba(22,49,61,.05)}.ai-msg.user{margin-left:auto;background:linear-gradient(180deg,#f0f4f6,#e8eef1);border:1px solid #d4dee3}.ai-msg.assistant{margin-right:auto;background:linear-gradient(180deg,#f8fcff,#f3faf6);border:1px solid #d7e8e5}.ai-who{font-size:10px;text-transform:uppercase;letter-spacing:.4px;font-weight:900;color:#56717d;margin-bottom:4px}.ai-answer{font-size:13px}.ai-action-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px;padding-top:9px;border-top:1px solid #dce9e8}.ai-action-status{font-size:11px;font-weight:800;margin-top:8px;padding-top:7px;border-top:1px solid #dce9e8}.ai-action-status.good{color:var(--good)}.ai-thinking,.ai-build-progress{display:flex;gap:9px;align-items:center;padding:12px;color:#52707d;font-size:12px}.ai-build-progress{align-items:flex-start}.ai-build-progress .ai-mini-orb{width:22px;height:22px;flex:0 0 22px}.ai-confirm{min-width:92px}

/* Shared intelligence views */
.intelligence-basis-card{border:1px solid #c9dde5;border-left:4px solid var(--kcis-blue);background:linear-gradient(180deg,#f8fcfe,#f3f9fb);padding:11px 12px;border-radius:10px;margin-top:12px;line-height:1.45}.intelligence-basis-card.good{border-left-color:var(--kcis-green)}.intelligence-basis-card.warn{border-left-color:var(--warn)}.intelligence-basis-card>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px}.financial-intel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-top:12px}.financial-intel-card{border:1px solid #d4e0e5;border-radius:12px;padding:13px;background:linear-gradient(180deg,#fff,#f7fafb);box-shadow:0 3px 8px rgba(28,52,64,.05)}.finance-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:10px 0}.finance-metrics>div{border-top:1px solid #e3eaed;padding-top:6px}.finance-metrics span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.35px;color:var(--muted);font-weight:800}.finance-metrics b{font-size:13px;display:block;margin-top:2px}

/* Irrigation workspace: canvas gets the room, controls stay secondary. */
.irr-plan-editor.xl{height:min(82vh,980px);min-height:680px;border:1px solid #aebfc8;box-shadow:inset 0 2px 8px rgba(20,40,50,.08),0 8px 18px rgba(20,46,59,.07);background:#d9e0e3}.irr-editor-toolbar{background:linear-gradient(180deg,#f8fbfc,#edf3f5);border:1px solid #d2dde2;border-radius:10px;padding:8px;box-shadow:inset 0 1px 0 #fff}.coverage-legend.compact{background:#f6f9fa;border:1px solid #dae4e8;border-radius:9px;padding:7px}
.guided-bid-steps:before{content:"Readiness Map — KCIS may complete downstream items automatically; open only what needs human review.";display:block;font-size:11px;color:var(--muted);padding:2px 4px 5px}.guided-step,.component-guided-step{box-shadow:0 2px 5px rgba(28,50,61,.04),inset 0 1px 0 #fff}.guided-step.complete,.component-guided-step.complete{background:linear-gradient(180deg,#fbfffc,#f0f8f2)}

@media(max-width:1200px){.topbar{grid-template-columns:minmax(230px,1fr) auto minmax(170px,1fr)}.brand-logo-3d{width:145px;height:50px}.brand-os-label .tiny{display:none}}
@media(max-width:900px){.topbar{grid-template-columns:1fr auto;height:68px}.topbar-center{display:none}.brand-logo-3d{width:140px}.app-shell{grid-template-columns:180px minmax(0,1fr)}.financial-intel-grid{grid-template-columns:1fr}.irr-plan-editor.xl{min-height:520px;height:70vh}.ai-msg{max-width:96%}}
@media(max-width:680px){.brand-os-label{display:none}.sidebar{display:none}.app-shell{grid-template-columns:1fr}.main-panel{padding:16px}.kcis-ai-bar{grid-template-columns:25px minmax(0,1fr) auto}.ai-file-btn{display:none}.topbar{padding:0 12px}.user-row span{display:none}.financial-intel-grid,.finance-metrics{grid-template-columns:1fr}.irr-plan-editor.xl{min-height:420px;height:62vh}}

/* 0.11.1 intelligence continuity + exception-first estimating */
.kcis-ai-thread.collapsed{display:none!important}
.ai-history-btn{min-width:76px}
.ai-conversation-summary{padding:10px 12px;background:#f8fbfc;border-bottom:1px solid #e1ecef;display:grid;gap:7px;font-size:11px;color:#55717e}
.ai-outcome-list{display:grid;gap:5px}.ai-outcome-list>div{display:grid;grid-template-columns:78px 1fr;gap:8px;padding:6px 8px;border:1px solid #e0eaed;border-radius:8px;background:#fff}.ai-outcome-list span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-session-index{border-top:1px solid #e4edef;padding-top:6px}.ai-session-index summary{cursor:pointer;font-weight:800;color:#315f75}.ai-session-row{display:grid;gap:2px;padding:7px 0;border-bottom:1px solid #edf2f3}.ai-session-row span,.ai-session-row small{color:#71838b}
.ai-result-card{margin-top:8px;padding:10px;border:1px solid #cfe3e2;border-radius:10px;background:linear-gradient(180deg,#fbfeff,#f5fbf8)}.ai-result-title{font-weight:900;color:#174e67;margin-bottom:6px}.ai-result-docs{display:grid;gap:6px}.ai-doc-card{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px;border:1px solid #dce8eb;border-radius:8px;background:#fff}.ai-doc-card small{display:block;color:#71838b;margin-top:2px}.ai-action-status.working{color:#126d83}.ai-mini-orb.pulse{animation:kcisPulse 1.4s ease-in-out infinite}@keyframes kcisPulse{50%{transform:scale(1.12);filter:brightness(1.12)}}
.review-overall{display:grid;gap:6px;padding:12px;border:1px solid #dce8eb;border-radius:12px;background:#f8fbfc;margin-bottom:10px}.review-overall>div:first-child,.review-progress-row>div:first-child{display:flex;justify-content:space-between;gap:12px}
.review-progress-row>div:first-child>span{white-space:nowrap;align-self:flex-start}.review-progress-track{height:7px;border-radius:999px;background:#e7eef1;overflow:hidden}.review-progress-track i{display:block;height:100%;border-radius:inherit;background:var(--bar-color,var(--kcis-blue));transition:width .35s ease,background-color .35s ease}
.review-progress-track{height:9px}
.review-status-note{margin:0 0 10px;padding:8px 12px;border-radius:9px;background:#e9f6ee;border:1px solid #b9e0c8;color:#0c6d35;font-weight:650}.review-progress-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;margin:10px 0 14px}.review-progress-row{display:grid;gap:5px;padding:8px 10px;border:1px solid #e0e9ec;border-radius:9px;background:#fff}.review-exception-group{display:grid;gap:6px;margin-bottom:10px}.review-section{border:1px solid #e0e8eb;border-radius:9px;background:#fff;margin-top:8px}.review-section>summary{cursor:pointer;padding:9px 11px;font-weight:800;display:flex;justify-content:space-between}.review-section-body{padding:0 10px 10px}.scope-readiness-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}.scope-readiness-chip{text-align:left;padding:10px 12px;border:1px solid #dce5e8;border-radius:11px;background:linear-gradient(180deg,#fff,#f7fafb);box-shadow:0 3px 9px rgba(24,54,68,.06);cursor:pointer}.scope-readiness-chip b,.scope-readiness-chip span,.scope-readiness-chip small{display:block}.scope-readiness-chip span{margin:3px 0;color:#315f75;font-weight:700}.scope-readiness-chip small{color:#74868e}.estimate-dashboard-only #estimateComponentHost:empty{display:none}.step-work-head{margin-bottom:10px}.sticky-modal-actions{position:sticky;bottom:0;background:#fff;padding:10px 0 2px;border-top:1px solid #e7ecee}

/* --- Universal AI bar ------------------------------------------------------
   Mounted once in index.html between #pageTitle and #content, so it appears at
   the top of every section. The scope chip is not decoration: it is the control
   that keeps "one continuous conversation" from becoming "I do not know which
   screen this answer came from." It must never be hidden or truncated away. */
.ai-bar{background:linear-gradient(180deg,#fff 0%,#fbfdfe 100%);border:1px solid #d3dee4;border-radius:12px;box-shadow:0 2px 6px rgba(30,50,60,.06),inset 0 1px 0 #fff;padding:10px 12px;margin-bottom:14px}
.ai-bar-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ai-bar-toggle{flex:0 0 auto;border:1px solid #bfd4e2;background:var(--accent2);color:#0d5e97;border-radius:8px;padding:8px 11px;cursor:pointer;font-weight:750;white-space:nowrap}
.ai-bar-toggle:hover{background:#d8ecf8}
.ai-bar-toggle[aria-expanded="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
/* The chip wraps rather than ellipsing: a half-shown scope is worse than a
   taller bar, because the whole point is that Greg can see what it can see. */
.ai-bar-scope{flex:0 1 auto;max-width:42%;padding:5px 10px;border-radius:999px;background:#eef4f8;border:1px solid #cddfeb;color:#1b5278;font-size:11.5px;font-weight:800;letter-spacing:.2px;line-height:1.3;overflow-wrap:anywhere}
.ai-bar-input{flex:1 1 260px;min-width:200px;width:auto}
.ai-bar-send{flex:0 0 auto;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:8px;padding:9px 15px;cursor:pointer;font-weight:750}
.ai-bar-send:hover{background:var(--accent-dark,#0d5e97)}
.ai-bar-send[disabled],.ai-bar-input[disabled],.ai-bar-reset[disabled]{opacity:.6;cursor:not-allowed}
/* Reset is deliberately secondary: it is a clearing action sitting beside the
   primary Send, and should not compete with it or be hit by accident. */
.ai-bar-reset{flex:0 0 auto;border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:8px;padding:9px 13px;cursor:pointer;font-weight:650}
.ai-bar-reset:hover{border-color:var(--bad,#b3261e);color:var(--bad,#b3261e);background:#fff7f7}
.ai-bar-note{margin-top:8px;font-size:12px;line-height:1.45;border-left:3px solid var(--warn);background:#fff8e8;color:#7c5a00;padding:8px 10px;border-radius:8px}
.ai-bar-note.bad{border-left-color:var(--bad);background:#fff1f1;color:#8d3131}
.ai-bar-thread{margin-top:10px;border-top:1px solid var(--line);padding-top:10px;max-height:46vh;overflow:auto;display:flex;flex-direction:column;gap:8px}
.ai-bar-msg{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fff;font-size:13px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.ai-bar-msg.user{background:#f4f8fb;border-color:#cfdfea}
.ai-bar-msg.refused{border-left:3px solid var(--warn);background:#fff8e8}
.ai-bar-msg.unavailable{border-left:3px solid var(--bad);background:#fff1f1}
.ai-bar-msg .who{display:block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;color:var(--muted);margin-bottom:4px}
.ai-bar-msg .who em{font-style:normal;font-weight:700;text-transform:none;letter-spacing:0}
.ai-bar-empty{font-size:12.5px;color:var(--muted);padding:6px 2px}
.ai-bar-starters{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ai-bar-starters .btn{font-size:12.5px;padding:4px 10px;white-space:normal;text-align:left}
.ai-bar.dragover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent2)}
@media (max-width:820px){.ai-bar-scope{max-width:100%}.ai-bar-input{flex-basis:100%}}

/* Home is the AI bar and nothing else, per Greg 2026-09-22: "I want the home screen to only be the
   bar..but all the other tabs to the left are reachable". The bar is already mounted once above
   #content for every module, so home mode restyles that one element instead of duplicating it. */
body.home-bar-mode #pageTitle{display:none}
body.home-bar-mode .ai-bar{max-width:940px;margin:12px auto 0;padding:18px 18px 14px;border-radius:16px;
  box-shadow:0 18px 46px rgba(18,88,126,.15)}
body.home-bar-mode .ai-bar-input{font-size:17px;padding:13px 12px}
body.home-bar-mode .ai-bar-thread{min-height:34vh;max-height:54vh}
body.home-bar-mode #aiBarToggle{display:none}
/* On Home, #content holds only the alert line, and an alert below a tall conversation panel is
   not an alert. main is a flex column, so order:-1 lifts it above the bar without moving any
   markup -- and it reverts by itself the moment you leave Home. */
/* order:-1 only works if the parent is actually a flex column, and whether it is depends on a
   rule further up that is not guaranteed at every width. Home mode states it outright. */
body.home-bar-mode .main-panel{display:flex;flex-direction:column}
body.home-bar-mode #content{width:100%;max-width:940px;margin:14px auto 0;order:-1}
.ai-bar-dropzone{display:none;margin-top:10px;padding:11px 13px;border:1px dashed #a9cbdc;border-radius:10px;
  background:#f7fbfd;color:#4d5965;font-size:13px;cursor:pointer}
body.home-bar-mode .ai-bar-dropzone{display:block}
.ai-bar-dropzone b{color:#12628d}
.ai-bar.dropping .ai-bar-dropzone{border-color:#12628d;border-style:solid;background:#eaf4f9}
.ai-bar-verbs{display:none;margin-top:8px}
body.home-bar-mode .ai-bar-verbs{display:flex;gap:8px;flex-wrap:wrap}

/* The home alert line: a count and a link, not a card, so Home stays the bar. */
.home-alert-line{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  max-width:940px;margin:0 auto;padding:10px 14px;border:1px solid #c9d7e3;border-radius:10px;
  background:#fff;font-size:13.5px}
.home-alert-line.urgent{border-left:4px solid #b4442e;background:#fdf7f5}
.home-alert-line.quiet{color:var(--muted);background:transparent;border-style:dashed}
.home-alert-line b{font-weight:700}
.home-alert-line b.overdue{color:#b4442e}

/* Dropping a document works on every screen. The strip is only shown on Home, but while a file is
   being dragged anywhere in the OS the bar says so and lights up. */
.ai-bar-draghint{display:none;margin-top:8px;padding:9px 12px;border:1px dashed #12628d;border-radius:9px;
  background:#eaf4f9;color:#0f4f72;font-size:13px;font-weight:600}
body.dragging-file .ai-bar-draghint{display:block}
body.dragging-file .ai-bar{border-color:#12628d;box-shadow:0 0 0 3px rgba(18,98,141,.16)}
body.dragging-file{cursor:copy}

/* Pasted screenshots waiting to go with the next AI message (Greg 2026-09-25) */
.paste-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 0}
.paste-chips[hidden]{display:none}
.paste-chip{display:inline-flex;align-items:center;gap:6px;max-width:260px;padding:4px 6px 4px 4px;border:1px solid #d6dde5;border-radius:8px;background:#fff;font-size:12px}
.paste-chip img{width:44px;height:32px;object-fit:cover;border-radius:4px;border:1px solid #d6dde5}
.paste-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.paste-chip button{border:0;background:transparent;font-size:16px;line-height:1;cursor:pointer;color:inherit;padding:0 2px}
.paste-hint{font-size:12px;opacity:.7}
.paste-note{margin-top:4px;font-size:12px;opacity:.75}

/* ---- Conversation panel (Greg 2026-09-25: "act almost identical to Perplexity") ---- */
.ai-drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:#fff;border-left:1px solid #d3dee4;
  box-shadow:-10px 0 30px rgba(20,40,55,.14);z-index:900;display:flex;flex-direction:column}
.ai-drawer.full{width:100vw !important;left:0;right:0}
.ai-drawer[hidden]{display:none}
.ai-drawer-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}
.ai-drawer-title{font-size:15px}
.ai-drawer-spacer{flex:1}
.ai-drawer-btn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer;font-size:12.5px;color:#34505f}
.ai-drawer-btn:hover{background:#f2f7fa}
.ai-drawer-x{font-size:18px;line-height:1;padding:4px 10px}
.ai-drawer-body{flex:1;overflow:auto;padding:14px 18px}
.ai-drawer-body .ai-bar-thread{margin:0;border:0;padding:0;max-height:none;overflow:visible;gap:14px}
.ai-drawer-body .ai-bar-msg{border:0;background:transparent;padding:0;font-size:14.5px;line-height:1.6}
.ai-drawer-body .ai-bar-msg.user{align-self:flex-end;max-width:85%;background:#eef4f8;border:1px solid #d6e4ee;border-radius:14px;padding:9px 13px}
.ai-drawer-body .ai-bar-msg.refused,.ai-drawer-body .ai-bar-msg.unavailable{border-left:3px solid var(--warn);padding-left:10px}
.ai-drawer-compose{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--line);background:#fbfdfe}
.ai-drawer-compose textarea{flex:1;resize:vertical;min-height:44px;max-height:30vh;border:1px solid #cddfeb;border-radius:10px;padding:10px 12px;font:inherit;font-size:14px}
.ai-bar-msg.md{white-space:normal}
.ai-md p{margin:0 0 .6em}
.ai-md h4{margin:.8em 0 .35em;font-size:14.5px}
.ai-md ul,.ai-md ol{margin:.2em 0 .7em 1.2em;padding:0}
.ai-md li{margin:.15em 0}
.ai-md-table{border-collapse:collapse;margin:.4em 0 .8em;font-size:13.5px}
.ai-md-table th,.ai-md-table td{border:1px solid var(--line);padding:5px 9px;text-align:left}
.ai-md-table th{background:#f4f8fb}
.ai-md-missing{margin-top:6px;font-size:12.5px;color:var(--muted);border-top:1px dashed var(--line);padding-top:6px}
@media (max-width:700px){.ai-drawer{width:100vw !important}}
.ai-drawer.left{right:auto;left:0;border-left:0;border-right:1px solid #d3dee4;box-shadow:10px 0 30px rgba(20,40,55,.14)}
.ai-drawer-grip{position:absolute;top:0;bottom:0;left:-4px;width:8px;cursor:ew-resize;z-index:2}
.ai-drawer.left .ai-drawer-grip{left:auto;right:-4px}
.ai-drawer.full .ai-drawer-grip{display:none}
.ai-drawer.full .ai-drawer-body,.ai-drawer.full .ai-drawer-compose{padding-left:max(18px,calc((100vw - 980px)/2));padding-right:max(18px,calc((100vw - 980px)/2))}
body.ai-drawer-resizing{user-select:none;cursor:ew-resize}
.ai-md a{color:#0d5e97;text-decoration:underline}
.ai-adv-tag{color:#0d5e97;font-weight:800}
.mem-wrap{max-height:70vh;overflow:auto;padding-right:4px}
.mem-intro{font-size:13px;color:var(--muted);margin-bottom:10px;line-height:1.5}
.mem-add{display:flex;gap:8px;margin:0 0 12px}.mem-add input{flex:1}
.mem-h{font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:#34505f;margin:14px 0 6px}.mem-h span{color:var(--muted);font-weight:600}
.mem-row{border:1px solid var(--line);border-radius:10px;padding:9px 11px;margin-bottom:7px;background:#fff}
.mem-text{font-size:13.5px;line-height:1.45}.mem-quote{font-size:12.5px;color:#4a6472;margin-top:4px;font-style:italic}
.mem-meta{font-size:11.5px;color:var(--muted);margin-top:4px}.mem-actions{margin-top:6px;display:flex;gap:6px}
.btn-lite{border:1px solid var(--line);background:#fff;border-radius:7px;padding:4px 9px;font-size:12px;cursor:pointer}
.modal-backdrop{z-index:1000}
.fill-card{border:1px solid #cfe0ea;background:#f6fafc;border-radius:10px;padding:8px 10px;margin-top:8px}
.fill-head{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#34505f;margin-bottom:4px}
.fill-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:6px 0;border-top:1px solid #e1eaef;font-size:13px}
.fill-row:first-of-type{border-top:0}.fill-row.undone{opacity:.55}.fill-row.undone .fill-val{text-decoration:line-through}
.fill-row.held{background:#fff8e8;margin:0 -10px;padding:6px 10px}
.fill-val{margin-top:2px}.fill-quote{font-size:11.5px;color:var(--muted);margin-top:2px}
.fill-sec{font-size:11px;color:#0d5e97;font-weight:700}.fill-price{font-size:10.5px;background:#fdecc8;color:#7a4b00;border-radius:6px;padding:1px 6px;font-weight:700}
.fill-done{font-size:12px;color:var(--muted);white-space:nowrap}.fill-pricebar{border-top:1px solid #e1eaef;padding-top:6px;margin-top:2px;font-size:13px}

/* Scope builder drag between sections + large edit box (Greg 2026-09-28) */
.scope-builder-item[draggable=true]{cursor:grab}.scope-builder-item.dragging{opacity:.45}.scope-builder-section.drop-target{border-color:#01696f;background:#eef7f7;box-shadow:0 0 0 2px rgba(1,105,111,.18)}.scope-drag-handle{color:#9aa7b0;margin-right:6px;font-weight:900;letter-spacing:-2px}.scope-drag-hint{margin:0 0 8px}.scope-move-select{width:auto;max-width:170px;font-size:12px;padding:4px 6px}textarea.scope-edit-text{min-height:260px;width:100%;font-size:15px;line-height:1.5}
.modal-card.scope-edit{width:min(900px,94vw);max-width:900px}
textarea.scope-edit-text+*,label:has(textarea.scope-edit-text)+.toolbar{margin-top:10px}

/* New Project chooser: two groups, elongated raised buttons top to bottom (Greg 2026-09-29) */
.np-group{margin:14px 0 18px}.np-group-title{font-size:18px;margin:0 0 8px;padding-bottom:6px;border-bottom:2px solid #d7e1e6;display:flex;align-items:baseline;gap:10px}.np-group-title span{font-size:12px;font-weight:500;color:var(--muted)}
.np-type-btn{display:grid;grid-template-columns:minmax(200px,1fr) 1.5fr 28px;gap:16px;align-items:center;width:100%;text-align:left;margin:0 0 10px;padding:14px 18px;border:1px solid #c9d6de;border-bottom:4px solid #a9bcc8;border-radius:14px;background:linear-gradient(180deg,#ffffff 0%,#f1f6f8 100%);box-shadow:0 3px 8px rgba(30,50,60,.10),inset 0 1px 0 #fff;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;color:inherit;font:inherit}
.np-type-btn:hover{transform:translateY(-2px);border-color:#01696f;border-bottom-color:#0c4e54;box-shadow:0 7px 16px rgba(1,105,111,.16),inset 0 1px 0 #fff}
.np-type-btn:active{transform:translateY(2px);border-bottom-width:2px;box-shadow:0 1px 3px rgba(30,50,60,.12)}
.np-type-btn:focus-visible{outline:3px solid rgba(1,105,111,.35);outline-offset:2px}
.np-type-main b{display:block;font-size:17px;margin-bottom:3px}.np-type-main span{color:var(--muted);font-size:13px;line-height:1.4}
.np-type-when small{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#01696f;margin-bottom:2px}.np-type-when ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5;color:#3d4a52}
.np-type-go{font-size:28px;color:#01696f;font-weight:700;text-align:center}
.project-delete-zone{margin-top:16px;border-color:#e7c9cf;background:#fdf8f9}
@media(max-width:800px){.np-type-btn{grid-template-columns:1fr}.np-type-go{display:none}}

/* Requested scope checkboxes (Greg 2026-09-29) */
.scope-check-group{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.bid-recipient-row .form-grid.five{grid-template-columns:1.2fr 1fr 1fr 1.7fr .9fr}.bid-recipient-row .scope-check{padding:5px 8px;white-space:nowrap}.scope-check{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;font-weight:600;font-size:13px;border:1px solid #d3dde3;border-radius:8px;padding:6px 10px;background:#fff;cursor:pointer}.scope-check input{width:auto;margin:0}.scope-check:has(input:checked){border-color:#01696f;background:#eef7f7}
.scope-readiness-chip.not-requested{opacity:.62;border-style:dashed}
/* Estimating Intelligence categories as clickable raised sections (Greg 2026-09-29) */
.review-3d-section{margin:0 0 10px;border:1px solid #c9d6de;border-bottom:4px solid #a9bcc8;border-radius:14px;background:linear-gradient(180deg,#ffffff 0%,#f1f6f8 100%);box-shadow:0 3px 8px rgba(30,50,60,.10),inset 0 1px 0 #fff}
.review-3d-section>summary{list-style:none;display:grid;grid-template-columns:1fr auto 24px;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;border-radius:14px;transition:transform .12s ease,box-shadow .12s ease}
.review-3d-section>summary::-webkit-details-marker{display:none}
.review-3d-section>summary:hover{transform:translateY(-1px)}
.review-3d-section:hover{border-color:#01696f;border-bottom-color:#0c4e54}
.r3d-title{font-size:16px;font-weight:800}.r3d-count{font-size:12px;font-weight:800;background:#fff3d6;color:#7a5a07;border:1px solid #ecd9a5;border-radius:999px;padding:4px 10px}
.r3d-open{font-size:24px;color:#01696f;font-weight:700;transition:transform .15s ease;text-align:center}
.review-3d-section[open] .r3d-open{transform:rotate(90deg)}
.review-3d-section .r3d-body{padding:4px 12px 12px;border-top:1px solid #dfe7ec}
.review-3d-section.review-type-risk{border-left:5px solid #c98a1a}.review-3d-section.review-type-scope{border-left:5px solid #5f8f6a}.review-3d-section.review-type-question{border-left:5px solid #01696f}.review-3d-section.review-type-action{border-left:5px solid #7a6aa8}

/* Four basic answers as checkboxes (Greg 2026-09-29) */
.simple-answer-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end}.simple-answer-row.big{justify-content:flex-start;margin:10px 0 4px}
.simple-answer{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;border:1px solid #c9d6de;border-bottom-width:3px;border-radius:9px;padding:6px 10px;background:#fff;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap}
.simple-answer input{width:auto;margin:0;pointer-events:none}.simple-answer:hover{border-color:#01696f}.simple-answer.on{border-color:#01696f;background:#eef7f7;color:#0c4e54}
.review-item-card.quick-review{grid-template-columns:auto 1fr auto}

/* ---- Greg 2026-09-29: priority dots, one AI bar, one set of margins, bid customers ---- */
/* Priority is a 3D dot. Hover (or tab to) it and the word pops up: red = Critical. */
.action-row{grid-template-columns:26px 1fr auto}
.priority-dot3d{--c1:#9aa6b1;--c2:#5f6c77;position:relative;display:inline-block;width:18px;height:18px;border-radius:50%;justify-self:center;cursor:help;
  background:radial-gradient(circle at 34% 28%,rgba(255,255,255,.95) 0,rgba(255,255,255,0) 38%),radial-gradient(circle at 50% 55%,var(--c1) 0,var(--c2) 100%);
  box-shadow:0 2px 4px rgba(0,0,0,.28),inset 0 -2px 3px rgba(0,0,0,.28),inset 0 1px 1px rgba(255,255,255,.5)}
.priority-dot3d.Critical{--c1:#f0564f;--c2:#a3161a}
.priority-dot3d.High{--c1:#ff9a3d;--c2:#b8520a}
.priority-dot3d.Important{--c1:#ffd24d;--c2:#c07f00}
.priority-dot3d.Routine{--c1:#b5c0c9;--c2:#6b7883}
.priority-dot3d::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%,4px);background:#16242d;color:#fff;
  font-size:12px;font-weight:700;line-height:1;padding:6px 9px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .12s,transform .12s;z-index:40}
.priority-dot3d::before{content:"";position:absolute;left:50%;bottom:calc(100% + 3px);transform:translateX(-50%);border:5px solid transparent;border-top-color:#16242d;border-bottom:0;opacity:0;transition:opacity .12s;z-index:40}
.priority-dot3d:hover::after,.priority-dot3d:focus::after{opacity:1;transform:translate(-50%,0)}
.priority-dot3d:hover::before,.priority-dot3d:focus::before{opacity:1}
@media (prefers-reduced-motion:reduce){.priority-dot3d::after{transition:none}}
/* One AI bar on a job screen: the job conversation opens under the tabs, no second input bar. */
.kcis-ai-shell.thread-only{margin:0 0 12px}
.kcis-ai-shell.thread-only .kcis-ai-thread{border-top:1px solid #c8dce6;border-radius:13px;margin:0}
/* One set of left/right margins: every page block runs edge to edge with the AI bar above it.
   Home keeps its own centred layout, where the bar and the page already share one width. */
body:not(.home-bar-mode) .single-card,body:not(.home-bar-mode) .one-card-host,body:not(.home-bar-mode) .module-control-card,
.project-shell-head,.workflow-bar,.workflow-content,.workflow-content>.stack,.workflow-content>.card,.workflow-content>.guided-section-anchor{max-width:none;margin-left:0;margin-right:0}
/* Bid customers: the buttons wrap inside their cell instead of running off the table. */
.bid-customers-wrap td:last-child{white-space:normal;min-width:190px}
.row-actions{display:flex;flex-wrap:wrap;gap:6px}
.btn.danger-outline{color:#a3161a;border-color:#e5b3b5;background:#fff}
.btn.danger-outline:hover{background:#fdf1f1}
.bid-due-cell{white-space:nowrap}
tr.paused-row td{color:#7a8791}
.project-actions-card .action-row{grid-template-columns:26px minmax(0,1fr) auto}
@media(max-width:760px){.project-actions-card .action-row{grid-template-columns:26px minmax(0,1fr)}}
.project-delete-zone .toolbar{flex-wrap:nowrap;gap:8px;margin:0}
.project-delete-zone .toolbar .btn{white-space:nowrap}

/* ===== Greg 2026-09-29: frozen left menu, one even row of cards, 3D for anything clickable, tints ===== */
@media(min-width:681px){
  .sidebar{position:sticky;top:74px;align-self:start;height:calc(100vh - 74px);overflow-y:auto;z-index:15}
}
/* One row, equal boxes, OS-wide. Phones still stack. */
.card-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:10px;margin:12px 0 14px}
@media(min-width:761px){
  .project-kpi-strip,.project-kpi-strip.status-aware,.metric-grid,.estimate-hero,.estimate-hero.compact,.final-component-grid,.estimate-component-grid{grid-template-columns:none !important;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
  .scope-readiness-strip{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
}
@media(max-width:760px){.card-row{grid-auto-flow:row;grid-template-columns:1fr}}
/* 3D look: raised face, deeper bottom edge, lifts on hover */
.card3d,.metric,.project-kpi-card,.home-btn,.final-component-grid button,.scope-readiness-chip,.estimate-component-card,.estimate-workflow-card,.action-row.clickable{
  border:1px solid #c9d6de;border-bottom:4px solid #a9bcc8;border-radius:12px;background:linear-gradient(180deg,#ffffff 0%,#eef4f7 100%);
  box-shadow:0 3px 8px rgba(30,50,60,.10),inset 0 1px 0 #fff;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.card3d:hover,.metric:hover,.project-kpi-card:hover,.home-btn:hover,.final-component-grid button:hover,.scope-readiness-chip:hover,.estimate-component-card:hover,.estimate-workflow-card:hover,.action-row.clickable:hover{
  transform:translateY(-1px);border-color:#01696f;border-bottom-color:#0c4e54;box-shadow:0 7px 16px rgba(24,71,99,.14),inset 0 1px 0 #fff}
.card3d:active,.project-kpi-card:active,.final-component-grid button:active{transform:translateY(1px);border-bottom-width:2px}
.card3d{min-width:0;padding:13px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:5px;font:inherit;color:var(--text)}
.card3d span{color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.35px}
.card3d b{font-size:18px;line-height:1.2;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.card3d small{font-size:11px;color:var(--muted)}
.card3d.static{cursor:default;border-bottom-width:1px;box-shadow:none;transform:none}
.card3d.static:hover{transform:none;border-color:#c9d6de;box-shadow:none}
/* Faint tints (gross margin and intelligence) */
.tint-red{background:linear-gradient(180deg,#fff6f6 0%,#fbe3e3 100%) !important;border-color:#e6b9b9 !important;border-bottom-color:#cf8f8f !important}
.tint-orange{background:linear-gradient(180deg,#fffaf3 0%,#fdebd5 100%) !important;border-color:#ebcfa6 !important;border-bottom-color:#d6a768 !important}
.tint-green{background:linear-gradient(180deg,#f7fcf4 0%,#e3f2da 100%) !important;border-color:#b9d7a6 !important;border-bottom-color:#8dbb73 !important}
/* Decisions live in Estimate & Bid (replaces the Readiness Map) */
.estimate-decisions{margin:6px 0 14px}
.estimate-decisions .ai-review-panel{border:0;padding:0;background:transparent;box-shadow:none}
.review-3d-section.r3d-button{display:grid;grid-template-columns:1fr auto 24px;align-items:center;gap:12px;padding:14px 18px;width:100%;text-align:left;font:inherit;color:var(--text);cursor:pointer}
.review-3d-section.r3d-button:hover{transform:translateY(-1px)}
.review-3d-section.review-type-scopebuilder{border-left:5px solid #006494}
.r3d-count.info{background:#e8f1f7;color:#0f4c6e;border-color:#c3d9e8}
.focus-flash{animation:focusFlash 2.2s ease}
@keyframes focusFlash{0%,60%{box-shadow:0 0 0 4px rgba(1,105,111,.35)}100%{box-shadow:none}}
@media (prefers-reduced-motion:reduce){.focus-flash{animation:none;outline:3px solid #01696f}.card3d,.project-kpi-card,.metric{transition:none}}
/* How this price is built */
.pb-section{border:1px solid #d7e1e6;border-radius:12px;margin:10px 0;background:#fff}
.pb-section>summary{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none}
.pb-section>summary::-webkit-details-marker{display:none}
.pb-section>summary span{color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.pb-body{padding:4px 14px 12px;border-top:1px solid #e5eaee}
.pb-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:7px 0;border-bottom:1px dashed #e5eaee;align-items:start}
.pb-line.pb-sub{padding-left:18px}
.pb-line.pb-sub b{font-weight:600}
.pb-line.pb-total{border-bottom:0;border-top:1px solid #c9d6de;margin-top:4px}
.pb-line.pb-warn b,.pb-line.pb-warn .pb-amt{color:#964219}
.pb-amt{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap}
.pb-note{margin:8px 0 2px;font-size:12px;color:#3b4a53}
/* Greg 2026-09-29: price confidence bar. Red 0-75%, yellow 76-90%, green 91-100%. */
.confidence-bar{border:1px solid var(--line,#d8d8d8);border-radius:10px;padding:10px 12px;margin:0 0 10px;background:#fbfbf9}
.confidence-bar .cb-track{height:10px;border-radius:6px;background:#ecebe7;overflow:hidden;margin:6px 0 4px}
.confidence-bar .cb-fill{height:100%;border-radius:6px}
.confidence-bar.red .cb-fill{background:#c0392b}.confidence-bar.red{border-color:#e6b9b9}
.confidence-bar.yellow .cb-fill{background:#d4a017}.confidence-bar.yellow{border-color:#e8d49a}
.confidence-bar.green .cb-fill{background:#3c8d2f}.confidence-bar.green{border-color:#b7d9ae}
.confidence-bar details ul{margin:4px 0 0 18px;padding:0}
.capacity-line{margin:8px 0}
.scope-review-rfis .scope-builder-line{padding:4px 0;display:flex;gap:6px;align-items:flex-start}
.flash-target{outline:3px solid #01696f;outline-offset:3px;transition:outline-color .6s}
.bid-steps-host{margin:10px 0 14px}.bid-steps{display:flex;flex-direction:column;gap:7px;margin:8px 0 6px}.guided-step.bid-step.current{border-color:#c5942a;box-shadow:0 0 0 2px rgba(197,148,42,.18)}.bid-step .tiny b{font-weight:800}
/* Coverage plan editor: OS first try (EST-DESIGN-011, 2026-10-04) */
.irr-plan-editor.irr-scroll{overflow:auto;display:block}.irr-plan-stage{position:relative;width:100%;min-width:100%}.irr-plan-editor .irr-plan-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.irr-plan-stage #irrPlanSvg{position:absolute;inset:0;width:100%;height:100%}
.irr-scale-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 8px;font-size:13px}.irr-scale-row input,.irr-scale-row select{width:auto}
.irr-shape.area-turf{fill:rgba(45,163,89,.18);stroke:#2d8a4f;stroke-width:2}.irr-shape.area-bed{fill:rgba(130,74,181,.16);stroke:#824ab5;stroke-width:2}.irr-shape.area-bed_spray{fill:rgba(20,140,150,.16);stroke:#0f7f88;stroke-width:2;stroke-dasharray:7 5}.irr-shape.area-annual{fill:rgba(200,52,151,.16);stroke:#c83497;stroke-width:2;stroke-dasharray:7 5}.irr-shape.area-no_irrigation{fill:rgba(110,110,110,.13);stroke:#666;stroke-width:2;stroke-dasharray:5 4}
.irr-shape.drawing{fill:none;stroke-dasharray:4 3}.irr-shape.mainline.os{stroke-dasharray:10 4}polyline.irr-shape.mainline{fill:none}
.irr-shape.head{stroke:#fff;stroke-width:.75}.irr-shape.head.mp_head{stroke:#fff;stroke-width:.75}.irr-throw{fill:none;stroke-width:1;opacity:.35;pointer-events:none;vector-effect:non-scaling-stroke}
.irr-shape.lateral{stroke-width:1.5;opacity:.85}polyline.irr-shape.lateral.hand{fill:none;stroke-width:2.5;opacity:1}.irr-shape.sleeve.derived{stroke:#c62f29;stroke-width:6;stroke-dasharray:6 4;opacity:.7}
.irr-shape.gate_valve{fill:#b3261e;stroke:#fff;stroke-width:1}.irr-shape.quick_coupler{fill:#e0a400;stroke:#333;stroke-width:.8}.irr-shape.zone_valve{stroke:#fff;stroke-width:1}
.irr-vertex{fill:#fff;stroke:#174fa7;stroke-width:2;cursor:move;vector-effect:non-scaling-stroke}.irr-label{font-size:5.5px;font-weight:700;fill:#1d2a33;paint-order:stroke;stroke:#fff;stroke-width:1.5px;pointer-events:none}
.irr-plan-summary{border:1px solid var(--border);border-radius:10px;padding:10px;margin:10px 0;background:var(--panel)}
.legend-turf,.legend-rotor_head{border-color:#2d8a4f!important}.legend-bed{border-color:#824ab5!important}.legend-annual{border-color:#c83497!important}.legend-bed_spray{border-color:#0f7f88!important}.legend-gate_valve{border-color:#b3261e!important}.legend-quick_coupler{border-color:#e0a400!important}.legend-mainline{border-color:#174fa7!important}
/* Plan comparison (DOC-040, 2026-10-04) */
.pc-sheet{border:1px solid var(--border);border-radius:10px;padding:8px 10px;margin:8px 0;background:var(--panel)}.pc-sheet>summary{cursor:pointer;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pc-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.pc-pair figure{margin:0}.pc-pair figcaption{font-size:12px;color:var(--muted);margin-bottom:4px}
.pc-img{position:relative;border:1px solid var(--border);background:#fff}.pc-img img{display:block;width:100%;height:auto}.pc-box{position:absolute;border:2px solid #c62f29;background:rgba(198,47,41,.08);pointer-events:none}
.pc-lines{margin:4px 0;padding-left:18px;font-size:12px;max-height:180px;overflow:auto}.pc-lines.add li{color:#1f6f3a}.pc-lines.del li{color:#9b2c2c;text-decoration:line-through}
.pc-effects{display:flex;flex-direction:column;gap:6px;margin:6px 0 10px}.pc-effects label{display:flex!important;flex-direction:row;justify-content:flex-start;text-align:left;gap:8px;align-items:center;font-weight:500;margin:0}.pc-effects input{width:auto!important;margin:0;flex:none}
@media (max-width:800px){.pc-pair{grid-template-columns:1fr}}

/* Greg 2026-10-04: a pop-up never wipes an open window. Banners for confirmations; parked windows. */
.kcis-toasts{position:fixed;top:14px;right:14px;z-index:4000;display:flex;flex-direction:column;gap:8px;max-width:420px}
.kcis-toast{display:flex;gap:10px;align-items:flex-start;background:#eef7ee;border:1px solid #437A22;color:#1f3d10;border-radius:8px;padding:10px 12px;box-shadow:0 4px 14px rgba(0,0,0,.15);font-size:14px}
.kcis-toast.warn{background:#fdf3ec;border-color:#964219;color:#5a2a0f}
.kcis-toast span{flex:1}
.kcis-toast-x{background:none;border:0;font-size:18px;line-height:1;cursor:pointer;color:inherit}
.kcis-parked{position:fixed;bottom:14px;right:14px;z-index:3900;display:flex;flex-direction:column;gap:6px}
.kcis-parked-item{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #964219;border-radius:8px;padding:8px 10px;box-shadow:0 4px 14px rgba(0,0,0,.15);font-size:14px}
/* Revision reviews (2026-10-04) */
.rev-scope{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0;background:#fbfcfd}.rev-scope .pc-effects{flex-direction:row;flex-wrap:wrap;gap:14px;margin:6px 0}.rev-scope input:not([type=radio]){width:100%}.pre-wrap{white-space:pre-wrap;font-family:inherit;font-size:13px;background:#f6f8fa;border-radius:8px;padding:10px}

/* Reference-only documents (Greg 2026-10-04) */
.ref-only-tag{display:inline-block;padding:2px 8px;border-radius:999px;background:#fbe9e9;color:#9b1c1c;font-size:12px;font-weight:700;letter-spacing:.02em}
.ref-scope-wrap{display:block}
/* Estimate & Bid, simplified (Greg 2026-10-04): one price, what needs you, one progress line. */
.eb-simple .eb-section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:18px 0 8px}
.eb-price-strip{display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));gap:10px;margin:12px 0 4px}
.eb-price{border:1px solid var(--line);border-radius:12px;background:#f9fbfc;padding:12px 14px;display:flex;flex-direction:column;gap:3px;min-width:0}
.eb-price span{font-size:12px;color:var(--muted);font-weight:600}
.eb-price b{font-size:20px;font-variant-numeric:tabular-nums}
.eb-price small{font-size:12px;color:var(--muted);line-height:1.35}
.eb-price.main{background:var(--accent2);border-color:#b8d7ec}
.eb-price.main b{font-size:28px;color:var(--accent-dark)}
.eb-price b.good{color:#0c6d35}.eb-price b.bad{color:#b42318}
.eb-needs{display:flex;flex-direction:column;gap:8px}
.eb-need{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--line);border-left:4px solid #c5942a;border-radius:10px;padding:10px 12px;background:#fff}
.eb-need.bad{border-left-color:#b42318}.eb-need.good{border-left-color:#0c6d35}
.eb-progress{display:flex;align-items:center;flex-wrap:wrap;gap:0;margin:4px 0}
.eb-dot{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:#fff;font-weight:700;font-size:13px;cursor:pointer;color:var(--muted)}
.eb-dot.done{background:#e9f6ee;border-color:#7cc49a;color:#0c6d35}
.eb-dot.skipped{background:#f2f2f0;border-color:#d4d1ca;color:#9a9893;border-style:dashed}
.bid-step.skipped{opacity:.7}
.bid-step.skipped .guided-step-check{background:#f2f2f0;color:#9a9893}
.choice-row{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px;padding:8px 0;cursor:pointer;font-weight:400!important}
.choice-row input{width:auto!important;margin:3px 0 0;flex:0 0 auto}
.choice-row>span{display:flex;flex-direction:column;gap:2px}
.choice-row .tiny{font-weight:400}
.eb-dot.current{background:#fff7e6;border-color:#c5942a;color:#7a5410;box-shadow:0 0 0 3px rgba(197,148,42,.18)}
.eb-dash{display:inline-block;width:18px;height:2px;background:var(--line)}
/* One bid-steps bar per scope being bid (Greg 2026-10-25). */
.eb-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 10px}
.eb-bar-label{display:flex;flex-direction:column;min-width:110px}
.eb-bar-label b{font-size:13px}
.good-text{color:#0c6d35}
.eb-all-steps summary{cursor:pointer;color:var(--accent);text-transform:none;letter-spacing:0;font-weight:600}
.eb-all-steps[open]{flex-basis:100%}
.eb-simple .row-between:has(.eb-all-steps[open]){flex-wrap:wrap}
.eb-coverage{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:16px;background:#fbfcfd}
.eb-coverage.warn{border-color:#e3c27a;background:#fffaf0}.eb-coverage.good{border-color:#b9e0c8}
.eb-coverage-thumb{width:150px;height:100px;object-fit:cover;border-radius:8px;border:1px solid var(--line);flex:none;background:#fff}
.eb-coverage-main{display:flex;flex-direction:column;gap:4px;min-width:0}
.eb-facts{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;margin-top:4px}
.eb-scopes{display:flex;flex-wrap:wrap;gap:8px}
.eb-scope{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 12px;cursor:pointer;min-width:170px;text-align:left}
.eb-scope span{font-size:12px;color:var(--muted)}.eb-scope.warn span{color:#8a5a00}.eb-scope.good span{color:#0c6d35}
.eb-alt-table td{vertical-align:top;padding:8px 10px}.eb-alt-val{text-align:right;white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.eb-drawer{margin-top:18px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:#fff}
.eb-drawer>summary{cursor:pointer;display:flex;flex-direction:column;gap:2px}
.eb-drawer>summary .muted{font-size:12px}
.eb-scope-line{margin:10px 0;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:#f9fbfc}
@media (max-width:900px){.eb-price-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.eb-price.main{grid-column:1/-1}}

/* Coverage plan full screen (Greg 2026-10-05). Above the work window, below notices so warnings still show. */
.irr-fs-only{display:none}
.irr-fs-wrap.fs{position:fixed;inset:0;z-index:1100;background:#eef3f5;display:flex;gap:12px;padding:10px 12px;box-sizing:border-box}
.irr-fs-wrap.fs .irr-fs-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:6px;min-height:0}
.irr-fs-wrap.fs .irr-fs-only{display:flex}
.irr-fs-wrap.fs .irr-fs-head{align-items:center;gap:10px;padding:2px 2px 4px}
.irr-fs-wrap.fs .irr-editor-toolbar{margin-bottom:0}
.irr-fs-wrap.fs .irr-plan-editor.xl{flex:1 1 auto;height:auto;min-height:0}
.irr-fs-wrap.fs #irrNumPanel{flex:0 0 340px;overflow:auto;background:#fff;border:1px solid #cbd8df;border-radius:10px;padding:10px}
.irr-fs-wrap.fs .coverage-legend{flex:0 0 auto}
body.irr-fs-open{overflow:hidden}
@media(max-width:1000px){.irr-fs-wrap.fs{flex-direction:column}.irr-fs-wrap.fs #irrNumPanel{flex:0 0 32vh}}
.irr-fs-wrap.fs #irrFsBtn{display:none}
.pi-name{display:block;margin-bottom:12px;font-weight:600}.pi-name input{width:100%;margin-top:4px;font-size:16px}

/* Areas read from the estimator's markup keep his colours (Greg 2026-10-05 legend:
   green rotors, blue sprays, orange drip, purple MP rotators). */
.irr-shape.marked-rotor{fill:rgba(0,200,60,.22);stroke:#139a3f;stroke-width:2}
.irr-shape.marked-spray{fill:rgba(41,97,255,.20);stroke:#2961ff;stroke-width:2}
.irr-shape.marked-drip{fill:rgba(255,171,64,.26);stroke:#d97a00;stroke-width:2}
.irr-shape.marked-mp_rotator{fill:rgba(217,0,255,.20);stroke:#b000d0;stroke-width:2;stroke-dasharray:6 4}

/* Greg 2026-10-05: lines the customer proposal holds back */
.project-proposal-item{flex-wrap:wrap}.project-proposal-item small.proposal-hold{flex-basis:100%;color:#964219;font-weight:700;margin-left:24px}

/* Scope Builder line order (Greg 2026-10-05) */
.scope-order-btn{min-width:30px;padding-left:6px;padding-right:6px}
.scope-builder-item.drop-before{box-shadow:inset 0 3px 0 var(--kcis-green,#2e7d32)}
.scope-builder-item.drop-after{box-shadow:inset 0 -3px 0 var(--kcis-green,#2e7d32)}
.eb-toolbar{display:flex;gap:8px;justify-content:flex-end;margin:6px 0 10px}

/* Greg 2026-10-05: the pricing strategy needs a bigger window so the option lines show without scrolling sideways. */
.modal-card.xwide{max-width:min(1500px,96vw)}
.modal-card.xwide .table-wrap{overflow-x:visible}
.eb-notes{margin:8px 0}.eb-notes summary{cursor:pointer}
/* Greg 2026-10-05: the screen return button goes at the very top right and always returns to the last screen. */
.user-row .global-back-btn{margin-left:6px}
/* OS-wide rule (Greg 2026-10-06): "get the pop up window to automatically open as big as possible to not have to
   scroll to see other areas of the window when possible". Every work window opens to the full screen width
   (a margin is kept so it still reads as a window). Short notices and confirmations stay small on purpose.
   Table cells wrap inside windows, so a long note never forces a sideways scroll bar. */
.modal-backdrop{padding:2vh 1.5vw}
.modal-card,.modal-card.wide,.modal-card.xwide,.modal-card.scope-edit{width:100%;max-width:min(1800px,97vw)}
.modal-card.narrow{max-width:620px}
.modal-card td{white-space:normal}
.modal-card td input,.modal-card td select{max-width:100%}
.eb-cost-table td{padding:6px 10px}.eb-cost-table tr.eb-total td{border-top:2px solid var(--line);font-weight:600}
.eb-cost-table td{white-space:normal}

/* Greg 2026-10-06: answer choices and a typing box at the bottom of the conversation */
.ai-choices{margin-top:9px;padding-top:9px;border-top:1px solid #dce9e8;display:flex;flex-direction:column;gap:10px}
.ai-q-text{font-size:13px;font-weight:700;color:#24414d;margin-bottom:6px}
.ai-q-hint{font-weight:500;font-size:11px;color:#6a828c;margin-left:4px}
.ai-q-opts{display:flex;flex-wrap:wrap;gap:6px}
.ai-choice{border:1px solid #bcd3dc;background:#fff;color:#24414d;border-radius:16px;padding:6px 12px;font-size:12.5px;cursor:pointer;line-height:1.3}
.ai-choice:hover:not(:disabled){border-color:#3f7f93;background:#f2f8fa}
.ai-choice.on{background:#1f6f84;border-color:#1f6f84;color:#fff}
.ai-choice:disabled{cursor:default;opacity:.6}
.ai-choices.answered .ai-q-text{color:#6a828c}
.ai-q-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ai-composer{display:flex;gap:8px;align-items:flex-end;padding:9px 12px 11px;border-top:1px solid #e1ecef;background:#fbfdfe}
.ai-composer-input{flex:1;min-height:42px;max-height:180px;resize:vertical;border:1px solid #c8dce6;border-radius:10px;padding:8px 10px;font:inherit;font-size:13px;line-height:1.45}
.ai-composer-input:focus{outline:2px solid #9cc7d4;outline-offset:0;border-color:#5f9fb2}
.kcis-ai-thread.collapsed .ai-composer{display:none}
.fill-pick{font-size:12px;display:flex;gap:5px;align-items:center;white-space:nowrap}
.fill-pickbar{display:flex;gap:10px;align-items:center;padding-top:6px}

/* Greg 2026-10-06: conversation inside the coverage plan */
.irr-work-row{display:flex;gap:12px;align-items:stretch;min-height:0}
.irr-work-row>.irr-fs-main{flex:1 1 auto;min-width:0}
.irr-ai-panel{flex:0 0 340px;display:flex;flex-direction:column;background:#fff;border:1px solid #cbd8df;border-radius:10px;min-height:420px;max-height:82vh;overflow:hidden}
.irr-ai-head{display:flex;flex-direction:column;gap:2px;padding:9px 11px;background:linear-gradient(90deg,#f2f9fc,#f5fbf7);border-bottom:1px solid #e1ecef}
.irr-ai-thread{flex:1 1 auto;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:10px}
.irr-ai-thread .ai-msg{max-width:96%}
.irr-ai-boxnote{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;padding:6px 10px;background:#fff8ec;border-top:1px solid #f0dfc2;color:#6b4a1c}
.irr-ai-compose{border-top:1px solid #e1ecef;padding:8px 10px;background:#fbfdfe;display:flex;flex-direction:column;gap:6px}
.irr-ai-compose textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:58px;max-height:200px;border:1px solid #c8dce6;border-radius:9px;padding:7px 9px;font:inherit;font-size:13px;line-height:1.45}
.irr-ai-tools{display:flex;gap:8px;align-items:center}
.irr-ai-changes{margin-top:8px;padding-top:8px;border-top:1px solid #dce9e8;display:flex;flex-direction:column;gap:5px}
.irr-ai-ch-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:#56717d}
.irr-ai-ch{display:flex;gap:7px;align-items:flex-start;font-size:12.5px;line-height:1.4}
.irr-ai-ch input{margin-top:3px}
.irr-ai-ch-foot{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:3px}
.irr-ai-lesson{margin-top:7px;font-size:12px;padding:6px 8px;border-left:3px solid #1f6f84;background:#f2f8fa}
.irr-ai-check{margin-top:7px;font-size:12px;padding:6px 8px;border-left:3px solid #2e7d4f;background:#f1f8f3}
.irr-strip-mark{fill:#1d1d1d;opacity:.85}
.irr-ai-box{fill:rgba(218,113,1,.10);stroke:#da7101;stroke-width:2.5;stroke-dasharray:8 5;pointer-events:none}
.irr-shape.ai_box{fill:rgba(218,113,1,.10);stroke:#da7101;stroke-width:2;stroke-dasharray:8 5}
.irr-fs-wrap.fs .irr-work-row{flex:1 1 auto;min-height:0}
.irr-fs-wrap.fs .irr-ai-panel{max-height:none}
@media(max-width:1100px){.irr-work-row{flex-direction:column}.irr-ai-panel{flex:0 0 auto;max-height:60vh}}
.irr-ai-ch input[type=checkbox],.fill-pick input[type=checkbox]{width:auto;flex:0 0 auto;margin:3px 0 0}
label.irr-ai-ch,label.fill-pick{flex-direction:row;font-weight:400;color:inherit}

.eb-outside-note{margin:6px 0 10px;padding:8px 12px;border-left:3px solid #b8860b;background:#fffaf0;font-size:13px;color:#5b4a1a;border-radius:4px}

/* Sign-in steps: emailed code, forgot password */
.form-ok{background:#e9f5ec;color:#245a33;padding:10px;border-radius:9px;margin:12px 0}.login-card .check-row{flex-direction:row;align-items:center;gap:8px;font-weight:600}.login-card .check-row input{width:auto}.login-card .code-input{font-size:28px;letter-spacing:8px;text-align:center;padding:12px}.login-card .text-link{margin-right:14px}.login-card input{font-size:16px}
.login-card{box-sizing:border-box;width:100%;max-width:440px}@media(max-width:520px){.login-body{padding:12px}.login-card{padding:22px}}

/* Top bar: Trial + PR tags (PR #134) */
.sandbox-pill[hidden]{display:none}
.status-pill.build{background:#eef1f4;color:#3c4a57;border-color:#cfd7df}

/* PR #135/#136 - header wordmark: 3D water drop + thin KCIS in brightened logo colors (KC grey, I green, S blue) + bold blue-to-green OS + water line (Greg 10/18 picked Version 2) */
@font-face{font-family:"KCIS Inter";src:url("/static/fonts/kcis-inter-latin.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
.kcis-wordmark{display:flex;align-items:center;gap:9px}
.kcis-wordmark .wm-drop{display:block;flex:0 0 auto;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}
.kcis-wordmark .wm-stack{display:flex;flex-direction:column}
.kcis-wordmark .wm-row{display:flex;align-items:baseline;gap:8px}
.kcis-wordmark .wm-kcis{font-family:"KCIS Inter",Arial,sans-serif;font-weight:300;font-size:24px;letter-spacing:1.5px;line-height:1}
.kcis-wordmark .wm-kc{color:#A3A8AC}.kcis-wordmark .wm-i{color:#3FBF5A}.kcis-wordmark .wm-s{color:#3A9BF0}
.kcis-wordmark .wm-os{font-family:"KCIS Inter",Arial,sans-serif;font-weight:800;font-size:24px;letter-spacing:.6px;line-height:1;color:#5fd27a;background:linear-gradient(90deg,#7cc4ff,#5fd27a);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.kcis-wordmark .wm-line{display:block;height:3px;margin-top:6px;border-radius:2px;background:linear-gradient(90deg,#1f7fe0,#3fbf5a)}
/* Greg 2026-10-19: when KCIS OS loses its connection the water drop turns red and "Not connected" shows under the line.
   This replaces the old "Server status unavailable" / "AI status unavailable" / "Attention Required" pills. */
.kcis-wordmark.offline .wm-drop .wm-drop-body{fill:url(#wmDropFillRed)}
.kcis-wordmark .wm-conn{display:block;margin-top:3px;font:600 11px/1.1 "KCIS Inter",Arial,sans-serif;letter-spacing:.3px;color:#ff7a70}
.kcis-wordmark .wm-conn[hidden]{display:none}
@media(max-width:1200px){.kcis-wordmark .wm-kcis,.kcis-wordmark .wm-os{font-size:20px}.kcis-wordmark .wm-drop{width:22px;height:29px}}
@media(max-width:680px){.brand-os-label.kcis-wordmark{display:none}}

/* Greg 2026-10-18: sign-in pages - KC Irrigation logo centered, KCIS OS wordmark centered under it.
   On the white card the wordmark uses the deeper logo colors (the top-bar shades are brightened for the dark bar). */
.login-brand{display:flex;flex-direction:column;align-items:center;gap:14px;margin:4px 0 14px}
.login-brand .login-logo-link{margin:0 auto}
.login-wordmark{justify-content:center;gap:11px}
.login-wordmark .wm-drop{filter:drop-shadow(0 2px 3px rgba(0,0,0,.22))}
.login-wordmark .wm-kcis,.login-wordmark .wm-os{font-size:34px}
.login-wordmark .wm-kc{color:#5F6469}.login-wordmark .wm-i{color:#23933F}.login-wordmark .wm-s{color:#1B74D1}
.login-wordmark .wm-os{color:#23933F;background:linear-gradient(90deg,#1B74D1,#23933F);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.login-wordmark .wm-line{height:3px;margin-top:7px;background:linear-gradient(90deg,#1B74D1,#23933F)}
.login-pill-row{display:flex;justify-content:center;margin:0 0 6px}
.login-card .login-pill-row .sandbox-pill{margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:520px){.login-wordmark .wm-kcis,.login-wordmark .wm-os{font-size:28px}.login-wordmark .wm-drop{width:28px;height:36px}}

/* Start Over panel (Greg 2026-10-18). Opens over the editor, never in place of it. */
.irr-fs-wrap{position:relative}
.irr-overlay{position:fixed;inset:0;z-index:1200;background:rgba(20,32,40,.38);display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;box-sizing:border-box}
.irr-overlay-card{background:#fff;border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.25);width:min(560px,100%);max-height:calc(100% - 20px);overflow:auto;padding:14px 16px}
.irr-overlay-head{display:flex;align-items:center;gap:8px;font-size:16px}
.irr-so-choices{display:grid;gap:8px}
.irr-so-choice{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid #cbd8df;background:#f7fafb;border-radius:10px;padding:10px 12px;cursor:pointer;font:inherit;color:#1f2a30}
.irr-so-choice:hover:not([disabled]){border-color:#0b5c78;background:#eef6f9}
.irr-so-choice[disabled]{opacity:.55;cursor:default}
.irr-so-choice b{font-size:14px}
.irr-so-choice span{font-size:13px;color:#46545c}
.irr-overlay-card textarea{width:100%;box-sizing:border-box;margin-top:4px;min-height:0;height:52px;resize:vertical}
.irr-so-vers{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:6px}
.irr-so-vers li{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid #e3eaee;padding-top:6px}
/* PR 141: scale check / lock / manual scale (Greg 2026-10-18) */
.irr-scale-row .irr-scale-alert{flex-basis:100%;margin:2px 0 0;padding:6px 8px;border-left:3px solid #964219;background:rgba(150,66,25,.08);font-size:12px}
.irr-plan-settings{display:inline-block;margin-left:auto}.irr-plan-settings summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border:1.5px solid var(--accent);border-radius:6px;color:var(--text,#28251d);background:var(--panel);font-size:13px}.irr-plan-settings summary::-webkit-details-marker{display:none}.irr-plan-settings summary b{color:var(--accent)}.irr-plan-settings summary:hover{background:var(--accent-soft)}.irr-plan-settings .irr-ps-warn{color:#a13544;font-weight:600}
.irr-pdf-menu{position:relative;display:inline-block}.irr-pdf-menu>summary{list-style:none;cursor:pointer}.irr-pdf-menu>summary::-webkit-details-marker{display:none}.irr-pdf-menu>summary::after{content:" \25BE"}.irr-pdf-panel{position:absolute;left:0;top:calc(100% + 6px);z-index:30;background:var(--panel);border:1px solid var(--border,#d4d1ca);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:8px;display:grid;gap:6px;min-width:220px}.irr-pdf-panel .btn{text-align:left;white-space:nowrap}
.irr-plan-settings{position:relative}.irr-plan-settings[open]{display:inline-block}.irr-ps-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--panel);border:1px solid var(--border,#d4d1ca);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:12px 14px;display:grid;grid-template-columns:auto minmax(170px,auto);gap:8px 12px;align-items:center;min-width:340px}.irr-ps-panel>label{display:contents;font-size:13px}.irr-ps-panel>span{grid-column:1/-1}.irr-ps-panel select,.irr-ps-panel input{width:auto;min-width:0}
#irrPlanSvg .irr-scale-mark{fill:rgba(1,105,111,.12);stroke:#01696F;stroke-width:3;stroke-dasharray:8 4}
#irrPlanSvg .irr-scale-mark-label,#irrPlanSvg .irr-pick-label{fill:#01696F;font:600 7px sans-serif;paint-order:stroke;stroke:#fff;stroke-width:1.5px}
#irrPlanSvg .irr-pick-line{stroke:#A13544;stroke-width:2;stroke-dasharray:6 4}
#irrPlanSvg .irr-pick-pt{fill:#A13544;stroke:#fff;stroke-width:2}

/* PR 142: tuck-away panels, Measure (Greg 2026-10-18: keep the screen simple; give the plan the room) */
.irr-num-head{display:none;align-items:center;gap:6px;margin:0 0 6px}
.irr-num-panel:not(:has(#irrPlanResult:empty)) .irr-num-head{display:flex}
.irr-num-panel:has(#irrPlanResult:empty){display:none}
.irr-hide-btn{padding:2px 10px;font-size:12px;min-height:0}
.irr-side-tab{display:none;flex:0 0 30px;writing-mode:vertical-rl;text-orientation:mixed;padding:12px 4px;border:1px solid #cbd8df;border-radius:10px;background:#fff;color:#01696F;font-weight:600;font-size:13px;cursor:pointer;align-self:stretch;max-height:82vh}
.irr-side-tab:hover{background:#f2f8f8}
.irr-fs-wrap.ai-min .irr-ai-panel{display:none}
.irr-fs-wrap.ai-min #irrAiTab{display:block}
.irr-fs-wrap.num-min #irrNumPanel{display:none}
.irr-fs-wrap.num-min:not(:has(#irrPlanResult:empty)) #irrNumTab{display:block}
.irr-fs-wrap:not(.fs) #irrNumTab{writing-mode:horizontal-tb;max-height:none;margin-top:6px;flex:none;align-self:flex-start}
.irr-fs-wrap.fs .irr-side-tab{max-height:none}
.irr-measure-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0;padding:6px 8px;border:1px solid #cbd8df;border-left:3px solid #A13544;border-radius:8px;background:#fff;font-size:13px}
.irr-measure-bar[hidden]{display:none}
.irr-seg{display:inline-flex;gap:0}.irr-seg .btn{border-radius:0}.irr-seg .btn:first-child{border-radius:8px 0 0 8px}.irr-seg .btn:last-child{border-radius:0 8px 8px 0}
#irrPlanSvg .irr-measure-area{fill:rgba(161,53,68,.12);stroke:#A13544;stroke-width:2;stroke-dasharray:6 4}
.irr-zoom-grp{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;margin-left:auto}
/* PR 143: Erase and Edit (Greg 2026-10-19) */
.irr-edit-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0;padding:6px 8px;border:1px solid #cbd8df;border-left:3px solid #01696F;border-radius:8px;background:#fff;font-size:13px}
.irr-edit-bar[hidden]{display:none}
.irr-edit-bar select{min-height:0;padding:3px 6px}
#irrPlanSvg .irr-shape.erase{fill:rgba(161,53,68,.10);stroke:#A13544;stroke-width:2;stroke-dasharray:6 4}

/* PR 148: small click dots, ring on the first corner, red hover in Erase */
.irr-vertex.dot{stroke-width:1.25}
.irr-vertex.first{fill:rgba(255,255,255,.35);stroke:#d1242f;stroke-width:2;cursor:pointer}
.irr-erasing .irr-shape:not(.derived):hover{stroke:#d1242f!important;stroke-width:3;fill-opacity:.35;cursor:crosshair}
.irr-erasing{cursor:crosshair}

/* PR 149: lateral sleeves look different from mainline sleeves; legend colors for the head symbols */
.irr-shape.lateral_sleeve{fill:none;stroke:#e07b00;stroke-width:4;stroke-dasharray:5 4}
.legend-lateral_sleeve{border-color:#e07b00!important}.legend-sleeve{border-color:#c62f29!important}
.legend-rotor_head{border-color:#1f5fbf!important}.legend-spray_head{border-color:#e07b00!important}.legend-mp_head{border-color:#1f9a4a!important}.legend-spray12_head{border-color:#c2188f!important}

/* Greg 10/19: possible sleeves KCIS OS figured once the estimator drew their own (not counted; shown only on request) */
.irr-shape.sleeve_possible{stroke:#7a7974;stroke-width:3;stroke-dasharray:3 4;opacity:.75;fill:none}
.irr-shape.sleeve_possible.selected{stroke:#01696f;opacity:1}
/* Talk to the plan: outline an area (polygon) */
.irr-shape.area-ai_poly{fill:rgba(218,113,1,.10);stroke:#da7101;stroke-width:2.5;stroke-dasharray:8 5}

/* Greg 2026-10-20: the Follow-Up Queue ran off the right side and needed a sideways scroll. Its cells now wrap,
   and the two buttons stack, so the whole row fits the window. */
.fu-queue td{white-space:normal}.fu-queue td:first-child,.fu-queue th{white-space:nowrap}.fu-queue td .tiny{overflow-wrap:anywhere}.fu-keep{white-space:nowrap}
.fu-queue td a b{overflow-wrap:break-word}.fu-acts{display:flex;flex-direction:column;gap:5px;width:118px}.fu-acts .btn{width:100%;white-space:nowrap}

/* #164 Why? view: the reasons, and the sheet with red boxes around what the OS saw */
.sheet-card-btns{display:flex;flex-direction:column;gap:4px;justify-content:center}.sheet-card-btns .btn{min-width:64px;min-height:0;padding:3px 8px;font-size:12px;line-height:1.3}.sheet-card-btns .btn.why-btn{background:transparent;border-color:transparent;box-shadow:none;color:var(--muted,#5b6b78);text-decoration:underline}
.why-list{list-style:none;padding:0;margin:10px 0;display:grid;gap:6px}
.why-item{display:flex;gap:8px;align-items:flex-start;line-height:1.4}
.why-num{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#d11;color:#fff;font-weight:700;font-size:12px}
.why-num.none{background:#c8d0d6}
.why-pic{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff;max-height:72vh;touch-action:none;cursor:zoom-in;user-select:none}
.why-pic.zoomed{cursor:grab}.why-pic.zoomed:active{cursor:grabbing}
.why-stage{position:relative;transform-origin:0 0;will-change:transform;--inv:1}
.why-zoom-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:4px 0}
.why-zoom-btns{display:flex;align-items:center;gap:6px}.why-zoom-btns b{min-width:44px;text-align:center;font-size:12px}
.why-zoom-item{cursor:zoom-in}
.why-pic img{display:block;width:100%;height:auto}
.why-pic svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.why-tag{position:absolute;transform:translate(-110%,-110%) scale(var(--inv,1));transform-origin:100% 100%;background:#d11;color:#fff;font-weight:700;font-size:11px;border-radius:9px;padding:1px 6px;pointer-events:none}
.why-zoom{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.why-zoom-item{position:relative;border:1px solid var(--line);border-radius:8px;padding:4px;background:#fff}
.why-zoom-item .why-num{position:absolute;top:6px;left:6px}
.why-zoom-item canvas{display:block;max-width:100%}

/* PR 168: irrigation bid basis, pages tucked away until asked for */
.irr-basis-change{margin-top:6px}.irr-basis-change>summary{cursor:pointer;color:var(--accent,#01696f);font-size:.85rem;padding:2px 0}.irr-basis-change[open]>summary{margin-bottom:6px}

/* Greg Jones 2026-10-25: smaller POC/backflow/controller, zone legend, click a valve to light up its zone. */
.irr-shape.water_source.selected,.irr-shape.backflow.selected,.irr-shape.controller.selected{stroke-width:1.5}
.irr-focus-ring{fill:none;stroke:#f2b705;stroke-width:2.5;vector-effect:non-scaling-stroke;pointer-events:none}
.irr-zone-legend{border:1px solid var(--border);border-radius:10px;padding:8px 10px;margin:6px 0;background:#fff;max-height:220px;overflow:auto}
.irr-zone-legend-head{display:flex;gap:8px;align-items:center;margin:-8px -10px 6px;padding:8px 10px 6px;position:sticky;top:-8px;z-index:1;background:#fff}
.irr-zone-legend-table{width:auto;min-width:560px;border-collapse:collapse;font-size:12px}.irr-zone-legend-table td:nth-child(3),.irr-zone-legend-table th:nth-child(3){text-align:right}
.irr-zone-legend-table th{text-align:left;font-weight:600;color:var(--muted,#666);padding:2px 6px;border-bottom:1px solid var(--border)}
.irr-zone-legend-table td{padding:3px 6px;border-bottom:1px solid var(--border)}
.irr-zone-legend-table tbody tr{cursor:pointer}
.irr-zone-legend-table tbody tr:hover{background:rgba(1,105,111,.07)}
.irr-zone-legend-table tbody tr.on{background:rgba(242,183,5,.18);font-weight:600}
.irr-zone-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:middle}
/* Greg Jones 2026-10-25: Edit Bid Quantity shows similar items from the price list. */
.ti-sizes{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0 0 8px}.ti-sizes .btn{padding:3px 10px;font-size:12px}.ti-sizes .tiny{flex-basis:100%}
.ti-swap{margin:8px 0;padding:8px 10px;border:1px solid var(--border);border-radius:10px}
.ti-swap-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ti-swap-head input{width:220px}
.ti-swap-brands{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}.ti-swap-brands .btn{padding:3px 9px;font-size:12px}
.ti-swap-list{max-height:260px;overflow:auto;margin-top:6px;border-top:1px solid var(--border)}
.ti-swap-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:5px 2px;border-bottom:1px solid var(--border);font-size:13px}
.ti-swap-price{white-space:nowrap;font-weight:600}

/* Greg Jones 2026-10-26: GPM shows the moment the mouse is over a head, valve or drip area. */
.irr-plan-stage{position:relative}
.irr-hover-tip{position:absolute;z-index:6;pointer-events:none;background:#1d2a33;color:#fff;font-size:12px;line-height:1.3;padding:4px 8px;border-radius:6px;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.irr-hover-tip[hidden]{display:none}
/* #170: in full screen the plan's own buttons sit top right, so save banners show bottom right instead */
body:has(.irr-fs-wrap.fs) .kcis-toasts{top:auto;bottom:18px}
/* #170: first-estimate review cards, clickable, numbers from the bid price build */
.fe-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0 14px}
.fe-card{border:1px solid var(--line);border-radius:12px;background:#f9fbfc;padding:12px 14px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;font:inherit;color:inherit}
.fe-card:hover,.fe-card:focus-visible{border-color:#8caec5;box-shadow:var(--shadow);background:#fff}
.fe-card span{font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:750}
.fe-card b{font-size:21px}
.fe-card small{font-size:12px;color:var(--muted);line-height:1.3}
.fe-card em{font-style:normal;font-size:12px;color:#1f5fbf;margin-top:auto;padding-top:4px}
/* #170: past scope lines in Add Line */
.scope-hist{margin-bottom:10px}
.scope-hist-head{display:flex;gap:10px;align-items:baseline;margin-bottom:6px}
.scope-hist-list{max-height:min(46vh,420px);overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.scope-hist-row{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-bottom:1px solid #eef2f5;cursor:pointer;font-weight:400;margin:0}
.scope-hist-row:last-child{border-bottom:0}
.scope-hist-row:hover{background:#f6f9fb}
.scope-hist-row.on{background:#eef5ff}
.scope-hist-row input{margin-top:3px;flex:0 0 auto;width:auto}
.scope-hist-text{flex:1;line-height:1.35}
.scope-hist-text .tiny{display:block;margin-top:2px}
.scope-hist-uses{flex:0 0 auto;font-size:12px;color:var(--muted);white-space:nowrap}

.irr-shape.mainline_stub{fill:none;stroke:#174fa7;stroke-width:4;stroke-dasharray:6 3}
#irrFirstTryBtn:disabled{opacity:.45;cursor:not-allowed}
/* Quantities & Takeoff: Bid Qty typed in the list (Greg 2026-10-26) */
.qty-table .qty-in{width:90px;text-align:right;padding:4px 6px}
.qty-table tr.qty-changed td{background:rgba(245,180,0,.12)}
.qty-savebar{position:sticky;bottom:-24px;padding-bottom:24px!important;box-shadow:0 24px 0 var(--panel,#fff);display:flex;gap:8px;align-items:center;padding:10px 0 2px;margin-top:8px;background:var(--panel,#fff);border-top:1px solid var(--line,#e5e7eb);z-index:2}
.ti-more{margin-top:10px}.ti-more summary{cursor:pointer;font-weight:600}

/* Area labels on the coverage map (sod / seed / native seed ...), 2026-10-26 */
.irr-cover-fill{pointer-events:none;opacity:.75}
.irr-cover-label{font-size:7px;font-weight:700;letter-spacing:.4px;fill:#2b3a22;paint-order:stroke;stroke:#fff;stroke-width:2px;pointer-events:none}

/* #179 steady plan: the edit bar floats over the hint line so the plan never moves when you click */
.irr-edit-slot{position:relative;min-height:52px;margin:2px 0}
.irr-edit-slot>.irr-edit-bar,.irr-edit-slot>.irr-measure-bar{position:absolute;left:0;right:0;top:0;z-index:30;margin:0;box-shadow:0 2px 8px rgba(0,0,0,.12)}
#irrFirstPassStatus{display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;min-height:24px;max-height:24px}
#irrFirstPassStatus .irr-status-text{min-width:0;overflow:hidden;text-overflow:ellipsis}
#irrFirstPassStatus>.btn,#irrFirstPassStatus>.badge{flex:none}
.irr-edit-bar label.tiny{display:inline-flex;align-items:center;gap:4px}
.irr-edit-bar label.tiny select,.irr-edit-bar label.tiny input{padding:2px 4px;font-size:12px;width:auto;min-width:0}
/* walls: pipe is never run through these */
polyline.irr-shape.wall{fill:none;stroke:#222;stroke-width:5;stroke-linecap:square}
polyline.irr-shape.wall.selected{stroke:#c62f29}
/* drip zones tinted by zone color */
.irr-dz-fill{fill-opacity:.22;stroke:none;pointer-events:none}
.irr-dz-fill.piece{fill-opacity:.36}
.irr-dz-break{stroke:#141414;stroke-linecap:butt;pointer-events:none}
.irr-dz-tag{font-weight:800;letter-spacing:.3px;paint-order:stroke;stroke:#fff;pointer-events:none}
.irr-shape.area-building{fill:rgba(60,60,60,.28);stroke:#222;stroke-width:3}
/* Takeoff & Material Prices (Greg 2026-10-27): one window, grouped, prices beside quantities. */
.tk-sum{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.tk-total{font-size:15px;margin-right:6px}
.tk-runbox{display:flex;flex-direction:column;gap:1px;min-width:0}
.tk-runbox .tk-total{font-size:13px}
.tk-runbox .tk-total b{font-size:20px;margin-left:4px}
.tk-runbox .muted{font-size:inherit}
.tk-ns{font-size:12px;font-weight:600;color:var(--muted,#6b7280)}
.tk-run{color:var(--muted,#6b7280);font-size:12px}
.tk-chip{border:1px solid #d9a400;background:#fff8e1;color:#6b4e00;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer}
.tk-chip.on{background:#6b4e00;color:#fff;border-color:#6b4e00}
.tk-search{width:170px;padding:5px 8px}
.tk-brand{margin:0 0 8px;padding:8px 10px;border:1px solid #e3b1b8;background:#fdf1f3;border-radius:8px;font-size:13px}
.tk-tag{display:inline-block;border-radius:4px;padding:0 5px;font-size:11px;font-weight:600;line-height:16px;vertical-align:middle}
.tk-tag.warn{background:#fff3cd;color:#6b4e00}.tk-tag.bad{background:#fbe3e6;color:#9b1c2c}
.tk-chip[data-filter="odd"]{background:#fbe3e6;border-color:#e8a1ab;color:#9b1c2c}
tr.tk-odd td{background:#fdf1f3}
.tk-odd-why{color:#9b1c2c;margin-top:2px;max-width:560px}
.qty-table label.tk-ok{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:3px;margin:0 0 0 6px;font-size:11px;font-weight:600;white-space:nowrap;cursor:pointer;color:#444}.qty-table label.tk-ok input{width:auto;min-width:0;height:auto;margin:0;padding:0}
.tk-head{margin:0}.tk-head th{padding-top:6px;padding-bottom:6px}
.tk-wrap{max-height:62vh;overflow:auto;margin-top:0}
.tk-group{border-top:1px solid var(--line,#e5e7eb)}
.tk-group>summary{cursor:pointer;padding:8px 10px;display:flex;gap:8px;align-items:center;background:rgba(0,0,0,.025);font-size:13px}
.tk-group>summary .tk-gtotal{margin-left:auto;font-weight:600}
.tk-group .qty-table{table-layout:fixed;margin:0}.tk-head{table-layout:fixed;width:100%}
.tk-group td{vertical-align:top;padding:6px 10px}.tk-item b{font-weight:600;font-size:13px}
.qty-table td.num,.qty-table th.num{text-align:right}
.tk-group tr[data-f~="noPrice"] td.tk-price,.tk-group tr[data-f~="brand"] td.tk-item{background:rgba(155,28,44,.04)}

/* Greg Jones 2026-10-28: "Can we make the bid steps buttons bigger and 3D bubble? I want this more prominent
   since it is the main workflow of bidding." Bigger raised bubbles on a light card. */
.eb-bar{gap:18px;margin:8px 0 12px;padding:12px 16px;border:1px solid #dfe7ec;border-radius:14px;background:linear-gradient(180deg,#ffffff,#f4f8fa);box-shadow:0 2px 6px rgba(20,40,60,.06)}
.eb-bar-label{min-width:130px}
.eb-bar-label b{font-size:15px}
.eb-progress{display:flex;align-items:center;flex-wrap:wrap;row-gap:10px}
.eb-dash{width:22px;height:3px;border-radius:2px;background:#d3dde3}
.eb-dot{width:46px;height:46px;font-size:17px;font-weight:800;border:1px solid #c9d4db;color:#5b6b76;
  background:radial-gradient(circle at 32% 28%,#ffffff 0%,#f3f6f8 45%,#dfe6eb 100%);
  box-shadow:0 4px 8px rgba(20,40,60,.16),0 1px 2px rgba(20,40,60,.18),inset 0 -3px 5px rgba(0,0,0,.08),inset 0 2px 3px rgba(255,255,255,.9);
  transition:transform .12s ease,box-shadow .12s ease}
.eb-dot:hover{transform:translateY(-2px);box-shadow:0 7px 14px rgba(20,40,60,.2),0 2px 3px rgba(20,40,60,.18),inset 0 -3px 5px rgba(0,0,0,.08),inset 0 2px 3px rgba(255,255,255,.9)}
.eb-dot:active{transform:translateY(1px);box-shadow:0 2px 4px rgba(20,40,60,.18),inset 0 2px 4px rgba(0,0,0,.12)}
.eb-dot.done{color:#fff;border-color:#2f8f57;text-shadow:0 1px 1px rgba(0,0,0,.25);
  background:radial-gradient(circle at 32% 28%,#8fe0ae 0%,#3fae6c 50%,#23804a 100%)}
.eb-dot.current{color:#fff;border-color:#a87818;text-shadow:0 1px 1px rgba(0,0,0,.3);
  background:radial-gradient(circle at 32% 28%,#ffe3a3 0%,#e2a93a 50%,#b07c16 100%);
  box-shadow:0 0 0 4px rgba(197,148,42,.22),0 4px 8px rgba(20,40,60,.18),inset 0 -3px 5px rgba(0,0,0,.12),inset 0 2px 3px rgba(255,255,255,.6)}
.eb-dot.skipped{color:#9a9893;border-style:dashed;border-color:#c9c5bd;box-shadow:inset 0 2px 4px rgba(0,0,0,.08);
  background:radial-gradient(circle at 32% 28%,#fafaf8 0%,#ecebe7 100%)}
@media (max-width:700px){.eb-dot{width:38px;height:38px;font-size:15px}.eb-dash{width:12px}}
/* Scope Builder (Greg 2026-10-28): General tab + one tab per scope, four choices per item. */
.sb2-tabs{display:flex;gap:6px;margin:0 0 10px;border-bottom:1px solid #dfe5ea}
.sb2-tab{border:0;background:none;padding:9px 16px;font-weight:600;font-size:15px;color:#5b6773;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px}
.sb2-tab.on{color:#0f5132;border-bottom-color:#1f8a4c}
.sb2-count{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;background:#f3c74f;color:#4a3700;font-size:12px;text-align:center}
.sb2-hint,.sb2-draftnote{margin:0 0 8px}
.sb2-card{background:#fff;border:1px solid #e3e8ec;border-radius:10px;padding:12px 14px;margin:0 0 10px}
.sb2-card>summary{cursor:pointer;list-style:none}
.sb2-card>summary::-webkit-details-marker{display:none}
.sb2-card>summary::before{content:'▸ ';color:#8a96a1}
.sb2-card[open]>summary::before{content:'▾ '}
.sb2-rows{margin-top:6px}
.sb2-row{border-top:1px solid #eef1f4;padding:8px 0}
.sb2-row:first-child{border-top:0}
.sb2-row.na .sb2-label b{color:#8a96a1;font-weight:500}
.sb2-row.new{background:#fffaf0;border-radius:8px;padding:8px}
.sb2-row-main{display:flex;align-items:flex-start;gap:10px}
.sb2-label{flex:1;min-width:0}
.sb2-text{font-size:13px;color:#46525d;margin-top:2px;cursor:pointer;border-radius:4px;padding:1px 3px;margin-left:-3px}
.sb2-text:hover{background:#f1f5f8}
.sb2-text.warn{color:#9a5b00;font-style:normal;font-weight:600}
.sb2-seg{display:flex;border:1px solid #cfd8df;border-radius:8px;overflow:hidden;flex:none}
.sb2-c{border:0;border-left:1px solid #cfd8df;background:#f7f9fa;padding:6px 10px;font-size:12.5px;cursor:pointer;color:#46525d;white-space:nowrap}
.sb2-c:first-child{border-left:0}
.sb2-c:hover{background:#eef2f5}
.sb2-c-include.on{background:#1f8a4c;color:#fff}
.sb2-c-exclude.on{background:#b3392f;color:#fff}
.sb2-c-alternate.on{background:#d99a12;color:#fff}
.sb2-c-na.on{background:#7b8792;color:#fff}
.sb2-clar{flex:none;font-size:12.5px;display:flex;align-items:center;gap:4px;padding-top:5px;white-space:nowrap}
.sb2-move{flex:none;display:flex;gap:3px}
.sb2-sub{margin:6px 0 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sb2-sub select{width:auto;padding:3px 6px}
.sb2-price{width:110px;padding:4px 6px}
.sb2-note{width:100%;padding:6px 8px}
.warn-text{color:#9a5b00}
.sb2-clist{margin-top:6px}
.sb2-cl{display:flex;gap:8px;align-items:flex-start;padding:5px 0;border-top:1px solid #f0f3f5}
.sb2-cl:first-child{border-top:0}
.sb2-cl.other span{flex:1}
.sb2-assume{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin-top:6px}
.sb2-as{display:flex;align-items:center;gap:8px;margin:0}
.sb2-as span{flex:none;width:170px;font-size:13px}
.sb2-as input[type=text],.sb2-as input:not([type]){flex:1;padding:5px 7px}
.sb2-line{display:flex;gap:8px;align-items:center;padding:5px 0;border-top:1px solid #f0f3f5}
.sb2-line>span:not(.badge){flex:1}
.sb2-wh{font-weight:700;margin:10px 0 2px}
.sb2-wl{margin:0;padding-left:20px;font-size:13px}
@media (max-width:900px){.sb2-row-main{flex-wrap:wrap}.sb2-seg{order:3;width:100%}.sb2-c{flex:1;white-space:normal}.sb2-assume{grid-template-columns:1fr}}
.sb2 label.sb2-clar{display:flex;flex-direction:row;align-items:center;gap:5px;margin:0;font-weight:500}
.sb2 label.sb2-clar input{width:auto;margin:0}
.sb2 label.sb2-as{display:grid;grid-template-columns:18px 170px 1fr;align-items:center;gap:8px;margin:0;font-weight:500}
.sb2 label.sb2-as input[type=checkbox]{width:auto;margin:0}
.sb2 label.sb2-cl{display:flex;flex-direction:row;font-weight:400;margin:0}
.sb2 label.sb2-cl input{width:auto;margin:3px 0 0}
.sb2-who{border:1px solid #d5dde3;background:#f7f9fa;border-radius:10px;font-size:11.5px;padding:1px 6px;width:auto!important;margin-left:6px;color:#46525d;height:auto}
.sb2-move{width:86px;justify-content:flex-end}
.sb2-cl.other span{font-size:13px;color:#46525d}
/* Ground Cover Plan (2026-10-28) */
.gc-swatch{display:inline-block;width:12px;height:12px;border-radius:2px;margin-right:6px;vertical-align:-1px;border:1px solid rgba(0,0,0,.25)}
.gc-legend>span{display:inline-flex;align-items:center;margin-right:10px;border:0!important}
.gc-area-table{width:100%;border-collapse:collapse;font-size:13px}.gc-area-table td,.gc-area-table th{padding:3px 4px;border-bottom:1px solid var(--border,#e3e3e3)}
.gc-area-table .gc-total td{font-weight:600}.gc-choice{display:inline-flex;gap:4px;margin-left:8px}
.gc-legend-table{min-width:320px}.gc-legend-table td:nth-child(2),.gc-legend-table th:nth-child(2){text-align:right}

/* Head placement preview (Greg 2026-10-29): the reach and arc of the head you are about to place. */
.irr-ghost .irr-ghost-throw{fill:rgba(11,111,184,.12);stroke:#0b6fb8;stroke-dasharray:4 3;opacity:.9}.irr-ghost-dot{fill:#0b6fb8;opacity:.8}.irr-ghost-tip{fill:#0b4f85;font-weight:600;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}

/* Ground cover plan lines (Greg 2026-10-30): metal edging, thinner than a wall; its legend mark is a line, not a square. */
polyline.irr-shape.edging{fill:none;stroke:#1d5f9e;stroke-width:3;stroke-linecap:round}
polyline.irr-shape.edging.selected{stroke:#c62f29!important}
/* Fence (Greg 2026-11-03): red dashed; sprinklers do not throw across it. */
polyline.irr-shape.fence{fill:none;stroke:#d01a1a;stroke-width:3;stroke-dasharray:9 5;stroke-linecap:butt}
polyline.irr-shape.fence.selected{stroke:#7a0d0d!important}
.gc-line-swatch{display:inline-block;width:16px;height:4px;border-radius:2px;margin-right:6px;vertical-align:3px}
/* Proposal Sent Outside the OS: drop box and one line per document (Greg 2026-10-30) */
.ps-drop{border:2px dashed var(--border,#c9d3dd);border-radius:10px;padding:14px;text-align:center;margin:8px 0 4px;display:flex;flex-direction:column;gap:6px;align-items:center}
.ps-drop.over{border-color:var(--kcis-blue);background:rgba(20,120,187,.06)}
.ps-docs{display:flex;flex-direction:column;gap:6px;margin:6px 0 8px}
.ps-doc{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border,#dde3ea);border-radius:8px}
.ps-doc.empty{border-style:dashed;justify-content:space-between}
.ps-doc select{width:auto;flex:0 0 auto}
.ps-doc .ps-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ps-plan-note{margin:0 0 2px 0}
/* Greg 2026-10-30: once a proposal has gone out, lead with what went out (it governs). */
.governs-box{border:1px solid var(--line);border-left:4px solid var(--kcis-green);border-radius:10px;padding:10px 14px;margin:10px 0;background:#fff;display:flex;flex-direction:column;gap:8px}
.governs-box.warn{border-left-color:#c77700}
.governs-box .gv-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.governs-box .gv-line{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.governs-box .gv-links{display:flex;gap:6px;flex-wrap:wrap}
.governs-box .gv-warn{background:#fff6e5;border:1px solid #f0c36d;border-radius:8px;padding:8px 10px;color:#5a3d00}
.card-head > .badge{white-space:nowrap}
/* #216 governing / not used */
.gov-tag{display:inline-block;padding:2px 8px;border-radius:999px;background:#e6f4ea;color:#1e6b34;font-size:12px;font-weight:700;letter-spacing:.02em}
.gv-ask{margin:0 0 10px;padding:8px 12px;border-left:4px solid #b54708;background:#fff6ed;color:#7a2e0e;border-radius:6px;font-size:14px}
.gv-nums{font-size:13px;color:#344054;margin-top:3px}
.gv-nums.gv-low{color:#b42318}
.gv-docs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}
details.gv-os{margin-top:10px;border:1px solid var(--line,#e4e7ec);border-radius:8px;padding:6px 10px}
details.gv-os>summary{cursor:pointer;color:#475467;font-weight:600}
/* #217 governing cards and folds: what went out, then the OS working copy, same style, quick links on the closed line */
.gv-osval{display:block;font-style:normal;font-size:11px;color:#98a2b3;margin-top:3px;font-weight:500}
details.gv-os>summary{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;list-style:none;padding:2px 0}
details.gv-os>summary::-webkit-details-marker{display:none}
details.gv-os>summary .gv-sum::before{content:"\25B8";display:inline-block;margin-right:6px;color:#98a2b3;transition:transform .15s}
details.gv-os[open]>summary .gv-sum::before{transform:rotate(90deg)}
details.gv-os .gv-sum{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
details.gv-os .gv-sum .tiny{font-weight:400;color:#475467}
details.gv-os .gv-sum-links{display:flex;gap:6px;flex-wrap:wrap}
details.gv-went{border-left:4px solid var(--kcis-green,#2e7d32)}
details.gv-os .gv-body{padding:8px 0 4px;display:flex;flex-direction:column;gap:8px}
.gv-delta{display:inline-block;padding:1px 8px;border-radius:10px;background:#fff6e5;color:#5a3d00;font-size:12px;font-weight:600}
.gv-changes{margin-top:6px;padding:6px 10px;background:#f8fafc;border-radius:6px;font-size:13px}
.gv-changes ul{margin:4px 0 0 18px;padding:0}
.gv-revline{margin-top:10px;padding:8px 12px;border-left:4px solid #c77700;background:#fff6e5;border-radius:6px}
a.gv-chip-not{color:#b42318;border-color:#fecdca}
.rv-sent{font-size:15px;margin:2px 0 8px}
.rv-plans-none{color:#027a48;margin:0 0 10px}
.rv-q{font-weight:600;margin:12px 0 4px}
.rev-scope .rv-pills{display:inline-flex;gap:14px;margin:0 12px}
.rev-scope .rv-pills label{display:inline-flex;align-items:center;gap:4px;font-weight:500}
.rev-scope input[id^=rvn_]{margin-top:6px;width:100%}
.rv-include{display:flex;gap:6px;align-items:center;margin-top:10px}
details.rv-hist{margin-top:12px}details.rv-hist>summary{cursor:pointer;color:#475467}
details.gv-os td{white-space:normal}details.gv-os td.eb-alt-val{white-space:nowrap}
details.gv-os>summary a.btn{text-decoration:none}
.rev-scope .rv-pills label,label.rv-include{flex-direction:row!important;display:inline-flex!important;align-items:center;gap:5px;margin:0;border:0;padding:0;background:none}
.rev-scope .rv-pills input,label.rv-include input{width:auto;margin:0}
.rev-scope{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.rev-scope input[id^=rvn_][hidden]{display:none}
.kref-tag{display:inline-block;padding:2px 8px;border-radius:999px;background:#e8f1fb;color:#1d4f86;font-size:12px;font-weight:700;letter-spacing:.02em}
a.gv-chip-ref{color:#1d4f86;border-color:#c7dbf2}
/* #219 Update Bid */
.ub-card{max-width:860px}
.ub-reasons{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
label.ub-reason{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:6px;margin:0;padding:5px 10px;border:1px solid var(--line,#d5dbe3);border-radius:999px;background:#fff;font-weight:600;font-size:13px;cursor:pointer}
label.ub-reason input{width:auto;margin:0}
label.ub-reason:has(input:checked){background:#e8f1fb;border-color:#9cc0ea;color:#1d4f86}
.ub-block{border-left:3px solid #9cc0ea;padding:6px 10px;margin:0 0 10px;background:#f7fafd;border-radius:6px}
.ub-block .rv-pills{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:6px 0}
.ub-block .rv-pills label{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:5px;margin:0}
.ub-block .rv-pills input{width:auto;margin:0}.ub-block .rv-pills select{width:auto}
label.ub-wide{display:block;margin:6px 0}label.ub-wide textarea,label.ub-wide input[type=file]{width:100%}
.ub-what{margin:6px 0;color:#344054}
ul.ub-todo{list-style:none;margin:6px 0 0;padding:0;font-size:13px}
ul.ub-todo li{display:flex;gap:6px;align-items:baseline;margin:2px 0}
ul.ub-todo li.done{color:#1e6b34}ul.ub-todo li.done a{color:#1e6b34}
ul.ub-todo .ub-mark{width:14px;font-weight:700}
.ub-ro{margin-bottom:8px}

/* #220 Follow-Up Queue folds to one line (Greg 2026-10-30) */
.fu-fold>summary.fu-sum,.pa-fold>summary.fu-sum{list-style:none;cursor:pointer;display:flex;align-items:center;gap:18px;font-size:15px;padding:2px 0}
.fu-fold>summary.fu-sum::-webkit-details-marker,.pa-fold>summary.fu-sum::-webkit-details-marker{display:none}
.fu-fold>summary.fu-sum::before,.pa-fold>summary.fu-sum::before{content:'\25B8';color:#64748b;font-size:12px;transition:transform .15s}
.fu-fold[open]>summary.fu-sum::before,.pa-fold[open]>summary.fu-sum::before{transform:rotate(90deg)}
.fu-fold>summary b,.pa-fold>summary b{font-size:17px;color:#0f172a}
.fu-over{color:#b91c1c;font-weight:700;display:inline-flex;align-items:center;gap:6px}
.fu-dot{width:9px;height:9px;border-radius:50%;background:#dc2626;display:inline-block}
.fu-soon{color:#0f172a;font-weight:600}
.fu-total{color:#94a3b8}
.fu-head{margin:10px 0 8px}

/* #220 two start dates on one card */
.project-kpi-card .kpi-dates{display:flex;gap:14px;margin-top:2px}
.project-kpi-card .kpi-dates i{display:block;font-style:normal;font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.03em}
.project-kpi-card .kpi-dates b{font-size:17px}

/* #221 Schedules group on Documents: replaced schedules keep their place with a red band across them */
.sched-doc .current-sheet-card{position:relative;overflow:hidden}
.sched-doc.replaced .current-sheet-card{opacity:.8}
.sched-replaced{position:absolute;left:-12%;right:-12%;top:44%;transform:rotate(-7deg);background:rgba(185,28,28,.92);color:#fff;font-style:normal;font-weight:800;font-size:12px;letter-spacing:.05em;text-transform:uppercase;text-align:center;padding:4px 0;pointer-events:none}
.gv-sheet-btn{border-color:#1d4f86;color:#1d4f86}

/* #223 Compare & Confirm: the OS / estimator choice sits on one line with its button */
label.bc-pick{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;margin:2px 0;white-space:nowrap;font-weight:500}label.bc-pick input{width:auto;margin:0}
/* #223 Compare & Confirm rows are narrower */
table.bc-table td,table.bc-table th{padding:4px 8px;vertical-align:middle}table.bc-table tr[data-cat] td{padding-top:5px;padding-bottom:5px}
table.bc-table input.bc-why{padding:4px 8px;min-height:0;height:28px;font-size:12px}.bc-picks{display:flex;gap:10px;align-items:center}
.newer-tag{display:inline-block;padding:2px 8px;border-radius:999px;background:#fff4e0;color:#8a5300;font-size:12px;font-weight:700;letter-spacing:.02em}
/* #224 cards that only show a number (status, gross margin) do not look clickable */
.project-kpi-card.kpi-static,.card3d.static{cursor:default}
.project-kpi-card.kpi-static:hover{transform:none;border-color:#d7e1e6;box-shadow:0 2px 5px rgba(24,71,99,.05),inset 0 1px 0 #fff}
.bv-table{width:100%;border-collapse:collapse}.bv-table td,.bv-table th{padding:5px 8px;border-bottom:1px solid #e8edf0;font-size:13px}.bv-table .num{text-align:right;white-space:nowrap}
.src-list{margin:6px 0 0;padding:0;list-style:none}.src-list li{padding:8px 0;border-bottom:1px solid #e8edf0}.src-quote{font-size:12px;color:#475569;background:#f6f8f9;border-left:3px solid #9fb8c6;padding:4px 8px;margin-top:4px;white-space:pre-wrap}
.doc-kind{display:inline-flex;gap:0;margin-left:10px;border:1px solid #cfdbe2;border-radius:999px;overflow:hidden;vertical-align:middle}.doc-kind button{border:0;background:#fff;font-size:11px;padding:2px 9px;cursor:pointer;color:#334155}.doc-kind button.on{background:#01696f;color:#fff}.doc-kind button:disabled{color:#b6c2ca;cursor:default}
.dk-wrap{display:contents}.current-sheet-grid[data-show="plan"] .dk-wrap:not([data-kind="plan"]),.current-sheet-grid[data-show="spec"] .dk-wrap:not([data-kind="spec"]){display:none}

/* #225 Greg 2026-10-30: "Remember we want to not have to do that anywhere on the OS" (scroll left and right).
   Table text wraps instead of pushing the table wider than the screen. Short numbers stay on one line on their own. */
th,td{white-space:normal;overflow-wrap:break-word}
.table-wrap{overflow-x:hidden;overflow-y:visible}
.table-wrap table{table-layout:auto;max-width:100%}
td input,td select{max-width:100%}
.eb-bar.eb-flash{box-shadow:0 0 0 3px #f2c94c;border-radius:10px;transition:box-shadow .3s}
/* #225 Labor Hours window: one aligned list, like the takeoff */
.lh-table{border:1px solid var(--line);border-radius:10px;margin:10px 0;overflow:hidden}
.lh-row{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(0,1.1fr) minmax(0,1.3fr) 110px;gap:10px;align-items:center;padding:6px 12px;border-top:1px solid #eef2f5}
.lh-row.lh-head{border-top:0;background:#f7f9fb;font-size:11px;text-transform:uppercase;letter-spacing:.35px;color:#56616d;font-weight:700}
.lh-row input[type=number]{width:90px}.lh-qty,.lh-rate{display:flex;gap:6px;align-items:center;font-size:12px;color:#56616d}
.lh-hrs{text-align:right}.lh-hrs input{width:80px}.lh-task{font-size:13px}.lh-task input{width:100%}
.lh-changed{background:#fffaf0}.lh-group{padding:8px 12px 4px;font-size:12px;font-weight:700;color:#155a88;border-top:1px solid #e1e8ee;display:flex;gap:10px;align-items:center;background:#fbfcfd}
.lh-empty{padding:6px 12px}
.lh-totals{margin:0 0 10px auto;max-width:520px;border:1px solid var(--line);border-radius:10px;padding:8px 12px}
.lh-trow{display:flex;justify-content:space-between;gap:12px;padding:3px 0;font-size:13px}.lh-trow.lh-tot{border-top:1px solid #dfe6ec;margin-top:4px;padding-top:6px}
.lh-simple{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:6px 0 10px}.lh-simple label{font-size:12px;color:#56616d}.lh-simple input{width:100%}
.lh-others{display:grid;gap:6px;margin-bottom:10px}.lh-orow{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:10px;align-items:end;font-size:12px}.lh-orow input{width:100%}
/* #225 Scope Builder groups */
.sb2-group{margin-top:8px}.sb2-gh{font-size:11px;text-transform:uppercase;letter-spacing:.4px;font-weight:800;padding:6px 2px;color:#56616d}
.sb2-gh span{font-weight:600;color:#8a96a3}.sb2-g-include .sb2-gh{color:#1f7a44}.sb2-g-exclude .sb2-gh{color:#a12f2f}.sb2-g-alternate .sb2-gh{color:#9a6a00}
.sb2-ideas{margin-top:6px;border-top:1px dashed #dbe3ea;padding-top:6px}.sb2-ideas summary{cursor:pointer;color:#155a88}
/* #226 Final Review: "the Titles of each section ... should be much more prominent ... Bigger / Different font and potentially
   different color (blue or green probably)". */
.fr-title{font-size:19px;font-weight:800;color:var(--kcis-blue-dark);letter-spacing:.1px;margin:26px 0 10px;padding-bottom:6px;border-bottom:3px solid var(--kcis-green);line-height:1.25}
.fr-host .group-title,.fr-host .eb-section-title{font-size:19px;font-weight:800;color:var(--kcis-blue-dark);text-transform:none;letter-spacing:.1px;margin:26px 0 10px;padding-bottom:6px;border-bottom:3px solid var(--kcis-green)}
.fr-price,.fr-alts{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.fr-price-row,.fr-alt-row{display:grid;grid-template-columns:minmax(0,1fr) 140px 210px;gap:12px;align-items:center;padding:10px 14px;border-top:1px solid var(--line)}
.fr-price-row:first-child,.fr-alt-row:first-child{border-top:0}
.fr-price-amt,.fr-alt-price{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.fr-price-btn,.fr-alt-act{min-width:0;text-align:right}
.fr-alt-act .tiny{display:block;text-align:right}
.fr-price-total{background:var(--accent2, #f3f8fc);font-size:15px}
.fr-price-scope{padding:8px 14px;font-weight:700;background:#f6f8fa;border-top:1px solid var(--line)}
.fr-price-scope:first-child{border-top:0}
.fr-alt-off{margin-top:6px}
.fr-host .fr-alts+.toolbar,.fr-host .fr-alt-off+.toolbar{margin-top:8px}
.fr-alt-main{min-width:0;overflow-wrap:break-word}
@media (max-width:640px){.fr-price-row,.fr-alt-row{grid-template-columns:minmax(0,1fr) auto}.fr-price-btn,.fr-alt-act{grid-column:1/-1;text-align:left}}

/* Greg 2026-10-30: paused bids in their own closed bar under the live list */
.paused-bids{margin-top:14px;border:1px solid var(--line,#dfe5ea);border-radius:10px;background:#fafbfc}
.paused-bids>summary{cursor:pointer;padding:10px 14px;font-weight:700;color:var(--muted,#5f6b76);list-style:revert}
.paused-bids[open]>summary{border-bottom:1px solid var(--line,#dfe5ea)}
.paused-bids .table-wrap{margin:0}
.irr-mbox{fill:rgba(1,105,111,.08);stroke:#01696f;stroke-width:1.5;stroke-dasharray:6 4;pointer-events:none}
.inline-panel.bc-marked-approve{border-color:#1f9a4a;background:#f2faf4}.inline-panel.bc-marked-reject{border-color:#b9c3c9;background:#f6f7f8}.bc-mark-pill{margin-left:6px}.bc-q-text{font-size:13px;line-height:1.4;margin-bottom:6px;white-space:normal}.bc-q-done{color:#1f6f3a;margin-right:8px}.bc-know{margin:4px 0 8px 18px;padding:0}.bc-know li{margin:2px 0;white-space:normal}.bc-save-bar{position:sticky;bottom:0;background:#fff;padding:8px 0;border-top:1px solid #e3e8eb;z-index:2}
.bc-save-bar[hidden],.bc-mark-pill[hidden]{display:none}

/* Labor quantities need an Edit click; rates are view-only (#235) */
.lh-q[readonly]{border-color:transparent;background:transparent;box-shadow:none;pointer-events:none}
.lh-qedit{margin-left:6px}
.lh-rtext{font-weight:600}
.gm-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.gm-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 110px;gap:8px;align-items:end;padding:8px 0;border-bottom:1px solid var(--line)}
.gm-row input{width:100%}

/* Checkboxes line up with their wording, everywhere (Greg 10/31/2026: "make sure that all check boxes are lined up with
   their wording ... it can be confusing if they don't line up"). The base rules above stretch every input to full width
   and stack a label's contents in a column, which put a checkbox on its own line, centered in a wide empty box, with its
   words underneath (Award Project: "Prevailing wage"). A checkbox or radio is now its own size, and a label holding one
   lays out in a row: box, then words, wrapped words staying beside the box. :where() keeps these at the base rules'
   weight, so any screen that styled its own checkboxes (pills, chips, cards) keeps its look. */
input:where([type=checkbox],[type=radio]){width:auto;min-width:0;height:auto;flex:0 0 auto;padding:0;margin:1px 0 0;border:0;box-shadow:none;background:none;accent-color:#12628d;cursor:pointer}
label:where(:has(> input[type=checkbox],> input[type=radio])){flex-direction:row;align-items:flex-start;gap:8px}
label:where(:has(> input[type=checkbox],> input[type=radio])) > :where(span,b,small){min-width:0}
.check-row{padding:3px 0}

/* Drop boxes for every file input (Greg 10/31/2026). */
.file-drop-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0;overflow:hidden;clip-path:inset(50%);pointer-events:none}
.file-drop{display:flex;align-items:center;gap:10px;min-height:46px;padding:9px 12px;border:2px dashed #a9c3d4;border-radius:10px;background:#f8fbfd;cursor:pointer;font-size:13px;font-weight:500;color:#44515e;outline:none;transition:.12s ease;min-width:0}
.file-drop:hover,.file-drop:focus,.file-drop.over{border-color:var(--accent);background:#edf6fc}
.file-drop.over{box-shadow:0 0 0 3px rgba(43,112,158,.12)}
.file-drop-icon{flex:0 0 auto;font-size:17px;color:#2b709e;line-height:1}
.file-drop-text{flex:0 1 auto;min-width:0}
.file-drop-name{flex:1 1 auto;min-width:0;text-align:right;font-weight:700;color:#1f5f3a;overflow-wrap:anywhere}
.file-drop.has-file{border-style:solid;border-color:#9fcfb0;background:#f1f9f4}
.file-drop.has-file .file-drop-text b{font-weight:600}
.sb2-ro{border:0;padding:0;margin:0;min-width:0;opacity:.78}.sb2-ro *{cursor:default!important}.sb2-lock{margin:8px 0}

/* #241 conversations scroll like Perplexity: room under the last question, and a round arrow to the latest */
.chat-tail{flex:0 0 auto;pointer-events:none}
.chat-jump{position:sticky;bottom:0;height:0;display:flex;justify-content:center;overflow:visible;pointer-events:none;z-index:2;flex:0 0 auto}
.chat-jump button{pointer-events:auto;transform:translateY(-46px);width:34px;height:34px;min-height:0;padding:0;border-radius:50%;border:1px solid #c8dce6;background:#fff;color:#18435a;box-shadow:0 2px 8px rgba(24,67,90,.18);font-size:17px;line-height:1;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .15s}
.chat-jump.show button{opacity:1;visibility:visible}

/* #241 New Change Order: KCIS reads the request */
.cor-ai{border:1px solid #c8dce6;border-radius:12px;background:#f7fbfd;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.cor-ai-head{display:flex;flex-direction:column;gap:2px}
.cor-ai-more{display:flex;flex-direction:column;gap:4px}
.cor-ai-more summary{cursor:pointer;font-size:13px;color:#2f5d76}
.cor-ai-emails{max-height:180px;overflow-y:auto;overflow-x:hidden;margin-top:4px}
.cor-ai-go{display:flex;justify-content:flex-end;align-items:center;gap:10px}
.cor-ai-out{display:flex;flex-direction:column;gap:6px;border-top:1px solid #dbe7ee;padding-top:8px;font-size:13.5px}
.cor-ai-verdict{border-left:3px solid #c9a227;padding:4px 8px;background:#fff}
.cor-ai-verdict.ok{border-left-color:#2e8b57}.cor-ai-verdict.bad{border-left-color:#c0392b}
.cor-ai-warn{margin:0;padding-left:18px;color:#8a5a00}
.cor-ai-out ol{margin:4px 0 0;padding-left:20px}
.cor-ai-lines{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12.5px}
.cor-ai-lines th,.cor-ai-lines td{text-align:left;padding:3px 4px;border-bottom:1px solid #e6eef3;vertical-align:top;overflow-wrap:anywhere}
.cor-ai-lines th:nth-child(1),.cor-ai-lines td:nth-child(1){width:52%}
.ai-filled{background:#fffbea!important;border-color:#e6cf7a!important}

/* #242 Current Job Info: the read-only link to how the job was bid */
.cji-bid{margin-top:6px}
.cji-bid a{font-weight:600}

/* #243 Awarded-to-Active as a bubble bar like Bid Steps. 17 items: label on top so the bubbles get the full width. */
.ar-bar{flex-direction:column;align-items:flex-start;gap:10px;margin-top:14px}
.ar-bar .eb-bar-label{flex-direction:row;align-items:baseline;gap:10px}
.ar-bar .eb-dot{width:42px;height:42px;font-size:15px}
.ar-bar .eb-dash{width:10px}
@media (max-width:700px){.ar-bar .eb-dot{width:34px;height:34px;font-size:13px}.ar-bar .eb-dash{width:6px}}
.ar-next{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 6px;padding:0 4px}
.ar-next b{font-weight:600}

/* #245 leadership agenda preview: same dark bars as the printed agenda, scrolls up and down only */
.lm-preview{margin-top:12px;max-height:46vh;overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.lm-focus{font-size:12px;color:var(--muted);margin-bottom:6px}
.lm-bar{display:flex;justify-content:space-between;gap:10px;background:#262626;color:#fff;padding:5px 9px;border-radius:4px;margin:10px 0 5px;font-size:13px}
.lm-bar span{font-size:11px;opacity:.85;white-space:nowrap}
.lm-preview ul{margin:2px 0 4px 18px;padding:0;font-size:13px}
.lm-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
.lm-table th,.lm-table td{border:1px solid #d5d9de;padding:3px 6px;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.lm-table th{background:#ededed;font-size:11px}

/* #246 award step popup */
.ar-detail{margin-top:8px;line-height:1.45}
.ar-checks{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:13px}
.acm-row{gap:8px;padding:6px 0;border-bottom:1px solid var(--line);min-width:0}
.acm-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acm-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}
.acm-actions select{max-width:150px}

/* #247 itemized change order */
.ci-wrap{border:1px solid var(--line,#d7dde3);border-radius:10px;padding:8px 12px;margin:12px 0}
.ci-wrap>summary{cursor:pointer;font-weight:600;padding:4px 0}
.ci-add{position:relative;margin:8px 0}
.ci-hits{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.ci-hit{display:flex;justify-content:space-between;gap:10px;text-align:left;background:var(--panel,#fff);border:1px solid var(--line,#d7dde3);border-radius:6px;padding:6px 8px;cursor:pointer}
.ci-hit:hover{background:#eef4fa}
.ci-hit span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ci-more{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ci-head,.ci-row{display:grid;grid-template-columns:minmax(0,3fr) 64px 52px 84px 68px 60px 88px 26px;gap:6px;align-items:center}
.ci-head{font-size:11px;font-weight:600;color:var(--muted,#667);margin-top:6px}
.ci-row{margin:4px 0}
.ci-row input{min-width:0;width:100%;padding:5px 6px}
.ci-d{display:flex;gap:4px;align-items:center;min-width:0}
.ci-kind{font-size:10px;background:#eef2f5;border-radius:4px;padding:2px 4px}
.ci-p{text-align:right;font-variant-numeric:tabular-nums}
.ci-x{border:none;background:none;font-size:18px;cursor:pointer;color:var(--muted,#667)}
.ci-foot{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;margin-top:8px}
.ci-foot label{max-width:160px}
.ci-foot label.ci-chk{flex-direction:row;align-items:center;gap:6px;max-width:none}
.ci-foot label.ci-chk input{width:auto}
.ci-sum{margin-top:8px;line-height:1.5}
.ci-tot{color:var(--ink,#1f2933)}
.warn-text{color:#964219}
@media (max-width:820px){.ci-head{display:none}.ci-row{grid-template-columns:repeat(4,minmax(0,1fr)) 26px}.ci-row .ci-d{grid-column:1/-1}}
.ci-mini{padding:4px 10px;font-size:12px}

/* #247 smaller drop box */
.project-drop-zone.compact{min-height:0;padding:10px 14px;margin:8px 0;border-radius:10px}
.project-drop-zone.compact .drop-title{font-size:14px;margin:0}
.project-drop-zone.compact .drop-icon{font-size:16px;margin:0 4px 0 0;display:inline}
.ew-card h2{margin-bottom:2px}.ew-costs td.num,.ew-costs th.num{text-align:right;white-space:nowrap}.ew-add{margin-top:10px}.ew-add summary{cursor:pointer;margin-bottom:8px}.tiny-btn{padding:2px 8px;min-height:0}
/* #248 Financial Documents */
.fd-chip{display:inline-block;margin:2px 6px 2px 0;padding:2px 8px;border-radius:999px;background:#f1f4f7;color:#5b6b78;font-size:12px}
.fd-chip.done{background:#e6f4ea;color:#1e6b34}
.fd-conv{max-height:420px;overflow-y:auto;overflow-x:hidden;margin-top:10px}
.fd-q{font-weight:600;margin:12px 0 4px;color:#1f3b52}
.fd-a{background:#f8fbfd;border:1px solid #e3ebf1;border-radius:10px;padding:10px 12px;line-height:1.45;overflow-wrap:anywhere}
.fd-conv .fd-q:first-child{margin-top:0}
.fd-page .searchbar textarea{flex:1;min-width:0}
.fd-month summary{cursor:pointer;padding:6px 0}.fd-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:6px 0;border-top:1px solid #eef2f5}
.fd-row span{min-width:0;overflow-wrap:anywhere}.fd-hist summary{cursor:pointer}
.lm-hist{margin-top:12px}.lm-hist summary{cursor:pointer;font-weight:600}.lm-hist input[type=file]{min-width:0;flex:1}
/* #249 Pending COs list */
.cor-pend.overdue{border-left:3px solid var(--warn)}
.cor-pend .row-between{align-items:flex-start;gap:10px}

/* #250 New Project documents filing behind the job: one small line per job, bottom right, out of the way. */
.np-pill-host{position:fixed;right:18px;bottom:18px;z-index:90;display:flex;flex-direction:column;gap:8px;align-items:flex-end;max-width:min(440px,calc(100vw - 36px))}
.np-pill{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;box-shadow:var(--shadow);padding:9px 10px 9px 12px;font-size:13px;color:var(--ink)}
.np-pill.good{border-left-color:var(--good)}.np-pill.warn{border-left-color:var(--warn)}
.np-pill-x{border:0;background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:0 2px}

/* #251 job conversation: documents still filing */
.ai-filing-note{margin:8px 12px 0;padding:7px 10px;border-radius:8px;border-left:4px solid var(--warn);background:var(--panel);color:var(--ink);font-size:13px}
/* #252 Used vs Budget bars on active jobs */
.jp-card{margin-top:10px;padding:12px 14px}
.jp-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.jp-row{display:grid;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;background:none;border:0;padding:6px 0;text-align:left;cursor:pointer;color:var(--ink)}
.jp-row:hover .jp-track{box-shadow:0 0 0 1px var(--line)}
.jp-label{font-weight:600;font-size:13px}
.jp-track{position:relative;height:10px;border-radius:6px;background:var(--line);overflow:hidden;min-width:0}
.jp-fill{position:absolute;left:0;top:0;bottom:0;border-radius:6px}
.jp-fill.ok{background:var(--good)}.jp-fill.near{background:var(--warn)}.jp-fill.over{background:var(--bad)}
.jp-num{font-size:12px;color:var(--muted);white-space:nowrap}.jp-num b{color:var(--ink)}
.jp-none{grid-column:2 / 4;font-size:12px}
@media (max-width:640px){.jp-row{grid-template-columns:70px minmax(0,1fr)}.jp-num{grid-column:2}}
/* #253 Work Order sheet */
.wo-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.wo-row{display:grid;grid-template-columns:70px 110px minmax(0,1fr) 64px auto;align-items:center;gap:10px;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;cursor:pointer;color:var(--ink)}
.wo-row:hover{border-color:var(--accent)}
.wo-no{font-weight:700}.wo-date{font-size:13px}.wo-what{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wo-co{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:9px;font-size:11px;font-weight:700;border:1px solid var(--warn);color:var(--ink)}
.wo-form{display:flex;flex-direction:column;gap:12px}
.wo-sec-h{font-weight:700;font-size:13px;margin-bottom:6px}
.wo-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.wo-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 4px 3px 10px;border-radius:14px;background:var(--line);font-size:13px}
.wo-chip button{border:0;background:none;cursor:pointer;font-size:15px;line-height:1;color:var(--muted);padding:0 4px}
.wo-line{display:grid;grid-template-columns:minmax(0,1fr) 120px 150px 28px;gap:6px;margin-bottom:6px;align-items:center}
.wo-line input,.wo-line select,.wo-hrow input,.wo-hrow select,.wo-qrow input,.wo-qrow select{min-width:0;width:100%}
.wo-x{border:0;background:none;cursor:pointer;font-size:18px;color:var(--muted)}
.wo-hrow{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.2fr) 80px 70px 80px 92px;gap:6px;margin-bottom:6px;align-items:center}
.wo-hhead span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.wc-act{display:flex;gap:2px;align-items:center}
.wo-qrow{display:grid;grid-template-columns:minmax(0,1fr) 80px 80px 110px;gap:6px;margin-bottom:6px}
.wo-sum{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 20px}
.wo-sum span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.wo-vline{padding:4px 0;border-bottom:1px solid var(--line)}
@media (max-width:700px){
  .wo-row{grid-template-columns:62px minmax(0,1fr) auto}.wo-row .badge{grid-row:1;grid-column:3}.wo-date{grid-column:2;grid-row:1}.wo-what{grid-column:1 / -1}.wo-crew{display:none}
  .wo-line{grid-template-columns:minmax(0,1fr) 28px}.wo-line .wl-d{grid-column:1 / -1}.wo-line .wl-p{grid-column:1}.wo-line .wl-a{grid-column:1}
  .wo-hrow{grid-template-columns:repeat(3,minmax(0,1fr))}.wo-hrow .wc-n{grid-column:1 / -1}.wo-hrow .wc-l,.wo-hrow .wc-lfix{grid-column:1 / -1}.wo-hhead{display:none}
  .wo-qrow{grid-template-columns:minmax(0,1fr) 70px 70px}.wo-qrow .wq-p{grid-column:1 / -1}
}
/* #254 Job Summary */
.js-card .js-ai{margin:10px 0 4px;line-height:1.5}
.js-now,.js-hist{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.js-hist{border-top:1px solid var(--line);padding-top:8px;margin-top:12px}
.js-b>summary{cursor:pointer;padding:6px 2px;overflow-wrap:anywhere}
.js-b>summary:hover{color:var(--accent)}
.js-d{padding:2px 0 8px 18px;color:var(--muted);overflow-wrap:anywhere;white-space:pre-wrap}
.js-stage>summary{cursor:pointer;padding:6px 2px}
.js-list{padding-left:8px}

/* #256 Materials Used card on the job's Construction tab */
.mat-head{gap:10px;flex-wrap:wrap}
.mat-btns{display:flex;gap:8px;flex-wrap:wrap}
.mat-fold{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.mat-fold summary{cursor:pointer;font-weight:600}
.mat-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 12px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}
.mat-row>span{min-width:0;overflow-wrap:anywhere}
@media (max-width:560px){.mat-row{grid-template-columns:minmax(0,1fr) auto}.mat-row>span.muted{grid-column:1/-1;order:3}}
/* #257 RFQs & Purchase Orders */
.pur-list{display:flex;flex-direction:column;margin-top:8px}
.pur-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--line)}
.pur-main{min-width:0;flex:1 1 220px;overflow-wrap:anywhere}
.pur-btns{display:flex;gap:6px;flex-wrap:wrap}
.pur-lines{display:flex;flex-direction:column;max-height:320px;overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:8px;padding:4px 8px}
.pur-line{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--line)}
.pur-line:last-child{border-bottom:0}
.pur-line>span:first-child{flex:1;min-width:0;overflow-wrap:anywhere}
.pur-q{width:80px}
/* #258 To-dos from job emails */
.emt-card{padding:12px 16px}
.emt-head{gap:10px;flex-wrap:wrap}
.emt-list{display:flex;flex-direction:column;gap:10px;max-height:65vh;overflow-y:auto;overflow-x:hidden}
.emt-row{border:1px solid var(--line);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}
.emt-title{width:100%;font-weight:600}
.emt-acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:4px}
.emt-acts select{flex:1 1 140px;min-width:0;width:auto}
.emt-acts input[type=date]{flex:0 1 150px;width:auto;min-width:0}
/* Build 259: Daily Activities button at the top of a won job (work orders + materials) */
.daily-btn{flex:0 0 auto;align-self:center;border-color:var(--accent);color:var(--accent);background:var(--panel)}
.daily-btn.active,.daily-btn:hover{background:var(--accent);color:var(--panel)}
/* Build 260: leadership agenda, the part only Greg sees, and part headings inside a section */
.lm-own{border:1px solid var(--line);border-radius:6px;padding:8px 10px;margin:10px 0;background:var(--panel)}
.lm-own summary{cursor:pointer}
.lm-own ol,.lm-own ul{margin:4px 0 6px 18px;padding:0;font-size:13px}
.lm-own li{margin:2px 0;overflow-wrap:anywhere}
.lm-own-h{font-size:12px;font-weight:600;margin-top:8px;color:var(--muted)}
.lm-part{font-weight:600;font-size:12px;margin:8px 0 3px}

/* Strategic Plan (small-261) */
.sp-page .sp-table td{vertical-align:top}
.sp-chip{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:600;background:var(--line);color:var(--ink);white-space:nowrap}
.sp-chip.good{background:color-mix(in srgb,var(--good) 16%,transparent);color:var(--good)}
.sp-chip.mid{background:color-mix(in srgb,var(--blue) 16%,transparent);color:var(--blue)}
.sp-chip.bad{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad)}
.sp-chip.warn{background:color-mix(in srgb,var(--warn) 20%,transparent);color:var(--ink)}
.sp-actual{margin-top:4px;color:var(--blue)}.sp-actual.newer{font-weight:700}
.sp-pri>div{margin:4px 0;line-height:1.4}
.sp-click{cursor:pointer}.sp-click:hover{background:var(--accent-soft)}
.sp-win{margin-top:14px;border-top:1px solid var(--line);padding-top:8px}
.sp-win-head{margin-bottom:6px}
.sp-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,46%);gap:10px;padding:6px 8px;border-left:4px solid var(--border);margin:4px 0;background:var(--bg)}
.sp-item.good{border-left-color:var(--good)}.sp-item.mid{border-left-color:var(--blue)}.sp-item.bad{border-left-color:var(--bad)}.sp-item.warn{border-left-color:var(--warn)}
.sp-item-ctl{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.sp-item-ctl select{width:auto}.sp-item-ctl input{flex:1;min-width:140px}
.sp-add{margin-top:6px}
.sp-matrix td.sp-mx{text-align:center;font-weight:700;width:70px}
.sp-mx.A{background:var(--kcis-blue-dark);color:var(--panel)}.sp-mx.S{background:color-mix(in srgb,var(--kcis-blue) 18%,transparent);color:var(--ink)}.sp-mx.I{color:var(--muted)}
@media (max-width:760px){.sp-item{grid-template-columns:1fr}}
/* Change 262 (Job Budget) on direct, T&M and NTE jobs: one line in Current Job Info, a back link on the budget screen. */
.jb-back{margin:0 0 6px}
.jb-back a{font-weight:600}
.cji-budget{margin-top:10px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--panel)}
.cji-budget-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.cji-b-title{display:flex;flex-direction:column;min-width:130px}
.cji-b{display:flex;flex-direction:column;min-width:0}
.cji-b span{font-size:12px;color:var(--muted);font-weight:600}
.cji-b b{font-size:16px;font-variant-numeric:tabular-nums}
.cji-b b.bad{color:var(--bad)}
.cji-budget-row .btn{margin-left:auto}

/* Take Off From Plans bar, landscape and sod/seed takeoff (Greg 2026-11-03) */
.tk-fromplans{display:flex;gap:10px;align-items:center;padding:8px 10px;margin:0 0 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.tk-fromplans .tiny{line-height:1.35}

/* Pricing request: several companies at once (Greg 2026-11-03) */
.ep-suggest{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 6px}
.ep-recip{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:6px 0;background:var(--panel)}
.ep-recip .row-between{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
/* Change 273: zoom out below 100%, head options, rows of heads, planting areas list */
.irr-plan-editor.irr-scroll .irr-plan-stage{min-width:0;margin:0 auto}
.irr-head-opts{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.irr-head-opts[hidden]{display:none}
.irr-head-opts label{display:inline-flex;align-items:center;gap:4px;font-size:12px;white-space:nowrap}
.irr-head-opts select{padding:2px 4px}
.irr-head-opts .irr-ho-sp{width:52px;padding:2px 4px}
.irr-row-line{stroke:var(--blue);stroke-dasharray:6 4;fill:none;pointer-events:none}
.irr-row-dot{fill:var(--blue);fill-opacity:.55;stroke:var(--panel);pointer-events:none}
.irr-row-lbl{fill:var(--graphite);paint-order:stroke;stroke:var(--panel);stroke-width:3px;font-weight:700;pointer-events:none}

/* Change 274: max GPM per kind of zone in the POC edit bar */
.irr-poc-caps{display:inline-block;margin-left:6px}
.irr-poc-caps>summary{cursor:pointer;display:inline}
.irr-poc-caps-in{display:inline-flex;gap:8px;flex-wrap:wrap;margin-left:6px}

/* Change 275: Zones tool */
.irr-zt-ring{fill:none;stroke-width:2.5;stroke-dasharray:4 3;pointer-events:none}
.irr-zt-bed{fill:none;stroke-width:3;stroke-dasharray:6 4;pointer-events:none}
#irrZoneOpts .bad{color:var(--bad);font-weight:600}
.ai-model-offer{font-size:12px;color:var(--muted);margin-top:6px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.ai-model-offer .btn.small{padding:3px 8px;font-size:12px}

/* Change 288: type a zone number in the Zones tool */
.irr-zt-no{display:inline-flex;align-items:center;gap:4px;font-weight:600}
.irr-zt-no input{width:52px;padding:2px 4px}
.irr-head-opts select{max-width:170px}

/* Change 313: alternate areas on the plan */
.irr-alt-area{fill:color-mix(in srgb, var(--warn) 22%, transparent);stroke:var(--bad);stroke-width:2;stroke-dasharray:9 5;pointer-events:none}
.irr-alt-tag{fill:var(--bad);font-weight:700;paint-order:stroke;stroke:var(--panel);cursor:pointer}
.irr-alt-pop{position:fixed;right:24px;top:110px;z-index:3000;width:340px;max-width:92vw;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px color-mix(in srgb, var(--ink) 18%, transparent);padding:10px 12px;display:flex;flex-direction:column;gap:6px}
.irr-alt-pop[hidden]{display:none}
.irr-alt-head{display:flex;align-items:center;gap:6px}
.irr-alt-checks{display:flex;flex-wrap:wrap;gap:4px 12px}
.irr-alt-pop input:not([type=checkbox]),.irr-alt-pop select{width:100%;box-sizing:border-box}
.irr-alt-pop #altShare{width:70px}
.irr-alt-pop .warn-text{color:var(--warn)}

/* Change 322: a wider, invisible click target around the red first-corner dot */
.irr-first-hit{fill:transparent;stroke:none;pointer-events:all;cursor:pointer}
.gc-budget-box{max-height:340px}.gc-budget-table{min-width:0}.gc-budget-table td:not(:first-child),.gc-budget-table th:not(:first-child){text-align:right}
/* Change 351: Quote Review */
.qr-revs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.qr-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.qr-card{border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:12px;background:var(--panel)}.qr-grid .qr-card{margin-top:6px}.qr-big{font-size:28px;font-weight:700;margin:2px 0 8px}.qr-big-input{font-size:24px;font-weight:700;width:100%;box-sizing:border-box;margin:2px 0 8px;padding:6px 10px}.qr-row{display:flex;justify-content:space-between;gap:10px;padding:2px 0;font-size:14px}.qr-row.sub{color:var(--muted);font-size:13px}.qr-term{display:grid;grid-template-columns:120px minmax(0,1fr) 200px;gap:10px;align-items:start;padding:9px 0;border-top:1px solid var(--line)}.qr-term>div:nth-child(2){overflow-wrap:anywhere}.qr-flag{font-size:12.5px;margin-top:3px;font-weight:600}.qr-flag.bad{color:var(--bad)}.qr-flag.warn{color:var(--warn)}.qr-dec{display:flex;flex-direction:column;gap:6px}.qr-dec select,.qr-dec input{width:100%;box-sizing:border-box}.qr-lines{width:100%;table-layout:fixed;border-collapse:collapse;margin:8px 0;font-size:13.5px}.qr-lines th,.qr-lines td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left;overflow-wrap:anywhere}.qr-lines .num{text-align:right}.qr-ok{color:var(--muted)}details.qr-card summary{cursor:pointer}
@media (max-width:720px){.qr-grid,.qr-term{grid-template-columns:1fr}.qr-lines col:nth-child(5),.qr-lines th:nth-child(5),.qr-lines td:nth-child(5){display:none}}
.qr-muted{color:var(--muted);font-size:13px;line-height:1.45}.qr-card .qr-muted+.qr-big,.qr-card .qr-muted+.qr-big-input{margin-top:4px}
@media (max-width:720px){.qr-lines{table-layout:auto;font-size:12.5px}.qr-lines col{width:auto!important}.qr-lines td:first-child,.qr-lines th:first-child{display:none}.qr-lines .badge{white-space:normal}}
/* Change 353: sanity tests inside the price confidence */
.sanity-line{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0 2px;font-size:13px}
.sanity-line.ok{color:var(--good,var(--ink))}.sanity-line.bad{color:var(--bad);font-weight:600}
.eb-price.clickable{cursor:pointer}.eb-price small.bad{color:var(--bad);font-weight:600}
.sanity-modal{display:flex;flex-direction:column;gap:10px;max-width:100%;overflow-wrap:anywhere}
.sn-test{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--panel)}
.sn-test.bad{border-color:var(--bad);border-left-width:4px}.sn-test.acc{border-left:4px solid var(--good,var(--line))}
.sn-test ul{margin:6px 0 0 18px;padding:0}.sn-test li{margin:2px 0}
.sn-btns{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}
.sn-accept{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.sn-accept input{flex:1 1 220px;min-width:0}
/* Change 354: RFQ builder simplification */
.ep-type-field .label-text{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:2px}.ep-type-field .ep-type-chips{margin:4px 0 0}
.ep-recip .ep-type-chips{display:inline-flex;margin:0 6px 0 0;vertical-align:middle}.ep-recip .ep-type-chips .scope-check{padding:4px 8px;font-size:12px}
details.ep-items{margin:6px 0}details.ep-items>summary{cursor:pointer;color:var(--accent);font-weight:600;padding:4px 0}details.ep-items textarea{width:100%;box-sizing:border-box;margin-top:4px}
#epStartNote{margin:-4px 0 8px}
.ep-start-field .label-text{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:4px}.ep-start-pair{display:flex;align-items:center;gap:6px}.ep-start-pair input{flex:1;min-width:0}.ep-start-field #epStartNote{margin:4px 0 0}
.ep-start-pair .ep-start-in{flex:1;min-width:0;margin:0}
/* Change 355: Update Bid, new customer at a different GM and more than one contact */
.ub-sub{font-size:12px;font-weight:700;color:var(--muted);margin:10px 0 4px}
#ubContacts .ub-addct{margin-top:6px}
.ub-block .rv-pills.ub-modes{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px;text-align:left}.ub-modes label{display:flex;flex-direction:row;align-items:center;gap:6px;justify-content:flex-start;margin:0}.ub-modes input{width:auto}
.ub-from[hidden],.ub-floor[hidden],.ub-gm[hidden],.ub-outside[hidden]{display:none}
.ub-from{display:flex;flex-direction:row;align-items:center;gap:8px;margin:8px 0;flex-wrap:wrap}.ub-from select{width:auto;max-width:100%}
.ub-gm{border:1px solid var(--line);border-radius:10px;padding:10px;margin:6px 0}
.ub-gmin{display:flex;flex-direction:row;align-items:center;gap:8px}.ub-gmin input{width:80px}
.ub-gmout{margin:8px 0;font-size:14px}
/* Change 367: negotiated price - alternates question */
.ub-neg .rv-q{margin-top:10px}.ub-altpick{display:flex;flex-direction:column;gap:4px;margin:6px 0 0 4px;font-size:13px}.ub-altpick[hidden]{display:none}.ub-altpick label{display:flex;flex-direction:row;align-items:center;gap:6px}.ub-altpick input{width:auto}
#ubNegOut div{margin:2px 0}
.ub-floor{display:flex;flex-direction:row;align-items:center;gap:6px;color:var(--bad);font-size:13px}.ub-floor input{width:auto}
table.ub-ref{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
table.ub-ref th,table.ub-ref td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
table.ub-ref th:nth-child(2),table.ub-ref td:nth-child(2),table.ub-ref th:nth-child(3),table.ub-ref td:nth-child(3){text-align:right;white-space:nowrap;overflow-wrap:normal}
/* Change 356: OS Confidence card on a sent bid (theme vars only) */
.card3d.conf-card .cb-track{height:8px;border-radius:5px;background:var(--line);overflow:hidden;margin:6px 0 4px;width:100%}
.card3d.conf-card .cb-fill{height:100%;border-radius:5px;background:var(--accent)}
.card3d.conf-card.tint-red .cb-fill{background:var(--bad)}
.card3d.conf-card.tint-orange .cb-fill{background:var(--warn)}
.card3d.conf-card.tint-green .cb-fill{background:var(--good,var(--accent))}
/* Change 358: Projected Start Dates (theme vars only) */
.sd-list{display:flex;flex-direction:column;gap:10px}
.sd-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.sd-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.sd-head span{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.3px}
.sd-head b{font-size:17px}
.sd-src{margin-top:6px;font-size:13px;overflow-wrap:anywhere}
.sd-differs{margin-top:6px}
.sd-how{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
/* Change 359: how a sent proposal went out, on the Overview (theme vars only) */
.bs-sent{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:none;border:0;padding:0;text-align:left;cursor:pointer;color:inherit;font:inherit}
.bs-sent b{font-size:12px}
.bs-sent span{font-size:11px;color:var(--muted);line-height:1.3}
.bs-sent:hover b{text-decoration:underline}

/* Change 360: Schedules date tiles open the date's source and hand entry */
.sched-tile{cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%}
.sched-tile:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.sched-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.design-copy-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 4px}
.design-copy{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--panel);text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px;font:inherit;color:inherit}
.design-copy:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.design-copy span{font-size:12px;color:var(--muted)}
@media(max-width:560px){.design-copy-grid{grid-template-columns:1fr}}

/* Change 361: each sent customer's row carries what they got, earlier versions, and a locked sent-to list */
.final-scenario.sent-row{align-items:flex-start;gap:14px}
.sent-row .sr-left{flex:1 1 auto;min-width:0}
.sent-row .sr-right{flex:0 1 auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:0}
.sent-row .sr-links{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.sent-row .sr-to{width:fit-content;max-width:100%;margin:6px 0;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.sent-row .sr-who{font-size:13px;overflow-wrap:anywhere}
.sent-row .sr-lock{font-size:11px;margin-right:4px;opacity:.6}
.sent-row .sr-added{margin-top:4px}
.sent-row .sr-earlier{font-size:12px;text-align:right}
.sent-row .sr-earlier summary{cursor:pointer;color:var(--accent);list-style:none}
.sent-row .sr-sign{margin-top:8px;text-align:right;font-size:12px}.sent-row .sr-sign .btn{margin-left:6px}
.sent-row .sr-earlier summary::-webkit-details-marker{display:none}
.sent-row .sr-erow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end;margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
@media(max-width:760px){.sent-row .sr-right{align-items:flex-start}.sent-row .sr-links,.sent-row .sr-erow{justify-content:flex-start}.sent-row .sr-earlier{text-align:left}}

/* Change 364: vendor questions from the RFQ link */
.eq-q{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin:0 0 8px}
.eq-q.done{opacity:.7}
.eq-q-text{white-space:pre-wrap;margin:4px 0 6px}

/* Change 365: alerts only for what is late or due soon */
.act-late{color:var(--bad);font-weight:700;white-space:nowrap}
.act-fold{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}
.act-fold>summary{cursor:pointer;color:var(--muted);font-size:14px;list-style:none}
.act-fold>summary::-webkit-details-marker{display:none}
.act-fold>summary::before{content:'\25B8';display:inline-block;margin-right:6px;font-size:11px;transition:transform .15s}
.act-fold[open]>summary::before{transform:rotate(90deg)}
.act-fold>.stack{margin-top:8px}
.eb-rfq-line{display:block;width:100%;text-align:left;margin:8px 0 0;padding:8px 12px;border:1px solid var(--line);border-left:3px solid var(--warn);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit;font-size:14px;cursor:pointer;overflow-wrap:anywhere}
.eb-rfq-line.bad{border-left-color:var(--bad)}
.eb-rfq-line:hover{border-color:var(--accent)}
.rfq-late{color:var(--bad)}

/* Change 369: answers KCIS OS drafted from the documents */
.os-answer-list{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.os-answer{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:8px;border:1px solid #d6e0e6;border-radius:8px;padding:6px 9px;background:#fbfdfd;cursor:pointer;font-size:13px;line-height:1.35;white-space:normal}
.os-answer:hover{border-color:#01696f;background:#eef7f7}
.os-answer input{width:auto;margin:2px 0 0;pointer-events:none;flex:none}
.os-answer small{color:#5b6b73;font-size:11px;margin-left:4px}
.os-answer.os-rec{border-color:#01696f}
.os-rec-tag{font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:#01696f;margin-right:2px}
.os-why{color:#8a4b00;margin-top:3px}
.review-item-card.os-card{align-items:start}

/* Change 370: RFQ plans, entire bid package OR individual sheets, sheets grouped like the Documents sections */
.ep-docmode{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.ep-docmode .ep-mode{flex:1 1 220px;flex-direction:row;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:#fff;cursor:pointer;min-width:0}
.ep-docmode .ep-mode:has(input:checked){border-color:var(--accent,#2f6f9f);background:#f3f8fc}
.ep-docmode .ep-mode:has(input:disabled){opacity:.55;cursor:default}
.ep-docmode input{width:auto;margin-top:3px}
.ep-docmode .ep-mode>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.ep-docmode small{font-size:10.5px;color:var(--muted);overflow-wrap:anywhere}
.current-doc-picker[hidden]{display:none}
.ep-doc-sec+.ep-doc-sec{margin-top:6px}
.ep-doc-sec-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:6px 7px 2px;cursor:default}
details.ep-doc-sec>summary.ep-doc-sec-h{cursor:pointer}
.ep-doc-sec-h i{font-style:normal;font-weight:600;margin-left:4px}

/* Change 371: plan sheet chooser */
.plan-pick-list{display:flex;flex-direction:column;gap:6px;max-height:60vh;overflow:auto}
.plan-pick-row{flex-direction:row;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:#fff;cursor:pointer}
.plan-pick-row:has(input:checked){border-color:var(--accent,#2f6f9f);background:#f3f8fc}
.plan-pick-row input{width:auto;margin-top:3px}
.plan-pick-row>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.plan-pick-row small{font-size:10.5px;color:var(--muted)}

/* Change 376 (Greg 2026-11-10): Pending COs is a KCIS green button under + New Project. */
.btn.green{background:linear-gradient(180deg,#27ad5c 0%,#189148 46%,#0c6d35 100%);border-color:#0f7a3b;color:#fff;box-shadow:0 3px 0 #08592b,0 6px 13px rgba(12,109,53,.24),inset 0 1px 0 rgba(255,255,255,.4);text-shadow:0 1px 1px rgba(0,0,0,.2)}.btn.green:hover{background:linear-gradient(180deg,#2fbb66 0%,#1a9c4e 46%,#0c6d35 100%)}
.toolbar.project-actions{flex-direction:column;align-items:stretch;gap:8px}.toolbar.project-actions .btn{width:100%;justify-content:center}
.ai-looked{margin:4px 0 2px;font-size:11px;color:var(--muted)}.ai-looked summary{cursor:pointer;list-style:none}.ai-looked summary:before{content:"\25B8  "}.ai-looked[open] summary:before{content:"\25BE  "}.ai-looked ul{margin:4px 0 0 16px;padding:0}

/* Change 378: KCIS grey (the "KC" in the logo) for + New COR on the Projects page; the job chooser behind it */
.btn.grey{background:linear-gradient(180deg,#9aa1a6 0%,#7d858a 46%,#5f676c 100%);border-color:#666e73;color:#fff;box-shadow:0 3px 0 #4b5256,0 6px 13px rgba(60,66,70,.22),inset 0 1px 0 rgba(255,255,255,.4);text-shadow:0 1px 1px rgba(0,0,0,.25)}.btn.grey:hover{background:linear-gradient(180deg,#a6adb2 0%,#878f94 46%,#5f676c 100%)}
.nc-job-list{display:flex;flex-direction:column;gap:6px;margin-top:10px;max-height:380px;overflow-y:auto}
.nc-job{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 12px;cursor:pointer;color:var(--ink)}
.nc-job:hover{border-color:var(--kcis-green);background:#f5fbf7}.nc-job b{font-size:13.5px}.nc-job span{font-size:11px;color:var(--muted)}
.cor-no-line{font-size:13px;color:var(--ink);background:#f5fbf7;border:1px solid #cfe6d7;border-left:4px solid var(--kcis-green);border-radius:9px;padding:8px 12px;margin-bottom:10px}

/* Change 382: an answered review item is one quiet line; Change opens the answer choices. */
.review-item-card.resolved{padding:6px 12px}.review-item-card.resolved .review-item-text{color:#4c5a66}.review-change{background:none;border:0;color:#4f7390;font-size:12px;font-weight:700;cursor:pointer;padding:2px 4px}.review-change:hover{text-decoration:underline}
.ep-supply-row{margin:4px 0 2px}.ep-supply{font-size:12px;padding:3px 6px;max-width:100%;border:1px solid var(--line);border-radius:6px;background:var(--panel)}
/* Change 397: page-1 Key Qualifications */
.kq-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
.kq-row span{flex:1;min-width:0;overflow-wrap:anywhere}
.kq-add{margin:10px 0 6px}.kq-add input{width:100%;box-sizing:border-box}
.kq-hit{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:6px 4px;cursor:pointer;overflow-wrap:anywhere}
.kq-hit:hover{background:var(--hover,#f3f6fa)}.kq-hit small{color:#667085;display:block}
/* Change 399: price tools and price checks at the top of Final Review */
.fr-price-tools{margin:8px 0 6px;flex-wrap:wrap;gap:6px}
.fr-checks ul{margin:4px 0 4px 18px;padding:0}
.fr-checks{margin:6px 0}
.fr-alt-how{margin-top:2px}
.bid-instr-fold{margin-bottom:10px}
.bid-instr-fold>summary{cursor:pointer;padding:6px 0}
.bid-instr-row{display:grid;grid-template-columns:120px 1fr;gap:8px;padding:2px 0}
/* Change 405 Crew Board */
.cb-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}
.cb-col{border:1px solid var(--line);border-radius:10px;background:var(--panel,#fff);min-height:120px;display:flex;flex-direction:column;min-width:0}
.cb-col.over{outline:2px dashed var(--accent,#1f6b3a);outline-offset:-2px}
.cb-head{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0}
.cb-head b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb-eq{padding:4px 10px 0}
.cb-body{display:flex;flex-wrap:wrap;gap:6px;padding:10px;flex:1;align-content:flex-start}
.cb-chip{padding:4px 10px;border-radius:14px;background:var(--line);font-size:13px;cursor:grab;user-select:none}
.cb-chip.picked{background:var(--accent,#1f6b3a);color:#fff}
.cb-empty{justify-content:center;align-items:center;padding:16px;text-align:center}
.ce-colors{display:flex;flex-wrap:wrap;gap:6px;padding-top:4px}
.ce-color{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer}
.ce-color.on{border-color:#111;box-shadow:0 0 0 2px #fff inset}
.wo-crews{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.wo-crewbtn{border:1px solid var(--line);background:var(--panel,#fff);border-radius:8px;padding:5px 10px;cursor:pointer;font-size:13px}
.wo-drop.over{outline:2px dashed var(--accent,#1f6b3a);outline-offset:4px;border-radius:6px}
.wo-cost{margin-top:8px}
.wo-costline{font-size:13px}
.wo-warn{margin-top:6px;padding:6px 10px;border-radius:6px;background:#fff4e5;color:#7a3e00;font-size:13px}
.wo-warn.near{background:#f3f4f6;color:#374151}
/* Change 406 pay week check, equipment use, job hours meter */
.good-box{border-left:4px solid var(--good,#1f6b3a);background:#eefaf1;padding:12px;border-radius:9px;margin:10px 0}
.info-box{border-left:4px solid #0f5e9c;background:#eef5fb;padding:10px 12px;border-radius:9px;margin:6px 0}
.wk-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.wk-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.4fr);gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.wk-row.bad{border-left:4px solid var(--warn)}
.wk-who,.wk-nums,.wk-st{min-width:0;overflow-wrap:anywhere}
@media (max-width:700px){.wk-row{grid-template-columns:1fr}}
.wo-meter{margin-top:6px;max-width:360px}
.wo-meter-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.wo-meter-bar span{display:block;height:100%;background:var(--good,#1f6b3a)}
.wo-meter.over .wo-meter-bar span{background:var(--bad,#be123c)}
/* Change 407 progress billing */
.pb-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:12px 0;padding:10px;border:1px solid var(--line);border-radius:9px}
.pb-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:10px}
.pb-form .pb-reason{grid-column:1/-1}
.pb-prev{margin:8px 0;padding:8px 10px;background:#f6f8fa;border-radius:8px}
.pb-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.pb-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1.2fr);gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel,#fff);text-align:left;font:inherit;color:inherit}
.pb-row>div{min-width:0;overflow-wrap:anywhere}
button.pb-row{cursor:pointer;width:100%}
.pb-manual{margin-top:12px}
@media (max-width:700px){.pb-row{grid-template-columns:1fr}}
/* Change 408 overhead tracker */
.oh-trend{display:flex;gap:6px;align-items:flex-end;height:130px;margin:12px 0 4px;overflow:hidden}
.oh-bar{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;text-align:center}
.oh-fill{width:70%;max-width:44px;background:#1f77b4;border-radius:4px 4px 0 0}
.oh-fill.held{background:#c4ccd4}
.oh-box{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:9px}
.oh-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:6px}
.oh-row>div{display:flex;flex-direction:column;min-width:0}
.oh-bad{color:#b42318;font-size:12px}.oh-good{color:#027a48;font-size:12px}
.oh-movers{margin-top:12px}.oh-movers summary{cursor:pointer;font-weight:600}
.oh-mv{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid var(--line);font-size:13px}
.oh-mv span{min-width:0;overflow-wrap:anywhere}
/* Change 409 payroll this week + punches */
.pw-step{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.pw-dot{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.pw-step.ok .pw-dot{background:#dcfae6;color:#067647}.pw-step.todo .pw-dot{background:#fef0c7;color:#b54708}
.pw-txt{min-width:0}
.pw-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.pw-person{border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.pw-person summary{display:flex;justify-content:space-between;gap:8px;cursor:pointer;align-items:center;flex-wrap:wrap}
.pw-name{font-weight:600;min-width:0}.pw-tags{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pw-punch{display:grid;grid-template-columns:90px minmax(0,1.4fr) minmax(0,1fr) auto;gap:8px;padding:6px 0;border-top:1px solid var(--line);font-size:13px;align-items:center}
.pw-act{text-align:right;white-space:nowrap}
.warn-text{color:#b54708}
.pw-check{display:flex;gap:8px;align-items:center;margin:8px 0}
.pw-hrow{padding:8px 0;border-bottom:1px solid var(--line)}
@media (max-width:700px){.pw-punch{grid-template-columns:1fr 1fr}.pw-act{text-align:left}}
/* Change 410 service area */
.svc-row{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;padding:9px 6px;border-bottom:1px solid var(--line);cursor:pointer}.svc-row:hover{background:#f6f9fb}.svc-steps{display:flex;gap:4px;flex-wrap:wrap}
.svc-step{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap;padding:9px 0;border-bottom:1px solid var(--line)}.svc-step input{max-width:100%}
.svc-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;align-items:end;height:140px;margin:14px 0 6px}.svc-bar{display:flex;flex-direction:column;align-items:center;height:100%}.svc-bar-pair{flex:1;width:100%;display:flex;gap:2px;align-items:flex-end;justify-content:center}.svc-bar-pair span{width:40%;min-height:1px;border-radius:3px 3px 0 0}.svc-bar-pair .ly,.svc-key.ly{background:#c9d6e0}.svc-bar-pair .ty,.svc-key.ty{background:var(--accent)}.svc-key{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 3px 0 8px;vertical-align:middle}

/* Change 412 warehouse stock and count rows */
.wh-row{display:grid;grid-template-columns:minmax(0,1fr) 150px 190px;gap:6px 12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.wh-row .wh-num{text-align:right}
.wh-row input{width:100%;max-width:160px}
.wh-row .wh-re input{max-width:190px}
.wh-row .wh-re label{display:flex;flex-direction:column;gap:2px}
.wh-row.wh-low .wh-name{border-left:3px solid var(--warn);padding-left:8px}
.wh-row.wh-neg .wh-name{border-left:3px solid var(--bad);padding-left:8px}
.neg{color:var(--bad)}
@media (max-width:560px){.wh-row{grid-template-columns:minmax(0,1fr) auto}.wh-row .wh-re{grid-column:1/-1}.wh-row input{max-width:120px}.wh-row .wh-re label{flex-direction:row;align-items:center;gap:8px}.wh-row .wh-re input{max-width:110px}}
/* Change 413 fleet replacement plan */
.fl-year{border-bottom:1px solid var(--line);padding:8px 0}
.fl-year summary{cursor:pointer;display:flex;gap:10px;align-items:baseline}
.fl-year .fl-tot{margin-left:auto}

/* Change 438 (O-02) red count bubbles on the left-hand tabs */
.navbtn[data-module]{position:relative}.nav-count{position:absolute;right:8px;top:50%;transform:translateY(-50%);min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--bad);color:white;font-size:11px;font-weight:700;line-height:19px;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.3);pointer-events:none}
.navbtn[data-module]:has(.nav-count){padding-right:34px}
.home-btn{position:relative}.nav-count.card-count{top:12px;right:12px;transform:none}

/* Change 446 (PW-02): line + labor class stacked in one cell so the row doesn't get wider. */
.wc-wk{display:flex;flex-direction:column;gap:4px;min-width:0}.wc-wk>*{min-width:0;width:100%}
@media(max-width:700px){.wo-hrow .wc-wk{grid-column:1 / -1}}

/* Change 454: Job Information (Project Information after award) */
.pi-need{font-size:13px;margin:0 0 8px}
.pi-sec{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:14px 0 0;padding-top:10px;border-top:1px solid #e3e8ee}
.pi-sec b{font-size:14px}
#piOthers{display:flex;flex-direction:column;gap:8px;margin:10px 0 6px}
.pi-other{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1.3fr) auto;gap:8px;align-items:center}
.pi-design{display:flex;flex-direction:column;gap:3px;margin:14px 0 0;padding:10px 12px;background:#f5f7fa;border-radius:8px}
.pi-design b{font-size:13px}
.pi-other select,.pi-other input{font-size:13px;font-weight:700}
@media(max-width:760px){.pi-other{grid-template-columns:minmax(0,1fr) auto;padding-bottom:8px;border-bottom:1px dashed #e3e8ee}.pi-other select{grid-column:1/-1;grid-row:1}.pi-other .typeahead-wrap:has(.pio-ent){grid-column:1;grid-row:2}.pi-other .pio-x{grid-column:2;grid-row:2}.pi-other .typeahead-wrap:has(.pio-con){grid-column:1/-1;grid-row:3}}
.ct-why{font-size:13px;line-height:1.45}.ct-not{margin:6px 0 10px}.ct-now{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:#f5f7fa;border-radius:8px}

/* Change 456: Alternates / VE */
.eb-dot.waiting{background:#fff7e6;border-color:#d9b25c;color:#7a5410;border-style:dashed}
.av-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.av-row{border:1px solid var(--border,#e2e0da);border-radius:10px;padding:8px 10px}
.av-row.accepted{border-color:#9fd3b3;background:#f4fbf6}.av-row.declined{background:#f7f6f3}
.av-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.av-head b{min-width:0;overflow-wrap:anywhere}.av-head span{white-space:nowrap}
.av-pills{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.av-pill{border:1px solid #d4d1ca;background:#fff;border-radius:999px;padding:4px 12px;font-size:13px;cursor:pointer}
.av-pill.on.accepted{background:#2f8f57;border-color:#2f8f57;color:#fff}.av-pill.on.declined{background:#6f6c66;border-color:#6f6c66;color:#fff}.av-pill.on.unknown{background:#fff3d6;border-color:#c5942a;color:#7a5410}
.av-ans{width:100%;margin-top:6px;box-sizing:border-box}
.av-add{border-top:1px solid var(--border,#e2e0da);margin-top:10px;padding-top:8px}.av-full{display:flex;flex-direction:column;margin-top:6px}
.av-link{border:0;background:none;padding:0;color:#1d6fa5;font-weight:600;cursor:pointer;text-align:left}.av-link:hover{text-decoration:underline}
/* Change 457: Contract step */
.cr-file{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--border,#e2e0da);border-radius:10px;padding:8px 10px;margin:4px 0 8px}
.cr-file a{min-width:0;overflow-wrap:anywhere}
.cr-review{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}
.cr-sum{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin:6px 0 2px}
.cr-quote{font-size:12px;color:#555;border-left:3px solid #d4d1ca;padding:2px 0 2px 8px;margin-top:4px;overflow-wrap:anywhere}
.cr-sev{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;background:#c5942a;vertical-align:middle}
.cr-sev.high{background:#c0392b}.cr-sev.low{background:#9a978f}

/* Change 458 */
.cr-tag{font-size:11px;font-weight:600;color:#7a1f1f;border:1px solid #c9a3a3;border-radius:10px;padding:0 7px;margin-left:6px;line-height:18px}
.fd-files{display:flex;flex-direction:column;gap:4px;margin:0 0 8px}.fd-file{display:flex;justify-content:space-between;gap:10px;align-items:baseline;overflow-wrap:anywhere}
.fd-read{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.fd-tot{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;padding:8px 10px;background:#f5f7fa;border-radius:8px}
.fd-table{display:flex;flex-direction:column;border:1px solid #e3e8ee;border-radius:8px;margin-top:4px}
.fd-row{display:grid;grid-template-columns:minmax(0,1fr) 78px 78px 78px;gap:8px;padding:6px 10px;border-top:1px solid #eef1f4;font-size:13px;align-items:baseline}
.fd-row:first-child{border-top:0}.fd-head{font-size:11px;color:#667085;text-transform:uppercase;letter-spacing:.03em}
.fd-item{min-width:0;overflow-wrap:anywhere}.fd-num{text-align:right;white-space:nowrap}
@media(max-width:600px){.fd-row{grid-template-columns:minmax(0,1fr) 58px 58px 64px;gap:5px;padding:6px 8px;font-size:12px}}
.ov-award-steps .eb-bar{margin:0}
.kcis-update-bar{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:9999;display:flex;gap:12px;align-items:center;background:#1f2a33;color:#fff;padding:9px 14px;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.25);font-size:13px;max-width:calc(100vw - 24px)}
.kcis-update-bar button{border:0;border-radius:7px;padding:5px 12px;font-weight:600;cursor:pointer;background:#fff;color:#1f2a33}
/* Change 458: on a phone the Back button in the header fits the screen (no sideways scroll) */
@media(max-width:760px){.global-back-btn{max-width:calc(100vw - 190px)}}
/* Change 458: Plans / Specs / Both stays on one line (it was wrapping and cutting off) */
.doc-kind{display:inline-flex!important;flex-direction:row!important;flex:none;white-space:nowrap;flex-wrap:nowrap;height:auto!important}.doc-kind button{white-space:nowrap;flex:none}
/* Change 458: phone header - logo on the left, buttons wrap under it instead of sliding behind the logo */
@media(max-width:680px){.topbar{height:auto!important;min-height:60px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 12px}.topbar>.user-row{margin-left:auto;flex-wrap:wrap;justify-content:flex-end;gap:6px;min-width:0;max-width:100%}}
@media(max-width:680px){.doc-kind{margin-left:4px}.doc-kind button{padding:2px 6px;font-size:10.5px}}
/* Change 459: Submittals step */
.sub-head{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline;margin:4px 0 8px}
.sub-list{display:flex;flex-direction:column;border:1px solid #e3e8ee;border-radius:8px;overflow:hidden}
.sub-row{border-top:1px solid #eef1f4}.sub-row:first-child{border-top:0}.sub-row.open{background:#fafcfd}
.sub-line{display:flex;gap:8px;align-items:baseline;padding:8px 10px;cursor:pointer;min-width:0}
.sub-line:hover{background:#f5f8fb}
.sub-no{color:#667085;font-size:12px;min-width:20px}.sub-t{flex:1;min-width:0;overflow-wrap:anywhere}
.sub-chip{display:inline-block;white-space:nowrap;padding:1px 8px;border-radius:999px;background:#f1f4f7;color:#5b6b78;font-size:12px}
.sub-chip.good{background:#e6f4ea;color:#1e6b34}.sub-chip.warn{background:#fff3d6;color:#7a5410}.sub-chip.info{background:#e8f1fa;color:#1f4f7a}
.sub-edit{padding:4px 10px 10px 38px;display:flex;flex-direction:column;gap:6px}
.sub-edit .toolbar{margin:2px 0 0;flex-wrap:wrap}
.sb-wrap{position:relative;max-width:min(100%,640px);margin:0 auto;border:1px solid #d9e0e6;cursor:crosshair;user-select:none;touch-action:none;line-height:0}
.sb-wrap img{width:100%;height:auto;display:block}
#sbLayer{position:absolute;inset:0;pointer-events:none}
.sb-box{position:absolute;border:1.5px solid #8c0000}
@media(max-width:600px){.sub-edit{padding-left:10px}}
.sub-ptag{font-size:11px;opacity:.85}.av-pill.on .sub-ptag{color:#fff;opacity:.9}
.sub-add{width:auto;min-height:0;padding:4px 8px;font-size:12px;border-radius:999px;border:1px dashed var(--line,#cbd5e1);background:transparent;color:var(--muted,#64748b)}
.sub-hits{display:flex;flex-direction:column;gap:4px;margin:6px 0 10px;max-height:260px;overflow-y:auto}.sub-hit{text-align:left;border:1px solid var(--line,#e2e8f0);background:#fff;border-radius:8px;padding:8px 10px;cursor:pointer;white-space:normal}.sub-hit:hover{border-color:#7f1d1d}
/* Change 460: Foundation step */
.fnd-sug{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.fnd-sug .pill-btn{border:1px solid var(--line,#d7dde4);background:#fff;border-radius:14px;padding:3px 10px;cursor:pointer;font:inherit;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fnd-sug .pill-btn:hover{border-color:#8aa3b8}
label.check-row{display:flex;flex-direction:row;align-items:center;gap:8px}
label.check-row input{width:auto}

/* Change 467: the quote window's More menu opens upward and to the left so it stays inside the window */
.ep-more .irr-pdf-panel{left:auto;right:0;top:auto;bottom:calc(100% + 6px)}

/* Change 467 (Greg 2026-11-12): "get the font on Irrigation Bid, Landscape Bid, Sod / Seed bid a bit bigger and then have a
   thin colored border around each section (blue around irrigation, grey around landscape and green around sod / seed, and
   then grey around other when applicable)". Estimate & Bid cards and the Final Review scope cards. */
.estimate-component-card>.row-between>b{font-size:17px}
.final-component-grid button>span{font-size:12.5px}
.estimate-component-card.scope-irrigation,.final-component-grid button.scope-irrigation{border:2px solid var(--accent);border-bottom-width:4px}
.estimate-component-card.scope-landscape,.final-component-grid button.scope-landscape,
.estimate-component-card.scope-other,.final-component-grid button.scope-other{border:2px solid var(--muted);border-bottom-width:4px}
.estimate-component-card.scope-sod_seed,.final-component-grid button.scope-sod_seed{border:2px solid var(--good);border-bottom-width:4px}
.estimate-component-card.scope-irrigation:hover,.final-component-grid button.scope-irrigation:hover{border-color:var(--accent)}
.estimate-component-card.scope-landscape:hover,.final-component-grid button.scope-landscape:hover,
.estimate-component-card.scope-other:hover,.final-component-grid button.scope-other:hover{border-color:var(--muted)}
.estimate-component-card.scope-sod_seed:hover,.final-component-grid button.scope-sod_seed:hover{border-color:var(--good)}
