:root{--color-bg:#f4f6fb;--color-surface:#fff;--color-surface-2:#f8fafd;--color-surface-muted:#eceff6;--color-border:#e4e7f1;--color-border-strong:#ced4e4;--color-text:#232a47;--color-text-secondary:#4e5678;--color-text-muted:#69708f;--color-text-faint:#9ba1b9;--color-primary:#0e7c86;--color-primary-hover:#0a5f68;--color-primary-soft:#d6eff0;--color-primary-faint:#eef9f9;--color-on-primary:#fff;--color-action:#0e7c86;--color-action-hover:#0a5f68;--color-action-soft:#d6eff0;--color-action-faint:#eef9f9;--color-accent-bright:#13a6a6;--color-link:#0c6e77;--color-link-hover:#0a5f68;--accent-ring:rgba(19,166,166,.28);--color-gold:#be8a3d;--color-gold-strong:#8a6420;--color-gold-tint:#f4e7cd;--color-gold-faint:#fbf4e5;--color-success:#16a34a;--color-success-strong:#15803d;--color-success-soft:#dcfce7;--color-warning:#d97706;--color-warning-strong:#b45309;--color-warning-soft:#fef3c7;--color-danger:#dc2626;--color-danger-strong:#b91c1c;--color-danger-soft:#fee2e2;--color-danger-faint:#fef2f2;--pitch-target:#2563eb;--pitch-target-label:#1d4ed8;--pitch-lane:#dcfce7;--pitch-lane-edge:#86efac;--pitch-in:#16a34a;--pitch-near:#d97706;--pitch-far:#dc2626;--pitch-grid:#e4e7f1;--pitch-idle:#9ba1b9;--color-row-hover:#f8fafd;--plate:#fff;--plate-zone:#f3f4f6;--plate-border:#e7e4dc;--font-sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;--font-serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-figure:2.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:3rem;--space-8:2rem;--space-10:2.5rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:999px;--shadow-sm:0 1px 2px rgba(28,33,64,.05),0 1px 3px rgba(28,33,64,.05);--shadow-md:0 6px 18px -6px rgba(28,33,64,.12),0 2px 6px -2px rgba(28,33,64,.06);--shadow-lg:0 20px 44px -14px rgba(28,33,64,.2),0 6px 14px -6px rgba(28,33,64,.1);--card-inset:none;--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--duration-fast:.12s;--duration-base:.18s;--duration-slow:.24s;--sidebar-width:240px;--topbar-height:60px}:root[data-theme=dark]{--color-bg:#12141d;--color-surface:#1b1f2e;--color-surface-2:#222739;--color-surface-muted:#262c3f;--color-border:#333a54;--color-border-strong:#434b68;--color-text:#eceef6;--color-text-secondary:#b4bbd4;--color-text-muted:#8890ac;--color-text-faint:#626a85;--color-primary:#17b8ae;--color-primary-hover:#2ac7bd;--color-primary-soft:rgba(45,212,191,.16);--color-primary-faint:rgba(45,212,191,.09);--color-on-primary:#06201f;--color-action:#17b8ae;--color-action-hover:#2ac7bd;--color-action-soft:rgba(45,212,191,.16);--color-action-faint:rgba(45,212,191,.09);--color-accent-bright:#40d6cb;--color-link:#40d6cb;--color-link-hover:#2ac7bd;--accent-ring:rgba(64,214,203,.34);--color-gold:#ddb061;--color-gold-strong:#e7c481;--color-gold-tint:rgba(221,176,97,.18);--color-gold-faint:rgba(221,176,97,.1);--color-success:#34d399;--color-success-strong:#5be3a8;--color-success-soft:rgba(52,211,153,.16);--color-warning:#fbbf24;--color-warning-strong:#fcd34d;--color-warning-soft:rgba(251,191,36,.16);--color-danger:#f87171;--color-danger-strong:#fca5a5;--color-danger-soft:rgba(248,113,113,.16);--color-danger-faint:rgba(248,113,113,.09);--pitch-target:#5b8def;--pitch-target-label:#9bb8f7;--pitch-lane:rgba(52,211,153,.15);--pitch-lane-edge:#2e7458;--pitch-in:#34d399;--pitch-near:#fbbf24;--pitch-far:#f87171;--pitch-grid:#2a3048;--pitch-idle:#626a85;--color-row-hover:#222739;--plate:#f6f5f1;--plate-zone:#edeef1;--plate-border:#d9d5cc;--shadow-sm:0 1px 2px rgba(0,0,0,.45);--shadow-md:0 8px 22px -8px rgba(0,0,0,.55),0 2px 6px -2px rgba(0,0,0,.4);--shadow-lg:0 24px 50px -14px rgba(0,0,0,.65),0 8px 18px -8px rgba(0,0,0,.45);--card-inset:inset 0 1px 0 hsla(0,0%,100%,.05)}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color var(--duration-slow) var(--ease-out),color var(--duration-slow) var(--ease-out)}body,h1,h2,h3,h4{color:var(--color-text)}h1,h2,h3,h4{font-weight:700;line-height:1.25;margin:0}p{margin:0}.serif{font-family:var(--font-serif)}.tab{font-feature-settings:"tnum" 1;font-variant-numeric:tabular-nums}a{color:var(--color-link);text-decoration:none}a:hover{color:var(--color-link-hover);text-decoration:underline}button{font-family:inherit}:focus-visible{border-radius:2px;outline:2px solid var(--color-action);outline-offset:2px}.btn:focus-visible,.form-input:focus-visible{outline:none}.btn{align-items:center;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;font-size:var(--text-base);font-weight:600;gap:var(--space-2);height:36px;justify-content:center;line-height:1;padding:0 var(--space-4);transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.btn,a.btn:hover{text-decoration:none}.btn:active{transform:scale(.97)}.btn:focus-visible{border-color:var(--color-action);box-shadow:0 0 0 3px var(--accent-ring)}.btn-action,.btn-primary{background:var(--color-primary);background-image:linear-gradient(180deg,#ffffff1a,#0000000d);box-shadow:var(--shadow-sm);color:var(--color-on-primary)}.btn-action:hover,.btn-primary:hover{background-color:var(--color-primary-hover);box-shadow:var(--shadow-md);color:var(--color-on-primary);transform:translateY(-1px)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-strong);color:var(--color-text)}.btn-secondary:hover{background:var(--color-surface-muted);color:var(--color-text)}.btn-ghost{background:transparent;color:var(--color-link)}.btn-ghost:hover{background:var(--color-action-faint);color:var(--color-link-hover)}.btn-danger{background:transparent;border-color:var(--color-danger)}.btn-danger,.btn-danger:hover{color:var(--color-danger-strong)}.btn-danger:hover{background:var(--color-danger-faint)}.btn-gold{background:var(--color-gold-tint);border-color:color-mix(in srgb,var(--color-gold) 40%,transparent);color:var(--color-gold-strong)}.btn-gold:hover{background:color-mix(in srgb,var(--color-gold-tint) 70%,var(--color-gold))}.btn-sm{font-size:var(--text-sm);height:28px;padding:0 var(--space-3)}.btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.45;transform:none}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm),var(--card-inset);overflow:hidden}.page-header{align-items:center;display:flex;gap:var(--space-4);justify-content:space-between;margin-bottom:var(--space-6)}.page-title{color:var(--color-text);font-size:var(--text-2xl);font-weight:800;letter-spacing:-.5px}.page-subtitle{color:var(--color-text-secondary);font-size:var(--text-base);margin-top:var(--space-1)}.plate{background:var(--plate);border:1px solid var(--plate-border);border-radius:var(--radius-md);overflow:hidden;padding:var(--space-3)}.data-table{border-collapse:collapse;font-size:var(--text-base);width:100%}.data-table th{background:var(--color-surface-muted);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-align:left;text-transform:uppercase}.data-table td,.data-table th{border-bottom:1px solid var(--color-border);padding:var(--space-3) var(--space-4)}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--color-row-hover)}.data-table td.num{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.data-table th.num{text-align:right}.indicator{align-items:center;display:inline-flex;gap:var(--space-2)}.indicator-dot{border-radius:var(--radius-full);flex-shrink:0;height:8px;width:8px}.indicator-dot[data-level=good]{background:var(--color-success)}.indicator-dot[data-level=warn]{background:var(--color-warning)}.indicator-dot[data-level=low]{background:var(--color-danger)}.badge{align-items:center;border-radius:var(--radius-full);display:inline-flex;font-size:var(--text-xs);font-weight:600;gap:var(--space-1);padding:2px 10px;white-space:nowrap}.badge-action,.badge-primary{background:var(--color-primary-soft);color:var(--color-link)}.badge-success{background:var(--color-success-soft);color:var(--color-success-strong)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning-strong)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger-strong)}.badge-gold{background:var(--color-gold-tint);color:var(--color-gold-strong)}.badge-ink{background:var(--color-surface-muted);color:var(--color-text-secondary)}.figure{color:var(--color-text);font-variant-numeric:tabular-nums;font-weight:700}.figure-rule{background:var(--color-accent-bright);border-radius:var(--radius-full);height:3px;opacity:.9;width:34px}.form-field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}.form-label{color:var(--color-text);font-size:var(--text-sm);font-weight:600}.form-input{background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text);font-family:inherit;font-size:var(--text-base);min-height:38px;padding:var(--space-2) var(--space-3);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.form-input::-moz-placeholder{color:var(--color-text-muted)}.form-input::placeholder{color:var(--color-text-muted)}.form-input:focus{border-color:var(--color-action);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.form-input:disabled{background:var(--color-surface-muted);color:var(--color-text-muted)}textarea.form-input{line-height:1.5;min-height:0}.form-error{color:var(--color-danger-strong);font-size:var(--text-sm)}.form-success{color:var(--color-success-strong);font-size:var(--text-sm)}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.btn-action:hover,.btn-primary:hover,.btn:active{transform:none}}
