:root{--color-bg:#eef1f8;--color-surface:#ffffff;--color-surface-alt:#f6f8fc;--color-row-stripe:#e8ebf0;--color-row-hover:#c9d3f6;--color-border:#dbe1ec;--color-text:#1c2333;--color-text-muted:#4a5468;--color-date-empty:#9aa3b5;--color-primary:#4338ca;--color-primary-hover:#362da3;--color-primary-light:#eef0fd;--color-grid-header-bg:#dbdff8;--color-detail-header-bg:#f1f2f4;--color-grid-header-border:#aeb5e2;--color-secondary:#0e7490;--color-secondary-light:#ecfeff;--color-danger:#dc2626;--color-danger-light:#fef2f2;--color-success:#15803d;--color-success-light:#f0fdf4;--color-badge-delivery:#166534;--color-badge-delivery-light:#dcfce7;--color-warning:#b45309;--color-warning-light:#fffbeb;--color-nav-bg:#201a5c;--color-nav-bg-accent:#4338ca;--color-nav-text:#e6e4fb;--color-nav-text-active:#ffffff;--font-sans:"Segoe UI","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;--shadow-sm:0 1px 2px rgba(23,24,45,0.06);--shadow-md:0 4px 12px rgba(23,24,45,0.08)}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:14px}a{color:var(--color-primary)}button{font-family:inherit;cursor:pointer}.btn,h1{color:var(--color-text)}.btn{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);font-size:13px;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.btn:hover{background:var(--color-surface-alt);border-color:#c6cede}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-secondary-light);border-color:#a5e4ef;color:var(--color-secondary)}.btn-secondary:hover{background:#d7f7fc}.btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.btn-sm{padding:2px 8px;font-size:11px;line-height:1.3}.page{max-width:1900px;margin:0 auto;padding:20px 16px 48px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:16px;box-shadow:var(--shadow-sm)}.field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:12px 16px;gap:12px 16px}.field-grid-break{grid-column:1/-1;height:0;margin:0}.field-span-2{grid-column:span 2}input[type=date]{min-width:132px}.field input[type=date]{min-width:150px}input[type=date][value=""]:not(:focus):not([disabled]):not([readonly]){color:var(--color-date-empty)}input[type=date][value=""]:not(:focus):not([disabled]):not([readonly])::-webkit-datetime-edit{color:inherit}input[type=number]{text-align:right}.field label{font-size:12px;font-weight:600;color:var(--color-text-muted);margin-bottom:4px}.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea{width:100%;padding:6px 8px;border:1px solid var(--color-border);border-radius:5px;font-size:13px;background:var(--color-surface);color:var(--color-text);transition:border-color .12s ease,box-shadow .12s ease}.field input:not([type=checkbox]):not([type=radio]):focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}input[type=checkbox],input[type=radio]{accent-color:var(--color-primary)}.field input[type=checkbox],.field input[type=radio]{width:auto}.field label{display:block}.field label:has(>input[type=checkbox]),.field label:has(>input[type=radio]){display:inline-flex;align-items:center;gap:4px;margin-bottom:0;font-weight:400;color:var(--color-text)}.field input:disabled,.field input[readonly]{background:var(--color-surface-alt);color:var(--color-text-muted)}.error-text{color:var(--color-danger);font-size:12px;margin-top:2px}.totals-bar{display:flex;gap:24px;justify-content:flex-start;padding:14px 18px;background:var(--color-primary-light);border:1px solid #d6d5f7;border-left:4px solid var(--color-primary);border-radius:8px;margin-top:12px}.totals-bar div{min-width:132px;text-align:center}.totals-bar .label{font-size:12px;color:var(--color-text-muted)}.totals-bar .value{font-size:16px;font-weight:700;color:var(--color-primary-hover);text-align:center}nav.app-nav{display:flex;gap:4px;align-items:center;padding:0 20px;height:52px;background:linear-gradient(180deg,var(--color-nav-bg) 0,#17123f 100%);border-bottom:3px solid var(--color-nav-bg-accent);box-shadow:var(--shadow-md)}nav.app-nav a{color:var(--color-nav-text);text-decoration:none;font-size:13px;font-weight:500;padding:8px 12px;border-radius:6px;transition:background-color .12s ease,color .12s ease}nav.app-nav a:hover{color:var(--color-nav-text-active);background:rgba(255,255,255,.1)}.nav-menu{position:relative}.nav-menu-trigger{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-family:inherit;line-height:inherit;padding:8px 12px;border:none;border-radius:6px;cursor:pointer;transition:background-color .12s ease,color .12s ease}.nav-menu-trigger:hover{color:var(--color-nav-text-active);background:rgba(255,255,255,.1)}.nav-menu-caret{font-size:10px}.nav-menu-panel{position:absolute;top:calc(100% + 6px);left:0;min-width:190px;padding:6px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-md);z-index:900}nav.app-nav .nav-menu-panel a{display:block;padding:8px 10px;border-radius:6px;font-size:13px;color:var(--color-text);white-space:nowrap}nav.app-nav .nav-menu-panel a:hover{background:var(--color-grid-header-bg);color:var(--color-text)}nav.app-nav .nav-menu-panel a.is-active{font-weight:700;background:var(--color-grid-header-bg)}.nav-menu-sep{height:1px;margin:5px 6px;background:var(--color-border)}nav.app-nav .btn{background:transparent;border-color:rgba(255,255,255,.35);color:var(--color-nav-text)}nav.app-nav .btn:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.5)}.spacer{flex:1 1}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.badge-estimate{background:var(--color-secondary-light);color:var(--color-secondary)}.badge-delivery{background:var(--color-badge-delivery-light);color:var(--color-badge-delivery)}.badge-invoice{background:var(--color-warning-light);color:var(--color-warning)}.badge-delivery-invoice{background:var(--color-primary-light);color:var(--color-primary)}.ag-theme-quartz.compact-grid{--ag-font-size:12px;--ag-row-height:28px;--ag-header-height:30px;--ag-cell-horizontal-padding:8px;--ag-grid-size:4px;--ag-header-background-color:var(--color-grid-header-bg);--ag-header-foreground-color:var(--color-primary-hover);--ag-odd-row-background-color:var(--color-surface-alt);--ag-row-hover-color:var(--color-row-hover);--ag-selected-row-background-color:#dcdffa;--ag-border-color:var(--color-border);--ag-cell-horizontal-border:1px solid var(--color-border);--ag-header-column-resize-handle-display:block;--ag-header-column-resize-handle-color:var(--color-grid-header-border);--ag-header-column-resize-handle-height:100%;--ag-header-column-resize-handle-width:1px;--ag-foreground-color:var(--color-text);--ag-secondary-foreground-color:var(--color-text-muted);--ag-data-color:var(--color-text);--ag-range-selection-border-color:var(--color-primary)}.compact-grid .ag-header-cell .ag-header-cell-label{justify-content:center}.compact-grid .ag-header-cell.ag-right-aligned-header .ag-header-cell-label{flex-direction:row}.edit-table{border-collapse:collapse;width:100%;background:var(--color-surface)}.edit-table td,.edit-table th{border:1px solid var(--color-border);padding:4px 6px;text-align:center;vertical-align:middle}.edit-table th{background:var(--color-grid-header-bg);font-weight:600;font-size:12px}.edit-table td input:not([type]),.edit-table td input[type=text]{padding:2px 4px;font-size:12px}.edit-table tbody tr:nth-child(odd) td{background:rgba(0,0,0,.015)}.nav-customer{display:flex;align-items:center;gap:6px;margin-right:10px;font-size:12px;color:var(--color-nav-text);white-space:nowrap}.nav-customer select{height:26px;max-width:200px;padding:0 6px;font-size:12px;border-radius:4px;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff}.nav-customer select option{color:var(--color-text);background:var(--color-surface)}.ag-theme-quartz.compact-grid.group-stripe{--ag-odd-row-background-color:var(--color-surface)}.compact-grid.group-stripe .ag-row.group-alt{background-color:var(--color-row-stripe)}.compact-grid.group-stripe .ag-row.group-alt .ag-cell.merged-cell-span{background:var(--color-row-stripe)}.compact-grid.group-stripe .ag-row.ag-row-hover .ag-cell.merged-cell-span{background:var(--ag-row-hover-color)}.compact-grid .ag-cell.merged-cell{align-items:flex-start;z-index:1;border-top:1px solid var(--ag-border-color,var(--color-border));box-shadow:0 1px 0 0 var(--color-surface)}.compact-grid .ag-cell.merged-cell-span{background:var(--color-surface)}.compact-grid .ag-cell.merged-cell-covered{visibility:hidden;border-color:transparent}.row-move{display:flex;align-items:center;gap:2px;white-space:nowrap}.row-move-no{min-width:18px;text-align:right;font-size:11px;color:var(--color-text-muted)}.row-move-btn{width:20px;height:20px;padding:0;font-size:9px;line-height:1;cursor:pointer;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:3px}.row-move-btn:hover:not(:disabled){background:var(--color-grid-header-bg)}.row-move-btn:disabled{color:var(--color-border);cursor:default}.row-drag-handle{padding:0 2px;font-size:12px;line-height:1;color:var(--color-text-muted);cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.row-drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.detail-row-dragging>td{opacity:.45}.detail-row-drop-before>td{box-shadow:inset 0 2px 0 0 var(--color-primary)}.detail-row-drop-after>td{box-shadow:inset 0 -2px 0 0 var(--color-primary)}.selection-order-no{display:inline-block;min-width:16px;margin-left:4px;padding:0 3px;font-size:10px;font-weight:700;line-height:15px;text-align:center;color:#fff;background:var(--color-primary);border-radius:8px}.selection-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;padding:6px 8px;background:var(--color-grid-header-bg);border:1px solid var(--color-border);border-radius:4px}.selection-strip-title{font-size:11px;font-weight:700;color:var(--color-text-muted)}.selection-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 2px;font-size:11px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px}.selection-chip-no{display:inline-block;min-width:16px;padding:0 3px;font-weight:700;line-height:15px;text-align:center;color:#fff;background:var(--color-primary);border-radius:8px}.selection-chip-remove{padding:0 2px;font-size:12px;line-height:1;cursor:pointer;color:var(--color-text-muted);background:none;border:none}.selection-chip-remove:hover{color:var(--color-danger)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.edit-mode-fieldset{min-width:0;margin:0;padding:0;border:none}.edit-mode-fieldset:disabled input,.edit-mode-fieldset:disabled select,.edit-mode-fieldset:disabled textarea{color:var(--color-text);background:var(--color-grid-header-bg);cursor:default;opacity:1}.edit-mode-fieldset:disabled .btn{opacity:.55;cursor:default}.view-mode-bar{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:13px;background:var(--color-grid-header-bg);border:1px solid var(--color-border);border-radius:4px}.view-mode-bar .view-mode-note{color:var(--color-text-muted)}.link-button{padding:0;font:inherit;color:var(--color-primary);text-decoration:underline;cursor:pointer;background:none;border:none}.link-button:hover{opacity:.75}.field-readonly input,.field-readonly select,.field-readonly textarea{background:var(--color-grid-header-bg)!important;color:var(--color-text)!important;opacity:1!important;cursor:default}.field-legend{margin-bottom:10px;padding:6px 10px;font-size:12px;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px}.field-legend-swatch{display:inline-block;width:22px;height:14px;margin-right:6px;vertical-align:-2px;border:1px solid var(--color-border);border-radius:3px}.detail-cell-computed,.field-legend-swatch{background:var(--color-grid-header-bg)}.permission-table{width:100%;border-collapse:collapse;font-size:13px}.permission-table td,.permission-table th{border-bottom:1px solid var(--color-border);padding:6px 8px}.permission-table th{font-weight:600;font-size:12px;color:var(--color-text-muted);white-space:nowrap}.permission-table tbody tr:hover{background:var(--color-row-hover,rgba(0,0,0,.03))}.price-group-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px;margin-top:14px}.price-group{flex:0 0 auto;border:1px solid var(--color-border);border-radius:6px;padding:6px}.price-group-title{font-size:12px;font-weight:600;color:var(--color-text-muted);margin-bottom:6px}.price-group .field-grid{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 12px}.price-group .field label{white-space:nowrap}.price-notes{display:flex;flex-wrap:wrap;gap:16px 32px;margin-top:14px;font-size:12px;color:var(--color-text-muted)}.price-notes>div{flex:1 1 280px}.price-notes ul{margin:4px 0 0;padding-left:18px}.price-notes p{margin:4px 0 0}.tag-slip-product-grid{display:grid;align-items:end;grid-gap:10px 12px;gap:10px 12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}@media (min-width:1200px){.tag-slip-product-grid{grid-template-columns:140px 2.4fr 1.6fr 1fr .8fr .8fr 1.2fr 1fr 1fr}}.tag-slip-compact-grid{display:grid;align-items:end;justify-content:start;grid-gap:10px 12px;gap:10px 12px;grid-template-columns:repeat(auto-fit,150px)}.tag-slip-price-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px 20px}.tag-slip-price-row .tag-slip-compact-grid{grid-template-columns:repeat(5,96px)}.tag-slip-price-left{flex:0 0 auto;width:528px}.tag-slip-price-right{flex:0 0 auto}.price-group-plain{border-color:transparent}.tag-slip-price-row>.price-group-row{margin-top:0}.tag-slip-compact-grid .field-wide{grid-column:span 2}.tag-slip-product-grid input[type=date],.tag-slip-work-table input[type=date]{min-width:0}.tag-slip-work-table{width:auto;border-collapse:collapse;font-size:12px}.tag-slip-work-table td,.tag-slip-work-table th{border:1px solid var(--color-border);padding:2px;white-space:nowrap}.tag-slip-work-table input,.tag-slip-work-table select{width:100%;min-width:0;border:none;padding:2px;font-size:12px}.tag-slip-related-table{width:auto}.tag-slip-work-table tfoot .work-total-label{border:none;background:none;text-align:right;color:var(--color-text-muted);padding-right:8px}.tag-slip-remarks{width:892px;max-width:100%}.tag-slip-note{margin:8px 0 0;font-size:12px;color:var(--color-text-muted)}.tag-slip-note ul{margin:4px 0 0;padding-left:18px}.tag-slip-note-inline{flex:1 1;min-width:0;margin:0;align-self:flex-end;line-height:1.35}.row-add-remove{display:flex;gap:4px;justify-content:center}.row-add-remove .btn{padding:1px 6px;line-height:1.4;white-space:nowrap}.row-get-clear{display:flex;align-items:center;gap:4px;white-space:nowrap}.row-get-clear-value{flex:1 1 auto;min-width:90px;padding:2px 4px}.row-get-clear .btn{padding:1px 6px;line-height:1.4}.daily-report-price-note{margin-top:10px;font-size:12px;color:var(--color-text-muted);line-height:1.7}.daily-report-price-note .indent-1{padding-left:1.5em}.daily-report-price-note .indent-2{padding-left:3em}.table-total-row td{font-weight:600;background:var(--color-surface-alt);height:34px;padding:6px 6px 14px}.table-total-extra{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-top:10px}.table-total-extra>.field{width:170px}.table-total-note{margin:0 0 6px;font-size:12px;color:var(--color-text-muted)}.daily-report-list-table{width:max-content;min-width:100%}.daily-report-tag-table{width:auto;border-collapse:collapse;font-size:12px}.daily-report-tag-table td,.daily-report-tag-table th{border:1px solid var(--color-border);padding:2px;vertical-align:top}.daily-report-tag-table th{white-space:nowrap;padding:4px}.daily-report-tag-table input,.daily-report-tag-table select{width:100%;min-width:0;border:none;padding:2px;font-size:12px}.tag-date-picker{display:flex;align-items:center;gap:6px}.tag-date-picker input[type=date]{flex:1 1 auto;min-width:0}.tag-date-picker .btn{flex:0 0 auto;white-space:nowrap}.search-field-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 16px}.search-field-row>.field{flex:0 0 auto;max-width:100%}.search-actions{display:flex;gap:8px;margin-top:10px}.list-table tbody tr.group-alt>td{background:var(--color-row-stripe)}.list-table tbody tr:hover>td{background:var(--color-row-hover)}.list-table th{font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;font-weight:500;color:var(--color-primary-hover);text-align:center;height:30px;border-color:var(--color-grid-header-border)}.list-table th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.list-table th.sortable:hover{background:var(--color-surface-alt)}.list-table th .sort-mark:before{font-family:agGridQuartz;font-size:16px;font-weight:400;font-style:normal;color:rgba(28,35,51,.9);-webkit-font-smoothing:antialiased;line-height:16px;vertical-align:-3px;margin-left:2px}.list-table th .sort-mark[data-order=asc]:before{content:"\f103"}.list-table th .sort-mark[data-order=desc]:before{content:"\f110"}.list-table .col-action{position:-webkit-sticky;position:sticky;right:0;z-index:2;background:var(--color-surface);box-shadow:-1px 0 0 var(--color-border),inset 1px 0 0 var(--color-border)}.list-table thead .col-action{z-index:3;background:var(--color-grid-header-bg)}.list-table tbody tr>.col-action{background:var(--color-surface)}.list-table tbody tr.group-alt>.col-action{background:var(--color-row-stripe)}.list-table tbody tr:hover>.col-action{background:var(--color-row-hover)}.tag-slip-related-table th{background:var(--color-detail-header-bg)}.project-form .field-grid{grid-template-columns:repeat(auto-fill,minmax(140px,170px));justify-content:start;gap:10px 12px}.project-form .field-grid .field-wide{grid-column:span 2}.ihi-estimate-grid{grid-template-columns:repeat(auto-fill,minmax(130px,150px));justify-content:start}.ihi-estimate-grid .field-remarks{grid-column:span 3}.breakdown-sum-grid{grid-template-columns:repeat(auto-fill,minmax(130px,150px));justify-content:start}.breakdown-sum-grid .field-remarks{grid-column:span 3}