:root{--ink:#0e141b;--ink-soft:#566374;--line:#e3e7ec;--bg:#f4f6f8;--paper:#ffffff;--navy:#1b3a5b;--accent:#c8893a;--blue:#2563eb;--blue-bg:#eef4ff;--green:#15803d;--green-bg:#f0fbf3;--amber:#b45309;--amber-bg:#fff8ec;--red:#b91c1c;--red-bg:#fdf2f2}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Segoe UI,Malgun Gothic,맑은 고딕,-apple-system,sans-serif;font-size:16px;line-height:1.6}a{color:var(--navy)}.topbar{background:var(--navy);color:#fff;padding:0 24px;display:flex;align-items:center;gap:24px;min-height:56px;flex-wrap:wrap}.topbar .brand{font-weight:800;font-size:17px;letter-spacing:-.01em}.topbar nav{display:flex;gap:16px;flex-wrap:wrap}.topbar nav a{color:#d9e6f4;text-decoration:none;font-size:15px;padding:4px 0}.topbar nav a.active,.topbar nav a:hover{color:#fff;box-shadow:inset 0 -2px 0 var(--accent)}.topbar .who{margin-left:auto;font-size:14px;color:#c3d6ea;display:flex;align-items:center;gap:12px}.banner{background:var(--red-bg);border-bottom:1px solid #f3cccc;color:var(--red);padding:11px 24px;font-weight:700;font-size:15px}main{max-width:1100px;margin:0 auto;padding:24px 24px 60px}h1{font-size:24px;letter-spacing:-.02em;margin:4px 0 18px}h1,h2{font-weight:800}h2{font-size:19px;margin:28px 0 10px}.card{border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:0 0 16px}.card,table{background:var(--paper)}table{width:100%;border-collapse:collapse;border:1px solid var(--line);border-radius:12px;overflow:hidden;font-size:15px}td,th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top}thead th{background:#f4f6f9;font-size:13px;color:var(--ink-soft);letter-spacing:.03em}tbody tr:last-child td{border-bottom:none}tr.overdue td{background:var(--red-bg)}.pill{display:inline-block;font-size:13px;font-weight:700;padding:2px 10px;border-radius:999px;white-space:nowrap}.pill.ok{background:var(--green-bg);color:var(--green)}.pill.warn{background:var(--amber-bg);color:var(--amber)}.pill.bad{background:var(--red-bg);color:var(--red)}.pill.mute{background:#eef1f5;color:var(--ink-soft)}.pill.info{background:var(--blue-bg);color:var(--blue)}label{display:block;font-size:14px;font-weight:700;color:var(--ink-soft);margin:12px 0 4px}input:not([type]),input[type=date],input[type=password],input[type=text],select,textarea{width:100%;font:inherit;font-size:15px;padding:8px 10px;border:1px solid #ccd4dd;border-radius:8px;background:#fff;color:var(--ink)}textarea{min-height:70px;resize:vertical}button{font:inherit;font-size:15px;font-weight:700;padding:8px 16px;border:none;border-radius:8px;background:var(--navy);color:#fff;cursor:pointer}button.sub{background:#e6ebf1;color:var(--ink)}button.danger{background:var(--red)}button:disabled{opacity:.5;cursor:default}.row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.muted{color:var(--ink-soft);font-size:14px}.err{background:var(--red-bg);border:1px solid #f3cccc;color:var(--red);border-radius:8px}.err,.ok-msg{padding:10px 14px;margin:10px 0;font-size:15px;font-weight:600}.ok-msg{background:var(--green-bg);border:1px solid #c8ebd3;color:var(--green);border-radius:8px}.login-wrap{max-width:380px;margin:80px auto}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 18px}.stat{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 18px;min-width:128px}.stat .k{font-size:13px;color:var(--ink-soft);font-weight:700}.stat .v{font-size:24px;font-weight:800;letter-spacing:-.02em}.stat.alert .v{color:var(--red)}pre.article{white-space:pre-wrap;font:inherit;font-size:14.5px;color:var(--ink-soft);background:#f7f9fb;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:6px 0 0;max-height:260px;overflow:auto}.scope-grid{display:flex;gap:8px 18px;flex-wrap:wrap;margin:6px 0}.scope-grid label{display:flex;align-items:center;gap:6px;margin:0;font-weight:600;color:var(--ink);font-size:14.5px}.scope-grid input{width:auto}.topbar .who form{margin:0;display:flex}.topbar .who button{font-size:14px;padding:5px 12px}.card .card{background:#f7f9fb;border-color:#dde3ea;border-radius:10px;padding:14px 16px;margin:10px 0 0}.card .card:last-child{margin-bottom:0}.card{overflow-x:auto}td.cell-edit{width:230px;min-width:230px}td.cell-edit form{margin:0 0 10px}td.cell-edit form:last-child{margin-bottom:0}td.cell-edit label{margin:6px 0 2px;font-size:13px}td.cell-edit input:not([type]),td.cell-edit input[type=date],td.cell-edit input[type=file],td.cell-edit input[type=text],td.cell-edit select,td.cell-edit textarea{width:100%;font-size:14px;padding:5px 8px}td.cell-edit textarea{min-height:52px}td.cell-edit button{width:100%;margin-top:6px;font-size:14px;padding:6px 10px}.pager{display:flex;align-items:center;gap:8px;margin:14px 0 0}.pager a,.pager span{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:6px 14px;font-size:14px;text-decoration:none}.pager span{color:var(--ink-soft)}.pager a{color:var(--navy);font-weight:700}.pager a:hover{border-color:var(--navy)}.filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:0 0 16px}.filterbar a{border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:14px;text-decoration:none;color:var(--navy);white-space:nowrap}.filterbar a:hover{border-color:var(--navy);background:#f4f6f9}@media (max-width:1100px){main{padding:18px 16px 48px}.topbar{padding:8px 16px}.topbar .who{margin-left:0}}