@font-face{font-family:GeistMono;src:url(../media/GeistMono_Variable.p.074yowjdp83r3.woff2)format("woff2");font-display:swap;font-weight:100 900}.iaM1Ya_className{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.iaM1Ya_variable{--font-geist-mono:"GeistMono", ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New, monospace}
@font-face{font-family:GeistSans;src:url(../media/Geist_Variable-s.p.142kz3f7gseln.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.Ur3q_a_className{font-family:GeistSans,GeistSans Fallback}.Ur3q_a_variable{--font-geist-sans:"GeistSans", "GeistSans Fallback"}
:root{--background:#fff;--background-subtle:#fafafa;--surface:#fff;--surface-hover:#f5f5f5;--border:#eaeaea;--border-strong:#d4d4d4;--text:#0a0a0a;--text-secondary:#525252;--text-muted:#8f8f8f;--accent:#0a0a0a;--accent-text:#fff;--link:#0068d6;--focus:#0068d6;--blue:#0068d6;--blue-soft:#e9f2fe;--green:#297a3a;--green-soft:#e9f6ec;--amber:#a35200;--amber-soft:#fff4e5;--red:#c4202b;--red-soft:#fdecee;--violet:#7d2ec4;--violet-soft:#f4ecfc;--chart:#0068d6;--chart-muted:#c9c9c9;--chart-alert:#d93036;--shadow-popover:0 4px 12px #00000014, 0 0 0 1px #0000000f;--radius:8px;--radius-small:6px;--sidebar-width:232px;--font-sans:var(--font-geist-sans), "Apple SD Gothic Neo", "Pretendard", "Malgun Gothic", system-ui, sans-serif;--font-mono:var(--font-geist-mono), ui-monospace, "SFMono-Regular", Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html[data-theme=dark]{--background:#0a0a0a;--background-subtle:#111;--surface:#0f0f0f;--surface-hover:#1a1a1a;--border:#262626;--border-strong:#3a3a3a;--text:#ededed;--text-secondary:#a1a1a1;--text-muted:#737373;--accent:#ededed;--accent-text:#0a0a0a;--link:#52a8ff;--focus:#52a8ff;--blue:#52a8ff;--blue-soft:#0d2440;--green:#62c073;--green-soft:#0f2a16;--amber:#f1a10d;--amber-soft:#2e1f04;--red:#ff6166;--red-soft:#3a1113;--violet:#bf7af0;--violet-soft:#2a1340;--chart:#52a8ff;--chart-muted:#444;--chart-alert:#ff6166;--shadow-popover:0 8px 24px #00000080, 0 0 0 1px #ffffff14;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--background);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--font-mono);font-size:12.5px}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600}p{margin:0}.shell{grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--background-subtle);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-brand{align-items:center;gap:10px;padding:16px 16px 12px;font-weight:600;display:flex}.sidebar-brand img{width:24px;height:24px}.sidebar-brand small{color:var(--text-muted);font-size:12px;font-weight:400;display:block}.nav{flex-direction:column;gap:1px;padding:4px 8px 16px;display:flex}.nav-group-label{color:var(--text-muted);padding:14px 8px 4px;font-size:12px}.nav-link{border-radius:var(--radius-small);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:6px 8px;display:flex}.nav-link:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.nav-link.active{background:var(--surface-hover);color:var(--text);font-weight:500}.nav-count{background:var(--red);color:#fff;text-align:center;border-radius:10px;min-width:20px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.sidebar-footer{border-top:1px solid var(--border);color:var(--text-muted);flex-direction:column;gap:8px;margin-top:auto;padding:12px 16px 16px;font-size:12px;display:flex}.sidebar-footer .row{gap:6px;display:flex}.main{min-width:0;padding:28px 40px 80px}.page-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;padding-bottom:20px;display:flex}.page-header h1{font-size:24px}.page-header p{color:var(--text-secondary);margin-top:4px}.page-actions{flex-shrink:0;gap:8px;display:flex}.section{margin-top:32px}.section:first-child{margin-top:0}.section-header{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.section-header h2{font-size:16px}.section-header p{color:var(--text-secondary);font-size:13px}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card-body{padding:16px 20px}.card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.card-header h3{font-size:14px}.card-footer{border-top:1px solid var(--border);background:var(--background-subtle);border-radius:0 0 var(--radius) var(--radius);color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;font-size:13px;display:flex}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{padding:16px 20px}.stat-label{color:var(--text-secondary);font-size:13px}.stat-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px;font-size:24px;font-weight:600}.stat-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.stat-link{color:inherit;display:block}.stat-link:hover{background:var(--surface-hover);text-decoration:none}.todo-alert .stat-value{color:var(--red)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow-x:auto}.card .table-wrap{border:none;border-radius:0}table.table{border-collapse:collapse;width:100%;font-size:13px}.table th{text-align:left;color:var(--text-secondary);background:var(--background-subtle);border-bottom:1px solid var(--border);white-space:nowrap;padding:9px 12px;font-weight:500}.table td{border-bottom:1px solid var(--border);vertical-align:top;padding:9px 12px}.table tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:var(--background-subtle)}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table .nowrap{white-space:nowrap}.table .actions{text-align:right;white-space:nowrap}.table .actions>*+*{margin-left:6px}.table .clickable{cursor:pointer}.table-empty{text-align:center;color:var(--text-muted);padding:28px 12px}.muted{color:var(--text-muted)}.secondary{color:var(--text-secondary)}.small{font-size:12px}.truncate{text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:280px;display:inline-block;overflow:hidden}.positive{color:var(--green)}.negative{color:var(--red)}.button{border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface);height:32px;color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.button:hover:not(:disabled){background:var(--surface-hover);text-decoration:none}.button:disabled{opacity:.5;cursor:not-allowed}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.button.primary:hover:not(:disabled){background:var(--accent);opacity:.88}.button.danger{background:var(--red);border-color:var(--red);color:#fff}.button.danger:hover:not(:disabled){background:var(--red);opacity:.88}.button.ghost{background:0 0;border-color:#0000}.button.small{height:26px;padding:0 8px;font-size:12px}.button.block{width:100%}.input,.select,.textarea{border:1px solid var(--border-strong);border-radius:var(--radius-small);background:var(--surface);width:100%;height:34px;color:var(--text);font:inherit;padding:0 10px;font-size:13px}.textarea{resize:vertical;height:auto;min-height:80px;padding:8px 10px;line-height:1.5}.textarea.code{font-family:var(--font-mono);font-size:12.5px}.input:focus,.select:focus,.textarea:focus,.button:focus-visible,.switch:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.input.invalid,.textarea.invalid{border-color:var(--red)}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text-secondary);font-size:13px;font-weight:500}.field-hint{color:var(--text-muted);font-size:12px}.field-error{color:var(--red);font-size:12px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}.form-grid .wide{grid-column:1/-1}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.inline-form .field{min-width:160px}.checkbox{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.checkbox input{width:16px;height:16px;accent-color:var(--accent);margin:0}.input-with-unit{align-items:center;gap:8px;display:flex}.input-with-unit .unit{color:var(--text-muted);white-space:nowrap;font-size:13px}.switch{background:var(--border-strong);cursor:pointer;border:none;border-radius:11px;flex-shrink:0;width:40px;height:22px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch.on{background:var(--green)}.switch.on:after{transform:translate(18px)}.switch:disabled{opacity:.5;cursor:not-allowed}.badge{white-space:nowrap;background:var(--surface-hover);height:20px;color:var(--text-secondary);border-radius:10px;align-items:center;gap:4px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.badge.green{background:var(--green-soft);color:var(--green)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.blue{background:var(--blue-soft);color:var(--blue)}.badge.violet{background:var(--violet-soft);color:var(--violet)}.dot{background:currentColor;border-radius:50%;width:6px;height:6px}.callout{border:1px solid var(--border);border-radius:var(--radius);background:var(--background-subtle);color:var(--text-secondary);padding:12px 16px;font-size:13px}.callout strong{color:var(--text)}.callout.warning{border-color:color-mix(in srgb, var(--amber) 35%, transparent);background:var(--amber-soft);color:var(--text)}.callout.danger{border-color:color-mix(in srgb, var(--red) 35%, transparent);background:var(--red-soft);color:var(--text)}.callout.info{border-color:color-mix(in srgb, var(--blue) 30%, transparent);background:var(--blue-soft);color:var(--text)}.callout ul,.callout ol{margin:6px 0 0;padding-left:18px}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:20px;display:flex;overflow-x:auto}.tab{color:var(--text-secondary);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 12px;font-size:13px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--text);font-weight:500}.segmented{border:1px solid var(--border);border-radius:var(--radius-small);background:var(--background-subtle);padding:2px;display:inline-flex}.segmented button{height:26px;color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 10px;font-size:12px}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}.dialog-backdrop{z-index:50;background:#0006;justify-content:center;align-items:flex-start;padding:8vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.dialog{background:var(--surface);width:100%;max-width:520px;box-shadow:var(--shadow-popover);border-radius:12px}.dialog.wide{max-width:820px}.dialog-header{padding:20px 24px 0}.dialog-header h2{font-size:18px}.dialog-header p{color:var(--text-secondary);margin-top:6px}.dialog-body{flex-direction:column;gap:14px;padding:20px 24px;display:flex}.dialog-footer{border-top:1px solid var(--border);background:var(--background-subtle);border-radius:0 0 12px 12px;justify-content:flex-end;gap:8px;padding:14px 24px;display:flex}.change-preview{border:1px solid var(--border);border-radius:var(--radius-small);background:var(--background-subtle);grid-template-columns:auto 1fr;gap:4px 12px;padding:12px 14px;font-size:13px;display:grid}.change-preview dt{color:var(--text-muted)}.change-preview dd{word-break:break-all;margin:0}.toasts{z-index:60;flex-direction:column;gap:8px;max-width:380px;display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-popover);padding:12px 16px;font-size:13px}.toast.error{border-left:3px solid var(--red)}.toast.success{border-left:3px solid var(--green)}.chart{position:relative}.chart svg{width:100%;display:block;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-axis-label{fill:var(--text-muted);font-size:11px;font-family:var(--font-sans)}.chart-bar{fill:var(--chart)}.chart-bar.muted{fill:var(--chart-muted)}.chart-bar.alert{fill:var(--chart-alert)}.chart-hit{fill:#0000;cursor:default}.chart-hit:hover{fill:var(--surface-hover);fill-opacity:.6}.chart-tooltip{z-index:5;pointer-events:none;border-radius:var(--radius-small);background:var(--surface);box-shadow:var(--shadow-popover);white-space:nowrap;padding:8px 10px;font-size:12px;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.chart-tooltip strong{margin-bottom:2px;display:block}.chart-legend{color:var(--text-secondary);gap:14px;margin-top:8px;font-size:12px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-legend i{background:var(--chart);border-radius:2px;width:10px;height:10px}.chart-legend i.alert{background:var(--chart-alert)}.progress{background:var(--surface-hover);border-radius:3px;height:6px;overflow:hidden}.progress>div{background:var(--chart);border-radius:3px;height:100%}.progress.warning>div{background:var(--amber)}.progress.danger>div{background:var(--red)}.login{background:var(--background-subtle);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;width:100%;max-width:380px;padding:32px}.login-card img{width:40px;height:40px}.login-card h1{margin-top:16px;font-size:20px}.login-card>p{color:var(--text-secondary);margin-top:4px}.divider{color:var(--text-muted);align-items:center;gap:12px;font-size:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.center-message{min-height:60vh;color:var(--text-secondary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.notice-preview{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-popover);border-radius:12px;overflow:hidden}.notice-preview img{object-fit:cover;width:100%;max-height:200px;display:block}.notice-preview-body{padding:18px 20px}.notice-preview-body h3{font-size:16px}.notice-preview-body .text{white-space:pre-wrap;color:var(--text-secondary);margin-top:8px}.notice-preview-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}pre.json{border-radius:var(--radius-small);background:var(--background-subtle);max-height:320px;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;margin:0;padding:10px 12px;font-size:12px;overflow:auto}.key-value{grid-template-columns:max-content 1fr;gap:6px 16px;font-size:13px;display:grid}.key-value dt{color:var(--text-muted)}.key-value dd{word-break:break-all;min-width:0;margin:0}@media (max-width:1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:800px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.nav{flex-flow:wrap}.nav-group-label{display:none}.main{padding:20px 16px 60px}.grid-2,.grid-3,.grid-4,.form-grid{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start}}
