:root{--ink:#1a1a1a;--ink2:#4a4a4a;--mut:#8a8a8a;--line:#d4d4d4;--line2:#e8e8e8;--bg:#f4f4f2;--pane:#fff;--accent:#2b5fd9;--warn:#b4401f;--ok:#1f7a4d;--gold:#8a6a1f;--brand:#1c2a3f;--r:4px;--fs:13px}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:var(--fs)/1.55 -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Segoe UI", Roboto, sans-serif;margin:0}a{color:inherit}.btn{border:1px solid var(--line);color:var(--ink2);border-radius:var(--r);font:inherit;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:5px;padding:5px 11px;font-size:12px;text-decoration:none;display:inline-flex}.btn:hover{border-color:#b5b5b5}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.sm{padding:3px 8px;font-size:11px}.btn.danger{color:var(--warn);border-color:#e0b6ab}.btn.danger:hover:not(:disabled){border-color:var(--warn);background:#fbf0ec}.btn[aria-disabled=true]{opacity:.5;pointer-events:none}.fld{border:1px solid var(--line);border-radius:var(--r);font:inherit;color:var(--ink2);background:#fff;min-width:120px;padding:5px 9px;font-size:12px}.fld.wide{min-width:250px}.fld:focus,.btn:focus-visible{outline-offset:1px;outline:2px solid #b9cbf2}.chip{border:1px solid var(--line);color:var(--ink2);white-space:nowrap;background:#fff;border-radius:11px;padding:1px 8px;font-size:11px;display:inline-block}.chip.b{color:var(--accent);background:#eef2fb;border-color:#b9cbf2}.chip.w{color:var(--warn);background:#fbf0ec;border-color:#e6c3b6}.chip.g{color:var(--ok);background:#eef7f2;border-color:#b3d8c4}.chip.n{border-color:var(--line);color:var(--mut);background:#f4f4f2}.chip.y{color:var(--gold);background:#fdfaf0;border-color:#ddc98c}.sub{color:var(--mut);font-size:11px}.err{color:var(--warn);border-radius:var(--r);background:#fbf0ec;border:1px solid #e6c3b6;padding:8px 10px;font-size:12px}.spacer{flex:1}.login{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.login-box{border:1px solid var(--line);border-radius:var(--r);background:#fff;width:100%;max-width:360px;padding:28px 24px}.login-logo{width:160px;height:auto;display:block}.login-box .tag{color:var(--mut);letter-spacing:.12em;margin-top:6px;font-size:11px}.login-box h1{margin:22px 0 14px;font-size:15px}.social{gap:8px;display:grid}.social .btn{padding:9px 12px;font-size:13px;position:relative}.btn.kakao{color:#191919;background:#fee500;border-color:#fee500}.btn.google{color:#1f1f1f;background:#fff}.social .soon{color:var(--mut);font-size:10px;position:absolute;right:10px}.btn.kakao .soon{color:#6b6100}.or{color:var(--mut);align-items:center;gap:10px;margin:18px 0;font-size:11px;display:flex}.or:before,.or:after{content:"";background:var(--line2);flex:1;height:1px}.login form{gap:10px;display:grid}.login label{color:var(--ink2);gap:4px;font-size:12px;display:grid}.login .fld{width:100%;padding:8px 10px;font-size:13px}.login .btn.primary{padding:9px 12px;font-size:13px}.app{min-height:100vh;display:flex}.nav{border-right:1px solid var(--line);background:#fff;flex:0 0 228px;width:228px;height:100vh;position:sticky;top:0;overflow:auto}.nav .brand{border-bottom:1px solid var(--line);padding:16px 14px 12px;text-decoration:none;display:block}.nav .brand img{width:120px;height:auto;display:block}.nav .brand span{color:var(--mut);letter-spacing:.14em;margin-top:4px;font-size:10px;display:block}.navgrp{padding:12px 0 4px}.navgrp h4{letter-spacing:.12em;color:var(--mut);margin:0;padding:6px 14px;font-size:10px;font-weight:600}.nav a.item{color:var(--ink2);border-left:2px solid #0000;justify-content:space-between;gap:6px;padding:7px 14px;text-decoration:none;display:flex}.nav a.item:hover{background:#f7f7f5}.nav a.item.on{border-left-color:var(--accent);color:var(--accent);background:#eef2fb;font-weight:600}.nav a.item .badge{background:var(--warn);color:#fff;border-radius:9px;height:16px;padding:0 6px;font-size:10px;line-height:16px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:5;border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 20px;display:flex;position:sticky;top:0}.crumb{color:var(--mut);font-size:11px}.topbar h1{margin:0;font-size:17px;font-weight:700}.wrap{max-width:1280px;padding:18px 20px 60px}@media (max-width:820px){.app{flex-direction:column}.nav{border-right:none;border-bottom:1px solid var(--line);flex:none;width:auto;height:auto;position:static}.navgrp{padding:4px 0}.topbar,.wrap{padding-left:16px;padding-right:16px}}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.stats{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.stats a{border:1px solid var(--line);border-radius:var(--r);color:var(--ink2);background:#fff;align-items:baseline;gap:8px;padding:6px 12px;font-size:12px;text-decoration:none;display:flex}.stats a b{font-variant-numeric:tabular-nums;color:var(--ink);font-size:15px}.stats a.on{border-color:var(--accent);color:var(--accent);background:#eef2fb}.stats a.on b{color:var(--accent)}.card{background:var(--pane);border:1px solid var(--line);border-radius:var(--r);overflow:auto}.tbl{border-collapse:collapse;background:#fff;width:100%}.tbl th,.tbl td{border-bottom:1px solid var(--line2);text-align:left;vertical-align:middle;white-space:nowrap;padding:8px 10px;font-size:12px}.tbl th{color:var(--ink2);border-bottom:1px solid var(--line);background:#fafaf8;font-size:11px;font-weight:600}.tbl tbody tr.row{cursor:pointer}.tbl tbody tr.row:hover td{background:#fbfbf9}.tbl td.ell{text-overflow:ellipsis;max-width:220px;overflow:hidden}.tbl td.empty{text-align:center;color:var(--mut);padding:40px 10px}.pager{justify-content:flex-end;align-items:center;gap:8px;padding:10px 0;display:flex}dialog{border:1px solid var(--line);border-radius:var(--r);width:min(720px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--ink);padding:0}dialog::backdrop{background:#1a1a1a59}.dlg-head{border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:10px;padding:14px 18px;display:flex;position:sticky;top:0}.dlg-head h2{margin:0;font-size:15px}.dlg-body{padding:16px 18px 20px}.dlg-body h3{color:var(--ink2);margin:18px 0 8px;font-size:12px}.dlg-body h3:first-child{margin-top:0}.dl{grid-template-columns:112px 1fr;gap:6px 10px;margin:0;font-size:12px;display:grid}.dl dt{color:var(--mut)}.dl dd{word-break:break-all;margin:0}.text{white-space:pre-wrap;word-break:break-word;border:1px solid var(--line2);border-radius:var(--r);background:#fafaf8;margin:0;padding:10px 12px;font-size:12px}.seg{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.seg button{border:1px solid var(--line);color:var(--ink2);border-radius:var(--r);font:inherit;cursor:pointer;background:#fff;padding:6px 14px;font-size:12px}.seg button:hover:not(:disabled){border-color:#b5b5b5}.seg button:disabled{cursor:default}.seg button.on{font-weight:600}.seg button.on.w{color:var(--warn);background:#fbf0ec;border-color:#e6c3b6}.seg button.on.b{color:var(--accent);background:#eef2fb;border-color:#b9cbf2}.seg button.on.g{color:var(--ok);background:#eef7f2;border-color:#b3d8c4}.seg button.on.n{color:var(--ink2);background:#f4f4f2;border-color:#b5b5b5}.seg button:not(.on):disabled{opacity:.5}.memo-form{gap:6px;display:grid}.memo-form textarea{resize:vertical;width:100%;min-height:64px;line-height:1.5}.memo-actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.memos{margin:10px 0 0;padding:0;list-style:none}.memos li{border-bottom:1px solid var(--line2);padding:8px 0}.memos li:last-child{border-bottom:none}.memo-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.memos p{white-space:pre-wrap;word-break:break-word;margin:2px 0 0;font-size:12px}.files{gap:6px;display:grid}.file{border:1px solid var(--line2);border-radius:var(--r);align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.file span.name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}dialog.confirm{width:min(400px,100vw - 32px)}dialog.confirm h2{margin:0 0 8px;font-size:15px}.confirm-text{gap:8px;margin-bottom:14px;display:grid}.confirm-text p{margin:0}.confirm-text .text{max-height:160px;overflow:auto}.confirm .err{margin-bottom:12px}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}@media (max-width:560px){.dl{grid-template-columns:88px 1fr}}
