:root{--brand: #0f5c4e;--brand-600: #0c4c40;--brand-050: #e8f3f0;--accent: #f2a900;--bg: #f5f7f8;--surface: #ffffff;--border: #e2e8e6;--text: #1a2320;--muted: #6b7a76;--danger: #b42318;--danger-bg: #fef3f2;--radius: 10px;--shadow: 0 1px 2px rgba(16, 40, 34, .06), 0 4px 16px rgba(16, 40, 34, .05);--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.45}.app{min-height:100%;display:flex;flex-direction:column}.app-header{background:var(--brand);color:#fff;border-bottom:3px solid var(--accent)}.app-header__inner{max-width:1100px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;justify-content:space-between}.app-header__brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;font-size:1.15rem;letter-spacing:.2px;text-decoration:none}.app-header__mark{width:22px;height:22px;border-radius:6px;background:var(--accent);box-shadow:inset 0 0 0 3px #ffffff40}.app-header__nav{display:flex;align-items:center;gap:18px}.app-header__link{color:#ffffffe6;text-decoration:none;font-size:.92rem;font-weight:500}.app-header__link:hover{color:#fff}.app-header__user{color:#ffffffb3;font-size:.85rem}.app-main{flex:1}.container{max-width:1100px;margin:0 auto;padding:28px 20px 60px}.page-center{display:flex;align-items:center;justify-content:center;min-height:70vh;padding:20px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}.page-head__title{margin:0;font-size:1.55rem}.muted{color:var(--muted);margin:4px 0 0}.hint{font-size:.82rem;margin-top:10px;text-align:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.card__title{margin:0 0 14px;font-size:1.02rem;font-weight:700}.card__title--spaced{margin-top:26px;padding-top:20px;border-top:1px solid var(--border)}.empty{text-align:center;padding:40px 22px;display:flex;flex-direction:column;align-items:center;gap:14px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field__label{font-size:.82rem;font-weight:600;color:var(--muted)}.field-row{display:flex;gap:14px}.field-row .field{flex:1}.field--grow{flex:2}.field--sm{flex:0 0 90px}input,select{font:inherit;color:var(--text);padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;width:100%;transition:border-color .12s,box-shadow .12s}input:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-050)}.btn{font:inherit;font-weight:600;padding:10px 16px;border-radius:8px;border:1px solid transparent;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,opacity .12s}.btn--primary{background:var(--brand);color:#fff}.btn--primary:hover{background:var(--brand-600)}.btn--ghost{background:transparent;color:#fff;border-color:#fff6;padding:7px 12px}.btn--ghost:hover{background:#ffffff1f}.btn--block{width:100%;margin-top:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.alert{border-radius:8px;padding:10px 12px;font-size:.9rem;margin-bottom:14px}.alert--error{background:var(--danger-bg);color:var(--danger);border:1px solid #fecdc9}.auth-card{width:100%;max-width:380px}.auth-card__title{margin:0 0 4px;font-size:1.3rem}.auth-card__sub{margin-bottom:20px}.table-wrap{padding:0;overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th,.table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);white-space:nowrap}.table th{font-size:.76rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);background:#fafcfb}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:#fafcfb}.table .num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.74rem;font-weight:600;background:#eef2f1;color:#45524e;text-transform:capitalize}.badge--draft{background:#eef2f1;color:#556}.badge--eligible,.badge--proposed{background:#e8f0fe;color:#1b4fa0}.badge--essa_signed,.badge--completed,.badge--installed{background:#e6f5ec;color:#1a7d43}.badge--cancelled,.badge--rescinded,.badge--ntp_rejected{background:var(--danger-bg);color:var(--danger)}.quote-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:22px;align-items:start}.summary{position:sticky;top:20px}.toggle-group{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;width:fit-content}.toggle{font:inherit;font-weight:600;padding:9px 22px;border:none;background:#fff;color:var(--muted);cursor:pointer}.toggle+.toggle{border-left:1px solid var(--border)}.toggle--on{background:var(--brand);color:#fff}.slider-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.slider-value{font-weight:700;font-size:1.1rem;color:var(--brand);font-variant-numeric:tabular-nums}input[type=range]{padding:0;width:100%;accent-color:var(--brand);cursor:pointer}.slider-scale{display:flex;justify-content:space-between;font-size:.76rem;color:var(--muted);margin-top:6px}.stats{margin:0;display:flex;flex-direction:column;gap:2px}.stat{display:flex;align-items:baseline;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border)}.stat:last-child{border-bottom:none}.stat dt{font-size:.88rem;color:var(--muted)}.stat dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}.stat__per{font-weight:500;color:var(--muted);font-size:.8rem;margin-left:3px}.stat--hero{background:var(--brand-050);border:1px solid #d3e7e1;border-radius:10px;padding:16px;margin-bottom:12px;flex-direction:column;align-items:flex-start;gap:6px}.stat--hero dt{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--brand-600)}.stat--hero dd{font-size:1.9rem;color:var(--brand-600)}@media(max-width:820px){.quote-grid{grid-template-columns:1fr}.summary{position:static}.page-head{flex-direction:column;align-items:flex-start}}
