:root{--bg: #f8fafc;--card: #ffffff;--text: #0f172a;--muted: #64748b;--accent: #6366f1;--accent-weak: #eef2ff;--success: #10b981;--warn: #f59e0b;--danger: #ef4444;--border: #e2e8f0;--radius: 12px;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .06);--shadow-hover: 0 4px 12px rgba(15, 23, 42, .08);--sidebar-w: 248px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Malgun Gothic,맑은 고딕,sans-serif;font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:"tnum"}button{font-family:inherit;cursor:pointer}a{color:inherit;text-decoration:none}.num{font-variant-numeric:tabular-nums}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--card);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar .brand{font-size:15px;font-weight:700;padding:6px 10px 18px;letter-spacing:-.2px}.sidebar .brand small{display:block;color:var(--muted);font-weight:500;font-size:11px;margin-top:2px}.nav-group{margin-bottom:6px}.nav-group>.group-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;padding:12px 10px 4px}.nav-item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:10px;color:var(--text);font-size:13px;font-weight:500;border:none;background:none;width:100%;text-align:left}.nav-item .icon{font-size:15px;width:18px;text-align:center}.nav-item:hover{background:var(--bg)}.nav-item.active{background:var(--accent-weak);color:var(--accent);font-weight:700}.nav-item.child{padding-left:20px;font-size:12.5px}.nav-item .badge{margin-left:auto;font-size:9px;font-weight:600;color:var(--muted);background:var(--bg);border:1px solid var(--border);padding:1px 6px;border-radius:999px}.content{flex:1 1 auto;padding:26px 30px;max-width:1400px;min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px;gap:16px;flex-wrap:wrap}.page-title{font-size:20px;font-weight:700;letter-spacing:-.3px}.page-sub{color:var(--muted);font-size:12px;margin-top:3px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:18px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.stat .label{font-size:11px;color:var(--muted);font-weight:600}.stat .value{font-size:26px;font-weight:800;letter-spacing:-.5px;margin-top:6px}.stat .value .unit{font-size:13px;font-weight:600;color:var(--muted);margin-left:3px}.stat.accent .value{color:var(--accent)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.input,.select{height:36px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--text);font-size:13px;outline:none}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}.input.search{min-width:260px}.btn{height:36px;padding:0 16px;border-radius:10px;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:13px;font-weight:600}.btn:hover{background:var(--bg)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{filter:brightness(1.05)}.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}.table-wrap{overflow-x:auto;border-radius:var(--radius)}table.grid{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card)}table.grid th,table.grid td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}table.grid th{font-size:11px;color:var(--muted);font-weight:700;background:var(--card);position:sticky;top:0}table.grid td.num,table.grid th.num{text-align:right;font-variant-numeric:tabular-nums}table.grid tbody tr:hover{background:var(--bg)}table.grid tr.expandable{cursor:pointer}.sub-row td{background:var(--bg)}.chip{display:inline-block;font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:var(--card)}.chip.stop{color:var(--danger);border-color:#fecaca;background:#fef2f2}.chip.ok{color:var(--success);border-color:#bbf7d0;background:#f0fdf4}.chip.warn{color:var(--warn);border-color:#fde68a;background:#fffbeb}.pos{color:var(--success);font-weight:600}.neg{color:var(--danger);font-weight:600}.muted{color:var(--muted)}.mini{display:inline-flex;gap:6px;flex-wrap:wrap}.mini .kv{font-size:10.5px;color:var(--muted)}.mini .kv b{color:var(--text);font-weight:700}.pickbar{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 14px}.pick{font-size:11.5px;padding:5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--muted);font-weight:600}.pick.on{background:var(--accent-weak);border-color:var(--accent);color:var(--accent)}.center-screen{min-height:100vh;display:grid;place-items:center}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty{padding:48px;text-align:center;color:var(--muted)}.footnote{color:var(--muted);font-size:11px;margin-top:14px}.login-wrap{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.login-card{width:340px;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-hover);padding:32px 28px}.login-card h1{font-size:18px;margin:0 0 4px}.login-card p{color:var(--muted);font-size:12px;margin:0 0 22px}.login-card label{display:block;font-size:12px;font-weight:600;margin:12px 0 5px}.login-card .input{width:100%;height:40px}.login-card .btn.primary{width:100%;height:42px;margin-top:20px;font-size:14px}.login-err{color:var(--danger);font-size:12px;margin-top:12px;min-height:16px}.cal{width:100%;border-collapse:collapse}.cal th{color:var(--muted);font-size:11px;font-weight:700;padding:8px}.cal td{border:1px solid var(--border);height:84px;vertical-align:top;padding:6px;width:14.28%}.cal .day{font-size:11px;color:var(--muted)}.cal td.today{background:var(--accent-weak)}.cal td.today .day{color:var(--accent);font-weight:800}.cal .cell-data{margin-top:6px;font-size:11px}.cal .cell-data .n{font-weight:800;font-size:15px}
