:root{--bg:#f4f6f8;--surface:#ffffff;--surface-muted:#f3f5f7;--surface-sunken:#eef1f4;--text:#1c2530;--text-soft:#56606b;--muted:#8a94a0;--line:#e7eaee;--line-strong:#d6dbe1;--primary:#0f7a63;--primary-strong:#0b5f4d;--primary-tint:#e7f4f0;--primary-tint-line:#bfe2d8;--primary-ink:#0a4d3c;--danger:#d63b30;--danger-tint:#fdeceb;--danger-line:#f4c7c3;--warning:#b06a08;--warning-tint:#fdf2e1;--success:#0f7a63;--focus:#2f6df6;--radius-sm:8px;--radius:10px;--radius-lg:14px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(20,30,45,0.06);--shadow-md:0 4px 16px rgba(20,30,45,0.08);--control-h:44px}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3{font-weight:650;letter-spacing:-.01em}.app-shell{min-height:100vh;display:grid;grid-template-columns:240px minmax(0,1fr)}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;margin-bottom:8px;border-bottom:1px solid var(--line)}.brand-mark{width:34px;height:34px;border-radius:9px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;flex:none}.brand-text{display:flex;flex-direction:column;line-height:1.25}.brand-text strong{font-size:16px}.brand-text span{color:var(--muted);font-size:12px}.nav{display:grid;grid-gap:2px;gap:2px;margin-top:4px}.nav a,.nav button{width:100%;border:0;color:var(--text-soft);background:transparent;display:flex;gap:11px;align-items:center;border-radius:var(--radius);padding:10px 12px;text-align:left;min-height:42px;font-size:14.5px;transition:background .12s ease,color .12s ease}.nav a:hover,.nav button:hover{background:var(--surface-muted);color:var(--text)}.nav a.active{background:var(--primary-tint);color:var(--primary-ink);font-weight:600}.nav .nav-spacer{margin-top:auto}.nav .nav-sep{height:1px;background:var(--line);margin:8px 6px}.main{min-width:0;padding:30px 34px 56px;max-width:1180px}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px}.page-header h1{margin:0 0 4px;font-size:26px;line-height:1.2}.page-header p{color:var(--muted);margin:0;font-size:14.5px}.stack{display:grid;grid-gap:18px;gap:18px}.stack-sm{display:grid;grid-gap:10px;gap:10px}.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:16px;gap:16px}.span-1{grid-column:span 1}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.card,.section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px}.card.flush,.section.flush{padding:0;overflow:hidden}.card h2,.section h2{margin:0 0 16px;font-size:17px;display:flex;align-items:center;gap:8px}.card h2 svg,.section h2 svg{color:var(--primary)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.section-head h2{margin:0}.subtitle{color:var(--muted);font-size:13.5px;margin:-8px 0 0}.metric{display:grid;grid-gap:6px;gap:6px;align-content:start}.metric .metric-label,.metric>span{color:var(--muted);font-size:13.5px}.metric .metric-label{display:flex;align-items:center;gap:7px}.metric strong{font-size:28px;font-weight:700;letter-spacing:-.02em}.metric.accent{background:var(--primary);border-color:var(--primary);color:#fff}.metric.accent .metric-label{color:rgba(255,255,255,.8)}.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:16px;gap:16px;align-items:end}.field{display:grid;grid-gap:7px;gap:7px;min-width:0}.field-label,.field>label{color:var(--text-soft);font-size:13px;font-weight:550;white-space:nowrap}.field .hint{color:var(--muted);font-size:12px}.field input,.field select,.field textarea,.input{width:100%;min-height:var(--control-h);border:1px solid var(--line-strong);border-radius:var(--radius);padding:10px 13px;background:var(--surface);color:var(--text);transition:border-color .12s ease,box-shadow .12s ease}.field input::placeholder,.field textarea::placeholder{color:var(--muted)}.field textarea{resize:vertical;min-height:84px}.field input:focus,.field select:focus,.field textarea:focus,.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.field input[readonly]{background:var(--surface-muted);color:var(--text-soft)}.button{border:1px solid var(--primary);border-radius:var(--radius);background:var(--primary);color:#fff;min-height:var(--control-h);padding:10px 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:14.5px;white-space:nowrap;transition:background .12s ease,border-color .12s ease,opacity .12s ease}.button:hover{background:var(--primary-strong);border-color:var(--primary-strong)}.button.secondary{background:var(--surface);color:var(--text);border-color:var(--line-strong)}.button.secondary:hover{background:var(--surface-muted);border-color:var(--line-strong)}.button.ghost{background:transparent;color:var(--primary);border-color:transparent}.button.ghost:hover{background:var(--primary-tint)}.button.danger{background:var(--danger);border-color:var(--danger)}.button.danger:hover{background:#b6322a;border-color:#b6322a}.button.small{min-height:36px;padding:7px 13px;font-size:13.5px}.button:disabled{cursor:not-allowed;opacity:.55}.icon-button{width:40px;min-width:40px;height:40px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-soft);padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;transition:background .12s ease,color .12s ease,border-color .12s ease}.icon-button:hover{background:var(--surface-muted);color:var(--text)}.icon-button.danger{color:var(--danger)}.icon-button.danger:hover{background:var(--danger-tint);border-color:var(--danger-line)}.icon-button:disabled{cursor:not-allowed;opacity:.55}.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.form-actions,.toolbar.end{justify-content:flex-end}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.form-actions.spread{justify-content:space-between}.form-grid>.form-actions{margin-top:4px}.segmented{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.segmented label{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:8px 14px;font-size:14px;color:var(--text-soft);border-left:1px solid var(--line);white-space:nowrap}.segmented label:first-child{border-left:0}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented label:has(input:checked){background:var(--primary-tint);color:var(--primary-ink);font-weight:600}.segmented label:has(input:focus-visible){box-shadow:inset 0 0 0 2px var(--primary)}.segmented button{border:0;border-left:1px solid var(--line);background:var(--surface);color:var(--text-soft);min-height:42px;padding:8px 14px;font-size:14px;white-space:nowrap}.segmented button:first-child{border-left:0}.segmented button.is-on{background:var(--primary-tint);color:var(--primary-ink);font-weight:600}.stepper{gap:0;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;height:var(--control-h)}.stepper,.stepper button{display:inline-flex;align-items:center}.stepper button{width:40px;height:100%;border:0;background:var(--surface);color:var(--text);font-size:19px;justify-content:center}.stepper button:hover{background:var(--surface-muted)}.stepper input{width:56px;height:100%;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);text-align:center;background:var(--surface);color:var(--text);-moz-appearance:textfield}.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper input:focus{outline:none}.switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{width:44px;height:26px;border-radius:var(--radius-pill);background:var(--line-strong);position:relative;transition:background .15s ease;flex:none}.switch .track:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .15s ease}.switch input:checked+.track{background:var(--primary)}.switch input:checked+.track:after{transform:translateX(18px)}.switch input:focus-visible+.track{box-shadow:0 0 0 3px var(--primary-tint)}.switch .switch-text{display:grid;grid-gap:1px;gap:1px}.switch .switch-text strong{font-size:14px;font-weight:600}.switch .switch-text span{font-size:12px;color:var(--muted)}.checkbox-group{border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:0}.checkbox-group legend{color:var(--text-soft);font-size:13px;font-weight:550;padding:0 6px}.checkbox-list{display:flex;flex-wrap:wrap;gap:10px}.checkbox-list label{min-height:42px;display:inline-flex;gap:9px;align-items:center;border:1px solid var(--line-strong);border-radius:var(--radius);padding:8px 14px 8px 12px;background:var(--surface);cursor:pointer;font-size:14px;line-height:1;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease}.checkbox-list label:hover{border-color:var(--line-strong);background:var(--surface-muted)}.checkbox-list input{position:absolute;opacity:0;width:0;height:0;margin:0}.checkbox-list label:before{content:"";flex:none;width:18px;height:18px;border:1.5px solid var(--line-strong);border-radius:6px;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;line-height:1;transition:background .12s ease,border-color .12s ease}.checkbox-list label:has(input:checked){background:var(--primary-tint);border-color:var(--primary-tint-line);color:var(--primary-ink);font-weight:550}.checkbox-list label:has(input:checked):before{content:"✓";background:var(--primary);border-color:var(--primary)}.checkbox-list label:has(input:focus-visible){border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.card.flush .table-wrap,.section.flush .table-wrap{border:0;border-radius:0}table{width:100%;border-collapse:collapse;background:var(--surface);font-size:14px}td,th{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{color:var(--text-soft);font-weight:600;white-space:nowrap;font-size:12.5px;letter-spacing:.01em}tbody tr:hover,th{background:var(--surface-muted)}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cell-strong{font-weight:600}.cell-nowrap{white-space:nowrap}.cell-sub{color:var(--muted);font-size:12.5px}.table-action-cell{width:1%;white-space:nowrap}.row-actions{display:flex;flex-wrap:wrap;gap:8px}.empty-row td{color:var(--muted);text-align:center;padding:32px 14px}.status{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12.5px;font-weight:600;white-space:nowrap}.status.ok{color:var(--primary-ink);background:var(--primary-tint)}.status.warn{color:var(--warning);background:var(--warning-tint)}.status.off{color:var(--text-soft);background:var(--surface-sunken)}.status.danger{color:var(--danger);background:var(--danger-tint)}.tag{display:inline-flex;padding:2px 9px;border-radius:var(--radius-pill);font-size:12px;background:var(--surface-sunken);color:var(--text-soft)}.message,.tag{align-items:center}.message{border-radius:var(--radius);padding:13px 15px;border:1px solid var(--line);background:var(--surface);margin-bottom:18px;display:flex;gap:10px;font-size:14px}.message.success{border-color:var(--primary-tint-line);background:var(--primary-tint);color:var(--primary-ink)}.message.error{border-color:var(--danger-line);background:var(--danger-tint);color:var(--danger)}.action-message{margin:0 0 14px}.form-grid>.action-message,.section.stack>.action-message,.stack>.action-message{grid-column:1/-1}.inline-form>.action-message,.row-actions>.action-message,.toolbar>.action-message{flex-basis:100%}.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.hint-block,.muted{color:var(--muted)}.hint-block{font-size:14px;padding:8px 0}.entry-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;grid-gap:14px;gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.entry-main{min-width:0}.entry-name{font-size:15px;font-weight:600}.entry-meta{color:var(--muted);font-size:12.5px;margin-top:2px}.entry-figure{display:grid;grid-gap:2px;gap:2px;text-align:right;min-width:64px}.entry-figure span{color:var(--muted);font-size:12px}.entry-figure strong{font-size:15px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.entry-figure strong.money{color:var(--primary)}.extra-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}.extra-row .field{flex:1 1 150px}.extra-row .field.grow{flex:2 1 210px}.extra-row .segmented,.extra-row .stepper{flex:0 0 auto}.extra-row .entry-figure{flex:0 0 auto;align-self:center}.entry-add{display:flex;align-items:center;justify-content:center;gap:9px;padding:14px;border:1px dashed var(--line-strong);border-radius:var(--radius-lg);background:var(--surface);color:var(--text-soft);font-size:14px;font-weight:550;width:100%}.entry-add:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-tint)}.entry-total-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 4px 4px;flex-wrap:wrap}.entry-total{font-size:14px;color:var(--text-soft);display:flex;align-items:baseline;gap:10px}.entry-total strong{font-size:26px;font-weight:700;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.record-editor{border:0;background:transparent}.record-editor>summary{list-style:none;cursor:pointer;color:var(--primary);font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;gap:6px;min-height:32px}.record-editor>summary::-webkit-details-marker{display:none}.record-editor[open]>summary{margin-bottom:14px}.editor-panel{border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-top:4px}.editor-panel,.editor-row-host{background:var(--surface-muted)}.editor-row-host>td{padding:0}.editor-row-host .editor-panel{border-radius:0;border-left:0;border-right:0;margin:0}.price-option-fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:0}.price-option-fieldset legend{color:var(--text-soft);font-size:13px;font-weight:550;padding:0 6px}.price-option-fieldset .stack{gap:10px}.price-option-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(140px,1fr) var(--control-h);grid-gap:10px;gap:10px;align-items:end}.price-option-remove{width:100%;height:var(--control-h)}.price-option-add-button{justify-self:start;margin-top:2px}.totals{display:flex;gap:22px;flex-wrap:wrap;color:var(--muted);font-size:14px}.totals strong{color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.import-panel{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding:16px;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-muted)}.import-copy h3{margin:0 0 3px;font-size:14.5px}.import-copy p{margin:0;color:var(--muted);font-size:13px}.import-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.import-form input[type=file]{max-width:240px}.subsection{border-top:1px solid var(--line);padding-top:18px;margin-top:4px}.subsection-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.subsection-heading h3{margin:0;font-size:15px}details.disclosure>summary{cursor:pointer;color:var(--primary);font-weight:600;min-height:32px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}.login-panel{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:32px}.login-brand{display:flex;align-items:center;gap:11px;margin-bottom:20px}.login-panel h1{margin:0 0 6px;font-size:22px}.login-panel .subtitle{margin:0 0 24px}.login-panel .stack{gap:16px}.icon-action-button{width:38px;min-width:38px;height:38px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text-soft);padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.icon-action-button:hover{background:var(--surface-muted);color:var(--text)}.icon-action-button.edit{color:var(--primary)}.icon-action-button.edit:hover{background:var(--primary-tint)}.icon-action-button.danger{color:var(--danger)}.icon-action-button.danger:hover{background:var(--danger-tint);border-color:var(--danger-line)}.icon-action-button:disabled{cursor:not-allowed;opacity:.55}.master-data-edit-cell,.product-edit-cell{background:var(--surface-muted)}.master-data-edit-cell{padding:16px}.product-edit-cell{padding:18px}.product-edit-form{align-items:flex-end}.master-data-name-cell{min-width:120px;font-weight:600}.compact-action-cell{width:1%;white-space:nowrap}.compact-action-cell>.row-actions,.table-action-cell>.row-actions{flex-wrap:nowrap;gap:6px}.product-inventory-summary,.product-price-summary{min-width:190px;max-width:340px}.batch-import-panel{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;padding:16px;margin-bottom:18px;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-muted)}.batch-import-copy{flex:1 1 220px}.batch-import-copy h3{margin:0 0 3px;font-size:14.5px}.batch-import-copy p{margin:0;color:var(--muted);font-size:13px}.batch-import-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center;flex:2 1 360px}.batch-import-file{flex:1 1 220px}@media (max-width:980px){.app-shell{display:block}.sidebar{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}.brand{border-bottom:0;margin:0;padding:4px 8px;width:100%}.nav{grid-auto-flow:column;grid-auto-columns:max-content;overflow-x:auto;width:100%}.nav .nav-spacer{margin:0}.nav .nav-sep{display:none}.main{padding:22px}.span-1,.span-2,.span-3,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 6}}@media (max-width:720px){body{font-size:14.5px}.page-header{flex-direction:column;align-items:stretch}.form-grid{grid-template-columns:1fr}.field,.span-1,.span-12,.span-2,.span-3,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:1/-1}.entry-row,.entry-row.editable{grid-template-columns:1fr 1fr;gap:12px}.entry-main{grid-column:1/-1}.price-option-row{grid-template-columns:1fr}.card,.main,.section{padding:16px}}