:root{--bg: #f6f5f0;--surface: #ffffff;--surface-2: #f0efe8;--text: #1f2a1f;--muted: #667066;--border: #dcdcd2;--primary: #2f6b3a;--primary-hover: #25562e;--primary-soft: #e3efe0;--on-primary: #ffffff;--danger: #b3261e;--demo-bg: #fff3c4;--demo-text: #6b5300;--green: #2e7d32;--yellow: #b58100;--red: #c62828;--radius: 10px;--shadow: 0 1px 2px rgb(0 0 0 / 6%), 0 4px 16px rgb(0 0 0 / 6%);--font: "Inter", "Noto Sans Khmer", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #141814;--surface: #1d221d;--surface-2: #252b25;--text: #e6ebe4;--muted: #9aa59a;--border: #343b34;--primary: #6fbf7a;--primary-hover: #86cf90;--primary-soft: #23382a;--on-primary: #0e1a10;--danger: #ff8a80;--demo-bg: #3d3410;--demo-text: #f5dc7a;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.45;-webkit-text-size-adjust:100%}:lang(km) body,html[lang=km] body{line-height:1.7}h1{font-size:1.5rem;margin:0}h2{font-size:1.15rem;margin:0}.muted{color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.error-text{color:var(--danger);font-size:.875rem;margin:4px 0 0}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:9px 11px;min-height:42px;width:100%}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:0 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:600}.btn-primary:hover{background:var(--primary-hover)}.btn-ghost{background:transparent}.btn-small{min-height:34px;padding:0 10px;font-size:.85rem}.icon-btn{border:0;background:transparent;font-size:1.6rem;line-height:1;cursor:pointer;padding:4px 8px;color:var(--muted)}.demo-banner{background:var(--demo-bg);color:var(--demo-text);font-size:.85rem;font-weight:600;text-align:center;padding:6px 16px}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-weight:700}.nav{display:flex;gap:4px;flex:1}.nav-link{display:flex;align-items:center;gap:6px;padding:8px 12px;border-radius:8px;color:var(--muted);text-decoration:none;font-weight:500}.nav-link:hover{background:var(--surface-2)}.nav-link.active{background:var(--primary-soft);color:var(--primary)}.topbar-tools{display:flex;align-items:center;gap:8px}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.segmented button{border:0;background:transparent;padding:0 12px;min-height:38px;cursor:pointer}.segmented button[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}.role-select select{min-height:38px;padding:6px 8px;width:auto}.user-chip{font-size:.85rem;color:var(--muted)}.content{padding:24px;max-width:1280px;margin:0 auto}.center-screen{min-height:100vh;display:grid;place-items:center;padding:16px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}.page-head p{margin:4px 0 0}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.toolbar .search{flex:1 1 240px}.toolbar select{width:auto;flex:0 1 200px}.check{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;white-space:nowrap}.check input{width:18px;min-height:18px;height:18px}.empty{padding:32px;text-align:center;color:var(--muted);background:var(--surface);border-radius:var(--radius)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.login-card{width:min(380px,100%);padding:28px;display:grid;gap:14px;justify-items:center}.login-card .field,.login-card .btn{width:100%}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.data-table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:var(--surface-2);font-weight:600}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--surface-2)}.data-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.data-table .strong{font-weight:600}.data-table tr.archived{opacity:.55}.name-main{font-weight:600;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.name-sub{color:var(--muted);font-size:.82rem;font-weight:400}.row-actions{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.tag{font-size:.7rem;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.tag-demo{background:var(--demo-bg);color:var(--demo-text);border-color:transparent}.tag-pack{background:var(--primary-soft);color:var(--primary);border-color:transparent}.modal{border:0;padding:0;border-radius:14px;background:var(--surface);color:var(--text);width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 24px);box-shadow:var(--shadow)}.modal::backdrop{background:#0006}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface);z-index:1}.modal-body{padding:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.span-2{grid-column:span 2}.field{display:grid;gap:5px}.field>span{font-size:.85rem;font-weight:600}.field small{font-size:.8rem}fieldset.purchase-row{border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px 14px;margin:0;display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}fieldset.purchase-row legend{font-size:.85rem;font-weight:700;padding:0 4px}.input-prefix,.input-suffix{display:flex;align-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.input-prefix span,.input-suffix span{padding:0 10px;color:var(--muted)}.input-prefix input,.input-suffix input{border:0;background:transparent}.calc-preview{background:var(--primary-soft);border-radius:var(--radius);padding:12px 14px;display:grid;gap:4px;font-variant-numeric:tabular-nums}.calc-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--primary)}.calc-line{font-size:.9rem;color:var(--muted)}.calc-result{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:4px}.calc-result strong{color:var(--primary)}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin:20px -20px -20px;padding:12px 20px;position:sticky;bottom:-20px;background:var(--surface);border-top:1px solid var(--border)}.history{list-style:none;padding:0;margin:0;display:grid;gap:12px}.history>li{border-left:3px solid var(--primary);padding:4px 0 4px 12px}.history-head{display:flex;gap:12px;flex-wrap:wrap;font-size:.9rem}.history-changes{margin:6px 0 0;padding-left:18px;font-size:.85rem}.history-changes code{font-size:.8rem}@media (max-width: 1024px){.content{padding:16px}.topbar{padding:10px 16px}}@media (max-width: 720px){body{font-size:16px}.topbar{gap:8px}.brand span{font-size:.95rem}.nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:var(--surface);border-top:1px solid var(--border);justify-content:space-around;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.nav-link{flex-direction:column;gap:2px;font-size:.72rem;padding:6px 8px}.nav-link span:first-child{font-size:1.25rem}.topbar-tools{margin-left:auto}.content{padding:12px 16px 96px}.toolbar select{flex:1 1 45%}.table-wrap{background:transparent;border:0}.data-table thead{display:none}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:8px 4px}.data-table tbody tr:hover{background:var(--surface)}.data-table td{border:0;padding:4px 10px;display:flex;justify-content:space-between;gap:12px}.data-table td.num{text-align:right}.data-table td[data-label]:not([data-label=""]):before{content:attr(data-label);color:var(--muted);font-size:.85rem;text-align:left;white-space:normal}.data-table td.cell-name{display:block;padding-bottom:6px}.row-actions{justify-content:flex-start;padding-top:8px!important}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}fieldset.purchase-row{grid-template-columns:1fr 1fr}fieldset.purchase-row .field:first-of-type{grid-column:span 2}}:root{--warn: #9a6200;--warn-bg: #fff4dc}@media (prefers-color-scheme: dark){:root{--warn: #f2c063;--warn-bg: #3a2e12}}a{color:var(--primary)}a.btn{text-decoration:none}.warn-text{color:var(--warn);font-size:.85rem}.warn-box{background:var(--warn-bg);color:var(--warn);border-radius:8px;padding:8px 10px;font-size:.85rem;margin:10px 0 0}.tag-warn{background:var(--warn-bg);color:var(--warn);border-color:transparent}.link-btn{border:0;background:none;color:var(--primary);cursor:pointer;padding:0;margin-bottom:6px;font-size:.9rem}.data-table.clickable tbody tr{cursor:pointer}.data-table.clickable a{color:inherit;text-decoration:none}.data-table.compact th,.data-table.compact td{padding:7px 10px}.icon-btn.small{font-size:1rem;padding:4px 7px;min-width:32px;min-height:32px;border-radius:6px}.icon-btn.small:hover:not(:disabled){background:var(--surface-2)}.icon-btn:disabled{opacity:.3;cursor:default}.icon-btn.danger:hover{color:var(--danger)}h1 .tag{margin-left:8px;vertical-align:middle}.editor-page{display:grid;gap:16px}.editor-page .page-head{margin-bottom:0}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}.editor-main{display:grid;gap:16px;min-width:0}.editor-side{position:sticky;top:76px}.form-card{padding:16px 18px}.section-head{display:grid;gap:2px;margin-bottom:12px}.yield-row{display:grid;grid-template-columns:1fr 110px;gap:8px}.lines{display:grid;gap:6px}.line-row{display:grid;grid-template-columns:24px minmax(0,1fr) 90px 92px 92px 108px;gap:8px;align-items:center;padding:6px;border-radius:8px}.line-row.has-error{background:color-mix(in srgb,var(--danger) 7%,transparent)}.line-header{font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;padding-bottom:0}.line-pos{color:var(--muted);font-size:.85rem;text-align:center}.line-cost{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.line-cost small{display:block;font-size:.75rem}.line-actions{display:flex;justify-content:flex-end}.line-issues{grid-column:2 / -1;display:flex;flex-wrap:wrap;gap:4px 12px}.line-issues .error-text{margin:0}.lines.with-scope .line-row{grid-template-columns:24px minmax(0,1fr) 80px 84px 128px 92px 108px}.add-line{margin-top:8px}.num{text-align:right}.summary-card{padding:16px 18px}.summary{display:grid;grid-template-columns:auto auto;gap:6px 12px;margin:12px 0 0;font-variant-numeric:tabular-nums}.summary dt{color:var(--muted)}.summary dd{margin:0;text-align:right}.summary .summary-strong{font-weight:700;color:var(--primary)}.summary dt.summary-strong{color:var(--text)}.used-in{font-size:.85rem;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.summary-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.batches{display:grid;gap:12px}.batch-form{display:grid;grid-template-columns:150px 130px 150px minmax(0,1fr) auto;gap:10px;align-items:end}.production-list summary{cursor:pointer;font-weight:600;color:var(--primary)}.production-list ul{list-style:none;padding:0;margin:8px 0;display:grid;gap:4px;max-width:420px}.production-list li{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--border);padding:2px 0}.production-list p{margin:4px 0 0}.batch-avg{margin:0;font-size:.9rem}.batch-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}@media (max-width: 1024px){.editor-grid{grid-template-columns:1fr}.editor-side{position:static}.batch-form{grid-template-columns:1fr 1fr}.batch-form .btn{grid-column:span 2}}@media (max-width: 720px){.line-header{display:none}.line-row{grid-template-columns:24px minmax(0,1fr) 1fr;grid-template-areas:"pos item item" ". qty unit" ". cost actions" ". issues issues";border:1px solid var(--border);padding:8px}.line-pos{grid-area:pos}.line-item{grid-area:item}.line-qty{grid-area:qty}.line-unit{grid-area:unit}.line-cost{grid-area:cost;text-align:left}.line-cost small{display:inline}.line-actions{grid-area:actions}.line-issues{grid-area:issues}.lines.with-scope .line-row{grid-template-columns:24px minmax(0,1fr) 1fr;grid-template-areas:"pos item item" ". qty unit" ". scope scope" ". cost actions" ". issues issues"}.line-scope{grid-area:scope}.summary{grid-template-columns:1fr auto}}:root{--st-green: #1f7a34;--st-green-bg: #e3f3e6;--st-yellow: #8a5a00;--st-yellow-bg: #fff1c7;--st-red: #b42318;--st-red-bg: #fde4e1}@media (prefers-color-scheme: dark){:root{--st-green: #7fd88f;--st-green-bg: #1c3a23;--st-yellow: #f3c969;--st-yellow-bg: #3d3112;--st-red: #ff9b8f;--st-red-bg: #46201c}}.cost-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-weight:700;font-size:.85rem;white-space:nowrap;font-variant-numeric:tabular-nums}.cost-badge.green{color:var(--st-green);background:var(--st-green-bg)}.cost-badge.yellow{color:var(--st-yellow);background:var(--st-yellow-bg)}.cost-badge.red{color:var(--st-red);background:var(--st-red-bg)}.cost-badge.none{color:var(--muted);background:var(--surface-2);font-weight:500}.cost-badge-label{font-weight:500}.variant-figures{display:inline-grid;justify-items:end;gap:2px}.variant-summary{border-radius:10px;padding:10px 12px;margin-top:12px;border:1px solid var(--border);border-left-width:4px}.variant-summary.green{border-left-color:var(--st-green)}.variant-summary.yellow{border-left-color:var(--st-yellow)}.variant-summary.red{border-left-color:var(--st-red)}.variant-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.variant-summary .summary{margin-top:8px;font-size:.9rem}.small-note{font-size:.8rem;margin:10px 0 0}.scale-card{display:grid;gap:12px}.scale-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.scale-controls .field{width:120px}.scale-table{max-width:620px;border:1px solid var(--border);border-radius:var(--radius)}.scale-table .tag{margin-left:6px}.scale-table .total-row td{font-weight:700;background:var(--surface-2)}@media (max-width: 720px){.variant-cell .variant-figures{justify-items:end}.scale-table tr{padding:4px}.scale-table td:first-child{font-weight:600}}.tag-default{background:var(--primary);color:#fff;border-color:transparent}.set-lines{width:100%;margin-top:8px}.set-lines td{padding:4px 6px;border-bottom:1px dashed var(--border)}.set-lines .tag{margin-left:6px}.packaging-choice{display:grid;gap:6px;max-width:520px}.subhead{font-size:.95rem;margin:16px 0 4px}.info-box{background:var(--surface-2);border-radius:8px;padding:8px 10px;font-size:.85rem;margin:8px 0 0}.test-banner{background:#5b2a86;color:#fff}.settings-grid{display:grid;gap:16px;max-width:900px}.settings-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end}.users-table select{min-width:130px}.users-table tr.user-inactive .cell-name{opacity:.6}.user-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.readonly-value{font-weight:600;font-variant-numeric:tabular-nums}.confirm-text{white-space:pre-line;margin:0 0 16px}@media (max-width: 720px),(pointer: coarse){input,select,textarea{font-size:16px}input:not([type=checkbox]):not([type=radio]){min-height:44px}.btn,select,.segmented button{min-height:44px}.icon-btn.small{min-width:44px;min-height:44px}.link-btn{min-height:44px;display:inline-flex;align-items:center;margin-bottom:0}.row-actions .btn{min-height:44px}}
