:root{--font-sans:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--brand:#c8102e;--brand-400:#e63b54;--brand-700:#9a0b22;--success-500:#07b96b;--gradient-crimson:linear-gradient(135deg, #c8102e 0%, #9a0b22 100%);--gradient-ink:linear-gradient(135deg, #1b1b22 0%, #0f0f12 100%);--gradient-success:linear-gradient(135deg, #2bd97a, #07b96b);--shadow-crimson:0 12px 28px #c8102e2e}html[data-theme=light]{--bg:#f4f2ee;--bg-2:#faf9f7;--surface:#fff;--surface-2:#faf9f7;--surface-3:#f4f2ee;--surface-hover:#f7f5f1;--border:#ece9e5;--border-2:#e0dcd7;--border-strong:#b8b5b0;--text:#0f0f12;--text-2:#2e2e33;--muted:#6b6b70;--subtle:#9a9a9d;--on-accent:#fff;--brand-fg:#c8102e;--brand-bg:#fff0f2;--brand-bd:#ffd3d9;--st-none-fg:#6b6b70;--st-none-bg:#f4f2ee;--st-none-bd:#ece9e5;--st-none-dot:#b8b5b0;--st-prog-fg:#9a6a00;--st-prog-bg:#fff6e0;--st-prog-bd:#ffe2a6;--st-prog-dot:#ffb400;--st-pass-fg:#07843a;--st-pass-bg:#e7f8ef;--st-pass-bd:#b5e8ca;--st-pass-dot:#07b96b;--st-fix-fg:#c5571f;--st-fix-bg:#fff0e8;--st-fix-bd:#f6c6a8;--st-fix-dot:#ff7a45;--st-drop-fg:#9a0b22;--st-drop-bg:#fff0f2;--st-drop-bd:#ffd3d9;--st-drop-dot:#c8102e;--info-fg:#2a6fdb;--info-bg:#eaf1fc;--info-bd:#c4d8f5;--danger:#c8102e;--danger-bg:#fff0f2;--good:#07843a;--warn:#9a6a00;--shadow-card:0 1px 2px #0f0f120a;--shadow-pop:0 12px 28px #0f0f1214;--add-line:#e7f8ef;--del-line:#fff0f2}html[data-theme=dark]{--bg:#0f0f12;--bg-2:#16161c;--surface:#1b1b22;--surface-2:#22222a;--surface-3:#2a2a33;--surface-hover:#26262e;--border:#2e2e33;--border-2:#3a3a42;--border-strong:#55555e;--text:#f0ede9;--text-2:#c8c4be;--muted:#9a9a9d;--subtle:#6b6b70;--on-accent:#fff;--brand-fg:#ff7a8c;--brand-bg:#c8102e2e;--brand-bd:#c8102e6b;--st-none-fg:#9a9a9d;--st-none-bg:#ffffff0f;--st-none-bd:#ffffff21;--st-none-dot:#6b6b70;--st-prog-fg:#ffc24d;--st-prog-bg:#ffb40024;--st-prog-bd:#ffb40057;--st-prog-dot:#ffb400;--st-pass-fg:#3dd68c;--st-pass-bg:#07b96b26;--st-pass-bd:#07b96b5c;--st-pass-dot:#07b96b;--st-fix-fg:#ff9a5c;--st-fix-bg:#ff7a4524;--st-fix-bd:#ff7a455c;--st-fix-dot:#ff7a45;--st-drop-fg:#ff8290;--st-drop-bg:#c8102e29;--st-drop-bd:#c8102e66;--st-drop-dot:#e63b54;--info-fg:#6fa8ff;--info-bg:#2a6fdb29;--info-bd:#2a6fdb61;--danger:#ff6b7e;--danger-bg:#c8102e29;--good:#3dd68c;--warn:#ffc24d;--shadow-card:0 1px 2px #0006;--shadow-pop:0 12px 36px #0000008c;--add-line:#07b96b29;--del-line:#c8102e29}*,:before,:after{box-sizing:border-box}html,body{font-family:var(--font-sans);font-feature-settings:"ss03";background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}#root{height:100dvh}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed}input,textarea,select{font:inherit;color:inherit}::selection{background:#c8102e33}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-2);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:padding-box}::-webkit-scrollbar-track{background:0 0}.material-symbols-outlined{letter-spacing:normal;white-space:nowrap;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font-variation-settings:"wght" 400, "opsz" 20, "GRAD" 0;direction:ltr;font-family:Material Symbols Outlined;font-size:20px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:5px;padding:4px 8px;font-size:11px;font-weight:600;line-height:1;display:inline-flex}.badge .dot{border-radius:999px;width:6px;height:6px}.st-none{color:var(--st-none-fg);background:var(--st-none-bg);border-color:var(--st-none-bd)}.st-prog{color:var(--st-prog-fg);background:var(--st-prog-bg);border-color:var(--st-prog-bd)}.st-pass{color:var(--st-pass-fg);background:var(--st-pass-bg);border-color:var(--st-pass-bd)}.st-fix{color:var(--st-fix-fg);background:var(--st-fix-bg);border-color:var(--st-fix-bd)}.st-drop{color:var(--st-drop-fg);background:var(--st-drop-bg);border-color:var(--st-drop-bd)}.st-info{color:var(--info-fg);background:var(--info-bg);border-color:var(--info-bd)}.kbd{min-width:20px;height:20px;font:600 11px/1 var(--font-mono);color:var(--text-2);background:var(--surface-3);border:1px solid var(--border-2);border-bottom-width:2px;border-radius:5px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.btn{transition:background .15s var(--ease,ease-out), border-color .15s, opacity .15s, transform 80ms;white-space:nowrap;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:9px 14px;font-size:13px;font-weight:600;line-height:1;display:inline-flex}.btn:active{transform:translateY(.5px)}.btn-primary{background:var(--brand);color:var(--on-accent)}.btn-primary:hover{background:var(--brand-400,#e63b54)}.btn-dark{background:var(--surface-3);color:var(--text);border-color:var(--border-2)}.btn-dark:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn-ghost{color:var(--text-2);border-color:var(--border-2);background:0 0}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--st-drop-bd)}.btn-danger:hover{background:var(--danger);color:#fff}.btn:disabled{background:var(--surface-2);color:var(--subtle);border-color:var(--border)}.btn-sm{padding:6px 10px;font-size:12px}.btn-lg{padding:12px 18px;font-size:14px}.chip{border:1px solid var(--border-2);color:var(--muted);background:var(--surface);white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:6px 11px;font-size:12px;font-weight:500;line-height:1;transition:all .13s ease-out;display:inline-flex}.chip:hover{color:var(--text);border-color:var(--border-strong)}.chip.on{color:var(--text);border-color:var(--border-strong);background:var(--surface-3)}.chip.on-brand{color:var(--brand-fg);border-color:var(--brand-bd);background:var(--brand-bg)}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);border-radius:12px}.field{background:var(--surface-2);width:100%;color:var(--text);border:1px solid var(--border-2);border-radius:8px;outline:none;padding:9px 12px;font-size:13px;transition:border-color .13s,background .13s}.field:focus{border-color:var(--border-strong);background:var(--surface)}.field::placeholder{color:var(--subtle)}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);background:var(--surface);z-index:1;padding:10px 14px;font-size:11px;font-weight:600;position:sticky;top:0}.tbl td{border-bottom:1px solid var(--border);color:var(--text-2);padding:11px 14px}.tbl tr:hover td{background:var(--surface-2)}.tbl tr:last-child td{border-bottom:0}.divider{background:var(--border);border:0;height:1px;margin:0}.navitem{text-align:left;width:100%;color:var(--muted);border-radius:8px;align-items:center;gap:11px;padding:9px 12px;font-size:13px;font-weight:600;text-decoration:none;transition:background .12s,color .12s;display:flex}.navitem:hover{background:var(--surface-2);color:var(--text)}.navitem.on{background:var(--brand-bg);color:var(--brand-fg)}.navitem.on .material-symbols-outlined{color:var(--brand-fg)}.railitem{width:100%;color:var(--muted);border-radius:9px;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;font-size:9.5px;font-weight:600;text-decoration:none;transition:all .12s;display:flex;position:relative}.railitem:hover{background:var(--surface-2);color:var(--text)}.railitem.on{color:var(--brand-fg)}.railitem.on:before{content:"";background:var(--brand);border-radius:999px;width:3px;position:absolute;top:12px;bottom:12px;left:-8px}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.85s linear infinite spin}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toastIn{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.pulse{animation:1.4s ease-in-out infinite pulse}@keyframes shimmer{0%{background-position:-340px 0}to{background-position:340px 0}}.skel{background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 37%, var(--surface-2) 63%);background-size:680px 100%;border-radius:6px;animation:1.4s linear infinite shimmer}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tnum{font-variant-numeric:tabular-nums}.fade-up{animation:fadeUp .24s var(--ease-out,cubic-bezier(.16,1,.3,1)) both}@keyframes spinOnce{0%{opacity:.3;transform:rotate(-180deg)}to{opacity:1;transform:rotate(0)}}.spin-once{animation:spinOnce .36s var(--ease-out) both;display:inline-flex}.rr-nav:hover{background:color-mix(in srgb, var(--brand-fg) 12%, transparent)!important}.q-row{transition:background .15s, border-color .15s, box-shadow .15s, transform .15s var(--ease-out);background:0 0}.q-row:hover{background:var(--surface-2);transform:translate(2px)}.q-row.active:hover{background:var(--surface-3);transform:none}@keyframes qRowIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.q-row-in{animation:qRowIn .24s var(--ease-out) backwards}@media (prefers-reduced-motion:reduce){.q-row-in{animation:none}.q-row:hover{transform:none}}:root{--ease-out:cubic-bezier(.16,1,.3,1)}.rich-text strong{font-weight:700}.rich-text em{font-style:italic}.rich-text s{text-decoration:line-through}.rich-text u{text-underline-offset:2px;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration:underline}.rich-text code{font-family:var(--font-mono);border:1px solid var(--border-2);background:var(--surface-2);color:var(--text);word-break:keep-all;border-radius:6px;padding:1px 5px;font-size:.9em}.rich-text blockquote{border-left:3px solid var(--brand);background:var(--surface-2);color:var(--text-2);border-radius:0 6px 6px 0;margin:8px 0;padding:7px 13px}.rich-text .rt-key{text-underline-offset:2px;padding:0 1px;font-weight:700;text-decoration:underline}.rich-text .rt-blue{font-weight:700}.rich-text .rt-red{text-underline-offset:2px;font-weight:700;text-decoration:underline}.rich-text .rt-fix{font-weight:700}.rich-text .rt-ox{text-align:center;border:1px solid var(--text);border-radius:5px;min-width:1.3em;padding:0 4px;font-size:.82em;font-weight:700;line-height:1.4;display:inline-block}.rich-text .rt-ox--o{color:var(--text);background:0 0}.rich-text .rt-ox--x{color:var(--surface);background:var(--text)}.rich-text .md-table{border-collapse:collapse;width:100%;margin:8px 0;font-size:.92em;line-height:1.5}.rich-text .md-table th,.rich-text .md-table td{border:1px solid var(--border-2);text-align:left;vertical-align:top;word-break:keep-all;overflow-wrap:anywhere;padding:5px 9px}.rich-text .md-table thead th{background:var(--surface-2);color:var(--text);font-weight:700}.tbl-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.grid-stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.grid-cols{grid-template-columns:var(--cols,1fr 1fr);gap:16px;display:grid}.split-pane{display:flex}.split-pane>.pane-side{border-right:1px solid var(--border);flex:none;width:240px}.file-row{transition:background .12s}.file-row:hover{background:var(--surface-2)}.screen-body{flex-direction:column;gap:22px;margin:0 auto;padding:28px 32px 60px;display:flex}.login-grid{background:var(--bg);grid-template-columns:1.05fr 1fr;height:100dvh;display:grid}.tabitem{color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 4px 6px;font-size:10px;font-weight:600;text-decoration:none;display:flex;position:relative}.tabitem.on{color:var(--brand-fg)}@media (width<=768px){.grid-cols{grid-template-columns:1fr}.split-pane{flex-direction:column}.split-pane>.pane-side{border-right:0;border-bottom:1px solid var(--border);width:100%;max-height:240px}.login-grid{grid-template-columns:1fr}.login-brand{display:none!important}.screen-body{padding:16px 14px 80px}.field{font-size:16px}.kbd{display:none}}
