:root{font-family:Pretendard,system-ui,-apple-system,BlinkMacSystemFont,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;color:var(--ink, #191f28);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100vh;background:var(--bg, #fff)}#app{width:100%;min-height:100vh}a{color:inherit;text-decoration:none}:root{--brand: #6d28d9;--brand-hover: #5b21b6;--brand-active: #4c1d95;--brand-weak: #ede9fe;--brand-weak-hover: #ddd6fe;--brand-border: #c4b5fd;color-scheme:light;--bg: #fff;--ink: #191f28;--g800: #333d4b;--text: #4e5968;--g600: #6b7684;--text-weak: #8b95a1;--g400: #b0b8c1;--border: #d1d6db;--divider: #e5e8eb;--surface-2: #f2f4f6;--surface-1: #f9fafb;--white: #fff;--success: #16a34a;--success-weak: #e8f8f0;--success-weak-hover: #d3efe0;--danger: #f04452;--danger-hover: #d83a47;--danger-weak: #fdecee;--danger-weak-hover: #fbd8dd;--warning: #f59e0b;--warning-weak: #fef6e6;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-pop: 0 4px 16px rgba(0, 0, 0, .08);--shadow-modal: 0 8px 28px rgba(0, 0, 0, .12);--focus-ring: 0 0 0 3px rgba(109, 40, 217, .3)}.num,.mono{font-variant-numeric:tabular-nums}.mono{font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace;letter-spacing:-.01em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 16px;border:1px solid transparent;border-radius:var(--radius-md);font-family:inherit;font-size:15px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-hover)}.btn-primary:active:not(:disabled){background:var(--brand-active)}.btn-primary:disabled{background:var(--surface-2);border-color:var(--border);color:var(--text-weak);opacity:1}.btn-secondary{background:var(--surface-2);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--divider)}.btn-outline{background:var(--white);border-color:var(--border);color:var(--text)}.btn-outline:hover:not(:disabled){background:var(--surface-1)}.btn-ghost{background:transparent;color:var(--text)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-brand-soft{background:var(--brand-weak);color:var(--brand)}.btn-brand-soft:hover:not(:disabled){background:var(--brand-weak-hover)}.btn-success-soft{background:var(--success-weak);color:var(--success)}.btn-success-soft:hover:not(:disabled){background:var(--success-weak-hover)}.btn-danger-soft{background:var(--danger-weak);color:var(--danger)}.btn-danger-soft:hover:not(:disabled){background:var(--danger-weak-hover)}.btn-sm{height:32px;padding:0 12px;border-radius:var(--radius-sm);font-size:14px}.toolbar-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:none;height:38px;padding:0 14px;border:1px solid transparent;border-radius:10px;font-family:inherit;font-size:14px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.toolbar-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.toolbar-btn:disabled{cursor:not-allowed;opacity:.55}.tb-ico{flex:none;width:16px;height:16px}.input{display:block;width:100%;height:44px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--white);color:var(--ink);font-family:inherit;font-size:15px;transition:border-color .15s ease,box-shadow .15s ease}.input::placeholder{color:var(--text-weak)}.input:hover:not(:disabled):not(:focus){border-color:var(--g400)}.input:focus{outline:none;border-color:var(--brand);box-shadow:var(--focus-ring)}.input:disabled{background:var(--surface-2);color:var(--text-weak);cursor:not-allowed}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7684' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px}select.input,::picker(select){-webkit-appearance:base-select;-moz-appearance:base-select;appearance:base-select}select.input{display:flex;align-items:center}select.input::picker-icon{display:none}::picker(select){margin-top:4px;padding:4px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--white);box-shadow:var(--shadow-pop);transform-origin:top;transition:opacity .15s ease-out,transform .15s cubic-bezier(.23,1,.32,1)}@starting-style{::picker(select){opacity:0;transform:scale(.97)}}@media (prefers-reduced-motion: reduce){::picker(select){transition:none}}select.input option{padding:8px 10px;border-radius:calc(var(--radius-md) - 4px);font-size:14px;color:var(--text)}select.input option:hover,select.input option:focus{background:var(--surface-1)}select.input option:checked{color:var(--brand);font-weight:600}select.input:has(option[value=""]:disabled:checked){color:var(--text-weak)}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;margin:0;flex:none;display:inline-grid;place-content:center;vertical-align:middle;border:1.5px solid var(--border);border-radius:7px;background:var(--white);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform .16s cubic-bezier(.23,1,.32,1)}input[type=checkbox]:before{content:"";width:13px;height:13px;background:#fff;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,84% 2%,43% 66%);opacity:0;transform:scale(.5);transition:transform .16s cubic-bezier(.23,1,.32,1),opacity .12s ease-out}input[type=checkbox]:checked,input[type=checkbox]:indeterminate{background:var(--brand);border-color:var(--brand)}input[type=checkbox]:checked:before{opacity:1;transform:scale(1)}input[type=checkbox]:indeterminate:before{opacity:1;transform:scale(1);clip-path:none;width:12px;height:2.5px;border-radius:2px}@media (hover: hover) and (pointer: fine){input[type=checkbox]:hover:not(:checked):not(:indeterminate){border-color:var(--brand)}}input[type=checkbox]:active{transform:scale(.92)}input[type=checkbox]:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media (prefers-reduced-motion: reduce){input[type=checkbox],input[type=checkbox]:before{transition:background-color .12s ease,border-color .12s ease,opacity .12s ease-out}input[type=checkbox]:active{transform:none}input[type=checkbox]:before{transform:scale(1)}}:root[data-theme=dark]{color-scheme:dark;--bg: #14171d;--white: #1d222b;--surface-1: #242b36;--surface-2: #2c3441;--divider: #353e4c;--border: #46505f;--ink: #eceff3;--g800: #d7dce3;--text: #c3c9d3;--g600: #9aa3b0;--text-weak: #7e8795;--g400: #5e6673;--brand: #8b5cf6;--brand-hover: #9d78f7;--brand-active: #7c4ce8;--brand-weak: #2c2347;--brand-weak-hover: #3a2f5c;--brand-border: #533f8a;--success: #34c76f;--success-weak: #17301f;--success-weak-hover: #1e422a;--danger: #f2606c;--danger-hover: #f4707b;--danger-weak: #3b2126;--danger-weak-hover: #4a2a30;--warning: #f6a934;--warning-weak: #382c15;--focus-ring: 0 0 0 3px rgba(139, 92, 246, .35);--shadow-pop: 0 4px 16px rgba(0, 0, 0, .45);--shadow-modal: 0 8px 28px rgba(0, 0, 0, .55)}[data-theme=dark] select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa3b0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}.card{background:var(--white);border:1px solid var(--divider);border-radius:var(--radius-lg);padding:24px;box-shadow:0 1px 3px #00000008}.badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;margin-right:6px;border-radius:50%;background:currentColor}.badge-online{background:var(--success-weak);color:var(--success)}.badge-offline{background:var(--surface-2);color:var(--text-weak)}.badge-error{background:var(--danger-weak);color:var(--danger)}.badge-updating{background:var(--brand-weak);color:var(--brand)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}.page-title{margin:0 0 6px;font-size:24px;font-weight:700;color:var(--ink);letter-spacing:-.02em}.page-summary{margin:0;font-size:14px;color:var(--g600)}.page-summary .dot{margin:0 6px;color:var(--g400)}.page-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.table-card{background:var(--white);border:1px solid var(--divider);border-radius:var(--radius-lg);overflow:hidden}.table-scroll{overflow-x:auto}.cell-strong{color:var(--ink);font-weight:600}.cell-muted{color:var(--g600)}.empty{height:120px;text-align:center;color:var(--text-weak);font-size:14px}.card-list{display:none;flex-direction:column;gap:12px}.empty-card{padding:40px 16px;text-align:center;color:var(--text-weak);background:var(--white);border:1px solid var(--divider);border-radius:var(--radius-md)}.act-danger{color:var(--danger)}.act-danger:hover:not(:disabled){background:var(--danger-weak);border-color:var(--danger)}@media (max-width: 767px){.table-card{display:none}.card-list{display:flex}.page-head{flex-direction:column;align-items:stretch}.page-actions{justify-content:flex-start}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#00000073;display:flex;align-items:center;justify-content:center;padding:16px;transition:opacity .15s ease-out}.modal{display:flex;flex-direction:column;gap:14px;width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto;background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:28px 24px;transition:transform .2s cubic-bezier(.23,1,.32,1),opacity .2s cubic-bezier(.23,1,.32,1)}@starting-style{.modal-overlay{opacity:0}.modal{opacity:0;transform:scale(.97)}}@media (prefers-reduced-motion: reduce){.modal{transition:opacity .2s ease-out}@starting-style{.modal{transform:none}}}.modal-title{margin:0 0 4px;font-size:20px;font-weight:700;color:var(--ink)}.modal-body{margin:0;font-size:15px;line-height:1.6;color:var(--text)}.modal-field{display:flex;flex-direction:column;gap:6px}.modal-label{font-size:13px;font-weight:600;color:var(--g800)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.error-message{margin:0;padding:10px 12px;background:var(--danger-weak);border-radius:var(--radius-sm);color:var(--danger);font-size:13px}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-Thin-DWJVAZ2K.woff2) format("woff2"),url(/assets/Pretendard-Thin-Cq3km6ap.woff) format("woff");font-weight:100;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-ExtraLight-Bi0YRlFr.woff2) format("woff2"),url(/assets/Pretendard-ExtraLight-CmnYHmfp.woff) format("woff");font-weight:200;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-Light-knQmDAda.woff2) format("woff2"),url(/assets/Pretendard-Light-BSr3DBFh.woff) format("woff");font-weight:300;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-Regular-BhrLQoBv.woff2) format("woff2"),url(/assets/Pretendard-Regular-D5CgADJ9.woff) format("woff");font-weight:400;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-Medium-Dw2vNklR.woff2) format("woff2"),url(/assets/Pretendard-Medium-Cs2k_Pp2.woff) format("woff");font-weight:500;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-SemiBold-ClEDdoZU.woff2) format("woff2"),url(/assets/Pretendard-SemiBold-SXfe8JY8.woff) format("woff");font-weight:600;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-Bold-BYNivUXw.woff2) format("woff2"),url(/assets/Pretendard-Bold-DD7wHHNl.woff) format("woff");font-weight:700;font-display:swap}@font-face{font-family:Pretendard;src:url(/assets/Pretendard-ExtraBold-C0vVUedy.woff2) format("woff2"),url(/assets/Pretendard-ExtraBold-DkRXFB8B.woff) format("woff");font-weight:800;font-display:swap}
