:root{--bg:#f4f6fb;--surface:#ffffff;--surface-2:#f1f5f9;--border:#e2e8f0;--border-strong:#cbd5e1;--text:#1e293b;--text-muted:#64748b;--text-subtle:#94a3b8;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-fg:#ffffff;--accent-soft:#eff6ff;--accent-soft-border:#bfdbfe;--good:#059669;--good-soft:#ecfdf5;--good-border:#a7f3d0;--warn:#b45309;--warn-soft:#fffbeb;--warn-border:#fde68a;--danger:#dc2626;--danger-soft:#fef2f2;--danger-border:#fecaca;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-8:48px;--radius-sm:6px;--radius:10px;--radius-lg:14px;--shadow-sm:0 1px 2px rgba(15,23,42,.06);--shadow:0 6px 24px rgba(15,23,42,.08);--font-sans:"Pretendard","Apple SD Gothic Neo","Malgun Gothic",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}[data-surface=admin]{--accent:#7c3aed;--accent-hover:#6d28d9;--accent-soft:#f5f3ff;--accent-soft-border:#ddd6fe}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em;color:var(--text)}h2{font-size:18px}h3{font-size:15px}.ui-row>.ui-field{flex:1 1}code{font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.9em;background:var(--surface-2);padding:1px 5px;border-radius:4px}.ui-topbar{background:var(--surface);border-bottom:1px solid var(--border)}.ui-topbar-inner{max-width:1080px;margin:0 auto;padding:var(--space-3) var(--space-5);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.ui-brand{font-weight:800;font-size:15px;letter-spacing:-.02em}.ui-brand b{color:var(--accent)}.ui-topbar-nav{display:flex;gap:var(--space-4);font-size:13.5px;color:var(--text-muted)}.ui-page{max-width:1080px;margin:0 auto;padding:var(--space-6) var(--space-5)}.ui-page--narrow{max-width:420px}.ui-page--center{min-height:70vh;display:flex;flex-direction:column;justify-content:center}.ui-page-header{margin-bottom:var(--space-5)}.ui-page-header h1{font-size:22px}.ui-page-header p{margin:var(--space-2) 0 0;color:var(--text-muted);font-size:13.5px}.ui-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:var(--space-5)}.ui-stack{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.ui-row{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.ui-field{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.ui-label{font-size:13px;font-weight:600}.ui-input{width:100%;padding:10px 12px;font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color .15s,box-shadow .15s}.ui-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.ui-input::placeholder{color:var(--text-subtle)}.ui-field-error{color:var(--danger);font-size:12.5px}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px 16px;font:inherit;font-weight:600;line-height:1;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,border-color .15s,opacity .15s,filter .15s}.ui-btn:disabled{opacity:.55;cursor:not-allowed}.ui-btn-primary{background:var(--accent);color:var(--accent-fg)}.ui-btn-primary:not(:disabled):hover{background:var(--accent-hover)}.ui-btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.ui-btn-secondary:not(:disabled):hover{background:var(--surface-2)}.ui-btn-danger{background:var(--danger);color:#fff}.ui-btn-danger:not(:disabled):hover{filter:brightness(.93)}.ui-btn-block{width:100%}.ui-alert{border-radius:var(--radius-sm);padding:10px 14px;font-size:13.5px;border:1px solid transparent}.ui-alert-info{background:var(--accent-soft);color:var(--accent-hover);border-color:var(--accent-soft-border)}.ui-alert-success{background:var(--good-soft);color:var(--good);border-color:var(--good-border)}.ui-alert-warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-border)}.ui-alert-danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-border)}.ui-empty{text-align:center;color:var(--text-subtle);padding:var(--space-8) var(--space-4);font-size:13.5px}.ui-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.ui-table{width:100%;border-collapse:collapse;font-size:13.5px}.ui-table thead th{text-align:left;background:var(--surface-2);color:var(--text-muted);font-weight:600;font-size:12.5px;white-space:nowrap}.ui-table tbody td,.ui-table thead th{padding:11px 14px;border-bottom:1px solid var(--border)}.ui-table tbody td{vertical-align:top}.ui-table tbody tr:last-child td{border-bottom:none}.ui-badge,.ui-table tbody tr:hover{background:var(--surface-2)}.ui-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;color:var(--text-muted)}.ui-badge-good{background:var(--good-soft);color:var(--good)}.ui-badge-warn{background:var(--warn-soft);color:var(--warn)}.ui-badge-danger{background:var(--danger-soft);color:var(--danger)}.ui-badge-accent{background:var(--accent-soft);color:var(--accent-hover)}