:root{--brand: #ef7a00;--brand-strong: #c25f00;--brand-tint: #fff1e3;--ink: #1e2329;--ink-soft: #5b6470;--line: #d5d9de;--canvas: #eef0f2;--surface: #ffffff;--danger: #b42318;--radius: 4px;--font: "IBM Plex Sans", "Segoe UI", system-ui, -apple-system, sans-serif;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:14px/1.45 var(--font);color:var(--ink);background:var(--canvas)}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand-strong);outline-offset:1px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.muted{color:var(--ink-soft)}code{font-size:.9em;background:var(--canvas);padding:0 4px;border-radius:3px}.btn-primary,.btn-secondary{border-radius:var(--radius);padding:8px 18px;cursor:pointer;font-weight:600}.btn-primary{background:var(--brand-strong);color:#fff;border:1px solid var(--brand-strong)}.btn-primary:hover:not(:disabled){background:#a65100}.btn-primary:disabled{opacity:.6;cursor:default}.btn-secondary{background:var(--surface);border:1px solid var(--line)}.btn-secondary:hover{border-color:var(--ink-soft)}.icon-btn{background:none;border:0;font-size:18px;padding:4px 8px;cursor:pointer;color:inherit}.form-error{color:var(--danger);margin:0}.login-page{min-height:100%;display:flex;flex-direction:column;background:var(--surface)}.login-banner{background:var(--brand);color:#fff;text-align:center;padding:14px 16px;font-weight:700;font-size:18px;letter-spacing:.02em}.login-main{flex:1;display:grid;place-items:center;padding:24px 16px}.login-card{width:100%;max-width:420px;display:grid;gap:14px;padding:28px;border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius)}.login-card h1{margin:0 0 4px;font-size:22px}.login-card label{display:grid;gap:4px;font-weight:500;font-size:13px}.login-card input,.login-card select{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:15px}.login-card input:focus,.login-card select:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 2px var(--brand-tint)}.login-card .btn-primary{height:42px;margin-top:4px}.login-footer{display:flex;flex-direction:column;align-items:center;gap:2px;padding:16px;font-size:13px;color:var(--ink-soft)}.shell{height:100%;display:grid;grid-template-rows:auto auto auto 1fr auto}.topbar{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--brand);color:#fff}.topbar-firm{font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-session select{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.5);border-radius:var(--radius);padding:3px 6px}.topbar-session option{color:var(--ink)}.topbar-user{font-weight:500}.topbar-logout{background:none;border:1px solid rgba(255,255,255,.6);color:#fff;border-radius:var(--radius);padding:3px 10px;cursor:pointer}.topbar-logout:hover{background:#ffffff26}.menu-toggle{display:none;color:#fff}.menubar{display:flex;flex-wrap:wrap;background:var(--surface);border-bottom:1px solid var(--line);padding:0 6px;position:relative;z-index:20}.menubar-item{position:relative}.menubar-btn{background:none;border:0;padding:8px 12px;cursor:pointer;font-weight:500}.menubar-btn:hover,.menubar-btn.is-open{background:var(--brand-tint);color:var(--brand-strong)}.dropdown{position:absolute;top:100%;left:0;min-width:230px;margin:0;padding:4px 0;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);box-shadow:0 6px 16px #1e23291f}.dropdown li{position:relative}.dropdown button{width:100%;display:flex;justify-content:space-between;gap:16px;text-align:left;background:none;border:0;padding:7px 14px;cursor:pointer;white-space:nowrap}.dropdown button:hover,.dropdown li:focus-within>button{background:var(--brand-tint);color:var(--brand-strong)}.dropdown .dropdown{display:none;top:-5px;left:100%;border-radius:var(--radius)}.dropdown li.has-sub:hover>.dropdown,.dropdown li.has-sub:focus-within>.dropdown{display:block}.caret{color:var(--ink-soft)}.tabstrip{display:flex;gap:2px;padding:6px 8px 0;overflow-x:auto;background:var(--canvas);border-bottom:1px solid var(--line)}.tab{display:flex;align-items:center;background:#e2e5e9;border:1px solid var(--line);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;flex-shrink:0}.tab.is-active{background:var(--surface);box-shadow:inset 0 2px 0 var(--brand)}.tab-title{background:none;border:0;padding:6px 10px;cursor:pointer;white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.tab.is-active .tab-title{font-weight:600}.tab-close{background:none;border:0;padding:4px 8px 4px 0;cursor:pointer;color:var(--ink-soft);font-size:16px;line-height:1}.tab-close:hover{color:var(--danger)}.workspace{overflow:auto;background:var(--surface)}.tabpanel{padding:16px}.statusbar{display:flex;justify-content:space-between;gap:12px;padding:4px 12px;font-size:12px;color:var(--ink-soft);background:var(--canvas);border-top:1px solid var(--line)}.home h2{margin:0 0 4px}.home p{max-width:70ch}.empty-state{max-width:60ch;padding:24px 8px}.empty-state h2{margin-top:0;font-size:18px}button:disabled{cursor:default}.btn-secondary:disabled{opacity:.55}.btn-danger:not(:disabled){color:var(--danger)}.btn-danger:hover:not(:disabled){border-color:var(--danger)}.form-ok{color:#1a7f37;margin:0}.master{display:grid;grid-template-columns:minmax(280px,440px) minmax(260px,1fr);grid-template-rows:auto 1fr;gap:12px 20px;max-width:1100px}.master-title{grid-column:1 / -1;margin:0;font-size:18px;padding-bottom:6px;border-bottom:2px solid var(--brand)}.form-panel{display:grid;gap:12px;align-content:start}.field{display:grid;gap:4px;font-weight:500;font-size:13px}.field abbr{color:var(--danger);text-decoration:none}.field input,.field select,.field textarea,.grid-search{padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font:inherit;font-size:15px}.field input,.field select,.grid-search{height:36px}.field textarea{resize:vertical}.field input.num{text-align:right;max-width:200px}.field input.date{max-width:200px}.field input.readonly{background:var(--canvas);color:var(--ink-soft);max-width:200px}.data-grid td.num,.data-grid th.num{text-align:right;font-variant-numeric:tabular-nums}.field-check{display:flex;align-items:center;gap:8px;font-weight:500;font-size:14px;min-height:36px}.field-check input{width:18px;height:18px;accent-color:var(--brand-strong)}.field input:focus,.field select:focus,.field textarea:focus,.grid-search:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 2px var(--brand-tint)}.btn-row{display:flex;flex-wrap:wrap;gap:8px}.link-btn{background:none;border:0;padding:0 0 0 10px;color:var(--brand-strong);cursor:pointer;font-size:12px;text-decoration:underline}.checklist{border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px 8px;margin:0;display:flex;flex-wrap:wrap;gap:2px 18px}.checklist legend{padding:0 4px;font-weight:500;font-size:13px}.checklist .field-check{min-height:30px}.form-panel.is-wide>.checklist{grid-column:1 / -1}.line-block{grid-column:1 / -1}.cell-input{width:100%;min-width:70px;padding:4px 6px;border:1px solid var(--line);border-radius:var(--radius);font:inherit}.cell-input.num{text-align:right;max-width:110px}.cost-summary{display:flex;flex-wrap:wrap;gap:8px 24px;padding:10px 12px;background:var(--brand-tint);border-radius:var(--radius)}.cost-summary strong{margin-left:6px;font-variant-numeric:tabular-nums}.line-entry .field.size-cell{flex:0 0 64px;min-width:64px}.line-entry .field.size-cell input.num{width:100%;max-width:none}.size-total{align-self:end;margin:0 0 8px}.size-total.is-off{color:var(--danger, #b42318)}.cell-input.size-input{max-width:64px;min-width:48px}.line-grid{display:grid;gap:8px}.line-entry{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px}.line-entry .field{min-width:110px}.line-entry .field.grow{flex:1 1 260px}.line-entry .field input.num{max-width:120px}.line-actions{white-space:nowrap;text-align:right}.link-btn.danger{color:var(--danger)}.data-grid tfoot td{border-top:2px solid var(--line);background:var(--canvas)}.form-section{margin:6px 0 -4px;font-size:14px;color:var(--brand-strong);border-bottom:1px solid var(--line);padding-bottom:2px}.master.is-wide{grid-template-columns:1fr;max-width:980px}.form-panel.is-wide{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}.form-panel.is-wide>.form-section,.form-panel.is-wide>.btn-row,.form-panel.is-wide>p,.form-panel.is-wide>.field:has(textarea){grid-column:1 / -1}.grid-panel{display:grid;gap:8px;align-content:start;min-width:0}.grid-scroll{overflow:auto;max-height:60vh;border:1px solid var(--line);border-radius:var(--radius)}.data-grid{width:100%;border-collapse:collapse}.data-grid th{position:sticky;top:0;background:var(--canvas);text-align:left;font-weight:600;font-size:13px}.data-grid th,.data-grid td{padding:7px 10px;border-bottom:1px solid var(--line)}.data-grid tbody tr[tabindex]{cursor:pointer}.data-grid tbody tr[tabindex]:hover{background:var(--brand-tint)}.data-grid tbody tr.is-selected{background:var(--brand-tint);box-shadow:inset 3px 0 0 var(--brand)}.pager{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.pager .btn-secondary{padding:4px 10px;font-weight:500}.pager-pos{margin:0 8px}@media (max-width: 700px){.master,.form-panel.is-wide{grid-template-columns:1fr}.btn-row>button{flex:1 1 40%;height:42px}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e232966;z-index:50}.drawer{position:absolute;inset:0 auto 0 0;width:min(320px,86vw);background:var(--surface);overflow-y:auto}.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--brand);color:#fff}.tree{list-style:none;margin:0;padding:0 0 0 10px}.drawer>.tree{padding:4px 0}.tree summary,.tree button{display:block;width:100%;text-align:left;padding:10px 14px;background:none;border:0;cursor:pointer}.tree summary{font-weight:600}.tree button:hover,.tree summary:hover{background:var(--brand-tint)}@media (max-width: 900px){.menubar{display:none}.menu-toggle{display:inline-block}.topbar{flex-wrap:wrap}.topbar-user{display:none}.tabpanel{padding:12px}}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.report{display:grid;gap:12px;max-width:1400px;min-width:0}.report-tabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line)}.report-tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:8px 14px;cursor:pointer;font:inherit;color:var(--ink-soft);white-space:nowrap}.report-tabs button.is-active{color:inherit;font-weight:600;border-bottom-color:var(--brand)}.report-filters{display:grid;gap:12px}.report-filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 16px;align-items:end}.report-dates{display:grid;grid-template-columns:1fr 1fr;gap:8px;grid-column:span 2}.report-dates .field input.date{max-width:none}.report-grid{max-height:65vh}.report-grid td{white-space:nowrap}.th-sort{background:none;border:0;padding:0;font:inherit;font-weight:600;cursor:pointer;color:inherit;text-align:inherit;width:100%;white-space:nowrap}@media (max-width: 640px){.report-dates{grid-column:auto}.report-filter-grid{grid-template-columns:1fr}}.print-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#6b7280;overflow:auto}.print-toolbar{position:sticky;top:0;display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}.print-toolbar select{height:34px}.print-pages{padding:16px;display:grid;justify-content:center;gap:16px}.inv-page{width:210mm;height:297mm;padding:10mm 8mm;box-sizing:border-box;background:#fff;color:#000;font:9pt Arial,Helvetica,sans-serif;display:flex;flex-direction:column;box-shadow:0 2px 10px #00000059}.inv-title{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;margin-bottom:3mm}.inv-title strong{font-size:13pt}.inv-copy{justify-self:end;font-weight:700;margin-right:22mm}.inv-box{width:100%;border-collapse:collapse;table-layout:fixed;border:1px solid #000}.inv-box+.inv-box{border-top:0}.inv-box td,.inv-box th{border:1px solid #000;padding:1.5mm;vertical-align:top;overflow-wrap:anywhere}.inv-head td{line-height:1.35;height:13mm}.inv-firm{padding-left:4mm!important}.inv-lines{flex:1}.inv-lines th{font-weight:700;text-align:center;vertical-align:middle}.inv-lines tbody td{border-top:0;border-bottom:0;font-size:8pt;padding-top:3mm}.inv-lines thead tr,.inv-lines tbody tr:not(.inv-filler),.inv-lines tfoot tr{height:1px}.inv-lines tbody tr.inv-filler td{padding:0}.inv-lines tfoot td{height:8mm;vertical-align:middle;font-size:8pt}.inv-lines .r,.inv-sum .r{text-align:right}.inv-lines .c{text-align:center}.inv-sum td{border-top:0}.inv-words{height:9mm}.inv-labels,.inv-values{font-size:10pt;line-height:1.9}.inv-foot td{height:30mm;font-size:8pt;line-height:1.35}.inv-sign{text-align:center;vertical-align:bottom!important;font-size:10pt}@media print{@page{size:A4;margin:0}body>*:not(.print-root){display:none!important}.print-root{position:static;overflow:visible;background:none}.print-toolbar{display:none}.print-pages{padding:0;display:block}.inv-page{box-shadow:none;page-break-after:always;break-after:page}.inv-page:last-child{page-break-after:auto;break-after:auto}}.rpt-sheet{width:194mm;min-height:277mm;padding:8mm;box-sizing:content-box;background:#fff;color:#000;font-family:Arial,Helvetica,sans-serif;box-shadow:0 2px 10px #00000059}.rpt-sheet.is-landscape{width:277mm;min-height:190mm}.rpt-head{text-align:center;margin-bottom:4mm}.rpt-firm{font-size:1.5em;font-weight:700}.rpt-title{font-size:1.25em;font-weight:700;margin-top:1mm}.rpt-sub{margin-top:1mm}.rpt-table{width:100%;border-collapse:collapse}.rpt-table th,.rpt-table td{border:1px solid #000;padding:1mm 1.5mm;text-align:left;vertical-align:top}.rpt-table th{background:#e5e7eb;font-weight:700}.rpt-table .r{text-align:right;white-space:nowrap}.rpt-table tr{break-inside:avoid;page-break-inside:avoid}.rpt-total td{font-weight:700;background:#f3f4f6}.rpt-foot{margin-top:3mm;font-size:.85em;text-align:right}@media print{.rpt-sheet{width:auto;min-height:0;padding:0;box-shadow:none}.rpt-table thead{display:table-header-group}.rpt-table th,.rpt-total td{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
