:root{--bg: #f3f4f6;--surface: #ffffff;--surface-2: #f8f9fb;--line: #e2e5ea;--line-2: #eef0f3;--ink: #161a22;--ink-2: #2a303b;--muted: #5b6270;--accent: #1d4f91;--accent-ink: #ffffff;--accent-soft: #e7f0fb;--green: #1e6b3a;--green-bg: #e6f4ea;--orange: #9a3d00;--orange-bg: #fff1e6;--yellow: #6b4e00;--yellow-bg: #fff7d6;--red: #a4161a;--red-bg: #fdecec;--gray: #3f4652;--gray-bg: #eef0f3;--radius: 10px;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:IBM Plex Sans KR,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.5}h1,h2,h3{margin:0}button{font:inherit}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{font-size:12px}.grow{flex:1}.r{text-align:right}.warn-text{color:var(--orange);font-weight:600}.ok-text{color:var(--green);font-weight:600}code{background:var(--gray-bg);padding:1px 6px;border-radius:4px}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.gate-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:14px}.gate-card h1{font-size:20px}.gate-card p{margin:-8px 0 4px;font-size:13px}.brand-mark{width:42px;height:42px;border-radius:10px;background:var(--accent);display:flex;align-items:center;justify-content:center}.brand-mark.small{width:34px;height:34px;border-radius:9px}.topbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px}.brand-name{font-weight:700;font-size:16px}.brand-sub{font-size:12px;color:var(--muted)}.topbar-right{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:0}.pill.green{color:var(--green);background:var(--green-bg)}.pill.gray{color:var(--gray);background:var(--gray-bg)}.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.as-btn{cursor:pointer;text-align:left;font:inherit}.layout{display:flex;flex-wrap:wrap;max-width:1600px;margin:0 auto}.sidenav{flex:1 1 200px;max-width:100%;padding:16px 8px 8px 16px;display:flex;flex-wrap:wrap;gap:4px;align-content:flex-start}.nav-btn{flex:1 1 170px;min-height:42px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--ink-2);text-align:left;font-weight:500;cursor:pointer}.nav-btn:hover{background:var(--gray-bg)}.nav-btn.active{background:var(--accent);color:var(--accent-ink);font-weight:600}.content{flex:999 1 560px;min-width:0;padding:16px 20px 48px 8px}.page{display:flex;flex-direction:column;gap:14px}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px}.page-head h1{font-size:21px}.page-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.page-actions{display:flex;gap:8px}.section-title{font-size:15px;margin-top:6px}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px}.card.pad{padding:16px;display:flex;flex-direction:column;gap:12px}.card h2{font-size:15px}.card-title-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}.scroll{overflow-x:auto}.split{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start}.grow-3{flex:3 1 460px;min-width:0}.grow-2{flex:2 1 320px;min-width:0}.table{width:100%;border-collapse:collapse;min-width:720px}.table.compact{min-width:820px}.table th{font-size:12px;font-weight:600;color:var(--muted);text-align:left;padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap}.table th.r{text-align:right}.table td{padding:10px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}.table tbody tr:hover{background:#fafbfc}.table tr.selected{background:var(--accent-soft)}.table tfoot td{border-top:1px solid var(--line);border-bottom:0}.table .sub{font-size:11px;color:var(--muted)}.table .actions{text-align:right;white-space:nowrap}.table .actions .btn+.btn{margin-left:4px}.clip{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty{padding:28px;text-align:center;color:var(--muted)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.kpi span{font-size:12px;font-weight:600;color:var(--muted)}.kpi b{font-size:26px;font-weight:700;line-height:1.2}.kpi b small{font-size:14px;margin-left:2px}.kpi em{font-style:normal;font-size:12px;color:var(--muted)}.kpi .kpi-money{font-size:18px}.kpi.warn{border-color:#f3c9a6}.kpi.warn span,.kpi.warn b{color:var(--orange)}.kpi.as-btn:hover{border-color:var(--accent)}.kpi.selected{outline:2px solid var(--accent)}.small-kpis .kpi b{font-size:16px}.bars{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;align-items:end;height:210px;border-bottom:1px solid #c9ced6;padding-top:10px;margin-bottom:26px}.bar-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;height:100%;position:relative;padding-bottom:22px}.bar{background:var(--accent);border-radius:3px 3px 0 0;min-height:0}.bar-val{font-size:12px;font-weight:600;text-align:center;margin-bottom:4px}.bar-label{position:absolute;bottom:-22px;left:0;right:0;text-align:center;font-size:11px;color:var(--muted);white-space:nowrap}.todo{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.todo button{display:flex;gap:10px;align-items:flex-start;width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);text-align:left;cursor:pointer}.todo button:hover{border-color:var(--accent)}.todo b{display:block;font-size:13px}.todo em{font-style:normal;font-size:12px;color:var(--muted)}.tag{flex:0 0 auto;font-size:11px;font-weight:700;padding:3px 7px;border-radius:6px;margin-top:1px}.tag.orange{background:var(--orange-bg);color:var(--orange)}.tag.blue{background:var(--accent-soft);color:var(--accent)}.tag.yellow{background:var(--yellow-bg);color:var(--yellow)}.badge{display:inline-block;font-size:11px;font-weight:700;padding:4px 8px;border-radius:6px;white-space:nowrap}.badge.green{background:var(--green-bg);color:var(--green)}.badge.orange{background:var(--orange-bg);color:var(--orange)}.badge.yellow{background:var(--yellow-bg);color:var(--yellow)}.badge.gray{background:var(--gray-bg);color:var(--gray)}.badge.blue{background:var(--accent-soft);color:var(--accent)}.badge.red{background:var(--red-bg);color:var(--red)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{min-height:34px;padding:0 12px;border-radius:999px;border:1px solid #c9ced6;background:var(--surface);color:var(--ink-2);font-size:13px;cursor:pointer}.chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.chip.add{border-style:dashed;color:var(--accent)}.site-list{display:flex;flex-wrap:wrap;gap:6px}.btn{min-height:36px;padding:0 14px;border-radius:9px;border:1px solid #c9ced6;background:var(--surface);color:var(--accent);font-weight:600;font-size:13px;cursor:pointer}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:#163f75}.btn.ghost{color:var(--ink-2)}.btn.small{min-height:30px;padding:0 10px;font-size:12px}.btn.block{width:100%;min-height:44px}.btn.danger{color:var(--red)}.btn.danger.armed{background:var(--red);border-color:var(--red);color:#fff}.icon-btn{width:36px;height:36px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--gray);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.input{font:inherit;font-size:14px;padding:8px 10px;border:1px solid #c9ced6;border-radius:8px;background:#fff;color:var(--ink);width:100%;min-height:38px}.input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}.input:disabled{background:var(--surface-2)}.input.search{max-width:280px}.input.date-inline{min-height:32px;padding:4px 6px;font-size:12px;width:140px}.input.cell{min-height:32px;padding:4px 8px;font-size:13px}.input.cell.r{text-align:right}textarea.input{resize:vertical}.input-group{display:flex;gap:6px}.input-group select{width:92px;flex:0 0 auto}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field.span2{grid-column:1 / -1}.field-label{font-size:12px;font-weight:600;color:var(--gray)}.field-hint{font-size:11px;color:var(--muted)}.check{display:inline-flex;align-items:center;gap:8px;min-height:38px;font-size:13px;white-space:nowrap}.check input{width:18px;height:18px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 14px}.form-grid.top-gap{margin-top:6px}.form-section{font-size:13px;font-weight:700;margin:18px 0 8px;padding-top:14px;border-top:1px solid var(--line-2)}.preview{grid-column:1 / -1;font-size:13px;padding:10px 12px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line-2)}.error-box{padding:10px 12px;border-radius:8px;background:var(--red-bg);color:var(--red);font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141e73;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;z-index:50}.modal{width:100%;max-width:560px;background:var(--surface);border-radius:14px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column}.modal.wide{max-width:860px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line-2)}.modal-head h2{font-size:16px}.modal-body{padding:16px 20px;display:flex;flex-direction:column;gap:12px}.modal-foot{display:flex;align-items:center;gap:8px;padding:14px 20px;border-top:1px solid var(--line-2);flex-wrap:wrap}@media (max-width: 640px){.topbar{padding:10px 16px}.sidenav{padding:12px 16px 0}.content{padding:12px 16px 40px}.input.search{max-width:none}}
