:root{color-scheme:light;--bg: #f6f2e9;--bg-2: #f0eadc;--panel: #fffdf7;--panel-2: #f8f4e9;--line: #e2dac6;--text: #26231d;--muted: #6e6759;--accent: #8a6a1f;--accent-soft: #f3ead3;--accent-ink: #ffffff;--ok: #15803d;--ok-soft: #dcfce7;--warn: #b45309;--warn-soft: #fef3c7;--danger: #b91c1c;--danger-soft: #fee2e2;--info: #0369a1;--info-soft: #e0f2fe;--focus: #0284c7;--radius: 8px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .1);--mono: "JetBrains Mono", "Cascadia Mono", Consolas, monospace;--sans: Inter, "Segoe UI", system-ui, sans-serif}:root[data-theme=dark]{color-scheme:dark;--bg: #16130d;--bg-2: #1b1810;--panel: #211d15;--panel-2: #292416;--line: #3a342a;--text: #ede7d8;--muted: #a79e8a;--accent: #d4af37;--accent-soft: #3a2f10;--accent-ink: #1a1200;--ok: #4ade80;--ok-soft: #14532d;--warn: #fbbf24;--warn-soft: #78350f;--danger: #f87171;--danger-soft: #7f1d1d;--info: #7dd3fc;--info-soft: #0c4a6e;--shadow: none}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--sans)}a{color:var(--info)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--focus);outline-offset:1px}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.right{text-align:right}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}h1{font-size:22px;margin:0}h2{font-size:16px;margin:0 0 8px}.shell{display:grid;grid-template-columns:232px 1fr;height:100%}.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:auto}.sidebar .brand{padding:16px 18px;font-weight:800;color:var(--accent);letter-spacing:.5px;font-size:18px}.sidebar .group{padding:10px 12px 2px;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700}.sidebar a{display:flex;align-items:center;gap:10px;padding:8px 18px;color:var(--text);text-decoration:none;border-left:3px solid transparent}.sidebar a:hover{background:var(--panel-2)}.sidebar a.active{border-left-color:var(--accent);background:var(--accent-soft);font-weight:600}.main{display:grid;grid-template-rows:52px 1fr;min-height:0}.topbar{display:flex;align-items:center;gap:12px;padding:0 20px;background:var(--panel);border-bottom:1px solid var(--line)}.topbar .spacer{flex:1}.content{overflow:auto;padding:20px}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head .spacer{flex:1}.btn{height:36px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel);font-weight:600;display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--text)}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn:disabled{opacity:1;cursor:not-allowed;background:var(--panel-2);border-color:var(--line);color:var(--muted);box-shadow:none}.btn.primary:disabled,.btn.danger:disabled{background:var(--panel-2);border-color:var(--line);color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:var(--shadow)}.grid{display:grid;gap:14px}.grid.c2{grid-template-columns:repeat(2,1fr)}.grid.c3{grid-template-columns:repeat(3,1fr)}.grid.c4{grid-template-columns:repeat(4,1fr)}@media(max-width:1100px){.grid.c4,.grid.c3{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}}.stat{display:grid;gap:4px}.stat .label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.stat .value{font-size:26px;font-weight:800;font-family:var(--mono)}.stat .delta{font-size:12px}.delta.up{color:var(--ok)}.delta.down{color:var(--danger)}.field{display:grid;gap:4px;margin-bottom:12px}.field label{font-size:12px;color:var(--muted);font-weight:600}.field input,.field select,.field textarea{height:36px;padding:0 10px;background:var(--panel);border:1px solid var(--line);border-radius:6px;width:100%}.field textarea{height:auto;padding:8px 10px;min-height:80px}.field .err{color:var(--danger);font-size:12px}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--danger)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.check{display:flex;gap:8px;align-items:center;height:36px}.check input{width:18px;height:18px}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.toolbar input,.toolbar select{height:36px;padding:0 10px;background:var(--panel);border:1px solid var(--line);border-radius:6px}.toolbar input[type=search]{min-width:260px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel)}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;padding:10px 12px;background:var(--panel-2);color:var(--muted);font-weight:600;font-size:12px;white-space:nowrap;border-bottom:1px solid var(--line);position:sticky;top:0;cursor:pointer;user-select:none}table.data th.right,table.data td.right{text-align:right}table.data td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tr:hover td{background:var(--panel-2)}table.data tr.clickable{cursor:pointer}table.data .thumb{width:36px;height:46px;object-fit:cover;border-radius:4px;background:var(--panel-2);vertical-align:middle}.pager{display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--line);font-size:13px}.pager .spacer{flex:1}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.muted{background:var(--panel-2);color:var(--muted)}.empty{display:grid;place-items:center;padding:48px 20px;color:var(--muted);text-align:center}.empty h3{margin:0 0 6px;color:var(--text)}.error-state{padding:20px;border:1px solid var(--danger);border-radius:10px;background:var(--danger-soft);color:var(--danger);display:flex;gap:12px;align-items:center}.skeleton{background:linear-gradient(90deg,var(--panel-2),var(--line),var(--panel-2));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:6px;height:14px}@keyframes sk{to{background-position:-200% 0}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow:auto}.tabs a,.tabs button{padding:8px 14px;border:0;background:none;color:var(--muted);font-weight:600;text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}.tabs a.active,.tabs button.active{color:var(--text);border-bottom-color:var(--accent)}.overlay{position:fixed;inset:0;background:#02061780;display:grid;place-items:center;z-index:50;padding:16px}.dialog{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(720px,100%);max-height:92vh;display:grid;grid-template-rows:auto 1fr auto;box-shadow:0 20px 60px #00000059}.dialog.wide{width:min(1100px,100%)}.dialog header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:700;font-size:16px}.dialog header .spacer{flex:1}.dialog .body{padding:14px 16px;overflow:auto}.dialog footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--line)}.toast{position:fixed;right:20px;bottom:20px;background:var(--panel);border:1px solid var(--line);padding:10px 16px;border-radius:10px;z-index:60;box-shadow:0 8px 30px #0003;max-width:420px}.toast.danger{border-color:var(--danger)}.toast.ok{border-color:var(--ok)}kbd{font-family:var(--mono);font-size:11px;padding:1px 6px;border-radius:4px;background:var(--bg-2);border:1px solid var(--line);color:var(--muted)}.swatch{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid rgba(0,0,0,.2);vertical-align:-1px;margin-right:4px}.mono{font-family:var(--mono)}.center{display:grid;place-items:center;height:100%;padding:20px}.login-card{width:min(420px,94vw)}@media print{.sidebar,.topbar,.toolbar,.pager,.btn{display:none!important}.shell{display:block}.content{padding:0}body{background:#fff;color:#000}}.menu-btn,.drawer-foot{display:none}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.sidebar.open{display:flex;position:fixed;top:0;left:0;bottom:0;z-index:50;width:min(300px,85vw);box-shadow:4px 0 24px #00000040}.menu-btn{display:inline-flex}.backdrop{position:fixed;inset:0;z-index:40;background:#00000059;border:0;padding:0}.topbar{flex-wrap:nowrap;height:auto;min-height:46px;padding:8px 10px;gap:8px;position:sticky;top:0;z-index:30}.topbar-user{display:none!important}.topbar-loc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-foot{display:grid;gap:8px;margin-top:auto;padding:14px 18px;border-top:1px solid var(--line)}.content{padding:12px}}.qi-cards,.qi-savebar{display:none}.qi-head-actions{display:contents}@media(max-width:760px){.qi-grid{display:none}.qi-cards{display:grid;gap:10px}.qi-card{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:10px 12px}.qi-card h4{margin:0 0 8px;font-size:14px;display:flex;align-items:center;gap:8px}.qi-rows{display:grid;gap:8px}.qi-row{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px}.qi-row .sz{font-weight:700;font-size:15px}.qi-step{width:44px;height:44px;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);font-size:20px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.qi-row input{width:64px;height:44px;text-align:center;font-size:17px;font-weight:700;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.btn.sm.qi-chip{min-height:44px;padding:0 14px;font-size:15px}.qi-savebar{display:flex;gap:8px;position:sticky;bottom:0;z-index:20;padding:10px 0 4px;background:var(--panel);box-shadow:0 -8px 12px -8px #00000040}.qi-savebar .btn{flex:1;height:46px;justify-content:center}.toast{bottom:82px!important}.qi-head-actions{display:none}}
