:root{--bg:#0b0c0f;--fg:#e7e9ee;--muted:#8a8f9c;--accent:#4f8cff;--border:#1f2230;--card:#11131a;--sidebar-bg:#0d0f15;--sidebar-hover:#181b25;--sidebar-active:#1f2335;--sidebar-width:220px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Pretendard,Noto Sans KR,Roboto,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);flex:0 0 var(--sidebar-width);background:var(--sidebar-bg);border-right:1px solid var(--border);padding:20px 12px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}.sidebar-brand{font-size:20px;font-weight:700;color:var(--fg);padding:4px 12px 18px;display:block;letter-spacing:-.3px}.sidebar-section{padding:12px 12px 6px;font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:.5px}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:6px;color:var(--fg);font-size:14px;font-weight:500;transition:background .12s}.sidebar-link:hover{background:var(--sidebar-hover)}.sidebar-link.active{background:var(--sidebar-active);color:var(--accent)}.sidebar-link-icon{width:16px;text-align:center;font-size:14px;opacity:.85}.main{flex:1 1;min-width:0;padding:28px 32px 64px}.page-header{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-title{margin:0;font-size:24px;font-weight:700;letter-spacing:-.3px}.page-subtitle{margin:4px 0 0;color:var(--muted);font-size:14px}.card{border:1px solid var(--border);border-radius:10px;padding:18px;background:var(--card)}button,input,select,textarea{color:var(--fg)}input::placeholder,textarea::placeholder{color:var(--muted)}select option{background:var(--card);color:var(--fg)}.dataset-row{cursor:pointer;transition:background .1s}.dataset-row:hover{background:var(--sidebar-hover)}@keyframes pulse{0%{opacity:1}50%{opacity:.35}to{opacity:1}}@media (max-width:720px){.app-shell{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex:0 0 auto;padding:12px}.main{padding:20px 16px 48px}}