@font-face {
  font-family: 'Pretendard';
  src: url('/fonts/PretendardVariable.woff2') format('woff2');
  font-weight: 45 920;
  font-style: normal;
  font-display: swap;
}
:root { --ink:#252f38; --muted:#687582; --line:#d4dde4; --accent:#385f85; --workspace:#f1f4f6; --sidebar:#dce5ed; --toolbar:#e5ecf1; }
* { box-sizing:border-box; }
body { margin:0; color:var(--ink); background:#fff; font-family:'Pretendard',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; font-size:14px; -webkit-font-smoothing:antialiased; }
[hidden] { display:none!important; }
button,input,select,textarea { font:inherit; color:inherit; }
button,a { touch-action:manipulation; }
button { cursor:pointer; }
button:disabled { opacity:.35; cursor:default; }
button,a,input,select,textarea { outline-offset:3px; }
:focus-visible { outline:2px solid var(--accent); }
h1,h2,p { margin-top:0; }
h1 { font-size:27px; font-weight:650; letter-spacing:-.8px; line-height:1.35; margin-bottom:9px; }
h2 { font-size:20px; font-weight:650; letter-spacing:-.5px; }
a { color:inherit; }
input,select,textarea { border:1px solid #d7dbe0; border-radius:2px; padding:10px 12px; background:#fff; min-width:0; }
input::placeholder { color:#9399a1; }
label { display:block; margin:22px 0 9px; font-size:13px; font-weight:550; }
input[type=checkbox] { accent-color:var(--accent); width:15px; height:15px; }
.primary,.secondary { border:1px solid #d7dbe0; border-radius:2px; padding:10px 15px; min-height:38px; font-size:12px; font-weight:550; white-space:nowrap; }
.primary { background:#344652; border-color:#344652; color:#fff; }
.primary:hover { background:#25353f; }
.secondary { background:#fff; }
.secondary:hover { background:#f5f6f7; }
.muted { color:var(--muted); line-height:1.7; }
.brand { font-size:15px; font-weight:700; letter-spacing:.2px; }
.brand small { display:block; font-size:9px; letter-spacing:.8px; font-weight:450; color:#8a9097; margin-top:6px; }
.tag { display:block; color:var(--muted); font-size:11px; margin-bottom:16px; }
.error { color:#a64a43; min-height:18px; line-height:1.6; font-size:12px; margin:14px 0 0; }

/* A plain login form on the page, without a surrounding panel. */
.login-page { display:grid; place-items:center; min-height:100svh; padding:32px; background:#e8eef3; }
.login-form-wrap { width:100%; max-width:330px; }
.login-form-wrap .brand { padding-bottom:23px; border-bottom:1px solid var(--line); margin-bottom:31px; font-size:14px; }
.login-form-wrap h2 { font-size:25px; margin:0 0 28px; }
.login-form-wrap input { width:100%; height:44px; }
.login-form-wrap .primary { width:100%; margin-top:19px; min-height:43px; }

/* Muted adjoining surfaces distinguish functional regions, without cards. */
.app-shell { display:grid; grid-template-columns:192px minmax(0,1fr); min-height:100svh; }
.sidebar { display:flex; flex-direction:column; position:sticky; top:0; align-self:start; height:100svh; background:var(--sidebar); }
.sidebar .brand small { color:#637888; }
.sidebar > .brand { padding:27px 25px 26px; }
.nav-label { color:#637888; font-size:10px; margin:28px 25px 13px; }
nav { display:flex; flex-direction:column; }
.nav-button { width:100%; border:0; border-left:2px solid transparent; background:transparent; padding:14px 23px; text-align:left; font-size:13px; color:#526777; }
.nav-button:hover { color:var(--ink); background:#d1dde7; }
.nav-button.active { color:#253f53; border-left-color:#526f87; background:#c5d5e2; font-weight:650; }
.sidebar-bottom { margin-top:auto; }
.access-note { margin:0 24px 24px; font-size:10px; color:#637888; line-height:1.7; }
.access-note p { margin:6px 0 0; font-size:10px; }
.status-dot { display:inline-block; width:5px; height:5px; background:#7d929e; margin-right:6px; }
.user-line { display:flex; align-items:center; gap:10px; padding:20px 24px; border-top:1px solid #c6d3dd; background:#d2dfe9; }
.user-line strong { font-size:12px; font-weight:600; }
.user-line small { display:block; margin-top:5px; color:#637888; font-size:10px; }
.user-line button { background:none; border:0; font-size:23px; margin-left:auto; padding:3px; color:#7b8690; }
.workspace { min-width:0; border-left:1px solid #c6d3dd; background:var(--workspace); }
header { display:flex; align-items:center; justify-content:space-between; min-height:57px; padding:0 32px; border-bottom:1px solid var(--line); background:var(--toolbar); font-size:11px; }
.breadcrumb { color:#6b7d8c; }
.slash { margin:0 13px; color:#c3c8cd; }
header strong { font-weight:500; }
.header-badge { font-size:10px; color:#6b7d8c; letter-spacing:.4px; }
.content { padding:32px; }
.page-heading { display:flex; justify-content:space-between; align-items:center; gap:24px; padding-bottom:29px; }
.page-heading .muted { margin-bottom:0; font-size:12px; }
.page-heading > button { flex-shrink:0; }
.stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.stats article { padding:20px 24px; background:#dfe9f1; }
.stats article:nth-child(2) { background:#e2ece6; }
.stats article:nth-child(3) { background:#f0e5e2; }
.stats article:nth-child(4) { background:#eeeadd; }
.stats article+article { border-left:1px solid var(--line); }
.stats article > span { color:#606e79; font-size:12px; }
.stats strong { display:block; margin-top:10px; font-size:29px; font-weight:550; line-height:1.15; letter-spacing:-.7px; font-variant-numeric:tabular-nums; }
.info-strip { display:flex; align-items:flex-start; gap:9px; padding:16px 0 23px; color:#6c7b88; }
.info-strip > span { font-size:14px; line-height:1.65; }
.info-strip p { margin:0; font-size:11px; line-height:1.8; }
.info-strip code { font-size:11px; }
.panel { min-width:0; }
.panel-tabs { display:flex; gap:25px; align-items:stretch; min-height:44px; padding:0 17px; border-bottom:1px solid var(--line); background:var(--toolbar); }
.panel-tabs button { background:none; border:0; border-bottom:2px solid transparent; padding:14px 0 12px; font-size:12px; font-weight:500; color:#6c7b88; }
.panel-tabs button.selected { color:var(--ink); border-bottom-color:#526778; font-weight:650; }
.panel-tabs > span { margin-left:auto; padding:15px 0 12px; font-size:11px; color:#6c7b88; }
.filters { display:flex; align-items:center; gap:8px; padding:16px 17px; background:var(--toolbar); }
.filters input { width:290px; font-size:12px; }
.filters select { width:135px; font-size:12px; }
.filters button { min-width:63px; }
.table-wrap { overflow-x:auto; max-width:100%; background:#fff; }
table { width:100%; border-collapse:collapse; white-space:nowrap; text-align:left; font-size:12px; }
th { background:#edf2f6; color:#5f7384; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:12px 17px; font-size:11px; font-weight:500; }
td { border-bottom:1px solid #edf0f2; padding:17px; vertical-align:top; color:#58636f; line-height:1.6; }
tbody tr:hover { background:#f2f6f9; }
td strong { color:#35414b; font-weight:550; }
td small { display:block; margin-top:4px; font-size:10px; color:#959da5; max-width:220px; overflow:hidden; text-overflow:ellipsis; }
td.detail { white-space:normal; overflow-wrap:anywhere; min-width:230px; max-width:420px; }
.badge { display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:550; }
.badge::before { content:''; width:4px; height:4px; border-radius:50%; background:currentColor; }
.badge.Success,.badge.active { color:#4e7c65; }
.badge.Ready { color:#5b7589; }
.badge.Error,.badge.disabled { color:#a36961; }
.badge.Processing { color:#927b4e; }
.empty { text-align:center; padding:65px 20px; color:var(--muted); }
.empty strong { display:block; margin-bottom:10px; font-size:14px; }
.pagination { display:flex; align-items:center; justify-content:flex-end; gap:17px; padding:14px 17px; background:#e9eef2; }
.pagination span { font-size:11px; color:#89919a; }
.pagination button { border:0; background:none; padding:6px 0; font-size:11px; min-height:30px; }
.small-button { border:0; border-bottom:1px solid #c8cfd5; background:none; padding:3px 0; margin-right:13px; color:#647789; font-size:11px; }
.notice { border-bottom:1px solid #eadccc; padding:0 0 17px; margin-bottom:20px; font-size:12px; color:#936c48; }
.guide-grid { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); border-top:1px solid var(--line); }
.guide-card { padding:28px 32px; background:#fff; }
.guide-card+.guide-card { border-left:1px solid var(--line); background:#e5ecf1; }
.guide-card p,.guide-card li { color:var(--muted); line-height:1.9; font-size:12px; }
.guide-card ol { padding-left:18px; }
.guide-card li { padding:8px 0; }
pre { background:#f7f8f9; padding:20px; font-size:12px; line-height:1.9; overflow-x:auto; color:#536372; }
.button-link { display:inline-block; text-decoration:none; margin:8px 5px 0 0; }
.endpoint { border-top:1px solid var(--line); margin-top:24px; padding-top:9px; }
.endpoint small { display:block; font-size:10px; color:var(--muted); margin:17px 0 7px; }
.endpoint code { font-size:11px; overflow-wrap:anywhere; color:#536372; }
footer { display:flex; justify-content:space-between; gap:12px; margin-top:26px; padding-top:18px; border-top:1px solid var(--line); color:#7b8995; font-size:9px; letter-spacing:.5px; }
footer span { letter-spacing:0; }
dialog { border:1px solid #d7dbe0; border-radius:2px; padding:28px; width:460px; max-width:calc(100vw - 32px); background:#fff; }
dialog::backdrop { background:#26303966; }
dialog input:not([type=checkbox]),dialog textarea { width:100%; }
.dialog-heading { display:flex; align-items:center; justify-content:space-between; padding-bottom:20px; border-bottom:1px solid var(--line); }
.dialog-heading h2 { margin:0; }
.icon-button { font-size:24px; border:0; padding:0 3px; background:none; color:#8a929a; }
.checkboxes { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:13px 7px; padding:7px 0; }
.checkboxes label { display:flex; gap:5px; align-items:center; margin:0; font-size:12px; }
.check-label { display:flex; align-items:center; gap:8px; }
dialog .primary { margin-top:18px; width:100%; }
dialog p { color:var(--muted); line-height:1.8; font-size:13px; }
dialog textarea { height:100px; resize:none; font-family:monospace; font-size:13px; }
@media(min-width:1600px) { .content { padding:38px 40px; } header { padding:0 40px; } }
@media(max-width:1100px) {
 .app-shell { grid-template-columns:170px minmax(0,1fr); }
 .sidebar>.brand { padding:26px 18px; font-size:14px; }
 .content { padding:27px 24px; }
 .stats article { padding:20px; }
}
@media(max-width:760px) {
 .app-shell { display:block; }
 .sidebar { position:relative; height:auto; }
 .sidebar>.brand { padding:20px; }
 .nav-label,.access-note { display:none; }
 .sidebar-bottom { position:absolute; top:14px; right:17px; }
 .user-line { padding:0; border:0; background:none; }
 .user-line>div { display:none; }
 .user-line button { width:38px; height:38px; }
 nav { flex-direction:row; border-bottom:1px solid var(--line); padding:0 14px; }
 .nav-button { text-align:center; border:0; border-bottom:2px solid transparent; padding:15px 5px; font-size:12px; }
 .nav-button.active { border-bottom-color:#526778; }
 .workspace { border:0; }
 header { min-height:43px; padding:0 20px; font-size:10px; }
 .header-badge { font-size:9px; }
 .content { padding:25px 20px; }
 h1 { font-size:24px; }
 .page-heading { gap:15px; padding-bottom:23px; }
 .page-heading .muted { font-size:11px; }
 .page-heading>button { padding:9px 10px; font-size:11px; }
 .stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .stats article { padding:18px 19px; }
 .stats article:nth-child(3) { border-left:0; }
 .stats article:nth-child(n+3) { border-top:1px solid var(--line); }
 .stats article>span { font-size:11px; }
 .stats strong { font-size:25px; }
 .info-strip { padding:14px 0 22px; }
 .info-strip p { font-size:10px; }
 .filters { flex-wrap:wrap; }
 .filters input { width:100%; }
 .filters select { flex:1; }
 .filters button { min-width:74px; }
 th,td { padding:13px; }
 .guide-grid { display:block; }
 .guide-card { padding:24px 20px; }
 .guide-card+.guide-card { border-left:0; border-top:1px solid var(--line); }
 footer span { display:none; }
 .login-page { padding:28px; }
 .checkboxes { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
