:root{--bg:#fafaf7;--surface:#fff;--sunken:#f4f2ec;--ink:#1f1d1a;--ink-2:#4a4843;--ink-3:#7a786f;--ink-d:#a09d93;--line-s:#ece9e0;--line:#d9d5c8;--green:#2f4d3a;--green-s:#e0e8dd;--green-ink:#1f3527;--inverse:#1f1d1a;--r:6px;--font:"Inter", -apple-system, sans-serif;--mono:"JetBrains Mono", monospace;--state-error:#8c3a28;--manager:#6b4a8c;--manager-s:#ece3f2;--manager-ink:#4a2e63}[data-theme=dark]{--bg:#272420;--surface:#312f2a;--sunken:#201e1a;--ink:#f0eee7;--ink-2:#bdbab1;--ink-3:#8c8a82;--ink-d:#5e5c56;--line-s:#38352e;--line:#4a4740;--green:#7fb58a;--green-s:#1f2d24;--green-ink:#b8d4bd;--inverse:#1a1816}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);min-height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.shell{max-width:1080px;margin:0 auto;padding:32px 40px}.app-header{background:var(--inverse);z-index:100;border-bottom:1px solid #f5f1e814;justify-content:space-between;align-items:center;padding:14px 40px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;display:flex}.monogram{background:var(--green);color:#f5f1e8;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;font-size:15px;font-weight:700;display:flex}.wordmark{flex-direction:column;gap:0;line-height:1.1;display:flex}.wordmark .co{color:#f5f1e880;letter-spacing:.05em;text-transform:uppercase;font-size:11px}.wordmark .prod{color:#f5f1e8;letter-spacing:.08em;text-transform:uppercase;font-size:16px;font-weight:700}.role-pill{font-family:var(--mono);color:#f5f1e8b3;letter-spacing:.04em;background:#f5f1e814;border:1px solid #f5f1e833;border-radius:100px;padding:3px 9px;font-size:10px}.role-pill.admin{background:var(--green-s);color:var(--green-ink);border-color:var(--green-s)}.role-pill.manager{background:var(--manager-s);color:var(--manager-ink);border-color:var(--manager-s)}[data-theme=dark] .role-pill.manager{color:#c8a8e8;background:#8c5ac82e;border-color:#8c5ac859}.app-header-right{align-items:center;gap:12px;display:flex}.theme-toggle{background:#f5f1e814;border:1px solid #f5f1e826;border-radius:4px;padding:2px;display:inline-flex}.theme-toggle button{font-family:var(--font);cursor:pointer;color:#f5f1e880;background:0 0;border:none;border-radius:3px;padding:4px 9px;font-size:10px}.theme-toggle button.active{color:#f5f1e8;background:#f5f1e81f}.sign-out-btn{color:#f5f1e8b3;background:#f5f1e814;border:1px solid #f5f1e826;border-radius:4px;padding:6px 12px;font-size:11px;font-weight:600}.sign-out-btn:hover{color:#f5f1e8;background:#f5f1e824}.user-meta{color:#f5f1e88c;font-size:11px;font-family:var(--mono)}.app-nav{border-left:1px solid #f5f1e81f;gap:4px;margin-left:16px;padding-left:16px;display:flex}.app-nav-link{color:#f5f1e88c;border-radius:4px;padding:6px 12px;font-size:12px;font-weight:500;transition:background .1s,color .1s}.app-nav-link:hover{color:#f5f1e8e6;background:#f5f1e80f}.app-nav-link.active{color:#f5f1e8;background:#f5f1e81f}.app-nav-link.muted{color:#f5f1e852}.app-nav-link.muted:hover{color:#f5f1e88c}.role-pill.preview{color:#f4b884;background:#f59e562e;border-color:#f59e5659}.view-toggle{background:#f5f1e80f;border:1px solid #f5f1e81f;border-radius:4px;padding:2px;display:inline-flex}.view-toggle button{font-family:var(--font);cursor:pointer;color:#f5f1e880;background:0 0;border:none;border-radius:3px;padding:4px 9px;font-size:10px;font-weight:500}.view-toggle button.active{color:#f5f1e8;background:#f5f1e824}.view-toggle button:disabled{opacity:.5;cursor:wait}.preview-banner{z-index:99;color:var(--ink-2);text-align:center;background:#f59e5624;border-bottom:1px solid #f59e564d;padding:8px 40px;font-size:12px;position:sticky;top:64px}[data-theme=dark] .preview-banner{color:#f4b884}.projects-toolbar{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.toolbar-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.search-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);flex:0 0 280px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.search-box input{color:var(--ink);background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:13px}.search-glass{color:var(--ink-3);font-size:14px;line-height:1}.search-clear{color:var(--ink-3);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.search-clear:hover{color:var(--ink)}.filter-chips{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 11px;font-size:12px;font-weight:500;transition:background .1s,color .1s;display:inline-flex}.chip:hover{background:var(--sunken)}.chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chip-count{font-family:var(--mono);color:var(--ink-3);background:var(--sunken);border-radius:999px;padding:1px 6px;font-size:10px}.chip.active .chip-count{color:var(--bg);background:#ffffff26}.toolbar-right{align-items:center;gap:8px;margin-left:auto;display:flex}.ghost-toggle{color:var(--ink-2);border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:inline-flex}.ghost-toggle:hover{background:var(--sunken)}select.ghost-toggle{padding-right:24px}.ghost-toggle input[type=checkbox]{cursor:pointer;margin:0}.projects-empty-filtered{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r);text-align:center;color:var(--ink-3);padding:36px 24px;font-size:13px}.projects-table-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}table.projects-list{border-collapse:collapse;width:100%;font-size:13px}table.projects-list thead th{text-align:left;font-family:var(--mono);letter-spacing:.12em;color:var(--ink-3);text-transform:uppercase;background:var(--sunken);border-bottom:1px solid var(--line);padding:12px 16px;font-size:10px;font-weight:500}table.projects-list tbody td{border-bottom:1px solid var(--line-s);color:var(--ink);vertical-align:middle;padding:12px 16px}table.projects-list tbody tr:last-child td{border-bottom:none}table.projects-list tbody tr.row-link{cursor:pointer}table.projects-list tbody tr.row-link:hover{background:var(--sunken)}.proj-name{color:var(--ink);font-weight:600}.proj-sub{color:var(--ink-3);margin-top:2px;font-size:11px}.price{font-family:var(--mono);font-weight:600}.price-sub{font-family:var(--mono);color:var(--ink-3);margin-top:2px;font-size:10px}.updated-date{font-family:var(--mono);color:var(--ink-3);font-size:11px}.updated-rel{color:var(--ink-3);margin-top:2px;font-size:11px}.badge{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid;border-radius:999px;align-items:center;gap:5px;padding:3px 8px;font-size:10px;display:inline-flex}.badge .pip{border-radius:50%;width:6px;height:6px}.badge.draft{color:#7a786f;border-color:var(--line);background:var(--sunken)}.badge.draft .pip{background:#7a786f}.badge.quoted{color:#2f4d3a;border-color:var(--green-s);background:var(--green-s)}.badge.quoted .pip{background:var(--green)}.badge.approved{color:#1f3527;border-color:var(--green);background:var(--green-s)}.badge.approved .pip{background:var(--green)}.badge.in_production{color:#6b5c47;background:#f0e9da;border-color:#d8cfc0}.badge.in_production .pip{background:#6b5c47}.badge.completed{color:#3f4e6e;background:#e1e5ee;border-color:#e1e5ee}.badge.completed .pip{background:#3f4e6e}.badge.archived{color:var(--ink-3);border-color:var(--line);background:var(--sunken);opacity:.7}.badge.archived .pip{background:var(--ink-d)}[data-theme=dark] .badge.in_production{color:#d8cfc0;background:#d8cfc014;border-color:#6b5c47}[data-theme=dark] .badge.in_production .pip{background:#d8cfc0}[data-theme=dark] .badge.completed{color:#b8c2d8;background:#b8c2d814;border-color:#3f4e6e}[data-theme=dark] .badge.completed .pip{background:#b8c2d8}.owner-cell{align-items:center;gap:6px;display:inline-flex}.avatar{background:var(--green);color:#f5f1e8;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;font-weight:700;display:inline-flex}.avatar.estimator{background:#3f4e6e}.avatar.manager{background:var(--manager)}[data-theme=dark] .avatar{color:#1a1816}.owner-name{color:var(--ink-2);font-size:12px}.actions-cell{justify-content:flex-end;align-items:center;gap:4px;display:flex}.row-btn{font-size:11px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:4px;padding:5px 10px}.row-btn:hover{background:var(--sunken);border-color:var(--line)}.row-btn.primary{color:var(--green-ink);border-color:var(--green-s);background:var(--green-s)}[data-theme=dark] .row-btn.primary{color:var(--green-ink)}.row-menu-anchor{display:inline-block;position:relative}.row-menu{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);z-index:30;flex-direction:column;gap:2px;min-width:160px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #00000024}.row-menu-item{text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:4px;width:100%;padding:7px 10px;font-size:12px;display:block}.row-menu-item:hover{background:var(--sunken)}.row-menu-item.danger{color:var(--state-error)}.row-menu-item.danger:hover{background:#8c3a2814}.row-menu-divider{background:var(--line-s);height:1px;margin:4px 0}.bom-to-summary-btn{background:var(--green);color:#f5f1e8;border:1px solid var(--green);border-radius:var(--r);letter-spacing:.02em;justify-content:center;align-items:center;gap:6px;margin-top:18px;padding:10px 16px;font-size:13px;font-weight:600;text-decoration:none;transition:background .1s,transform 60ms;display:flex}[data-theme=dark] .bom-to-summary-btn{color:#1a1816}.bom-to-summary-btn:hover{background:var(--green-ink)}[data-theme=dark] .bom-to-summary-btn:hover{color:#f5f1e8;background:var(--green)}.bom-to-summary-btn:active{transform:translateY(1px)}.summary-hero{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:1.6fr 1fr;gap:24px;margin-bottom:24px;padding:24px 28px;display:grid}.summary-hero-left{flex-direction:column;gap:18px;display:flex}.summary-hero-right{flex-direction:column;align-items:flex-end;display:flex}.summary-tier-block{border-top:1px solid var(--line-s);padding-top:14px}.summary-tier-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:8px;margin-bottom:6px;font-size:10px;display:flex}.summary-tier-scope{background:var(--sunken);color:var(--ink-3);letter-spacing:.06em;border-radius:3px;padding:1px 6px;font-size:9px}.summary-tier-readout{color:var(--ink);font-size:14px;font-weight:600}.summary-tier-hint{color:var(--ink-3);margin-top:2px;font-size:11px}.summary-tier-buttons{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.summary-tier-btn{background:var(--surface);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;border-radius:4px;padding:6px 12px;font-size:12px;font-weight:500;transition:background .1s,color .1s}.summary-tier-btn:hover{background:var(--sunken)}.summary-tier-btn.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.summary-tier-btn:disabled{opacity:.5;cursor:wait}.summary-tier-specials{background:var(--sunken);border:1px solid var(--line);border-radius:var(--r);align-items:center;gap:6px;width:fit-content;margin-top:8px;padding:8px 10px;display:flex}.summary-tier-specials-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.summary-tier-specials input{border:1px solid var(--line);background:var(--surface);width:70px;color:var(--ink);font-family:var(--mono);text-align:right;border-radius:4px;outline:none;padding:4px 6px;font-size:13px}.summary-tier-specials-suffix{font-family:var(--mono);color:var(--ink-3);font-size:12px}.summary-margin-block{border-top:1px solid var(--line-s);flex-direction:column;gap:6px;padding-top:14px;display:flex}.summary-margin-row{color:var(--ink-2);justify-content:space-between;align-items:baseline;font-size:13px;display:flex}.summary-margin-row.strong{color:var(--ink);margin-top:2px;font-size:14px;font-weight:600}.summary-margin-row.dim{color:var(--ink-3);font-size:12px}.summary-margin-row .mono{font-family:var(--mono)}.summary-margin-row .green{color:var(--green)}.summary-side-block{background:var(--sunken);border:1px solid var(--line);border-radius:var(--r);text-align:right;width:100%;padding:18px 22px}.summary-side-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-size:10px}.summary-side-amount{font-family:var(--mono);color:var(--ink);letter-spacing:-.01em;margin-bottom:8px;font-size:32px;font-weight:700}.summary-side-sub{color:var(--ink-2);font-size:12px;line-height:1.5}.summary-side-sub .strike{color:var(--ink-3);text-decoration:line-through}.summary-side-sub .green{color:var(--green);font-weight:600}.summary-pdf-stack{flex-direction:column;align-items:flex-end;gap:6px;width:100%;margin-top:12px;display:flex}.summary-pdf-row{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.summary-pdf-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:2px;font-size:9px}.summary-pdf-btn{background:var(--green-s);border:1px solid var(--green);border-radius:var(--r);color:var(--green-ink);letter-spacing:.02em;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:12px;font-weight:600;text-decoration:none;transition:background .1s,color .1s,transform 60ms;display:flex}.summary-pdf-btn:hover{background:var(--green);color:#f5f1e8}.summary-pdf-btn:active{transform:translateY(1px)}[data-theme=dark] .summary-pdf-btn:hover{color:#1a1816}.kpi-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px;display:grid}.kpi-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:4px;padding:16px 18px;display:flex;position:relative}.kpi-card.has-discount{border-color:var(--green-s);background:linear-gradient(180deg, var(--green-s) 0%, var(--surface) 100%)}.kpi-discount-badge{font-family:var(--mono);letter-spacing:.08em;background:var(--green);color:#f5f1e8;border-radius:3px;padding:2px 6px;font-size:9px;position:absolute;top:8px;right:8px}[data-theme=dark] .kpi-discount-badge{color:#1a1816}.kpi-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.kpi-value{font-family:var(--mono);color:var(--ink);font-size:22px;font-weight:700}.kpi-sub{color:var(--ink-3);font-size:11px}.kpi-sub.line-through{text-decoration:line-through}.kpi-cost-note{color:var(--ink-2);font-size:11px;font-family:var(--mono)}.summary-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-bottom:16px;overflow:hidden}.summary-section-header{background:var(--sunken);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.summary-section-title{color:var(--ink);margin-right:12px;font-size:14px;font-weight:600}.summary-section-meta{color:var(--ink-3);font-size:11px}.summary-section-subtotal{font-family:var(--mono);color:var(--ink);font-size:16px;font-weight:700}.summary-section-body{padding:0}.summary-table{border-collapse:collapse;width:100%;font-size:13px}.summary-table thead th{text-align:left;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line-s);background:var(--surface);padding:10px 16px;font-size:10px;font-weight:500}.summary-table tbody td{border-bottom:1px solid var(--line-s);vertical-align:top;padding:10px 16px}.summary-table th.r,.summary-table td.r{text-align:right}.summary-table .mono{font-family:var(--mono)}.summary-table .dim{color:var(--ink-3)}.summary-row-sub{color:var(--ink-3);align-items:center;gap:4px;margin-top:2px;font-size:11px;display:inline-flex}.summary-level-chip{font-family:var(--mono);background:var(--sunken);color:var(--ink-2);border:1px solid var(--line);border-radius:3px;padding:1px 5px;font-size:9px}.summary-subtotal-row td{border-top:1px solid var(--line);background:var(--sunken);font-weight:600}.summary-subtotal-label{text-align:right;color:var(--ink-3);font-size:11px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase}.summary-discount-row td{background:var(--surface);color:var(--ink-2);font-size:12px;padding:8px 16px!important}.summary-grand-row td{background:var(--green-s);border-bottom:none;font-weight:700}.summary-grand-label{text-align:right;color:var(--green-ink);font-size:11px;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase}.summary-grand-amount{color:var(--green-ink);font-size:16px}.summary-defaults-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.construction-grid{grid-template-rows:auto auto auto;grid-template-columns:repeat(5,minmax(0,1fr));align-items:start;gap:12px;display:grid}@media (max-width:1024px){.construction-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.construction-field{grid-template-rows:subgrid;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r);grid-row:span 3;gap:6px;padding:12px;display:grid}@supports not (grid-template-rows:subgrid){.construction-field{grid-template-rows:18px auto auto}}.construction-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:10px;line-height:1.4}.construction-rate-hint{font-family:var(--mono);letter-spacing:.04em;text-transform:none;color:var(--ink-d);margin-top:2px;font-size:9px;display:block}.construction-input-row{background:var(--surface);border:1px solid var(--line);border-radius:4px;align-items:center;gap:4px;min-width:0;padding:6px 8px;display:flex}.construction-input-row input{font-family:var(--mono);color:var(--ink);-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:13px}.construction-input-row input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.construction-input-row input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.construction-prefix,.construction-suffix{font-family:var(--mono);color:var(--ink-3);font-size:11px}.construction-total{font-family:var(--mono);color:var(--ink);text-align:right;font-size:13px;font-weight:600}.construction-total .dim{color:var(--ink-d);font-weight:400}.summary-default-label{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:10px}.summary-default-value{color:var(--ink);font-size:13px}.bom-item-row{border-bottom:1px solid var(--line-s);cursor:pointer;border-left:3px solid #0000;align-items:center;padding:12px 16px;font-size:13px;transition:background 80ms,border-left-color 80ms;display:grid}.bom-item-row:hover,.bom-item-row.selected{background:var(--sunken)}.bom-item-row.active{background:var(--green-s);border-left-color:var(--green)}.bom-item-row.active.selected,.bom-item-row.active:hover{background:var(--green-s)}[data-theme=dark] .bom-item-row.active{background:#7fb58a1a}[data-theme=dark] .bom-item-row.active:hover{background:#7fb58a29}.btn-primary-large{background:var(--green);color:#f5f1e8;border:1px solid var(--green);border-radius:var(--r);padding:9px 16px;font-size:13px;font-weight:600}[data-theme=dark] .btn-primary-large{color:#1a1816}.btn-primary-large:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:9px 16px;font-size:13px;font-weight:500}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.dialog-backdrop{z-index:200;background:#0000008c;justify-content:center;align-items:flex-start;padding:32px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.dialog-shell{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;width:580px;max-width:100%;display:flex;box-shadow:0 20px 50px #0000002e}.dialog-header{border-bottom:1px solid var(--line-s);justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.dialog-header h2{letter-spacing:-.01em;font-size:18px;font-weight:700}.dialog-close{color:var(--ink-3);cursor:pointer;background:0 0;border:none;padding:0 6px;font-size:24px;line-height:1}.dialog-close:hover{color:var(--ink)}.dialog-body{flex-direction:column;gap:8px;max-height:calc(100vh - 220px);padding:8px 24px 4px;display:flex;overflow-y:auto}.dialog-footer{border-top:1px solid var(--line-s);justify-content:flex-end;gap:10px;padding:16px 24px 20px;display:flex}.dlg-section{border-bottom:1px solid var(--line-s);padding:12px 0}.dlg-section:last-child{border-bottom:none}.dlg-section-title{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px;font-size:10px}.dlg-section-hint{color:var(--ink-3);margin-bottom:10px;font-size:11px}.dlg-section-body{flex-direction:column;gap:12px;display:flex}.dlg-field{flex-direction:column;gap:6px;display:flex}.dlg-label{color:var(--ink-2);align-items:center;gap:4px;font-size:12px;display:flex}.dlg-req{color:var(--state-error);font-weight:700}.dlg-input{background:var(--sunken);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);outline:none;width:100%;min-width:0;padding:8px 10px;font-size:13px}.dlg-input:focus{border-color:var(--ink-2)}.dlg-input:disabled{opacity:.5;cursor:not-allowed}select.dlg-input{appearance:auto}.dlg-grid-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.dlg-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.dlg-hint{color:var(--ink-3);font-size:11px}.dlg-warn{color:var(--state-error);font-size:11px}[data-theme=dark] .dlg-warn{color:#f4b884}.dlg-error{border:1px solid var(--state-error);border-radius:var(--r);color:var(--state-error);background:#8c3a2814;margin:0 24px 16px;padding:10px 12px;font-size:12px}:root{--state-warn:#a07a1f;--state-warn-soft:#fcfaf2;--state-success:#2f4d3a;--state-success-soft:#e0e8dd}[data-theme=dark]{--state-warn:#c7a050;--state-warn-soft:#2a2718;--state-success:#7fb58a;--state-success-soft:#1f2d24}.settings-layout{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:24px;display:grid}@media (max-width:1024px){.settings-layout{grid-template-columns:minmax(0,1fr)}.settings-preview-rail{position:static}}.settings-sections{flex-direction:column;gap:12px;min-width:0;display:flex}.settings-preview-rail{flex-direction:column;gap:16px;max-height:calc(100vh - 48px);display:flex;position:sticky;top:24px}.settings-anchor-nav{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex:none;max-height:40vh;padding:12px 14px;overflow-y:auto}.settings-anchor-nav-title{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px;font-size:10px}.settings-anchor-nav-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.settings-anchor-nav-link{color:var(--ink-2);border-left:2px solid #0000;border-radius:4px;padding:5px 8px;font-size:12px;text-decoration:none;transition:background .12s,color .12s,border-color .12s;display:block}.settings-anchor-nav-link:hover{background:var(--sunken);color:var(--ink)}.settings-anchor-nav-link.active{background:var(--green-s);color:var(--green-ink);border-left-color:var(--green);font-weight:600}.dirty-bar{background:var(--state-warn-soft);border-bottom:1px solid var(--state-warn);z-index:50;justify-content:space-between;align-items:center;padding:8px 24px;font-size:12px;display:flex;position:sticky;top:0}.dirty-bar strong{color:var(--state-warn)}.dirty-bar-actions{gap:6px;display:flex}.snapshot-banner{background:var(--green-s);border:1px solid var(--green);border-radius:var(--r);color:var(--green-ink);margin-bottom:24px;padding:10px 14px;font-size:12px}[data-theme=dark] .snapshot-banner{color:var(--green)}.snapshot-banner strong{font-weight:600}.section-block{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.section-block-header{background:var(--sunken);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--line-s);text-align:left;width:100%;font:inherit;color:inherit;border:none;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.section-block.collapsed .section-block-header{border-bottom:none}.section-block-header:hover{background:var(--line-s)}.section-header-left{align-items:center;gap:8px;display:flex}.section-toggle-icon{color:var(--ink-3);flex-shrink:0;width:12px;font-size:11px;transition:transform .15s}.section-block.collapsed .section-toggle-icon{transform:rotate(-90deg)}.section-title{letter-spacing:.02em;color:var(--ink);font-size:12px;font-weight:600}.section-subtitle{color:var(--ink-3);font-size:11px;font-weight:400}.section-badge{font-family:var(--mono);white-space:nowrap;border:1px solid;border-radius:2px;padding:2px 6px;font-size:9px}.section-badge.done{background:var(--state-success-soft);border-color:var(--state-success-soft);color:var(--state-success)}.section-badge.warn{background:var(--state-warn-soft);border-color:var(--state-warn-soft);color:var(--state-warn)}.section-badge.neutral{background:var(--bg);border-color:var(--line);color:var(--ink-3)}.section-block-body{padding:16px 24px}.section-subheading{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:0 0 6px;font-size:11px}.section-subgroup{margin-bottom:18px}.section-subgroup:last-child{margin-bottom:0}.section-hint{color:var(--ink-3);margin-top:6px;font-size:11px;line-height:1.4}.section-explainer{color:var(--ink-3);background:var(--sunken);border-left:3px solid var(--line);border-radius:0 var(--r) var(--r) 0;margin-bottom:16px;padding:8px 12px;font-size:11px;line-height:1.6}.settings-table{border-collapse:collapse;width:100%;font-size:13px}.settings-table thead th{background:var(--sunken);text-align:left;color:var(--ink-2);letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line);white-space:nowrap;padding:7px 10px;font-size:10px;font-weight:600}.settings-table thead th.r{text-align:right}.settings-table tbody td{border-bottom:1px solid var(--line-s);vertical-align:middle;padding:8px 10px}.settings-table tbody tr:last-child td{border-bottom:none}.settings-table .r{text-align:right}.key-cell{font-family:var(--mono);color:var(--ink);white-space:nowrap;font-size:11px;font-weight:500}.help-cell{color:var(--ink-3);font-size:11px}.unit-cell{color:var(--ink-3);white-space:nowrap;font-size:11px}.num-input{width:80px;font-family:var(--mono);text-align:right;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--r);font-variant-numeric:tabular-nums;padding:5px 8px;font-size:12px}.num-input:focus{border-color:var(--green);outline:none}.num-input:disabled{opacity:.55;cursor:not-allowed}.text-input{font-family:var(--font);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--r);padding:5px 8px;font-size:12px}.text-input:focus{border-color:var(--green);outline:none}.select-input{font-family:var(--font);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--r);cursor:pointer;padding:5px 8px;font-size:12px}.select-input:focus{border-color:var(--green);outline:none}.row-remove-btn{cursor:pointer;width:22px;height:22px;color:var(--ink-d);background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;font-size:16px;display:flex}.row-remove-btn:hover{color:var(--state-error);background:#8c3a2814}.add-row-btn{font-family:var(--font);border:1px dashed var(--line);border-radius:var(--r);cursor:pointer;color:var(--ink-3);background:0 0;align-items:center;gap:5px;margin-top:12px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.add-row-btn:hover{background:var(--sunken);color:var(--ink);border-style:solid}.add-row-btn:disabled{opacity:.5;cursor:not-allowed}.mult-row{border-bottom:1px solid var(--line-s);grid-template-columns:minmax(0,1fr) 90px 60px;align-items:center;gap:12px;padding:8px 0;display:grid}.mult-row:last-child{border-bottom:none}.mult-label{color:var(--ink);font-size:13px;font-weight:500}.mult-help{color:var(--ink-3);margin-top:1px;font-size:11px}.mult-default{font-family:var(--mono);color:var(--ink-3);font-size:10px}.overrides-header{color:var(--ink-2);border-top:1px solid var(--line-s);margin-top:16px;margin-bottom:8px;padding-top:12px;font-size:11px;font-weight:600}.form-label{color:var(--ink-2);letter-spacing:.02em;margin-bottom:4px;font-size:11px;font-weight:500;display:block}.live-preview-card{background:var(--inverse);border-radius:var(--r);color:#f5f1e8;padding:16px}.lp-header{align-items:center;gap:6px;margin-bottom:12px;display:flex}.lp-pulse{background:var(--green);border-radius:50%;width:6px;height:6px;animation:2s infinite pulse-m6}@keyframes pulse-m6{0%,to{opacity:1}50%{opacity:.4}}.lp-title{color:#f5f1e8;letter-spacing:.02em;font-size:11px;font-weight:600}.lp-sku-label{color:#f5f1e873;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:9px}.lp-total-row{border-top:1px solid #f5f1e833;justify-content:space-between;align-items:baseline;margin-top:12px;padding-top:8px;display:flex}.lp-total-label{color:#f5f1e880;letter-spacing:.06em;text-transform:uppercase;font-size:10px}.lp-total-val{font-family:var(--mono);color:#f5f1e8;font-size:16px;font-weight:600}.save-footer{background:var(--surface);border-top:1px solid var(--line);z-index:50;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 24px;display:flex;position:sticky;bottom:0;box-shadow:0 -4px 12px #1f1d1a0f}.save-footer-left{color:var(--ink-3);font-size:12px}.save-footer-left strong{color:var(--state-warn)}.save-footer-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{font-family:var(--font);border-radius:var(--r);border:1px solid var(--line);cursor:pointer;background:var(--surface);color:var(--ink);align-items:center;gap:5px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.btn:hover{background:var(--sunken)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--green);color:#f5f1e8;border-color:var(--green)}.btn-primary:hover{background:var(--green-ink)}[data-theme=dark] .btn-primary{color:#1a1816}.btn-sm{padding:4px 9px;font-size:11px}.btn-ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--sunken);color:var(--ink)}.tpl-switcher-card{background:var(--card);border:1px solid var(--green);border-radius:6px;margin-bottom:14px;padding:14px;box-shadow:0 0 0 1px #5fb6751a}.tpl-switcher-card .head{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--green);margin-bottom:10px;font-size:10px}.tpl-switcher-card select{background:var(--bg);width:100%;color:var(--ink);border:1px solid var(--line);border-radius:4px;margin-bottom:6px;padding:7px 10px;font-size:13px}.tpl-switcher-card .meta{color:var(--ink-3);margin:4px 0;font-size:11px}.tpl-switcher-card .row-actions{gap:6px;margin-top:6px;display:flex}.templates-list{border:1px solid var(--line);border-radius:var(--r);background:var(--card);overflow:hidden}.tpl-row{border-bottom:1px solid var(--line-s);grid-template-columns:28px minmax(0,1fr) 90px 240px;align-items:center;gap:12px;padding:10px 14px;display:grid}.tpl-row:last-child{border-bottom:0}.tpl-row.retired{opacity:.55;font-style:italic}.tpl-row .name{color:var(--ink);font-size:13.5px}.tpl-row .desc{color:var(--ink-3);margin-top:2px;font-size:11px}.tpl-row .meta{font-family:var(--mono);color:var(--ink-3);font-size:11px}.tpl-row .actions{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.tpl-row .mini-btn{color:var(--ink-2);border:1px solid var(--line);font-size:11px;font-family:var(--mono);cursor:pointer;background:0 0;border-radius:3px;padding:3px 9px}.tpl-row .mini-btn:hover{background:var(--sunken);color:var(--ink)}.tpl-row .mini-btn.primary{background:var(--green-s);color:var(--green-ink);border-color:var(--green)}.tpl-switcher-card .mini-btn{color:var(--ink-2);border:1px solid var(--line);font-size:11px;font-family:var(--mono);cursor:pointer;background:0 0;border-radius:3px;padding:4px 10px}.tpl-switcher-card .mini-btn:hover{background:var(--sunken);color:var(--ink)}.tpl-switcher-card .mini-btn.primary{background:var(--green-s);color:var(--green-ink);border-color:var(--green)}.tpl-switcher-card .mini-btn:disabled{opacity:.45;cursor:not-allowed}.supplier-entry-picker{width:100%;display:inline-block}.supplier-entry-picker select{width:100%;padding:4px 6px;font-size:12px}.supplier-entry-picker .picker-status{color:var(--ink-3);font-size:11px;font-style:italic}.supplier-entry-picker .picker-status.error{color:var(--state-error)}.tpl-card{background:var(--card);border:1px solid var(--green);border-radius:6px;padding:14px;box-shadow:0 0 0 1px #5fb6751a}.tpl-card.locked{border-color:var(--line);background:var(--bg);box-shadow:none}.tpl-card .head{font-family:var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--green);margin-bottom:8px;font-size:10px}.tpl-card.locked .head{color:var(--ink-3)}.tpl-card select{background:var(--bg);width:100%;color:var(--ink);border:1px solid var(--line);border-radius:4px;margin-bottom:6px;padding:7px 10px;font-size:13px}.tpl-card .lock-display{color:var(--ink);align-items:center;gap:8px;font-size:14px;display:flex}.tpl-card .lock-display .lock{color:var(--tan)}.suppliers-toolbar{gap:10px;margin-bottom:14px;display:grid}.suppliers-toolbar .toolbar-row{background:0 0;border:none;flex-wrap:wrap;align-items:center;gap:10px;padding:0;display:flex}.suppliers-list tbody tr{cursor:pointer}.suppliers-list .sub{color:var(--ink-3);margin-top:2px;font-size:11.5px}.suppliers-list .tag{font-family:var(--mono);background:var(--sunken);color:var(--ink-3);border:1px solid var(--line);letter-spacing:.04em;border-radius:999px;margin-right:4px;padding:2px 7px;font-size:10px;display:inline-block}.supplier-detail-grid{grid-template-columns:320px minmax(0,1fr);gap:24px;display:grid}@media (max-width:880px){.supplier-detail-grid{grid-template-columns:1fr}}.supplier-contact-card,.supplier-entries-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}.supplier-contact-card h4,.supplier-entries-card h4{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 14px;font-size:10px;font-weight:500}.supplier-field{gap:4px;margin-bottom:12px;display:grid}.supplier-field label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.supplier-field input,.supplier-field textarea,.supplier-field select{background:var(--sunken);border:1px solid var(--line);color:var(--ink);border-radius:4px;width:100%;padding:7px 9px;font-family:inherit;font-size:13px}.supplier-field input:focus,.supplier-field textarea:focus,.supplier-field select:focus{border-color:var(--green);outline:none}.supplier-field textarea{resize:vertical}.tag-pickers{flex-wrap:wrap;gap:4px;display:flex}.entry-table{border-collapse:collapse;width:100%;margin-top:8px;font-size:13px}.entry-table th{text-align:left;font-family:var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--line);padding:8px;font-size:10px;font-weight:500}.entry-table td{border-bottom:1px solid var(--line-s);vertical-align:middle;padding:4px}.entry-table input,.entry-table select{color:var(--ink);background:0 0;border:1px solid #0000;border-radius:4px;width:100%;padding:5px 6px;font-family:inherit;font-size:13px}.entry-table input:focus,.entry-table select:focus{border-color:var(--green);background:var(--sunken);outline:none}.entry-table input.num{font-family:var(--mono);text-align:right}.tpl-card .hint-muted{color:var(--ink-3);margin-top:4px;font-size:11px;line-height:1.4}.tpl-card .hint-update{color:var(--tan);margin-top:6px;font-size:11px}.tpl-card .btn-link{color:var(--green);font-size:11px;font-family:var(--mono);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.tpl-delta{background:var(--bg);border:1px solid var(--line);font-family:var(--mono);border-radius:4px;grid-template-columns:1fr 18px 1fr;align-items:center;gap:10px;margin:12px 0;padding:10px 14px;font-size:13px;display:grid}.tpl-delta .lbl{color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px;font-size:10px}.tpl-delta .from{color:var(--ink-3);text-decoration:line-through}.tpl-delta .to{color:var(--green)}.tpl-delta .arrow{color:var(--ink-3);text-align:center}.cabinet-catalog-table{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.cabinet-row{border-bottom:1px solid var(--line-s);grid-template-columns:110px minmax(0,1fr) 80px 140px 110px 200px;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:grid}.cabinet-row:last-child{border-bottom:0}.cabinet-row.head{background:var(--sunken);font-family:var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;font-size:10px}.cabinet-row.retired{opacity:.55;font-style:italic}.cabinet-row .mini{color:var(--ink-2);border:1px solid var(--line);font-size:11px;font-family:var(--mono);cursor:pointer;background:0 0;border-radius:3px;padding:2px 8px}.cabinet-row .mini:hover{background:var(--sunken);color:var(--ink)}.callout{border-radius:var(--r);padding:10px 14px;font-size:13px;line-height:1.5}.callout.warn{border-left:3px solid var(--tan,#c9a96b);color:var(--ink-2);background:#c9a96b26}.callout.error{border-left:3px solid var(--state-error,#d77272);color:var(--ink);background:#d772721f}.modal-backdrop{z-index:500;background:#1f1d1a99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;width:90%;max-width:720px;max-height:80vh;display:flex;overflow:hidden;box-shadow:0 12px 32px #1f1d1a33}.modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-title{font-size:14px;font-weight:600}.modal-body{padding:18px;overflow:auto}.hardware-variants-row>td{background:var(--sunken);border-bottom:1px solid var(--line);padding:12px 16px 16px}.hardware-variants-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:4px;width:100%;font-size:12.5px;overflow:hidden}.hardware-variants-table th{text-align:left;font-family:var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--line);background:var(--sunken);padding:6px 8px;font-size:10px;font-weight:500}.hardware-variants-table th.r{text-align:right}.hardware-variants-table td{border-bottom:1px solid var(--line-s);padding:4px 8px}.hardware-variants-table td.r{text-align:right}.hardware-variants-table tr:last-child td{border-bottom:none}.hardware-variants-table input.text-input{width:100%;font-size:12px}.row-toggle-btn{border:1px solid var(--line);color:var(--ink-2);cursor:pointer;background:0 0;border-radius:4px;padding:4px 10px;font-family:inherit;font-size:11.5px}.row-toggle-btn:hover{background:var(--sunken);color:var(--ink)}.slab-sourcing-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin-bottom:12px}.slab-sourcing-card .card-header{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:0;padding:10px 12px;font-size:12px;font-weight:500}.slab-sourcing-card .card-body{border-top:1px solid var(--line);padding:4px 12px 12px}.slab-sourcing-grid{grid-template-columns:minmax(0,1fr);gap:8px;display:grid}.slab-sourcing-grid h4{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);margin:12px 0 4px;font-size:11px}.slab-sourcing-grid label{grid-template-columns:140px minmax(0,1fr);align-items:center;gap:8px;display:grid}.slab-sourcing-grid label>span{color:var(--ink-2);font-size:12px}.toast-viewport{z-index:1000;pointer-events:none;flex-direction:column-reverse;gap:10px;max-width:min(380px,100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--ink-3);color:var(--ink);border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;line-height:1.4;animation:.18s ease-out toast-in;display:flex;box-shadow:0 12px 32px #1f1d1a33}.toast-success{border-left-color:var(--green)}.toast-error{border-left-color:#c0463b}.toast-info{border-left-color:var(--ink-3)}.toast-icon{width:18px;height:18px;font-size:11px;font-weight:700;font-family:var(--mono);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:inline-flex}.toast-success .toast-icon{background:var(--green)}.toast-error .toast-icon{background:#c0463b}.toast-info .toast-icon{background:var(--ink-3)}.toast-message{word-break:break-word;flex:1;min-width:0}.toast-close{color:var(--ink-3);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.toast-close:hover{color:var(--ink)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.skeleton{background:linear-gradient(90deg, var(--line) 25%, var(--surface) 50%, var(--line) 75%);background-size:200% 100%;border-radius:6px;animation:1.3s ease-in-out infinite skeleton-shimmer;display:block}.skeleton-line{height:12px;margin:6px 0}.skeleton-row{border-radius:8px;height:44px;margin-bottom:8px}.skeleton-card{border-radius:12px;height:120px}.skeleton-page{max-width:1100px;margin:0 auto;padding:32px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.team-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.team-row{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:12px 16px;display:flex}.team-row:last-child{border-bottom:none}.team-row>div:first-child{flex:1}
