@font-face{font-family:GeistSans;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:GeistSans;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:GeistSans;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:GeistSans;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-sans/Geist-Bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:GeistMono;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-mono/GeistMono-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:GeistMono;src:url(https://cdn.jsdelivr.net/npm/geist@1.3.1/dist/fonts/geist-mono/GeistMono-Medium.woff2) format("woff2");font-weight:500;font-display:swap}:root{--bg: #f7f8f7;--surface: #ffffff;--surface-2: #fafbfa;--surface-sunken: #f1f3f2;--line: #e6e8e7;--line-strong: #d3d6d4;--line-soft: #eef0ef;--ink: #0b1418;--ink-2: #2a3439;--ink-3: #5a6469;--ink-4: #8b9398;--ink-5: #b3b9bd;--primary: #0e1a1f;--primary-hover: #1b2a30;--primary-active: #050b0e;--blue: #1b65d4;--blue-hover: #1455bc;--blue-soft: #ddeaff;--blue-ink: #0c3580;--accent: #237a4a;--accent-hover: #1c6a3f;--accent-soft: #e6f1ea;--accent-ink: #11371f;--viable: #237a4a;--viable-soft: #e6f1ea;--viable-ink: #11371f;--marginal: #b87514;--marginal-soft: #fbf0dc;--marginal-ink: #5a3805;--not-viable: #a83a2a;--not-viable-soft: #f7e3df;--not-viable-ink: #561a11;--neutral-soft: #eceeed;--neutral-ink: #3a4347;--status-new: #1d4f8b;--status-new-soft: #e3ecf6;--status-progressing: #237a4a;--status-progressing-soft: #e6f1ea;--status-callback: #b87514;--status-callback-soft: #fbf0dc;--status-parked: #6b7378;--status-parked-soft: #ececec;--status-closed: #4a3a6b;--status-closed-soft: #ece6f3;--font-sans: "GeistSans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "GeistMono", ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 10px;--r-xl: 14px;--shadow-pop: 0 1px 0 rgba(11, 20, 24, .04), 0 6px 18px -8px rgba(11, 20, 24, .12);--shadow-modal: 0 24px 60px -20px rgba(11, 20, 24, .35), 0 8px 20px -8px rgba(11, 20, 24, .18);--shadow-card: 0 1px 0 rgba(11, 20, 24, .03);--row-h: 44px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app{min-height:100vh;display:grid;grid-template-rows:auto 1fr;background:var(--bg)}.nav{height:60px;display:grid;grid-template-columns:240px 1fr auto;align-items:center;background:var(--surface);border-bottom:1px solid var(--line);padding:0 20px;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#164f45,#237a69);box-shadow:0 4px 12px #164f4538;position:relative;flex-shrink:0;overflow:hidden}.brand-mark:before{content:"";position:absolute;width:14px;height:14px;border-radius:50%;background:#f3ad45;top:5px;right:4px}.brand-mark:after{content:"";position:absolute;width:40px;height:17px;border-radius:50%;border:2.5px solid rgba(255,255,255,.9);border-top-color:transparent;border-left-color:transparent;transform:rotate(-26deg);left:-11px;bottom:0}.brand-name{font-size:15px;font-weight:600}.brand-sub{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-4);line-height:1}.brand-env{margin-left:6px;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-4);border:1px solid var(--line);padding:1px 6px;border-radius:999px;background:var(--surface-2)}.nav-tabs{display:flex;gap:2px;align-items:center;justify-self:center}.nav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer;color:var(--ink-3);font-size:13.5px;font-weight:500;padding:7px 12px;border-radius:6px;transition:background .12s,color .12s;display:inline-flex;align-items:center;gap:7px}.nav-tab:hover{background:var(--surface-sunken);color:var(--ink)}.nav-tab[aria-current=true]{background:var(--blue);color:#fff}.nav-tab[aria-current=true]:hover{background:var(--blue-hover)}.nav-tab .pill-count{font-family:var(--font-mono);font-size:11px;background:var(--line-strong);color:var(--ink-2);padding:1px 6px;border-radius:999px;font-weight:500}.nav-tab[aria-current=true] .pill-count{background:#ffffff38;color:#fff}.nav-right{display:flex;align-items:center;gap:8px}.search-box{display:flex;align-items:center;gap:6px;background:var(--surface-sunken);border:1px solid transparent;border-radius:7px;padding:5px 10px;width:240px}.search-box input{border:none;background:transparent;outline:none;flex:1;font-size:13px}.search-box kbd{font-family:var(--font-mono);font-size:10.5px;background:var(--surface);color:var(--ink-4);border:1px solid var(--line);border-radius:4px;padding:1px 5px}.avatar{width:28px;height:28px;border-radius:999px;background:linear-gradient(135deg,#4c5c63,#1a262b);color:#fff;display:grid;place-items:center;font-size:11.5px;font-weight:600;letter-spacing:.02em}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--surface-sunken);color:var(--ink-3);font-size:13px;font-weight:500;padding:7px 12px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background .12s,border-color .12s,transform .04s,color .12s;white-space:nowrap;line-height:1.2}.btn:hover{background:var(--line-soft);border-color:var(--line-strong);color:var(--ink)}.btn:active{transform:translateY(.5px)}.btn.btn-ghost{border-color:transparent;background:transparent;color:var(--ink-3)}.btn.btn-ghost:hover{background:var(--surface-sunken);color:var(--ink)}.btn.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn.btn-primary:active{background:var(--primary-active)}.btn.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.btn-accent:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.btn-danger-ghost{color:var(--not-viable);border-color:transparent}.btn.btn-danger-ghost:hover{background:var(--not-viable-soft);border-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:hover{background:var(--surface);border-color:var(--line-strong);transform:none}.btn.btn-sm{padding:4px 8px;font-size:12px;border-radius:6px}.btn.btn-lg{padding:10px 16px;font-size:14px;border-radius:8px}.action-icon{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer;color:var(--ink-4);width:28px;height:28px;border-radius:5px;display:inline-grid;place-items:center}.action-icon:hover{background:var(--surface-sunken);color:var(--ink)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);overflow:hidden;margin-bottom:14px}.card-pad{padding:18px 20px}.section-title{font-size:12px;font-weight:500;color:var(--ink-4);text-transform:uppercase;letter-spacing:.08em;margin:0}.mono{font-family:var(--font-mono)}.tabular{font-variant-numeric:tabular-nums}.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;font-size:11.5px;font-weight:500;border-radius:999px;line-height:1.4;letter-spacing:.01em;white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:999px;background:currentColor}.pill-viable{color:var(--viable-ink);background:var(--viable-soft)}.pill-viable .dot{background:var(--viable)}.pill-marginal{color:var(--marginal-ink);background:var(--marginal-soft)}.pill-marginal .dot{background:var(--marginal)}.pill-not-viable{color:var(--not-viable-ink);background:var(--not-viable-soft)}.pill-not-viable .dot{background:var(--not-viable)}.pill-neutral{color:var(--neutral-ink);background:var(--neutral-soft)}.pill-neutral .dot{background:var(--ink-4)}.status-pill{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;font-size:11.5px;border-radius:999px;font-weight:500;white-space:nowrap}.status-new{color:var(--status-new);background:var(--status-new-soft)}.status-contacted{color:var(--ink-2);background:var(--surface-sunken)}.status-callback{color:var(--status-callback);background:var(--status-callback-soft)}.status-progressing{color:var(--status-progressing);background:var(--status-progressing-soft)}.status-closed{color:var(--status-closed);background:var(--status-closed-soft)}.status-parked{color:var(--status-parked);background:var(--status-parked-soft)}.page{max-width:1320px;margin:0 auto;padding:26px 24px 80px}.page-wide{max-width:1400px}.page-narrow{max-width:1100px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}.page-title{font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0}.page-sub{color:var(--ink-3);font-size:13.5px;margin-top:2px}.page-actions{display:flex;gap:8px;align-items:center}.toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--line);border-bottom:none;background:var(--surface);border-radius:var(--r-lg) var(--r-lg) 0 0;flex-wrap:wrap}.filter-group{display:inline-flex;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:2px}.filter-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer;font-size:12.5px;color:var(--ink-3);padding:4px 10px;border-radius:5px;font-weight:500;display:inline-flex;align-items:center;gap:5px}.filter-chip:hover{color:var(--ink)}.filter-chip[aria-pressed=true]{background:var(--blue);color:#fff;box-shadow:none}.filter-chip[aria-pressed=true]:hover{background:var(--blue-hover)}.filter-chip .count{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-4)}.filter-chip[aria-pressed=true] .count{color:#ffffffb3}.toolbar .spacer{flex:1}.toolbar .toolbar-search{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:4px 10px;min-width:220px}.toolbar .toolbar-search input{border:none;background:transparent;outline:none;flex:1;font-size:13px}.toolbar select.plain{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:5px 24px 5px 8px;font-size:12.5px;color:var(--ink-2);-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10' fill='none'><path d='M2 4l3 3 3-3' stroke='%235a6469' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:right 8px center;cursor:pointer}.lead-table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:0 0 var(--r-lg) var(--r-lg);overflow:hidden}table.lead-table{width:100%;border-collapse:collapse;font-size:13px}.lead-table thead th{text-align:left;font-weight:600;color:var(--ink-3);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface-sunken);position:sticky;top:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.lead-table thead th.sortable{cursor:pointer}.lead-table thead th.sortable:hover{color:var(--ink-2)}.lead-table thead th .arrow{opacity:.4;font-size:10px}.lead-table thead th.sort-active .arrow{opacity:1;color:var(--accent)}.lead-table tbody td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:middle;height:var(--row-h)}.lead-table tbody tr{transition:background .08s;cursor:pointer}.lead-table tbody tr:hover{background:var(--surface-2)}.lead-table tbody tr:last-child td{border-bottom:none}.lead-name{font-weight:700;font-size:14px;color:var(--ink)}.lead-meta{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-4)}.eircode{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);letter-spacing:.02em}.score-cell{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}.score-num{font-family:var(--font-mono);font-weight:600;font-size:13px;min-width:22px}.score-bar{width:64px;height:6px;background:var(--surface-sunken);border-radius:3px;overflow:hidden}.score-bar .fill{height:100%;border-radius:2px;background:var(--viable)}.score-bar .fill.marginal{background:var(--marginal)}.score-bar .fill.low{background:var(--not-viable)}.kwh-cell{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2)}.kwh-pending{color:var(--marginal)}.row-actions{display:flex;gap:2px;justify-content:flex-end}.empty-state{padding:60px 20px;text-align:center;color:var(--ink-4)}.empty-state .ic{width:36px;height:36px;margin:0 auto 8px;color:var(--ink-5)}.table-foot{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-4);border-top:1px solid var(--line-soft)}.detail-back{display:inline-flex;align-items:center;gap:8px;color:var(--blue);font-size:13.5px;font-weight:500;margin-bottom:18px;cursor:pointer;background:var(--blue-soft);border:1px solid rgba(27,101,212,.25);border-radius:var(--r-sm);padding:7px 14px;transition:background .12s,color .12s}.detail-back:hover{background:#ccdeff;color:var(--blue-ink)}.detail-head{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 22px;display:grid;grid-template-columns:1fr auto;gap:16px;align-items:center;margin-bottom:14px;box-shadow:var(--shadow-card)}.detail-name{font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0;display:flex;align-items:center;gap:10px}.detail-meta{margin-top:6px;display:flex;gap:16px;color:var(--ink-3);font-size:13px;align-items:center;flex-wrap:wrap}.detail-meta .sep{color:var(--line-strong)}.detail-meta a{color:var(--ink-2);text-decoration:none;font-family:var(--font-mono);font-size:12.5px}.detail-meta a:hover{color:var(--accent)}.detail-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:14px;margin-bottom:14px}.detail-stack{display:flex;flex-direction:column;gap:14px}.combined-card{overflow:hidden}.combined-grid{display:grid;grid-template-columns:1fr 1fr}.combined-section{padding:16px 18px}.combined-section--right{border-left:1px solid var(--line-soft);background:var(--surface-2)}.solar-data{width:100%;border-collapse:collapse;font-size:13px}.solar-data td{padding:7px 0;border-bottom:1px solid var(--line-soft)}.solar-data tr:last-child td{border-bottom:none}.solar-data td:first-child{color:var(--ink-3);font-size:12.5px;width:50%}.solar-data td:last-child{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500;font-size:13px}.aerial-card{overflow:hidden;margin-bottom:0}.aerial{position:relative;aspect-ratio:16/9;background:#2d3a3f;overflow:hidden}.aerial img{width:100%;height:100%;object-fit:cover;display:block}.aerial-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--ink-5);font-size:13px}.aerial-toolbar{position:absolute;top:10px;left:10px;display:flex;gap:6px;z-index:2}.aerial-toolbar .chip{background:#ffffffeb;color:#0b1418;font-size:12px;font-weight:500;padding:5px 10px;border-radius:6px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:inline-flex;align-items:center;gap:5px;box-shadow:0 1px 5px #00000038;transition:background .1s}.aerial-toolbar .chip.viable{background:var(--blue);color:#fff}.aerial-toolbar .chip:not([disabled]):not(.viable):hover{background:#fff}.aerial-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);color:#e63030;filter:drop-shadow(0 2px 6px rgba(0,0,0,.55));pointer-events:none;z-index:3}.aerial-date-tag{position:absolute;bottom:10px;right:10px;background:#ffffffe0;color:#0b1418;font-size:11px;font-weight:500;font-family:var(--font-mono, monospace);padding:3px 9px;border-radius:4px;pointer-events:none;z-index:3;letter-spacing:.03em;box-shadow:0 1px 4px #0000002e;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.score-big-card{padding:16px 18px;margin-bottom:0}.score-big-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.score-big{font-size:44px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.score-big-sub{font-size:12px;color:var(--ink-3);margin-top:4px}.score-breakdown{margin-top:10px;display:flex;flex-direction:column;gap:6px}.score-bd-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;font-size:12.5px}.score-bd-row .k{color:var(--ink-3)}.score-bd-bar{grid-column:1 / -1;height:4px;background:var(--surface-sunken);border-radius:2px;overflow:hidden}.score-bd-bar .f{height:100%;background:var(--viable);border-radius:2px}.score-bd-bar .f.marg{background:var(--marginal)}.sidecard{padding:0;overflow:hidden;margin-bottom:0}.sidecard-head{padding:12px 16px 10px;border-bottom:1px solid var(--line-soft);font-size:12px;color:var(--ink-4);text-transform:uppercase;letter-spacing:.06em;font-weight:500;display:flex;align-items:center;justify-content:space-between}.sidecard-body{padding:14px 16px 16px}.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 14px;font-size:13px}.kv .k{color:var(--ink-4);font-size:12.5px}.kv .v{color:var(--ink)}.kv .v.mono{font-family:var(--font-mono);font-size:12.5px}.upload-prompt{border:1px dashed var(--line-strong);border-radius:8px;padding:14px;text-align:center;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:background .12s,border-color .12s}.upload-prompt:hover{background:var(--accent-soft);border-color:var(--accent)}.upload-prompt .pi{width:24px;height:24px;color:var(--ink-3)}.upload-prompt .ttl{font-weight:500;font-size:13px}.upload-prompt .sub{font-size:11.5px;color:var(--ink-4)}.system-card{padding:16px 18px;background:linear-gradient(135deg,var(--primary) 0%,#16242a 100%);color:#fff;border-color:transparent;margin-bottom:0}.system-card .ttl{font-size:12px;color:#a8b5bb;text-transform:uppercase;letter-spacing:.06em;font-weight:500}.system-card .v{font-size:28px;font-weight:600;letter-spacing:-.015em;margin-top:2px}.system-card .row{display:flex;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.1)}.system-card .row .lk{color:#a8b5bb;font-size:12px}.system-card .row .vk{font-family:var(--font-mono);font-size:13px;font-weight:500}.notes-bar{margin-bottom:14px;padding:14px 18px;display:flex;flex-direction:column;gap:8px;overflow:visible}.notes-bar-head{display:flex;align-items:center;justify-content:space-between}.notes-box{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:10px 12px;font-size:13.5px;color:var(--ink);line-height:1.5;min-height:70px;width:100%;resize:vertical;outline:none}.notes-box:focus{border-color:var(--ink-4);background:var(--surface)}.action-bar{position:sticky;bottom:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px;z-index:10}.action-bar-buttons{display:flex;align-items:center;gap:8px}.action-bar .summary{font-size:13px;color:var(--ink-3);flex:1;display:flex;align-items:center;gap:12px}.action-bar .summary strong{color:var(--ink);font-weight:500}.divider-h{height:1px;background:var(--line-soft);margin:12px 0}.row-flex{display:flex;align-items:center;gap:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b141873;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;display:grid;place-items:center;padding:24px;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-modal);width:520px;max-width:100%;overflow:hidden;animation:pop .18s cubic-bezier(.2,1,.3,1.05)}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-head{padding:16px 20px 12px;border-bottom:1px solid var(--line-soft);display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.modal-head h3{margin:0;font-size:16px;font-weight:600}.modal-head .sub{font-size:13px;color:var(--ink-3);margin-top:3px}.modal-body{padding:16px 20px 20px}.modal-foot{padding:12px 20px;border-top:1px solid var(--line-soft);background:var(--surface-2);display:flex;justify-content:flex-end;align-items:center;gap:10px}@media (max-width: 1100px){.detail-grid,.combined-grid{grid-template-columns:1fr}.combined-section--right{border-left:none;border-top:1px solid var(--line-soft)}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block;flex-shrink:0}.spinner.dark{border-color:#0b14181a;border-top-color:var(--ink-3)}.spinner.lg{width:20px;height:20px;border-width:2.5px}.loading-state{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 20px;color:var(--ink-4);font-size:13px}.app-body{display:flex;overflow:hidden}.step-sidebar{width:224px;background:var(--surface);border-right:1px solid var(--line);padding:20px 0;flex-shrink:0;overflow-y:auto}.sidebar-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-4);padding:0 16px 12px;font-family:var(--font-mono)}.sidebar-step{padding:3px 10px 3px 7px;cursor:default;border-left:3px solid transparent;transition:border-color .15s}.sidebar-step.active{border-left-color:var(--blue)}.sidebar-step.accessible{cursor:pointer}.sidebar-step.accessible:hover .sidebar-step-row{background:var(--surface-sunken)}.sidebar-step-row{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:var(--r-sm);transition:background .1s}.sidebar-step.active .sidebar-step-row{background:var(--blue-soft)}.sidebar-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;font-family:var(--font-mono)}.sidebar-dot.done{background:var(--viable);color:#fff}.sidebar-dot.active{background:var(--blue);color:#fff;box-shadow:0 0 0 4px var(--blue-soft)}.sidebar-dot.pending{background:var(--line);color:var(--ink-4)}.sidebar-dot.fail{background:var(--not-viable);color:#fff}.sidebar-step-label{font-size:14px;color:var(--ink-3);font-weight:500}.sidebar-step.active .sidebar-step-label{font-weight:700;color:var(--blue-ink)}.sidebar-step.done .sidebar-step-label{color:var(--ink)}.sidebar-step-summary{font-size:11px;color:var(--ink-4);padding:2px 6px 4px 44px;line-height:1.4;font-family:var(--font-mono)}.sidebar-progress{padding:0 16px 14px;display:flex;flex-direction:column;gap:5px}.sidebar-progress-bar{height:5px;background:var(--line);border-radius:999px;overflow:hidden}.sidebar-progress-fill{height:100%;background:var(--blue);border-radius:999px;transition:width .3s ease}.sidebar-progress-text{font-size:11.5px;color:var(--blue);font-weight:600;font-family:var(--font-mono)}.step-content{flex:1;overflow-y:auto;padding:32px 36px;background:var(--bg)}.step-body{max-width:720px}.step-body.wide{max-width:1000px}.step-eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--blue);margin-bottom:6px;font-family:var(--font-mono)}.step-title{font-size:24px;font-weight:700;color:var(--ink);margin-bottom:6px;letter-spacing:-.015em}.step-subtitle{font-size:15px;color:var(--ink-3);margin-bottom:22px;line-height:1.55}.card-header{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line-soft);font-weight:600;font-size:13px;color:var(--ink)}.card-body{padding:16px}.fact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px}.fact-row{display:flex;flex-direction:column;gap:2px}.fact-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-4);font-family:var(--font-mono)}.fact-value{font-size:13.5px;font-weight:500;color:var(--ink)}.fact-value.muted{color:var(--ink-3);font-weight:400}.fact-value.large{font-size:18px;font-weight:700;color:var(--accent)}.badge{display:inline-block;font-size:10.5px;font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:999px;text-transform:uppercase;font-family:var(--font-mono)}.badge-high{background:var(--viable-soft);color:var(--viable-ink)}.badge-medium{background:var(--marginal-soft);color:var(--marginal-ink)}.badge-low{background:var(--not-viable-soft);color:var(--not-viable-ink)}.badge-blue{background:var(--accent-soft);color:var(--accent-ink)}.badge-gray{background:var(--neutral-soft);color:var(--neutral-ink)}.alert{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-radius:var(--r-md);font-size:13.5px;margin-bottom:14px}.alert-error{background:var(--not-viable-soft);border:1px solid rgba(168,58,42,.25);color:var(--not-viable-ink)}.alert-warn{background:var(--marginal-soft);border:1px solid rgba(184,117,20,.25);color:var(--marginal-ink)}.alert-info{background:var(--accent-soft);border:1px solid rgba(35,122,74,.25);color:var(--accent-ink)}.alert-icon{flex-shrink:0;margin-top:1px}.outcome-hero{border-radius:var(--r-md);padding:18px 20px;margin-bottom:14px;display:flex;align-items:center;gap:16px}.outcome-hero.feasible{background:var(--viable-soft);border:1.5px solid rgba(35,122,74,.3)}.outcome-hero.review{background:var(--marginal-soft);border:1.5px solid rgba(184,117,20,.3)}.outcome-hero.fail{background:var(--not-viable-soft);border:1.5px solid rgba(168,58,42,.3)}.outcome-icon{width:44px;height:44px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}.outcome-icon.feasible{background:#237a4a26;color:var(--viable)}.outcome-icon.review{background:#b8751426;color:var(--marginal)}.outcome-icon.fail{background:#a83a2a26;color:var(--not-viable)}.outcome-title{font-weight:600;font-size:15px;margin-bottom:2px}.outcome-hero.feasible .outcome-title{color:var(--viable-ink)}.outcome-hero.review .outcome-title{color:var(--marginal-ink)}.outcome-hero.fail .outcome-title{color:var(--not-viable-ink)}.outcome-sub{font-size:12.5px;color:var(--ink-3)}.rule-list{display:flex;flex-direction:column;gap:4px}.rule-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-3)}.rule-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.rule-dot.pass{background:var(--viable)}.rule-dot.warn{background:var(--marginal)}.rule-dot.fail{background:var(--not-viable)}.readout-strip{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;margin-bottom:14px}.readout-cell{flex:1;padding:12px 16px;text-align:center;border-right:1px solid var(--line-soft)}.readout-cell:last-child{border-right:none}.readout-val{font-size:20px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.015em}.readout-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-4);margin-top:2px;font-family:var(--font-mono)}.step-actions{display:flex;align-items:center;gap:12px;margin-top:28px;padding-top:22px;border-top:2px solid var(--line-soft)}.step-actions .btn-primary{padding:12px 28px;font-size:15px;font-weight:600;border-radius:9px}.step-actions-note{font-size:13px;color:var(--ink-4)}.upload-zone{border:1.5px dashed var(--line-strong);border-radius:var(--r-md);padding:36px 24px;text-align:center;background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:12px}.upload-zone:hover,.upload-zone.drag-over{border-color:var(--accent);background:var(--accent-soft)}.upload-zone-icon{color:var(--ink-4);margin-bottom:10px}.upload-zone-text{font-size:13.5px;color:var(--ink-3)}.upload-zone-text strong{color:var(--accent);cursor:pointer}.upload-zone-hint{font-size:12.5px;color:var(--ink-4);margin-top:4px}.file-selected{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-3);margin-bottom:12px;font-family:var(--font-mono)}.file-selected-name{font-weight:500;color:var(--ink);font-family:var(--font-sans)}.address-row{display:flex;gap:8px;margin-bottom:14px}.address-row input{flex:1;padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--r-sm);font-size:13.5px;outline:none;color:var(--ink);background:var(--surface)}.address-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.text-input{width:100%;padding:8px 12px;border:1px solid var(--line-strong);border-radius:var(--r-sm);font-size:13.5px;outline:none;color:var(--ink);background:var(--surface);margin-bottom:8px}.text-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-hint{font-size:12px;color:var(--ink-4);margin-bottom:12px}.price-table{width:100%;font-size:13px;border-collapse:collapse}.price-table tr{border-bottom:1px solid var(--line-soft)}.price-table tr:last-child{border-bottom:none}.price-table td{padding:9px 12px}.price-table td:last-child{text-align:right;font-weight:500;font-family:var(--font-mono)}.price-table .total-row td{font-weight:600;background:var(--surface-2)}.price-table .rebate-row td{color:var(--viable-ink)}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}.summary-item{display:flex;flex-direction:column;gap:2px}.summary-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-4);font-family:var(--font-mono)}.summary-value{font-size:14px;font-weight:500;color:var(--ink)}.canvas-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.control-group{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 12px;font-size:12.5px}.control-label{color:var(--ink-4);font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:.05em}.control-group select,.control-group input[type=range]{border:none;background:transparent;font-size:13px;color:var(--ink);outline:none;cursor:pointer}.control-group input[type=range]{width:80px}.angle-label{font-weight:600;color:var(--accent);font-size:13px;min-width:28px;font-family:var(--font-mono)}.canvas-wrap{position:relative;border-radius:var(--r-md);overflow:hidden;background:#1a202c;margin-bottom:12px;cursor:crosshair;max-width:640px;margin-left:auto;margin-right:auto}.canvas-wrap canvas{display:block;width:100%}.canvas-hint{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#000000a6;color:#fff;font-size:12px;padding:5px 12px;border-radius:20px;white-space:nowrap;pointer-events:none;transition:opacity .3s}.canvas-hint.hidden{opacity:0}.fallback-panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:20px;margin-bottom:12px}.fallback-label{font-size:12.5px;color:var(--ink-3);margin-bottom:10px}.fallback-row{display:flex;align-items:center;gap:12px}.fallback-row input[type=range]{flex:1}.fallback-count{font-weight:600;font-size:14px;color:var(--accent);min-width:80px;font-family:var(--font-mono)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b141873;display:flex;align-items:center;justify-content:center;z-index:100}.dialog{background:var(--surface);border-radius:var(--r-lg);padding:24px;max-width:400px;width:90%;box-shadow:var(--shadow-modal)}.dialog-title{font-weight:600;font-size:15px;margin-bottom:8px;color:var(--ink)}.dialog-body{font-size:13.5px;color:var(--ink-3);margin-bottom:20px;line-height:1.5}.dialog-actions{display:flex;gap:8px;justify-content:flex-end}.collapsible-trigger{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:8px 0;font-size:12.5px;font-weight:500;color:var(--ink-4);border:none;background:transparent;width:100%;text-align:left}.collapsible-trigger:hover{color:var(--ink)}.satellite-img{width:100%;display:block}.mock-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;color:var(--marginal-ink);background:var(--marginal-soft);border:1px solid rgba(184,117,20,.3);padding:2px 8px;border-radius:999px;font-family:var(--font-mono)}.section-divider{border:none;border-top:1px solid var(--line-soft);margin:18px 0}.uk-name-row{display:flex;gap:8px;margin-bottom:8px}.feasibility-reasons{list-style:none;padding:0;margin:0}.feasibility-reason{display:flex;align-items:flex-start;font-size:13px;color:var(--ink-3);padding:5px 0;border-bottom:1px solid var(--line-soft);line-height:1.5}.feasibility-reason:last-child{border-bottom:none}.tooltip-wrap{display:inline-flex;align-items:center}.lead-tooltip{background:#1b2a30;color:#fff;border-radius:8px;padding:12px 14px;min-width:195px;max-width:235px;z-index:9999;box-shadow:0 10px 32px #0006;pointer-events:none;border:1px solid rgba(255,255,255,.07);font-size:12px;line-height:1.5}.lead-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#1b2a30}.lead-tooltip-title{font-weight:600;font-size:12px;margin-bottom:9px;display:flex;justify-content:space-between;align-items:center}.lead-tooltip-band{font-size:10.5px;color:#fff6;margin-top:9px;padding-top:8px;border-top:1px solid rgba(255,255,255,.1)}.lead-tooltip-dim{display:flex;align-items:center;gap:6px;margin-bottom:5px}.lead-tooltip-dim-label{width:72px;font-size:10.5px;color:#ffffff80;flex-shrink:0}.lead-tooltip-dim-bar-track{flex:1;height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.lead-tooltip-dim-bar-fill{height:100%;border-radius:2px}.lead-tooltip-dim-val{width:22px;text-align:right;font-size:10.5px;font-family:var(--font-mono);color:#ffffffa6;flex-shrink:0}.export-edit-wrap{display:inline-flex;align-items:center;gap:3px}.export-edit-input{background:transparent;border:none;border-bottom:1.5px solid transparent;padding:1px 2px;font-size:13.5px;font-weight:500;color:var(--ink);font-family:var(--font-sans);outline:none;min-width:32px;transition:border-color .15s}.export-edit-input:hover{border-bottom-color:var(--line-strong)}.export-edit-input:focus{border-bottom-color:var(--blue)}.export-edit-suffix{font-size:12.5px;color:var(--ink-3);font-weight:400}.quote-edit-field{display:flex;flex-direction:column;gap:5px}.quote-field-label{font-size:10.5px;font-weight:600;color:var(--ink-4);text-transform:uppercase;letter-spacing:.055em}.quote-field-input{padding:7px 10px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);font:inherit;font-size:13.5px;color:var(--ink);background:var(--surface-2);outline:none;width:100%;box-sizing:border-box;transition:border-color .15s,background .15s;font-family:var(--font-sans)}.quote-field-input:hover{border-color:var(--blue)}.quote-field-input:focus{border-color:var(--blue);background:var(--surface)}.pricing-num-input::-webkit-outer-spin-button,.pricing-num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.pricing-num-input{-moz-appearance:textfield}.pricing-edit-input{background:transparent;border:none;border-bottom:1.5px dashed var(--ink-4);padding:1px 2px;font-size:13px;font-weight:500;color:var(--ink-2);font-family:var(--font-sans);outline:none;text-align:right;transition:border-color .15s}.pricing-edit-input:hover{border-bottom-color:var(--blue);border-bottom-style:solid}.pricing-edit-input:focus{border-bottom:1.5px solid var(--blue);color:var(--ink)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-family:var(--font-sans);font-size:12px;font-weight:500;white-space:nowrap;padding:5px 9px;border-radius:5px;pointer-events:none;opacity:0;transition:opacity .15s .08s;z-index:200}[data-tooltip]:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:var(--ink);pointer-events:none;opacity:0;transition:opacity .15s .08s;z-index:200}[data-tooltip]:hover:after,[data-tooltip]:hover:before{opacity:1}[data-tooltip][data-tooltip-align=right]:after{left:auto;right:0;transform:none}[data-tooltip][data-tooltip-align=right]:before{left:auto;right:8px;transform:none}.lead-table tbody tr[data-viability=viable]>td:first-child{box-shadow:inset 3px 0 0 var(--viable)}.lead-table tbody tr[data-viability=marginal]>td:first-child{box-shadow:inset 3px 0 0 var(--marginal)}.lead-table tbody tr[data-viability=not_viable]>td:first-child{box-shadow:inset 3px 0 0 var(--not-viable)}
