@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f6f3eb;--surface: #ffffff;--surface-subtle: #faf8f2;--border: #e6e1d4;--border-strong: #d5cfbf;--ink: #20251b;--ink-2: #565b4c;--ink-3: #626655;--olive: #2e3a1f;--olive-soft: #3d4c2b;--brand-heading: #2e3a1f;--cream: #f2eadc;--cream-dim: #cfc7b4;--accent: #2f9e44;--accent-ink: #1f7a33;--accent-hover: #186328;--accent-soft: #e8f4ea;--ok: #0e7b5e;--ok-soft: #e2f1ec;--run: #2d5f9e;--run-soft: #e8eef7;--warn: #a85b00;--warn-soft: #f9eeda;--danger: #b3362b;--danger-soft: #f8e7e4;--code-bg: #262b1f;--code-ink: #e9e6da;--font-display: "Fraunces Variable", Georgia, "Times New Roman", serif;--font-ui: "DM Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, monospace;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s7: 32px;--s8: 48px;--r-sm: 6px;--r-md: 10px;--shadow-sm: 0 1px 2px rgba(32, 37, 27, .05);--shadow-md: 0 4px 16px rgba(32, 37, 27, .12);--sidebar-w: 212px}[data-theme=dark]{--bg: #191c14;--surface: #232720;--surface-subtle: #2a2e25;--border: #3a3e32;--border-strong: #4c513f;--ink: #e8e6da;--ink-2: #b5b4a3;--ink-3: #93967f;--olive: #161a0f;--olive-soft: #2c3320;--brand-heading: #e8e6da;--cream: #f2eadc;--cream-dim: #a9a896;--accent: #45b85c;--accent-ink: #2c9341;--accent-hover: #37a94e;--accent-soft: rgba(47, 158, 68, .16);--ok: #54c2a0;--ok-soft: rgba(20, 140, 108, .18);--run: #84aede;--run-soft: rgba(72, 122, 184, .2);--warn: #dca055;--warn-soft: rgba(190, 120, 30, .16);--danger: #e07f73;--danger-soft: rgba(200, 70, 56, .18);--code-bg: #14160e;--code-ink: #e9e6da;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 18px rgba(0, 0, 0, .55)}[data-theme=dark] .pill-solid-danger{background:#b3362b}[data-theme=dark] .pill-solid-warn{background:#a85b00}[data-theme=dark] .alert-ok{color:var(--ok)}[data-theme=dark] .alert-run{color:var(--run)}[data-theme=dark] .alert-warn{color:var(--warn)}[data-theme=dark] .alert-danger{color:var(--danger)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--olive);color:var(--cream);display:flex;flex-direction:column;padding:var(--s5) 0 var(--s4);position:sticky;top:0;height:100vh}.sidebar-brand{padding:0 var(--s5) var(--s5);border-bottom:1px solid rgba(242,234,220,.14);margin-bottom:var(--s3)}.sidebar-brand .brand-name{font-family:var(--font-display);font-size:19px;font-weight:640;letter-spacing:-.01em;color:var(--cream);line-height:1.2}.sidebar-brand .brand-sub{font-size:10.5px;text-transform:uppercase;letter-spacing:.16em;color:var(--cream-dim);margin-top:3px}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 var(--s2)}.nav-item{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:none;border-left:3px solid transparent;border-radius:var(--r-sm);color:var(--cream-dim);font-family:var(--font-ui);font-size:13.5px;font-weight:500;text-align:left;padding:9px 12px;cursor:pointer;transition:background .12s,color .12s}.nav-item svg{flex:0 0 auto;opacity:.85}.nav-item:hover{background:var(--olive-soft);color:var(--cream)}.nav-item[aria-current=page]{background:#2f9e4429;border-left-color:var(--accent);color:#fff;font-weight:600}.main{flex:1;min-width:0;padding:var(--s6) var(--s7) var(--s8)}.main-inner{max-width:1040px;margin:0 auto}.page-head{display:flex;align-items:baseline;gap:var(--s2);margin:0 0 var(--s5);flex-wrap:wrap}.page-title{font-family:var(--font-display);font-size:23px;font-weight:640;letter-spacing:-.01em;color:var(--brand-heading);margin:0}.page-head .spacer{flex:1}@media (max-width: 900px){.app{flex-direction:column}.sidebar{width:100%;flex:none;height:auto;position:static;padding:var(--s3) var(--s3) 0}.sidebar-brand{padding:0 var(--s2) var(--s3);margin-bottom:var(--s2)}.sidebar nav{flex-direction:row;overflow-x:auto;gap:var(--s1);padding:0 0 var(--s2)}.nav-item{border-left:none;border-bottom:3px solid transparent;border-radius:var(--r-sm) var(--r-sm) 0 0;white-space:nowrap;padding:8px 12px}.nav-item[aria-current=page]{border-bottom-color:var(--accent)}.main{padding:var(--s5) var(--s4) var(--s7)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:var(--s5);margin-bottom:var(--s4)}.card-head{display:flex;align-items:center;gap:var(--s2);margin:0 0 var(--s3);flex-wrap:wrap}.card-title{font-family:var(--font-display);font-size:17px;font-weight:620;letter-spacing:-.005em;color:var(--ink);margin:0;display:flex;align-items:center;gap:7px}.card-head .spacer{flex:1}.card-meta{font-size:12px;color:var(--ink-3)}.overline{font-family:var(--font-ui);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0 0 var(--s3);display:flex;align-items:center;gap:6px}.card.danger-zone{border-color:#b3362b59}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--font-ui);font-size:13.5px;font-weight:600;border-radius:var(--r-sm);border:1px solid transparent;padding:9px 16px;cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--accent-ink);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-subtle);border-color:var(--ink-3)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-subtle);color:var(--ink)}.btn-warn{background:var(--warn);color:#fff}.btn-warn:hover:not(:disabled){background:#8f4d00}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#992e24}.btn-danger-outline{background:var(--surface);color:var(--danger);border-color:#b3362b73}.btn-danger-outline:hover:not(:disabled){background:var(--danger-soft)}.btn-sm{font-size:12.5px;padding:6px 11px}.link-btn{background:none;border:none;padding:0;font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--run);cursor:pointer}.link-btn:hover:not(:disabled){text-decoration:underline}.link-btn:disabled{opacity:.5;cursor:not-allowed}.link-btn.danger{color:var(--danger)}.field-label{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:4px}.input,select.input{width:100%;font-family:var(--font-ui);font-size:13.5px;color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:9px 11px;transition:border-color .12s}.input::placeholder{color:var(--ink-3)}.input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2f9e4426}.input-mono{font-family:var(--font-mono);font-size:12.5px}.ack-gate{background:var(--warn-soft);border:1px solid rgba(168,91,0,.35);border-radius:var(--r-sm);padding:var(--s3) var(--s4);margin-top:var(--s3)}.ack-gate label.ack-row{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--ink);cursor:pointer;margin:var(--s2) 0}.ack-gate input[type=checkbox]{margin-top:2px;accent-color:var(--warn)}input[type=checkbox]{accent-color:var(--accent)}.alert{display:flex;gap:9px;align-items:flex-start;border-radius:var(--r-sm);border:1px solid;padding:10px 13px;font-size:13px;line-height:1.5;margin:var(--s2) 0}.alert .alert-icon{flex:0 0 auto;margin-top:1px}.alert-ok{background:var(--ok-soft);border-color:#0e7b5e4d;color:#0a5c46}.alert-run{background:var(--run-soft);border-color:#2d5f9e4d;color:#234a7c}.alert-warn{background:var(--warn-soft);border-color:#a85b004d;color:#7c4400}.alert-danger{background:var(--danger-soft);border-color:#b3362b4d;color:#8f2b22}.alert-neutral{background:var(--surface-subtle);border-color:var(--border);color:var(--ink-2)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.02em;border-radius:999px;padding:2px 9px;white-space:nowrap;border:1px solid transparent}.pill-ok{background:var(--ok-soft);color:var(--ok)}.pill-run{background:var(--run-soft);color:var(--run)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-danger{background:var(--danger-soft);color:var(--danger)}.pill-neutral{background:var(--surface-subtle);color:var(--ink-2);border-color:var(--border)}.pill-accent{background:var(--accent-soft);color:var(--accent-hover)}.pill-solid-danger{background:var(--danger);color:#fff}.pill-solid-warn{background:var(--warn);color:#fff}.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.pill .dot.pulse{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.infotip{position:relative;display:inline-flex}.infotip-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--ink-3);cursor:help}.infotip-btn:hover,.infotip-btn:focus-visible,.infotip-btn[aria-expanded=true]{color:var(--accent-hover)}.infotip-panel{position:absolute;z-index:50;top:calc(100% + 7px);left:50%;transform:translate(-50%);width:max-content;max-width:330px;background:var(--olive);color:var(--cream);font-family:var(--font-ui);font-size:12.5px;font-weight:400;line-height:1.55;text-transform:none;letter-spacing:normal;text-align:left;border-radius:var(--r-sm);box-shadow:var(--shadow-md);padding:10px 13px}.infotip-panel.align-left{left:0;transform:none}.infotip-panel b,.infotip-panel strong{color:#fff}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface)}.data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.data-table th{position:sticky;top:0;z-index:2;background:var(--surface-subtle);color:var(--ink-2);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;text-align:left;padding:8px 12px;border-bottom:1px solid var(--border-strong);white-space:nowrap}.data-table td{padding:7px 12px;border-bottom:1px solid var(--border);vertical-align:top}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:nth-child(2n) td{background:var(--surface-subtle)}.data-table tbody tr:hover td{background:var(--accent-soft)}.data-table .num,.data-table th.num{text-align:right;font-variant-numeric:tabular-nums}.data-table td.num,.data-table td.mono{font-family:var(--font-mono);font-size:12px}.data-table td.strong{font-weight:600}.data-table tbody tr.row-attention td{background:var(--danger-soft)}.data-table tbody tr.row-attention td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.data-table tbody tr.row-review td{background:var(--warn-soft)}.data-table tbody tr.row-review td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.data-table tbody tr.row-drawer td,.data-table tbody tr.row-drawer:hover td{background:var(--surface-subtle)}.data-table tbody tr.row-create td{background:var(--ok-soft)}.mono{font-family:var(--font-mono)}.kv-row{display:flex;justify-content:space-between;gap:var(--s3);padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}.kv-row:last-child{border-bottom:none}.kv-row .kv-label{color:var(--ink-2)}.kv-row .kv-value{font-weight:600;text-align:right;word-break:break-word}.kv-row .kv-value.missing{color:var(--danger);font-weight:600}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--s3);margin-bottom:var(--s4)}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);padding:var(--s4) var(--s4) var(--s3)}.stat .stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2);display:flex;align-items:center;gap:6px}.stat .stat-value{font-family:var(--font-mono);font-size:26px;font-weight:600;line-height:1.2;margin-top:6px;color:var(--ink);font-variant-numeric:tabular-nums}.stat .stat-value.ok{color:var(--ok)}.stat .stat-value.warn{color:var(--warn)}.stat .stat-value.danger{color:var(--danger)}.stat .stat-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px}.collapse{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);margin-bottom:var(--s2);overflow:hidden}.collapse-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);background:transparent;border:none;cursor:pointer;padding:10px 13px;font-family:var(--font-ui);text-align:left}.collapse-head:hover{background:var(--surface-subtle)}.collapse-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink)}.collapse-title .chev{color:var(--ink-3);font-size:10px;width:12px}.collapse-summary{font-size:12.5px;color:var(--ink-2);font-weight:600;text-align:right}.collapse-body{padding:var(--s1) var(--s4) var(--s4);animation:reveal .14s ease-out}@keyframes reveal{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.collapse.tone-ok{border-left:3px solid var(--ok)}.collapse.tone-run{border-left:3px solid var(--run)}.collapse.tone-warn{border-left:3px solid var(--warn)}.collapse.tone-danger{border-left:3px solid var(--danger)}.collapse.tone-neutral{border-left:3px solid var(--border-strong)}.stepper{display:flex;align-items:flex-start;gap:0;margin-bottom:var(--s4)}.step{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;min-width:0}.step:before{content:"";position:absolute;top:13px;left:-50%;width:100%;height:2px;background:var(--border-strong)}.step:first-child:before{display:none}.step.reached:before{background:var(--accent)}.step-dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;font-weight:700;background:var(--surface);border:2px solid var(--border-strong);color:var(--ink-3);position:relative;z-index:1}.step.active .step-dot{border-color:var(--run);color:var(--run);animation:pulse 1.4s ease-in-out infinite}.step.done .step-dot{background:var(--ok);border-color:var(--ok);color:#fff}.step.halted .step-dot{background:var(--danger);border-color:var(--danger);color:#fff}.step-label{font-size:11.5px;font-weight:600;color:var(--ink-2);text-align:center}.step.active .step-label{color:var(--run)}.step.halted .step-label{color:var(--danger)}.step-sub{font-size:10.5px;color:var(--ink-3);text-align:center}.stage-track{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;margin:var(--s2) 0 var(--s3)}.stage-chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:12px;font-weight:600;border:1px solid var(--border-strong);border-radius:999px;padding:4px 12px;color:var(--ink-3);background:var(--surface)}.stage-chip .dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong)}.stage-chip.active{border-color:var(--run);color:var(--run);background:var(--run-soft)}.stage-chip.active .dot{background:var(--run);animation:pulse 1.4s ease-in-out infinite}.stage-chip.done{border-color:#0e7b5e66;color:var(--ok);background:var(--ok-soft)}.stage-chip.done .dot{background:var(--ok)}.stage-chip.halted{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.stage-chip.halted .dot{background:var(--danger)}.stage-arrow{color:var(--ink-3);font-size:11px}.log-pane{background:var(--code-bg);color:var(--code-ink);font-family:var(--font-mono);font-size:11.5px;line-height:1.6;border-radius:var(--r-sm);padding:var(--s3) var(--s4);overflow:auto;max-height:260px;white-space:pre-wrap;word-break:break-word;margin:var(--s2) 0}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.btn .spinner{margin-right:2px}.btn-primary .spinner,.btn-warn .spinner,.btn-danger .spinner{border-color:#fff6;border-top-color:#fff}.skeleton{background:linear-gradient(90deg,var(--border) 25%,var(--surface-subtle) 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.3s ease-in-out infinite;border-radius:4px;height:13px;margin:8px 0}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;color:var(--ink-3);font-size:13px;padding:var(--s6) var(--s4)}.empty-state .empty-icon{font-size:22px;opacity:.5;margin-bottom:6px}.hint{font-size:12px;color:var(--ink-3);line-height:1.5}.toolbar{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--olive);color:var(--cream);font-weight:600;padding:10px 16px;border-radius:0 0 var(--r-sm) 0}.skip-link:focus-visible{left:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.utility-bar{display:flex;align-items:center;justify-content:flex-end;gap:var(--s3);margin:0 0 var(--s4);font-size:12px;color:var(--ink-3)}.utility-clock{font-family:var(--font-mono);font-size:11.5px;white-space:nowrap}.utility-bar .icon-btn{display:inline-flex;align-items:center;gap:5px;background:transparent;border:1px solid var(--border);border-radius:var(--r-sm);color:var(--ink-2);font-family:var(--font-ui);font-size:11.5px;font-weight:600;padding:4px 9px;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.utility-bar .icon-btn:hover{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.datefield{display:inline-grid;gap:5px}.chip-row{display:flex;gap:5px;flex-wrap:wrap}.chip{background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;color:var(--ink-2);font-family:var(--font-ui);font-size:11.5px;font-weight:600;padding:2px 10px;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.chip:hover{border-color:var(--accent);color:var(--accent-hover)}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hover)}.chip .chip-sub{font-weight:400;color:var(--ink-3);margin-left:4px}.field-error{font-size:11.5px;color:var(--danger);font-weight:600}.field-warn{font-size:11.5px;color:var(--warn);font-weight:600}.input.invalid{border-color:var(--danger)}.input.invalid:focus{border-color:var(--danger);box-shadow:0 0 0 3px #b3362b26}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#20251b73;display:flex;align-items:center;justify-content:center;padding:var(--s5);animation:fade-in .12s ease-out}[data-theme=dark] .modal-overlay{background:#0009}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-md);width:100%;max-width:480px;max-height:86vh;overflow:auto;padding:var(--s5);animation:reveal .14s ease-out}.modal.tone-warn{border-top-color:var(--warn)}.modal.tone-danger{border-top-color:var(--danger)}.modal.tone-ok{border-top-color:var(--accent)}.modal-title{font-family:var(--font-display);font-size:17px;font-weight:620;color:var(--ink);margin:0 0 var(--s2)}.modal-body{font-size:13px;line-height:1.55;color:var(--ink-2)}.modal-body b,.modal-body strong{color:var(--ink)}.modal-rows{margin:var(--s3) 0;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-subtle);padding:4px 12px}.modal-rows .kv-row{padding:6px 0;font-size:12.5px}.modal-rows .kv-row.total{border-top:1px solid var(--border-strong)}.modal-rows .kv-row.total .kv-value{font-family:var(--font-mono)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--s2);margin-top:var(--s4)}.toast-region{position:fixed;right:var(--s4);bottom:var(--s4);z-index:120;display:flex;flex-direction:column;gap:var(--s2);max-width:min(380px,calc(100vw - 32px))}.toast{display:flex;align-items:flex-start;gap:8px;background:var(--olive);color:var(--cream);border-left:4px solid var(--accent);border-radius:var(--r-sm);box-shadow:var(--shadow-md);font-size:12.5px;line-height:1.45;padding:10px 12px;animation:toast-in .16s ease-out}[data-theme=dark] .toast{background:#0e110a}.toast.tone-ok{border-left-color:#3fbf94}.toast.tone-warn{border-left-color:#e0a458}.toast.tone-danger{border-left-color:#e07f73}.toast .toast-x{background:none;border:none;color:var(--cream-dim);cursor:pointer;font-size:13px;line-height:1;padding:1px 2px;margin-left:auto}.toast .toast-x:hover{color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}button.stat{font-family:var(--font-ui);text-align:left;cursor:pointer;width:100%;transition:border-color .12s,box-shadow .12s,transform .12s}button.stat:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}button.stat[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow-sm)}button.stat .stat-sub{min-height:17px}.data-table th.sticky,.data-table td.sticky{position:sticky;left:0;background:var(--surface);box-shadow:1px 0 0 var(--border)}.data-table th.sticky{z-index:3;background:var(--surface-subtle)}.data-table td.sticky{z-index:1}.itemcard{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:8px 11px;display:grid;gap:6px;font-size:12.5px}.itemcard.tone-ok{background:var(--ok-soft);border-left:4px solid var(--ok)}.itemcard.tone-warn{background:var(--warn-soft);border-left:4px solid var(--warn)}.itemcard.tone-danger{background:var(--danger-soft);border-left:4px solid var(--danger)}.itemcard.tone-neutral{background:var(--surface-subtle);border-left:4px solid var(--border-strong)}.itemcard .itemcard-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.field{margin-bottom:12px}.input-sm{padding:7px 9px;font-size:12.5px}select.input{cursor:pointer}.mini-table{border-collapse:collapse;font-size:11px;width:100%}.mini-table td{padding:3px 10px 3px 0;color:var(--ink);vertical-align:top}.mini-table td.mono{font-weight:600}.scroll-list{max-height:170px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-sm);padding:4px 10px;background:var(--surface-subtle)}.drawer-grid{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:16px;margin:8px 4px;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.pw-wrap{position:relative;margin-bottom:12px}.pw-wrap .input{margin:0;padding-right:58px}.pw-toggle{position:absolute;right:5px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--ink-3);font-family:var(--font-ui);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;padding:4px 6px;border-radius:4px}.pw-toggle:hover{color:var(--ink)}.login-error{animation:shake .24s ease-in-out}@keyframes shake{0%,to{transform:none}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media (max-width: 700px){.stat .stat-value{font-size:22px}.card{padding:var(--s4)}.table-cards thead{display:none}.table-cards,.table-cards tbody,.table-cards tr,.table-cards td{display:block;width:100%}.table-cards tbody tr{border:1px solid var(--border);border-radius:var(--r-sm);margin:0 0 var(--s2);padding:6px 0;background:var(--surface)}.table-cards tbody tr:nth-child(2n) td{background:transparent}.table-cards tbody tr.row-attention,.table-cards tbody tr.row-review{border-left-width:4px}.table-cards tbody tr.row-attention{border-left-color:var(--danger);background:var(--danger-soft)}.table-cards tbody tr.row-review{border-left-color:var(--warn);background:var(--warn-soft)}.table-cards tbody tr.row-attention td,.table-cards tbody tr.row-attention td:first-child,.table-cards tbody tr.row-review td,.table-cards tbody tr.row-review td:first-child{background:transparent;box-shadow:none}.table-cards td{display:flex;gap:12px;align-items:baseline;border-bottom:none;padding:4px 12px}.table-cards td.sticky{position:static;box-shadow:none;background:transparent}.table-cards td[data-label=""]:empty{display:none}.table-cards td[data-label]:before{content:attr(data-label);flex:0 0 92px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}.table-cards td.num{text-align:left}.table-cards tbody tr.row-drawer{border:none;padding:0;background:transparent}.table-cards tbody tr.row-drawer td{display:block;padding:0}.table-cards tbody tr.row-drawer td:before{display:none}}@media (max-width: 700px){.ob-table.table-cards tbody tr{padding:10px 12px}.ob-table .ob-name{display:block!important;font-size:15px;font-weight:700;white-space:normal!important;padding:2px 0 8px;border-bottom:1px solid var(--border);margin-bottom:6px}.ob-table td[data-label=Plan],.ob-table td[data-label=Count]{display:inline-flex!important;width:auto;padding:2px 18px 6px 0}.ob-table .ob-meal{display:inline-flex!important;flex-direction:column;align-items:flex-start;width:auto;gap:3px;padding:4px 10px 6px 0;vertical-align:top}.ob-table .ob-meal:before{flex:none;max-width:88px;font-size:9.5px;line-height:1.15;white-space:normal}.ob-table .ob-meal input{font-size:16px!important;width:58px!important;padding:7px 8px!important;text-align:center!important}.ob-drawer,.ob-addform{flex-direction:column;align-items:stretch!important}.ob-drawer label,.ob-addform label,.ob-drawer input,.ob-addform input,.ob-addform select{width:100%!important}.ob-drawer>div{margin-left:0!important;flex-wrap:wrap}.ob-drawer>div .btn,.ob-addform .btn{flex:1 1 auto}}.ob-input{text-align:center;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--ink);transition:border-color .11s,background .11s,box-shadow .11s}.ob-input:hover:not(:disabled){border-color:var(--border-strong)}.ob-input:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 2px var(--accent-soft)}.ob-input:disabled{opacity:.45}.ob-input::-webkit-outer-spin-button,.ob-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-sm);overflow:hidden}.seg-btn{padding:7px 16px;font-size:12.5px;font-weight:600;font-family:var(--font-ui);background:var(--surface);color:var(--ink-2);border:none;cursor:pointer;transition:background .12s,color .12s}.seg-btn+.seg-btn{border-left:1px solid var(--border)}.seg-btn:hover:not(.active){background:var(--surface-subtle)}.seg-btn.active{background:var(--accent-ink);color:#fff}.qcard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}.qcard{position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;min-height:76px;border:1.5px solid var(--border);border-radius:var(--r-md);background:var(--surface);display:flex;align-items:center;justify-content:center;text-align:center;font-size:12.5px;font-weight:600;line-height:1.2;color:var(--ink);transition:border-color .12s,background .12s,box-shadow .12s}.qcard:hover:not(.locked){border-color:var(--ink-3)}.qcard:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.qcard.sel{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.qcard.dp{border-style:dashed}.qcard.dp.sel{border-color:var(--run);box-shadow:inset 0 0 0 1px var(--run);background:color-mix(in srgb,var(--run) 8%,transparent)}.qcard.locked{opacity:.4;cursor:not-allowed}.qcard .qbadge{position:absolute;top:6px;right:8px;font-family:var(--font-mono);font-weight:700;font-size:13px;color:var(--accent-ink)}.qcard.dp .qbadge{color:var(--run)}.qcard .dp-tag{position:absolute;top:6px;left:8px;font-size:9px;font-weight:800;letter-spacing:.04em;color:var(--run)}.qcard .qminus,.qcard .qplus{position:absolute;top:50%;transform:translateY(-50%);font-size:20px;font-weight:700;color:var(--ink-3);opacity:0;transition:opacity .12s;pointer-events:none}.qcard.sel .qminus,.qcard.sel .qplus{opacity:.55}.qcard .qminus{left:9px}.qcard .qplus{right:9px}.qcard.has-photo{flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:center;padding:0;overflow:hidden;min-height:132px}.qcard .qcard-img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;background:var(--surface-subtle);border-bottom:1px solid var(--border)}.qcard .qcard-name{padding:0 6px}.qcard.has-photo .qcard-name{padding:7px 8px 9px;line-height:1.25}.qcard.has-photo.sel .qcard-img{border-bottom-color:var(--accent)}.qcard .qinfo{position:absolute;top:6px;right:6px;z-index:3;width:19px;height:19px;border-radius:50%;border:none;cursor:pointer;padding:0;font-family:var(--font-display, serif);font-style:italic;font-weight:700;font-size:12px;line-height:19px;text-align:center;color:#fff;background:color-mix(in srgb,var(--ink) 62%,transparent)}.qcard.has-photo .qinfo{background:#0000008c}.qcard .qinfo:hover{background:var(--accent)}.qcard.sel .qinfo{right:30px}.qcard.has-photo.sel .qinfo{right:42px}.qcard.has-photo .qbadge{top:7px;right:8px;padding:1px 7px;border-radius:11px;color:var(--accent-ink);background:#fffffff2;box-shadow:0 1px 4px #0000004d}.qcard.has-photo.dp .qbadge{color:var(--run)}.qcard.has-photo .qminus,.qcard.has-photo .qplus{width:30px;height:30px;line-height:30px;text-align:center;font-size:22px;border-radius:50%;color:#20251b;background:#fffffff2;box-shadow:0 1px 4px #0000004d}.qcard.has-photo.sel .qminus,.qcard.has-photo.sel .qplus{opacity:1}.qcard .qinfo-pop{position:absolute;z-index:5;left:8px;right:8px;bottom:8px;padding:8px 10px;border-radius:var(--r-sm, 6px);cursor:default;background:var(--surface);color:var(--ink);border:1px solid var(--border-strong);font-size:11.5px;line-height:1.35;text-align:left;box-shadow:var(--shadow-md, 0 4px 16px rgba(0,0,0,.2));max-height:80%;overflow:auto}.qprog{height:9px;border-radius:5px;background:var(--surface-subtle);overflow:hidden}.qprog>div{height:100%;background:var(--accent);transition:width .16s}.qprog.full>div{background:var(--ok)}.qprog.over>div{background:var(--danger)}@media (max-width: 700px){.qcard-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}.qcard{min-height:84px;font-size:13px}}@media (prefers-reduced-motion: reduce){.pill .dot.pulse,.step.active .step-dot,.stage-chip.active .dot,.skeleton,.collapse-body,.modal,.modal-overlay,.toast,.login-error{animation:none}.btn,.chip,button.stat{transition:none}button.stat:hover,.btn:active:not(:disabled){transform:none}.spinner{animation-duration:1.6s}}
