@font-face{font-family:Pretendard Variable;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/PretendardVariable.woff2) format("woff2-variations")}:root{--bg:#f5f7fa;--surface:#fff;--surface2:#f0f2f6;--border:#e2e6ef;--border2:#c9cfe0;--text:#111827;--text2:#374151;--muted:#6b7280;--blue:#2563eb;--blue-lt:#eff6ff;--blue-bd:#bfdbfe;--blue-dk:#1d4ed8;--green:#059669;--green-lt:#ecfdf5;--green-bd:#a7f3d0;--red:#dc2626;--red-lt:#fef2f2;--red-bd:#fecaca;--r:12px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Roboto,Noto Sans KR,Pretendard Variable,Pretendard,Malgun Gothic,sans-serif;font-size:15px;line-height:1.6;min-height:100vh}button,input,select{font-family:inherit;font-size:14px}a{color:inherit;text-decoration:none}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:linear-gradient(90deg,#0f172a,#1e3a8a);height:52px;display:flex;align-items:center;padding:0 24px;gap:12px;box-shadow:0 2px 10px rgba(15,23,42,.4)}.topbar h1{font-size:16px;font-weight:700;color:#fff}.topbar h1 a{color:#fff}.userbox{display:flex;align-items:center;gap:12px;color:rgba(255,255,255,.92);font-size:13px;font-weight:600}.btn-ghost{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:8px;padding:5px 14px;cursor:pointer;font-weight:700;font-size:13px}.btn-ghost:hover{background:rgba(255,255,255,.25)}.wrap{max-width:1080px;margin:0 auto;padding:28px 20px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:16px;gap:16px}.card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r);padding:22px;box-shadow:0 1px 3px rgba(0,0,0,.07);transition:box-shadow .15s,transform .1s;display:block}a.card:hover{box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-2px);border-color:var(--blue-bd)}.card h2{font-size:17px;font-weight:700;margin-bottom:6px}.card p{font-size:13px;color:var(--muted)}.card.dim{opacity:.6}.btn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:9px 18px;font-weight:700;cursor:pointer}.btn:hover{background:var(--blue-dk)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px;border:1.5px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;font-weight:600;white-space:nowrap}.btn-sm:hover{border-color:var(--blue-bd);background:var(--blue-lt);color:var(--blue)}.btn-sm.danger:hover{border-color:var(--red-bd);background:var(--red-lt);color:var(--red)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:12px;font-weight:700;color:var(--muted)}.field input,.field select{height:42px;border:1.5px solid var(--border);border-radius:8px;padding:0 12px;background:var(--surface2);outline:none;transition:border-color .15s}.field input:focus,.field select:focus{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.msg{padding:10px 16px;border-radius:8px;font-size:13px;font-weight:600;margin-bottom:14px}.msg.ok{background:var(--green-lt);color:var(--green);border:1.5px solid var(--green-bd)}.msg.err{background:var(--red-lt);color:var(--red);border:1.5px solid var(--red-bd)}.login-box{max-width:380px;margin:10vh auto 0;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:32px;box-shadow:0 4px 24px rgba(0,0,0,.08)}.login-box h1{font-size:20px;font-weight:700;text-align:center;margin-bottom:4px}.login-box .sub{text-align:center;font-size:13px;color:var(--muted);margin-bottom:24px}.utable{width:100%;border-collapse:collapse;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r);overflow:hidden;font-size:13px}.utable th{background:#1e3a5f;color:#e2eeff;padding:10px;text-align:left;font-size:12px;white-space:nowrap}.utable td{padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.utable tr:last-child td{border-bottom:none}.utable tr:hover td{background:var(--blue-lt)}.pill{font-size:11px;font-weight:700;padding:2px 10px;border-radius:12px}.pill.admin{background:#f5f3ff;color:#7c3aed;border:1px solid #ddd6fe}.pill.user{background:var(--blue-lt);color:var(--blue);border:1px solid var(--blue-bd)}.pill.off{background:var(--red-lt);color:var(--red);border:1px solid var(--red-bd)}.pill.on{background:var(--green-lt);color:var(--green);border:1px solid var(--green-bd)}.section-title{font-size:15px;font-weight:700;margin:26px 0 10px}.panel{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r);padding:20px}.inline-form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.inline-form .field{margin-bottom:0}.table-scroll{overflow-x:auto}.topbar{gap:0;padding:0 18px}.topbar h1{font-size:15.5px;white-space:nowrap;margin-right:4px}.nav{margin-left:14px}.nav,.nav-group{display:flex;align-items:center;height:100%}.nav-group{position:relative}.nav-btn{background:transparent;border:none;color:rgba(255,255,255,.88);font-family:inherit;font-size:13.5px;font-weight:600;padding:0 13px;height:34px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;transition:background .13s,color .13s}.nav-group:focus-within .nav-btn,.nav-group:hover .nav-btn{background:rgba(255,255,255,.17);color:#fff}.nav-btn.active{background:rgba(255,255,255,.24);color:#fff}.nav-caret{font-size:8px;opacity:.65;margin-top:1px}.nav-menu{position:absolute;top:44px;left:0;min-width:224px;background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:0 10px 30px rgba(15,23,42,.2);padding:6px;display:none;flex-direction:column;gap:1px;z-index:300}.nav-group:focus-within .nav-menu,.nav-group:hover .nav-menu{display:flex}.nav-item{display:flex;flex-direction:column;padding:8px 11px;border-radius:7px;color:var(--text)}.nav-item.on,.nav-item:hover{background:var(--blue-lt)}.nav-item.on{box-shadow:inset 3px 0 0 var(--blue)}.nav-item b{font-size:13.5px;font-weight:700}.nav-item small{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.35}.nav-sep{height:1px;background:var(--border);margin:5px 8px}.userbox{margin-left:auto;padding-left:14px}.userbox .uname{opacity:.92}.badge-admin{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.28);border-radius:5px;padding:1px 6px;font-size:11px;margin-left:5px}.sect{margin-bottom:30px}.sect-h{display:flex;align-items:center;gap:10px;margin-bottom:13px}.sect-h h2{font-size:13px;font-weight:800;color:var(--text2);letter-spacing:.4px;white-space:nowrap}.sect-h .line{flex:1 1;height:1px;background:var(--border)}.page-h{margin-bottom:20px}.page-h h2{font-size:21px;font-weight:800}.page-h p{font-size:13px;color:var(--muted);margin-top:3px}@media (max-width:900px){.nav{margin-left:6px;overflow-x:auto}.nav-btn{padding:0 9px;font-size:12.5px}.topbar h1{font-size:14px}.userbox .uname{display:none}}.modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:500;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--surface);border-radius:var(--r);padding:22px;width:100%;max-width:420px;box-shadow:0 18px 50px rgba(15,23,42,.3);max-height:86vh;overflow:auto}