:root{--bg:#f6f7f9;--surface:#fff;--border:#e2e5ea;--ink:#16181d;--ink-2:#4b5260;--ink-3:#7b8290;--accent:#2a5bd7;--good:#1f7a4d;--warn:#a86400;--bad:#b3261e;--bar:#2a5bd7}@media (prefers-color-scheme:dark){:root{--bg:#111317;--surface:#1a1d23;--border:#2c313a;--ink:#eceef2;--ink-2:#b4bac5;--ink-3:#8a919e;--accent:#7aa2ff;--good:#5cc28e;--warn:#e0a14a;--bad:#ef7a70;--bar:#7aa2ff}}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,-apple-system,Be Vietnam Pro,sans-serif}a{color:var(--accent)}.bo-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}.bo-head b{font-size:15px}.bo-head nav{display:flex;gap:14px;flex-wrap:wrap;font-size:13px}.bo-main{max-width:1100px;margin:0 auto;padding:16px}.bo-main h1{font-size:20px;margin:4px 0 12px}.bo-main h2{font-size:15px;margin:24px 0 8px}.muted{color:var(--ink-3)}.small{font-size:12px}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}.tabs a{padding:6px 10px;border:1px solid var(--border);border-radius:6px;text-decoration:none;color:var(--ink-2);background:var(--surface)}.tabs a[aria-current]{background:var(--ink);color:var(--surface);border-color:var(--ink)}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}.tile .label{color:var(--ink-2);font-size:12px}.tile .value{font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;margin-top:2px}.tile .sub{color:var(--ink-3);font-size:12px}.tile.warn .value{color:var(--warn)}.tile.bad .value{color:var(--bad)}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}td,th{text-align:left;padding:7px 10px;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}th{font-weight:600;color:var(--ink-2);font-size:12px;background:color-mix(in srgb,var(--bg) 60%,var(--surface))}td.num,th.num{text-align:right}.bars{gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}.bar,.bars{display:grid}.bar{grid-template-columns:110px 1fr 56px;align-items:center;gap:8px}.bar .track{height:10px;background:color-mix(in srgb,var(--border) 60%,transparent);border-radius:4px}.bar .fill{height:10px;background:var(--bar);border-radius:0 4px 4px 0;min-width:2px}.bar .n{text-align:right;font-variant-numeric:tabular-nums}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}form.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:end;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:12px}form.inline label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-2)}button,input,select{font:inherit;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--ink);min-height:36px}button{cursor:pointer}button.primary{background:var(--ink);color:var(--surface);border-color:var(--ink)}.pill{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.pill.good{color:var(--good)}.pill.bad,.pill.good{border-color:currentColor}.pill.bad{color:var(--bad)}.note{background:color-mix(in srgb,var(--warn) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);padding:8px 12px;border-radius:8px;font-size:13px}.auth{max-width:380px;margin:48px auto;padding:0 16px}.auth-form{display:flex;flex-direction:column;gap:10px;margin:16px 0}.auth-form input{font-size:17px;min-height:44px}.form-error{color:var(--bad);margin:0}.cta{min-height:44px}.cta--primary{background:var(--ink);color:var(--surface)}code{font-size:12px}@media (max-width:640px){.bar{grid-template-columns:80px 1fr 44px}}.edit-card{display:flex;flex-direction:column;gap:10px;padding:16px;margin:12px 0;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.edit-card .row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.field{display:flex;flex-direction:column;gap:4px;flex:1 1 220px;font-size:13px}.field.narrow{flex:0 1 110px}.field input,.field select,.field textarea{font:inherit;font-size:14px;padding:8px;border:1px solid var(--border);border-radius:6px;background:inherit;color:inherit}.inline{display:inline-flex;gap:6px;align-items:center;font-size:13px;min-height:40px}.thumb{max-width:220px;max-height:120px;object-fit:cover;border-radius:6px}.edit-card .cta{width:auto;padding:0 18px}button.danger{font:inherit;background:none;border:1px solid var(--bad);color:var(--bad);border-radius:6px;padding:8px 14px;cursor:pointer}.note.good{background:color-mix(in srgb,var(--good) 10%,var(--surface));border-color:color-mix(in srgb,var(--good) 35%,transparent)}.note.bad{background:color-mix(in srgb,var(--bad) 10%,var(--surface));border-color:color-mix(in srgb,var(--bad) 35%,transparent)}.qr-printbar,.qr-search{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}.qr-search input[type=search]{flex:1 1 280px;font:inherit;padding:10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:inherit}.qr-printbar{position:sticky;top:0;z-index:2;padding:10px;background:var(--surface);border:1px solid var(--border);border-radius:8px}.qr-printbar input[type=number]{width:64px}.qr-printbar .cta{width:auto;padding:0 16px}.qr-list{list-style:none;padding:0;display:grid;gap:8px}.qr-card{display:flex;gap:12px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.qr-card>img{width:72px;height:72px;object-fit:cover;border-radius:6px}.qr-codes{list-style:none;padding:0;margin:6px 0;display:grid;gap:2px}.qr-codes li{display:flex;gap:12px;align-items:center}.print-sheet{min-height:100vh;padding:16px;background:#fff;color:#111}.print-tools{display:flex;gap:12px;align-items:center;margin-bottom:16px}.print-tools .cta{width:auto;padding:0 20px}.labels{display:flex;flex-wrap:wrap;gap:4mm}.label{margin:0;padding:3mm;border:.3mm dashed #999;display:flex;flex-direction:column;align-items:center;text-align:center;break-inside:avoid}.label-qr svg{width:100%;height:100%;display:block}.label-logo{height:8mm;width:auto;margin-bottom:2mm}.label figcaption{display:flex;flex-direction:column;gap:.5mm;margin-top:2mm;font-size:7pt;line-height:1.35}.label figcaption b{font-size:8pt}.label code{font-size:6pt;letter-spacing:.06em;color:#555}.label-cta{font-weight:600}.print-tem .label{width:34mm}.print-ke .label{width:52mm}.print-ke .label figcaption{font-size:9pt}.print-a6 .label{width:105mm;height:148mm;justify-content:center}.print-a6 .label-logo{height:14mm}.print-a6 .label figcaption{font-size:12pt}.print-a6 .label figcaption b{font-size:14pt}@media print{.bo-head,.print-tools{display:none}.print-sheet{padding:0}.label{border-color:#ccc}}