:root{--navy:#1e2b4f;--navy-panel:#3e4b71;--gold:#ebb406;--gold-deep:#d09e00;--ink:#222;--body:#555855;--muted:#7d7f7d;--bg:#f9f9f9;--strip:#eee;--card:#fff;--line:#ebebeb;--field:#949ab1;--danger:#a43f2f;--success:#22714d;--ui:"Instrument Sans", "DM Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--serif:Georgia, "Times New Roman", serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--bg);color:var(--body);font-family:var(--ui);-webkit-font-smoothing:antialiased;line-height:1.5}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline:2.5px solid var(--gold-deep);outline-offset:2px}.app-shell{min-height:100vh}.topbar{background:var(--navy);border-bottom:4px solid var(--gold);color:#fff;justify-content:space-between;align-items:center;height:82px;padding:0 34px 0 38px;display:flex}.brand-lockup{align-items:center;gap:14px;display:flex}.brand-mark{color:var(--gold);font-family:var(--serif);letter-spacing:.03em;border:1px solid #ebb4068c;place-items:center;width:58px;height:48px;font-size:21px;font-weight:700;display:grid}.brand-name{font-family:var(--serif);font-size:23px;line-height:1.05}.brand-sub{color:var(--gold);letter-spacing:.2em;text-transform:uppercase;margin-top:5px;font-size:10px;font-weight:700}.topbar-meta{color:#cfd6e6;align-items:center;gap:22px;font-size:14px;display:flex}.signout-btn,.gold-btn,.utility-btn,.icon-btn,.row-actions button{border:0;justify-content:center;align-items:center;gap:9px;display:inline-flex}.signout-btn{background:var(--gold);color:var(--navy);height:42px;padding:0 18px;font-weight:700}.workspace{max-width:1180px;margin:0 auto;padding:44px 30px 82px}.page-head{justify-content:space-between;align-items:flex-end;gap:22px;margin-bottom:28px;display:flex}.eyebrow{color:var(--gold-deep);font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;flex-direction:column;gap:6px;font-size:13px;font-weight:700;line-height:1.1;display:inline-flex}.eyebrow:before,.eyebrow:after{background:var(--gold-deep);content:"";width:100%;height:1.5px;display:block}.page-head h1{color:var(--ink);font-family:var(--serif);margin:13px 0 4px;font-size:42px;font-weight:600;line-height:1.08}.page-head p{margin:0}.head-actions{gap:10px;display:flex}.gold-btn{background:var(--gold);color:#45434d;height:46px;padding:0 18px;font-weight:700}.utility-btn{color:var(--navy);background:#fff;border:1px solid #d9d9d9;height:46px;padding:0 16px;font-weight:700}.icon-btn{color:var(--navy);background:#fff;border:1px solid #d9d9d9;width:46px;height:46px}.toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.segments{background:#fff;border:1px solid #d9d9d9;display:inline-flex}.segments button{color:var(--body);background:0 0;border:0;border-right:1px solid #d9d9d9;align-items:center;gap:9px;height:44px;padding:0 18px;font-weight:700;display:inline-flex}.segments button:last-child{border-right:0}.segments button[aria-selected=true]{background:var(--navy);color:#fff}.segments b{background:var(--strip);color:var(--body);min-width:26px;padding:2px 8px;font-size:12px}.segments button[aria-selected=true] b{background:var(--gold);color:var(--navy)}.search-box{color:var(--muted);background:#fff;border:1px solid #d9d9d9;align-items:center;width:min(310px,45vw);height:44px;padding:0 12px;display:flex}.search-box input{color:var(--ink);border:0;outline:0;width:100%;min-width:0;padding:0 0 0 10px}.estimate-stack{flex-direction:column;gap:18px;display:flex}.estimate-row{background:var(--card);border-left:4px solid var(--gold);animation:.22s both row-in}.estimate-row.is-done{border-left-color:var(--navy-panel)}.estimate-main{justify-content:space-between;align-items:flex-start;gap:20px;padding:24px 28px 16px;display:flex}.estimate-title h2{color:var(--ink);font-family:var(--serif);margin:0;font-size:26px;font-weight:600;line-height:1.15}.chips{flex-wrap:wrap;gap:8px;margin-top:11px;display:flex}.chips span{color:var(--body);background:#f0f0f0;align-items:center;gap:5px;padding:5px 10px;font-size:13px;display:inline-flex}.chips .location-chip{color:var(--navy);background:#fff7dc}.chips .ok-chip{color:var(--success);background:#22714d1f}.chips .warn-chip{color:var(--danger);background:#a43f2f1f}.status-pill{font-family:var(--serif);letter-spacing:.1em;text-transform:uppercase;flex:none;padding:7px 12px;font-size:12px;font-weight:700}.status-pill.pending{color:var(--gold-deep);background:#ebb40629}.status-pill.done{background:var(--navy-panel);color:#fff}.ledger{flex-wrap:wrap;align-items:center;gap:20px;padding:0 28px 22px;display:flex}.metric{flex-direction:column;gap:2px;display:flex}.metric span{color:var(--gold-deep);font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;font-size:11px;font-weight:700}.metric b{color:var(--body);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.metric b.strong{color:var(--navy);font-family:var(--serif);font-size:28px;line-height:1.1}.markup{border:1px dashed var(--gold-deep);color:var(--gold-deep);background:#ebb40614;padding:3px 9px;font-size:13px;font-weight:800}.row-actions{border-top:1px solid var(--line);background:#fcfcfc;flex-wrap:wrap;align-items:center;gap:10px;padding:15px 28px;display:flex}.row-actions button{color:#45434d;background:#fff;border:1px solid #d9d9d9;min-height:38px;padding:8px 12px;font-size:13px;font-weight:700}.row-actions button:hover,.utility-btn:hover,.icon-btn:hover{border-color:var(--navy);color:var(--navy)}.row-actions button:disabled:hover,.icon-btn:disabled:hover{color:#45434d;border-color:#d9d9d9}.row-actions .primary-action{background:var(--gold);border-color:var(--gold);color:var(--navy)}.row-actions .danger-action{border-color:var(--danger);color:var(--danger)}.row-actions .danger-action:hover{background:var(--danger);border-color:var(--danger);color:#fff}.action-spacer{flex:1}.pagination{justify-content:center;align-items:center;gap:14px;padding:6px 0 2px;display:flex}.pagination button{color:var(--navy);background:#fff;border:1px solid #d9d9d9;min-height:38px;padding:8px 14px;font-weight:700}.pagination button:disabled{color:#b7b7b7;cursor:default}.pagination span{color:var(--body);font-size:13px}.detail-panel{grid-template-rows:0fr;transition:grid-template-rows .24s;display:grid}.detail-panel.open{grid-template-rows:1fr}.detail-inner{border-top:1px solid var(--line);min-height:0;padding:0 28px;overflow:hidden}.detail-panel.open .detail-inner{padding-top:20px;padding-bottom:24px}.detail-meta{justify-content:space-between;margin-bottom:10px;display:flex}.detail-meta span{color:var(--gold-deep);font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;font-size:12px;font-weight:700}.location-editor{border:1px solid var(--line);background:#fcfcfc;grid-template-columns:1fr auto;align-items:end;gap:8px 10px;margin-bottom:14px;padding:12px;display:grid}.location-editor label{color:var(--gold-deep);font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:700;line-height:1}.location-editor input{border:1px solid var(--field);color:var(--ink);width:100%;min-width:0;height:42px;padding:0 12px}.location-editor input:focus{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy);outline:0}.location-editor button{background:var(--navy-panel);color:#fff;border:0;justify-content:center;align-items:center;gap:7px;height:42px;padding:0 14px;font-weight:700;display:inline-flex}pre{background:var(--bg);border-left:3px solid var(--gold);color:var(--body);font-family:var(--ui);white-space:pre-wrap;margin:0;padding:16px 18px;font-size:14px;line-height:1.62;overflow:auto}.empty-state{color:#b8b8b8;text-align:center;background:#fff;padding:74px 24px}.empty-state h2{color:var(--ink);font-family:var(--serif);margin:12px 0 4px;font-size:25px;font-weight:600}.empty-state p{color:var(--body);margin:0}.modal-layer{z-index:50;position:fixed;inset:0}.modal-backdrop{background:#1e2b4f94;border:0;width:100%;position:absolute;inset:0}.upload-modal{border-top:4px solid var(--gold);background:#fff;width:min(620px,100vw - 32px);max-height:88vh;margin:6vh auto 0;animation:.2s both modal-in;position:relative;overflow:auto;box-shadow:0 34px 80px -24px #1e2b4f8c}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:22px 24px 18px;display:flex}.modal-head h2{color:var(--ink);font-family:var(--serif);margin:11px 0 0;font-size:25px;font-weight:600}.file-chip{background:var(--bg);border:1px solid var(--line);align-items:center;gap:12px;margin:20px 24px 0;padding:14px;display:flex}.file-chip b,.file-chip span{display:block}.file-chip b{color:var(--ink);word-break:break-word}.file-chip span{color:var(--muted);font-size:13px}.upload-steps{flex-direction:column;gap:12px;padding:20px 24px 8px;display:flex}.upload-step{color:#b0b0b0;align-items:center;gap:10px;font-weight:700;display:flex}.upload-step span,.upload-step svg{color:var(--gold-deep);border:1px solid #d9d9d9;width:18px;height:18px;padding:2px}.upload-step.active,.upload-step.done{color:var(--ink)}.upload-step.done svg{background:var(--navy);border-color:var(--navy);color:var(--gold)}.modal-error,.modal-warning{align-items:center;gap:9px;margin:14px 24px 0;padding:12px 14px;display:flex}.modal-error{color:var(--danger);background:#a43f2f1a}.modal-warning{color:var(--gold-deep);background:#ebb40629;margin:0 0 16px}.upload-preview{border-top:1px solid var(--line);margin-top:18px;padding:20px 24px 24px}.preview-grid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.upload-preview pre{max-height:220px}.toast{background:var(--navy);border-bottom:3px solid var(--gold);color:#fff;opacity:0;pointer-events:none;z-index:70;align-items:center;gap:10px;padding:12px 20px;font-size:14px;font-weight:700;transition:all .2s;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)translateY(16px);box-shadow:0 14px 38px -10px #1e2b4f80}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast svg{color:var(--gold)}.auth-shell{grid-template-columns:1.05fr 1fr;min-height:100vh;display:grid}.auth-brand{background:var(--navy);border-bottom:4px solid var(--gold);color:#fff;flex-direction:column;justify-content:space-between;padding:54px 58px;display:flex}.auth-brand .brand-lockup{align-items:center}.auth-note{max-width:460px}.auth-note .eyebrow{color:var(--gold)}.auth-note .eyebrow:before,.auth-note .eyebrow:after{background:var(--gold)}.auth-note h1{color:#fff;font-family:var(--serif);margin:18px 0 12px;font-size:48px;font-weight:600;line-height:1.05}.auth-note p{color:#c7d0e4;margin:0;font-size:17px}.auth-form-wrap{background:#fff;justify-content:center;align-items:center;padding:38px;display:flex}.login-form{width:min(390px,100%)}.login-form h2{color:var(--ink);font-family:var(--serif);margin:16px 0 5px;font-size:32px;font-weight:600}.login-form p{color:var(--body);margin:0 0 28px}.login-form label{color:var(--body);flex-direction:column;gap:7px;margin-bottom:18px;font-size:14px;display:flex}.login-form input{border:1px solid var(--field);color:var(--ink);width:100%;height:52px;padding:0 14px}.login-form input:focus{border-color:var(--navy);box-shadow:inset 0 0 0 1px var(--navy);outline:0}.auth-error{color:var(--danger);background:#a43f2f1a;align-items:center;gap:9px;margin:0 0 18px;padding:12px 14px;display:flex}.login-submit{width:100%}.spin{animation:.8s linear infinite spin}.flip{transform:rotate(180deg)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes row-in{0%{opacity:0;transform:translateY(8px)}}@keyframes modal-in{0%{opacity:0;transform:translateY(12px)}}@media (max-width:820px){.auth-shell{grid-template-columns:1fr}.auth-brand{padding:28px 24px}.auth-note{display:none}.auth-form-wrap{padding:30px 22px}.topbar{height:auto;padding:18px 20px}.topbar-meta span{display:none}.workspace{padding:34px 18px 72px}.page-head,.toolbar,.estimate-main{flex-direction:column;align-items:stretch}.head-actions,.segments,.search-box{width:100%}.segments button{flex:1;justify-content:center;padding:0 8px}.search-box{max-width:none}.ledger{flex-direction:column;align-items:flex-start;gap:12px}.action-spacer{display:none}.row-actions button{flex:45%}.location-editor,.preview-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
