:root{--bg: #f5f6f8;--card: #ffffff;--surface-2: #f1f3f5;--surface-3: #e9ecef;--ink: #111827;--ink-soft: #374151;--muted: #6b7280;--line: #e5e7eb;--line-strong: #d1d5db;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-ink: #ffffff;--accent-soft: rgba(37, 99, 235, .1);--accent-soft-2: rgba(37, 99, 235, .16);--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .1);--ok: #16a34a;--ok-soft: rgba(22, 163, 74, .12);--warn: #b45309;--warn-soft: rgba(180, 83, 9, .12);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);--shadow-lg: 0 10px 30px rgba(16, 24, 40, .12);--r: 10px;--r-sm: 8px;--r-lg: 14px;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sidebar-w: 236px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0e1116;--card: #161a20;--surface-2: #1c222b;--surface-3: #232a34;--ink: #e6e9ee;--ink-soft: #c4cad3;--muted: #8b95a3;--line: #272d37;--line-strong: #333b47;--accent: #3b82f6;--accent-hover: #60a5fa;--accent-ink: #0b0f14;--accent-soft: rgba(59, 130, 246, .16);--accent-soft-2: rgba(59, 130, 246, .24);--danger: #f87171;--danger-soft: rgba(248, 113, 113, .14);--ok: #4ade80;--ok-soft: rgba(74, 222, 128, .14);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .14);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 3px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .55)}}*{box-sizing:border-box}html,body{height:100%}body{margin:0;color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent-soft-2)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{position:sticky;top:0;align-self:start;height:100vh;display:flex;flex-direction:column;gap:.25rem;padding:.9rem .7rem;background:var(--card);border-right:1px solid var(--line);overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:.6rem;padding:.35rem .6rem .9rem;font-weight:700;font-size:1.05rem;letter-spacing:-.01em;color:var(--ink)}.sidebar-brand:hover{text-decoration:none}.sidebar-logo{width:30px;height:30px;flex:0 0 auto;display:grid;place-items:center;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:.9rem}.sidebar-section{margin:.6rem .6rem .3rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.sidebar-nav{display:flex;flex-direction:column;gap:.1rem}.nav-link{display:flex;align-items:center;gap:.6rem;padding:.5rem .65rem;border-radius:var(--r-sm);color:var(--ink-soft);font-weight:500;white-space:nowrap}.nav-link:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.nav-link.active .nav-ico{color:var(--accent)}.nav-ico{width:18px;height:18px;flex:0 0 auto;color:var(--muted)}.sidebar-foot{margin-top:auto;padding:.7rem .5rem .2rem;border-top:1px solid var(--line);display:grid;gap:.5rem}.sidebar-user{font-size:.82rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{min-width:0;display:flex;flex-direction:column}.mobile-bar,.sidebar-backdrop{display:none}.container{width:100%;max-width:none;margin:0 auto;padding:1.6rem 2rem 3rem}.center{min-height:60vh;display:grid;place-items:center;color:var(--muted)}h1,h2,h3{margin:0 0 .9rem;letter-spacing:-.02em;color:var(--ink);font-weight:650}h1{font-size:1.6rem}h2{font-size:1.1rem}h3{font-size:.95rem}.toolbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1.25rem;flex-wrap:wrap}.toolbar h1{margin-bottom:0}.muted{color:var(--muted);font-size:.9rem}.subnav{display:flex;gap:.25rem;flex-wrap:wrap;margin:0 0 1.25rem;padding-bottom:.6rem;border-bottom:1px solid var(--line)}.subnav a{color:var(--muted);padding:.4rem .8rem;border-radius:var(--r-sm);font-weight:500}.subnav a:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.subnav a.active{background:var(--accent-soft);color:var(--accent)}.pager{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1rem;padding-top:.85rem;border-top:1px solid var(--line)}.pager-actions{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:1.25rem;overflow:hidden}.card h2:first-child,.card h3:first-child{margin-top:0}a.card{transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}a.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow);transform:translateY(-1px);text-decoration:none}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:860px){.grid-2{grid-template-columns:1fr}}table{width:100%;border-collapse:collapse;table-layout:fixed}th,td{padding:.7rem .65rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow:hidden;text-overflow:ellipsis}th{color:var(--muted);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);border-bottom:1px solid var(--line)}tbody tr:hover td{background:var(--surface-2)}tbody tr:last-child td{border-bottom:0}tr.warn td,tr.warn:hover td{background:var(--warn-soft)}tr.bad td,tr.bad:hover td{background:var(--danger-soft)}.qty-bad{color:var(--danger);font-weight:700}.mono{font-family:var(--mono);font-size:.85em;overflow-wrap:anywhere;word-break:break-word}.cell-clip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-actions{width:1%;white-space:nowrap;overflow:visible}.badge{display:inline-block;max-width:100%;padding:.15rem .55rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.75rem;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.badge-bad{background:var(--danger-soft);color:var(--danger)}.logs-table{table-layout:auto;width:100%;min-width:1100px}.logs-table th,.logs-table td{overflow:visible;text-overflow:unset;white-space:nowrap}.logs-table th:nth-child(1),.logs-table td:nth-child(1){width:9rem}.logs-table th:nth-child(2),.logs-table td:nth-child(2){width:14rem;white-space:normal}.logs-table th:nth-child(3),.logs-table td:nth-child(3){width:7rem}.logs-table th:nth-child(4),.logs-table td:nth-child(4){width:10rem}.logs-table th:nth-child(5),.logs-table td:nth-child(5){width:auto;min-width:16rem}.logs-table th:nth-child(6),.logs-table td:nth-child(6){width:4.5rem}.logs-table th:nth-child(7),.logs-table td:nth-child(7){width:1%}.logs-table .doc-cell{font-weight:600}.logs-table .url-cell{white-space:normal;overflow-wrap:anywhere;word-break:break-all;font-family:var(--mono);font-size:.82rem;color:var(--muted)}.logs-table .nowrap{white-space:nowrap}.row-actions{display:flex;flex-direction:row;flex-wrap:nowrap;gap:.35rem;align-items:center}.row-actions .btn{justify-content:center;white-space:nowrap}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;cursor:pointer;border-radius:var(--r-sm);min-height:38px;padding:.5rem .95rem;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:600;line-height:1.2;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;transition:background .12s ease,border-color .12s ease,opacity .12s ease}.btn:hover{background:var(--accent-hover);text-decoration:none}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{background:var(--card);color:var(--ink);border:1px solid var(--line-strong)}.btn-ghost:hover{background:var(--surface-2);border-color:var(--line-strong)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger);filter:brightness(.92)}.btn-sm{min-height:32px;padding:.3rem .7rem;font-size:.85rem}.stack{display:grid;gap:.85rem}.inline{display:flex;gap:.55rem;flex-wrap:wrap;align-items:flex-end}label,.field{display:grid;gap:.35rem;font-size:.85rem;font-weight:500;color:var(--ink-soft)}.field-label{display:block}input,select,textarea{width:100%;min-height:38px;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:.5rem .7rem;font:inherit;line-height:1.3;background:var(--card);color:var(--ink);transition:border-color .12s ease,box-shadow .12s ease}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:2rem;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .65rem center}textarea{min-height:140px}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox]{width:auto;accent-color:var(--accent);cursor:pointer}textarea{min-height:140px;font-family:var(--mono);font-size:.85rem;line-height:1.5}.select{position:relative;width:100%}.select.is-disabled{opacity:.55;pointer-events:none}.select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.75rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:.55rem .75rem;background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.select.is-open .select-trigger,.select-trigger:hover{border-color:var(--line-strong)}.select.is-open .select-trigger{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.select-value{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-placeholder{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-chevron{color:var(--muted);font-size:.75rem;transition:transform .15s ease}.select.is-open .select-chevron{transform:rotate(180deg);color:var(--accent)}.select-panel{position:fixed;z-index:80;overflow:auto;overscroll-behavior:contain;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-lg);padding:.35rem}.select-search{padding:.35rem;position:sticky;top:0;background:var(--card);z-index:1}.select-search input{border-radius:var(--r-sm)}.select-option{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;text-align:left;font:inherit;color:var(--ink);padding:.5rem .65rem;border-radius:var(--r-sm);cursor:pointer;display:grid;gap:.15rem}.select-option:hover,.select-option.is-active{background:var(--accent-soft);color:var(--accent)}.select-option.is-empty{color:var(--muted)}.select-option-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-option-meta{color:var(--muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis}.select-empty{padding:.75rem;color:var(--muted);font-size:.9rem}.select-option-row{display:flex;align-items:center;gap:.5rem;min-width:0}.select-check{width:1.1rem;height:1.1rem;flex:0 0 auto;border:1px solid var(--line-strong);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--accent);background:var(--card)}.select-check.is-on{border-color:var(--accent);background:var(--accent-soft)}.multi-select{display:grid;gap:.5rem}.multi-chips{display:flex;flex-wrap:wrap;gap:.35rem}.multi-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.2rem .55rem;font:inherit;font-size:.8rem;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;max-width:100%}.multi-chip span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-chip:hover{border-color:var(--accent)}.flash{margin-bottom:1rem;padding:.7rem .95rem;border-radius:var(--r);background:var(--ok-soft);color:var(--ok);border:1px solid transparent;font-size:.9rem}.flash-error{background:var(--danger-soft);color:var(--danger)}.pre{white-space:pre-wrap;word-break:break-word;background:#0f1420;color:#d7e0ef;border:1px solid var(--line);border-radius:var(--r);padding:1rem;font-family:var(--mono);font-size:.8rem;line-height:1.55;max-height:420px;overflow:auto}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem}.login-card{width:min(400px,100%);background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);padding:2rem}.login-card h1{text-align:center;font-size:1.5rem}.login-card .sub{text-align:center;color:var(--muted);margin:0 0 1.5rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0f172a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:1.25rem;overflow:auto}.modal{width:min(480px,100%);background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:1.4rem;overflow:visible;align-self:center}.modal h2{margin-bottom:.35rem}.modal-actions{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:.85rem}body.modal-open{overflow:hidden}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.mobile-bar{display:flex;align-items:center;gap:.75rem;position:sticky;top:0;z-index:30;padding:.7rem 1rem;background:var(--card);border-bottom:1px solid var(--line)}.mobile-bar .sidebar-brand{padding:0;font-size:1rem}.mobile-burger{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-strong);background:var(--card);color:var(--ink);border-radius:var(--r-sm);width:38px;height:38px;display:grid;place-items:center;cursor:pointer}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;height:100vh;z-index:60;transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow-lg)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop.is-open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0f172a73}.container{padding:1.1rem 1rem 2.5rem}}@media(max-width:560px){.toolbar{align-items:flex-start}h1{font-size:1.35rem}}
