:root{--bg:#f4f5f6;--surface:#ffffff;--surface-sub:#fafbfa;--line:#e3e5e4;--line-strong:#d3d6d4;--text:#1a1f1c;--text-sub:#5c6a62;--text-muted:#8a938d;--accent:#16324f;--accent-weak:#eef2f6;--ok:#157347;--ok-bg:#eaf4ee;--ok-line:#bcdcc9;--warn:#a1620a;--warn-bg:#fdf5e9;--warn-line:#f0dcb0;--danger:#9d2b2b;--danger-bg:#fbeded;--radius:2px;--gap:14px;--font:"Pretendard",-apple-system,BlinkMacSystemFont,"Segoe UI","Malgun Gothic",system-ui,sans-serif;--font-num:"Roboto Mono","SF Mono",Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}.num{text-align:right;white-space:nowrap}.num,.num-lg{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.num-lg{font-size:22px;font-weight:700;letter-spacing:-.3px}.neg{color:var(--danger)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.card-head{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line)}.card-no{font-size:11px;font-weight:700;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.card-title{font-size:13px;font-weight:700}.card-sub{margin-left:auto;font-size:11.5px;color:var(--text-muted)}.card-body{padding:12px 14px}.card-body-flush{padding:0}table.grid{width:100%;border-collapse:collapse;font-size:13px}table.grid th{padding:8px 14px;text-align:left;font-size:11.5px;font-weight:500;color:var(--text-muted);background:var(--surface-sub);border-bottom:1px solid var(--line);white-space:nowrap}table.grid td.r,table.grid th.r{text-align:right}table.grid td{padding:8px 14px;border-bottom:1px solid #f1f3f2}table.grid tbody tr:last-child td{border-bottom:none}table.grid tr.total td{background:var(--surface-sub);font-weight:700;border-top:1px solid var(--line)}table.grid tr.sub td:first-child{padding-left:28px;color:var(--text-sub)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--radius);border:1px solid transparent;white-space:nowrap}.badge-ok{color:var(--ok);background:var(--ok-bg);border-color:var(--ok-line)}.badge-warn{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-line)}.badge-muted{color:var(--text-sub);background:var(--bg);border-color:var(--line)}.banner{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:12.5px}.banner-ok{background:var(--ok-bg);border-color:var(--ok-line);color:#114b31}.banner-warn{background:var(--warn-bg);border-color:var(--warn-line);color:#6f4406}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;font-size:12.5px;font-weight:500;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text)}.btn:hover{background:var(--surface-sub)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.btn-primary:hover{background:#0f2438}.btn:disabled{opacity:.45;cursor:not-allowed}input[type=date],input[type=email],input[type=month],input[type=number],input[type=password],input[type=text],select,textarea{font-family:inherit;font-size:13px;padding:7px 9px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-weak);border-color:var(--accent)}.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:var(--gap);gap:var(--gap)}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-5{grid-column:span 5}.col-6{grid-column:span 6}.col-7{grid-column:span 7}.col-8{grid-column:span 8}.col-12{grid-column:span 12}@media (max-width:1100px){.col-3,.col-4,.col-5,.col-6,.col-7,.col-8{grid-column:span 12}}.stack{flex-direction:column;gap:var(--gap)}.row,.stack{display:flex}.row{align-items:center;gap:8px}.spacer{flex:1 1}.muted{color:var(--text-muted)}.small{font-size:11.5px}