:root{--bg:#eef3f8;--panel:#fff;--panel2:#f7f9fc;--text:#17283d;--muted:#697a8f;--line:#dce4ec;--blue:#125ca7;--navy:#0c3158;--green:#0f9364;--orange:#c86b1d;--red:#c14545}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101923;--panel:#172432;--panel2:#1c2b3a;--text:#f1f5f8;--muted:#9babbc;--line:#30404f;--blue:#55a4f2;--navy:#0c3158;--green:#41c997;--orange:#f4a65f;--red:#ef7a7a}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Noto Sans KR,Arial,sans-serif;font-size:14px;line-height:1.5}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.side{background:var(--navy);color:#fff;padding:16px 10px}.side-brand{padding:4px 10px 16px}.side-brand b{display:block;font-size:17px;font-weight:600;color:#8bc1f4;letter-spacing:-.02em}.side-brand small{display:block;font-size:10px;color:#8ea9c4;margin-top:2px}.side-tenant{margin:0 4px 14px;padding:8px 10px;background:#184977;border-radius:6px;font-size:11px}.side-tenant b{display:block;font-size:12px}.side-tenant span{color:#b6c9db}.nav-group{margin-bottom:6px}.nav-head{font-size:10px;color:#7f9ab5;padding:10px 10px 4px;letter-spacing:.04em}.nav a{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:6px;color:#dbe6f1;font-size:12.5px}.nav a:hover{background:#14406a}.nav a.active{background:#1d5a92;color:#fff}.nav i{font-style:normal;width:16px;color:#8bc1f4;text-align:center}.main{min-width:0;flex-direction:column}.main,.top{display:flex}.top{height:58px;align-items:center;gap:14px;padding:0 22px;background:var(--panel);border-bottom:1px solid var(--line)}.top .spacer{flex:1 1}.badge{font-size:11px;padding:3px 9px;border-radius:20px;border:1px solid var(--line)}.badge.mock{color:var(--orange);border-color:var(--orange)}.badge.live{color:var(--green);border-color:var(--green)}.content{padding:22px;flex:1 1;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px;gap:16px;flex-wrap:wrap}.page-head h1{font-size:20px;margin:0;font-weight:600}.page-head p{margin:4px 0 0;font-size:12px;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.card+.card{margin-top:12px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:12px}.card-head h2{font-size:13px;margin:0;font-weight:600}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:11px;gap:11px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px}.metric span{font-size:10.5px;color:var(--muted)}.metric strong{display:block;font-size:19px;font-weight:600;margin-top:8px;letter-spacing:-.02em}.metric small{font-size:10px;color:var(--green)}.metric small.warn{color:var(--orange)}.grid2{grid-template-columns:1.4fr .6fr;grid-gap:12px}.grid-half,.grid2{display:grid;gap:12px;margin-top:12px}.grid-half{grid-template-columns:1fr 1fr;grid-gap:12px}@media (max-width:900px){.grid-half,.grid2{grid-template-columns:1fr}}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;color:var(--muted);font-weight:500;padding:8px 9px}td,th{border-bottom:1px solid var(--line);white-space:nowrap}td{padding:9px}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table-wrap{overflow-x:auto}.empty{padding:32px;text-align:center;color:var(--muted);font-size:12px}.tag{font-size:10.5px;padding:2px 8px;border-radius:20px;border:1px solid var(--line);background:var(--panel2)}.tag.ok{color:var(--green);border-color:var(--green)}.tag.warn{color:var(--orange);border-color:var(--orange)}.tag.bad{color:var(--red);border-color:var(--red)}.btn,button{border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:7px 13px;border-radius:7px;font-size:12px;cursor:pointer}.btn:hover,button:hover:not(:disabled){border-color:var(--blue)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--blue);border-color:var(--blue);color:#fff}button.danger{color:var(--red);border-color:var(--red)}.btn-row{display:flex;gap:7px;flex-wrap:wrap}label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:var(--panel2)}input:focus,select:focus,textarea:focus{outline:2px solid var(--blue);outline-offset:-1px}.field{margin-bottom:11px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:0 12px;gap:0 12px}.alert{border-left:3px solid var(--orange);background:var(--panel2);padding:11px 13px;font-size:12px;border-radius:0 7px 7px 0}.alert+.alert{margin-top:8px}.alert b{display:block;margin-bottom:3px}.alert.info{border-left-color:var(--blue)}.alert.bad{border-left-color:var(--red)}.notice{padding:10px 13px;border-radius:7px;font-size:12px;margin-bottom:12px}.notice.ok{background:color-mix(in srgb,var(--green) 12%,transparent);color:var(--green)}.notice.bad{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}.bars{display:flex;align-items:flex-end;gap:4px;height:70px}.bars i{flex:1 1;background:var(--blue);opacity:.75;border-radius:3px 3px 0 0;min-height:3px}.meter{height:6px;background:var(--panel2);border-radius:4px;overflow:hidden;margin-top:6px}.meter i{display:block;height:100%;background:var(--blue)}.meter i.warn{background:var(--orange)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login-box{width:100%;max-width:380px}.login-box .brand{text-align:center;margin-bottom:22px}.login-box .brand b{font-size:24px;color:var(--blue);letter-spacing:-.03em}.login-box .brand small{display:block;color:var(--muted);font-size:11px;margin-top:3px}@media (max-width:760px){.shell{grid-template-columns:1fr}.side{display:flex;gap:6px;overflow-x:auto;padding:8px}.nav-head,.side-brand,.side-tenant{display:none}.nav{display:flex;gap:6px}.nav-group{margin:0}.nav a{white-space:nowrap}.content{padding:14px}}