:root{--Grey-White: #ffffff;--Blue-Blue50: #e8f3ff;--Blue-Blue100: #c9e2ff;--Blue-Blue500: #3182f6;--Blue-Blue600: #2272eb;--Blue-Blue700: #1b64da;--Grey-Grey50: #f9fafb;--Grey-Grey75: #f6f7f9;--Grey-Grey100: #f2f4f6;--Grey-Grey200: #e5e8eb;--Grey-Grey300: #d1d6db;--Grey-Grey400: #b0b8c1;--Grey-Grey500: #8b95a1;--Grey-Grey600: #6b7684;--Grey-Grey700: #4e5968;--Grey-Grey800: #333d4b;--Grey-Grey900: #191f28;--Green-Green50: #f0faf6;--Green-Green100: #aeefd5;--Green-Green500: #03b26c;--Green-Green600: #02a262;--Red-Red50: #ffeeee;--Red-Red100: #ffd4d6;--Red-Red200: #feafb4;--Red-Red500: #f04452;--Red-Red600: #e42939;--Red-Red700: #d22030;--Orange-Orange50: #fff3e0;--Orange-Orange100: #ffe0b0;--Orange-Orange500: #fe9800;--Orange-Orange700: #f57800;--GreyOpacity-GreyOpacity100: rgba(2, 32, 71, .05);--GreyOpacity-GreyOpacity200: rgba(0, 27, 55, .1);--GreyOpacity-GreyOpacity500: rgba(3, 24, 50, .46)}:root{--bg: var(--Grey-Grey75);--panel: var(--Grey-White);--panel-2: var(--Grey-Grey100);--border: var(--Grey-Grey200);--text: var(--Grey-Grey800);--muted: var(--Grey-Grey600);--accent: var(--Blue-Blue500);--accent-hover: var(--Blue-Blue600);--accent-ink: var(--Grey-White);--accent-soft: var(--Blue-Blue50);--error: var(--Red-Red500);--error-bg: var(--Red-Red50);--error-border: var(--Red-Red100);--ok-fg: var(--Green-Green600);--ok-bg: var(--Green-Green50);--ok-border: var(--Green-Green100);--warn-fg: var(--Orange-Orange700);--warn-bg: var(--Orange-Orange50);--warn-border: var(--Orange-Orange100);--void-fg: var(--Red-Red600);--void-bg: var(--Red-Red50);--void-border: var(--Red-Red200);--danger: var(--Red-Red500);--danger-hover: var(--Red-Red600);--danger-ink: var(--Grey-White);--money-neg: var(--Red-Red600);--overlay: var(--GreyOpacity-GreyOpacity500);--hover-soft: var(--GreyOpacity-GreyOpacity100);--shadow-panel: 0 1px 2px rgba(0, 25, 54, .08);--shadow-raise: 0 2px 8px rgba(0, 25, 54, .12);--shadow-modal: 0 8px 28px rgba(0, 25, 54, .24);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 13px;--fs-base: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 24px;--lh-xs: 14px;--lh-sm: 16px;--lh-md: 17px;--lh-base: 18px;--lh-lg: 20px;--lh-xl: 24px;--lh-2xl: 30px;--fw-body: 400;--fw-accent: 500;--fw-semi: 600;--fw-bold: 700;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-pill: 999px;--sidebar-w: 232px;--topbar-h: 52px;--z-sticky: 5;--z-modal: 1000;--z-toast: 1100;--font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Apple SD Gothic Neo", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);-webkit-font-smoothing:antialiased}.hint{color:var(--muted);font-size:var(--fs-md)}.m-0{margin:0}.grow{flex:1}.w-full{width:100%}.ml-8{margin-left:var(--sp-2)}.layout{display:flex;height:100%}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:var(--sp-4) var(--sp-3);overflow-y:auto}.brand{display:block;font-weight:var(--fw-bold);color:var(--accent);font-size:var(--fs-lg);line-height:var(--lh-lg);text-decoration:none;padding:var(--sp-2) 10px var(--sp-4)}.sidebar nav{display:flex;flex-direction:column;gap:2px}.nav-group{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:9px 10px;border:none;border-radius:var(--radius);background:none;color:var(--Grey-Grey700);font:inherit;font-weight:var(--fw-accent);text-align:left;text-decoration:none;cursor:pointer}.nav-group:hover{background:var(--panel-2);color:var(--text)}.nav-group.current{color:var(--text);font-weight:var(--fw-semi)}.nav-group.leaf.active{background:var(--accent-soft);color:var(--accent);font-weight:var(--fw-semi)}.nav-label{flex:1;min-width:0}.menu-icon{flex-shrink:0;opacity:.85}.chev{flex-shrink:0;color:var(--Grey-Grey400);transition:transform .12s ease}.chev.open{transform:rotate(180deg)}.nav-children{display:flex;flex-direction:column;gap:2px;margin:2px 0 var(--sp-2);padding-left:14px;border-left:1px solid var(--border);margin-left:19px}.nav-item{display:block;padding:7px 10px;border-radius:var(--radius);color:var(--muted);text-decoration:none;font-size:var(--fs-md);font-weight:var(--fw-accent)}.nav-item:hover{background:var(--panel-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:var(--fw-semi)}.content{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-5);border-bottom:1px solid var(--border);background:var(--panel)}.main{padding:var(--sp-6);overflow:auto}h2{font-size:var(--fs-xl);line-height:var(--lh-xl);font-weight:var(--fw-bold);margin:0 0 var(--sp-3)}h3{font-size:var(--fs-lg);line-height:var(--lh-lg);font-weight:var(--fw-bold)}.btn{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius);cursor:pointer;font-size:var(--fs-base);font-weight:500;font-family:inherit}.btn:hover{background:var(--panel-2);border-color:var(--Grey-Grey300)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.danger{background:var(--danger);color:var(--danger-ink);border-color:var(--danger);font-weight:600}.btn.danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}input,select{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-2) 10px;font-size:var(--fs-base);font-family:inherit}input:focus,select:focus{outline:none;border-color:var(--accent)}.grid{width:100%;border-collapse:collapse;margin-top:var(--sp-2)}.grid th,.grid td{border-bottom:1px solid var(--border);padding:10px var(--sp-3);text-align:left}.grid th{color:var(--muted);font-weight:600;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.04em}.grid tbody tr:hover{background:var(--Grey-Grey50)}.grid .num{text-align:right}.grid .mono{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:var(--sp-6);margin:0}.error{color:var(--error);background:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--radius);padding:10px var(--sp-3);margin:var(--sp-3) 0}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-3);margin-top:var(--sp-4)}.card{display:block;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);text-decoration:none;color:var(--text);box-shadow:var(--shadow-panel)}.card:hover{border-color:var(--accent)}.card-title{font-weight:700;font-size:15px}.card-sub{font-size:var(--fs-sm);color:var(--muted);margin-top:2px}.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--sp-2) var(--sp-5);margin:var(--sp-3) 0 0}.kv>div{border-top:1px solid var(--border);padding-top:var(--sp-2)}.card .kv{margin-top:var(--sp-3)}.card .kv>div{border-top:none;padding-top:var(--sp-1);display:flex;justify-content:space-between}.kv dt{color:var(--muted);font-size:var(--fs-sm)}.kv dd{margin:2px 0 0}.card .kv dd{margin:0}.kv-full{grid-column:1 / -1}.crumb{display:block;margin:0 0 var(--sp-1);font-size:var(--fs-md);line-height:var(--lh-md);color:var(--muted)}.crumb a{color:var(--muted);text-decoration:none}.crumb a:hover{color:var(--accent)}.crumb-sep{margin:0 var(--sp-1);color:var(--Grey-Grey400)}.crumb-id{font-size:var(--fs-md);color:var(--muted);font-weight:400}.badge{display:inline-block;padding:2px var(--sp-2);border-radius:var(--radius-sm);font-size:var(--fs-xs);font-weight:600;background:var(--panel-2);color:var(--muted);border:1px solid var(--border)}.badge.ok{background:var(--ok-bg);color:var(--ok-fg);border-color:var(--ok-border)}.badge.off{background:var(--panel-2);color:var(--muted)}.badge.void{background:var(--void-bg);color:var(--void-fg);border-color:var(--void-border)}.link{color:var(--accent);text-decoration:none}.link:hover{text-decoration:underline}.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-3);margin:var(--sp-4) 0}.kpi-c{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);box-shadow:var(--shadow-panel)}.kpi-c .k{font-size:var(--fs-xs);color:var(--muted)}.kpi-c .v{font-size:var(--fs-2xl);font-weight:800;margin:var(--sp-1) 0 2px}.kpi.kpi-6{grid-template-columns:repeat(3,1fr)}.kpi-c .src{margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--muted)}@media(max-width:780px){.kpi,.kpi.kpi-6{grid-template-columns:1fr 1fr}}.tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border);margin:var(--sp-4) 0 var(--sp-3)}.tab{appearance:none;background:none;border:none;border-bottom:2px solid transparent;padding:var(--sp-2) var(--sp-3);font:inherit;font-weight:600;color:var(--muted);cursor:pointer}.tab:hover{color:var(--text)}.tab.on{color:var(--accent);border-bottom-color:var(--accent)}.card-block{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);margin:var(--sp-4) 0;box-shadow:var(--shadow-panel)}.card-block h3{margin:0 0 var(--sp-3);font-size:var(--fs-base)}.form-row{display:flex;gap:var(--sp-4);flex-wrap:wrap;align-items:flex-end;margin-bottom:10px}.afield{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-md);color:var(--muted)}.afield .k{font-size:var(--fs-sm);color:var(--muted)}.inp{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-2) 10px;font-size:var(--fs-base);min-width:120px;font-family:inherit}.inp:focus{outline:none;border-color:var(--accent)}.inp.bad{border-color:var(--error-border);background:var(--error-bg)}.odds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--sp-3)}.odds-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-3) var(--sp-4)}.odds-row{display:flex;align-items:flex-end;gap:var(--sp-2)}.odds-rank{min-width:22px;padding-bottom:var(--sp-2);color:var(--muted);font-size:var(--fs-md)}.odds-row .inp{min-width:84px}.preview-wrap{max-height:42vh}.row-changed td{background:var(--accent-soft)}.toggle{border-radius:20px;padding:7px var(--sp-4);font-size:var(--fs-md);font-weight:600;cursor:pointer;border:1px solid var(--border);font-family:inherit}.toggle.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.toggle.off{background:var(--panel-2);color:var(--muted)}.ok-msg{color:var(--ok-fg);background:var(--ok-bg);border:1px solid var(--ok-border);border-radius:var(--radius);padding:10px var(--sp-3);margin:var(--sp-3) 0}.modal-overlay{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;padding:48px var(--sp-4);overflow-y:auto;z-index:var(--z-modal)}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);width:100%;max-width:560px;display:flex;flex-direction:column;max-height:calc(100vh - 96px)}.modal.sm{max-width:420px}.modal.lg{max-width:860px}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border)}.modal-title{margin:0;font-size:var(--fs-lg);font-weight:700}.modal-close{background:none;border:none;color:var(--muted);font-size:var(--fs-xl);line-height:1;cursor:pointer;padding:0 var(--sp-1)}.modal-close:hover{color:var(--text)}.modal-body{padding:var(--sp-5);overflow-y:auto}.modal-body>:first-child{margin-top:0}.modal-footer{display:flex;justify-content:flex-end;align-items:center;gap:var(--sp-2);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border)}.modal-msg{margin:0;line-height:1.5}.login{height:100%;display:flex;align-items:center;justify-content:center}.login-card{width:320px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-3);box-shadow:var(--shadow-panel)}.login-card h1{margin:0;color:var(--accent);font-size:var(--fs-xl)}.topbar-actions{display:flex;align-items:center;gap:var(--sp-2)}.maint-banner{display:flex;align-items:center;gap:var(--sp-3);padding:10px var(--sp-5);background:var(--warn-bg);color:var(--warn-fg);border-bottom:1px solid var(--warn-border);font-size:var(--fs-md);line-height:var(--lh-md)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.page-actions{display:flex;align-items:center;gap:var(--sp-2)}.block-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.row-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.filterbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-3) var(--sp-4);padding:var(--sp-4);margin:var(--sp-4) 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.filterbar-actions{display:flex;gap:var(--sp-2);margin-left:auto}.range{display:flex;align-items:center;gap:var(--sp-2)}.range-sep{color:var(--muted)}.table-controls{display:flex;align-items:center;gap:var(--sp-3);margin:var(--sp-4) 0 var(--sp-2)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--muted);cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--panel-2);color:var(--text)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.stale-note{margin-bottom:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--warn-border);border-radius:var(--radius);background:var(--warn-bg);color:var(--warn-fg);font-size:var(--fs-sm)}.table-wrap.stale{opacity:.45}.cell-actions-off{border:0;margin:0;padding:0;min-width:0;pointer-events:none}.table-wrap{max-height:68vh;overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel)}.grid.sticky{margin-top:0}.grid.sticky thead th{position:sticky;top:0;z-index:var(--z-sticky);background:var(--Grey-Grey50);border-bottom:1px solid var(--border)}.grid td.mid,.grid th.mid{text-align:center}.th-sort{display:inline-flex;align-items:center;gap:var(--sp-1);padding:0;border:none;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.th-sort:hover{color:var(--text)}.sort{color:var(--Grey-Grey400)}.sort.on{color:var(--accent)}.money{font-variant-numeric:tabular-nums}.money.neg{color:var(--money-neg)}.money.absent{color:var(--muted);font-size:var(--fs-md)}.pager{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3)}.btn.page{min-width:34px;padding:var(--sp-2) 10px}.btn.page.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:var(--fw-semi)}.pager-size{margin-left:auto}.skeleton{display:block;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--panel-2) 25%,var(--Grey-Grey200) 37%,var(--panel-2) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.3s ease infinite}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton-block{display:flex;flex-direction:column;gap:var(--sp-3)}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.toast-viewport{position:fixed;right:var(--sp-5);bottom:var(--sp-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--sp-2);max-width:380px}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-raise);font-size:var(--fs-md);line-height:var(--lh-base)}.toast.success{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok-fg)}.toast.error{background:var(--error-bg);border-color:var(--error-border);color:var(--error)}.toast.warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-fg)}.toast-msg{flex:1}.toast-close{border:none;background:none;color:inherit;font-size:var(--fs-lg);line-height:1;padding:0;cursor:pointer;opacity:.6}.toast-close:hover{opacity:1}
