*{box-sizing:border-box}:root{--ink: #1c2733;--muted: #6b7684;--line: #e3e8ee;--bg: #f5f7fa;--card: #ffffff;--accent: #1660c9;--accent-ink: #ffffff;--danger: #b3261e}body{margin:0;font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}.layout main{max-width:1200px;margin:0 auto;padding:20px 24px 60px}header{display:flex;align-items:center;gap:20px;padding:0 24px;height:52px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{font-weight:700}header nav{display:flex;gap:4px}header nav a{padding:6px 12px;border-radius:6px;color:var(--muted);text-decoration:none}header nav a.active{color:var(--accent);background:#e8f0fc;font-weight:600}.spacer{flex:1}.who{color:var(--muted)}h1{font-size:18px;margin:0}h1 a{color:var(--accent);text-decoration:none}h2{font-size:14px;margin:0 0 8px}h2.group{margin:28px 0 10px;font-size:15px;color:var(--muted)}.toolbar{display:flex;align-items:center;gap:10px;margin:16px 0}button{font:inherit;padding:7px 14px;border-radius:6px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer}button:disabled{opacity:.45;cursor:default}button.ghost{background:transparent;color:var(--muted);border-color:var(--line)}input{font:inherit;padding:7px 10px;border:1px solid var(--line);border-radius:6px;background:var(--card)}input:focus{outline:2px solid #bcd3f5;border-color:var(--accent)}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:12px}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.narrow{width:340px;display:flex;flex-direction:column;gap:12px}.narrow label{display:flex;flex-direction:column;gap:4px;color:var(--muted)}.muted{color:var(--muted)}.error{color:var(--danger)}.empty{color:var(--muted);margin:4px 0}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;background:var(--card);font-size:13px}th,td{border:1px solid var(--line);padding:6px 10px;text-align:left;white-space:nowrap;max-width:360px;overflow:hidden;text-overflow:ellipsis}th{background:#eef2f7;font-weight:600}table.clickable tbody tr{cursor:pointer}table.clickable tbody tr:hover{background:#f0f5fc}.badge{display:inline-block;padding:1px 8px;border-radius:99px;font-size:12px}.badge.ok{background:#e5f3e8;color:#1e7c34}.badge.warn{background:#fdeeee;color:var(--danger)}
