:root{--paper: #EBEFEE;--panel: #FFFFFF;--panel-alt: #F5F7F6;--ink: #12171A;--ink-2: #3D4A46;--muted: #6B7772;--rule: #CDD6D3;--rule-hard: #A9B5B1;--pine: #14524B;--pine-dim: #1E6B62;--brass: #C9A24B;--brass-dim: #B4690E;--crit: #A4231C;--warn: #B4690E;--ok: #2C6E49;--crit-bg: #FBEAE9;--warn-bg: #FCF2E3;--ok-bg: #E9F3EC;--cream: #FBF8EF;--cream-alt: #F4F0E6;--cream-rule: #E7E1D3;--fs-10: 10px;--fs-11: 11px;--fs-12: 12px;--fs-14: 14px;--fs-17: 17px;--fs-22: 22px;--fs-28: 28px;--sp-1: 2px;--sp-2: 4px;--sp-3: 8px;--sp-4: 12px;--sp-5: 16px;--sp-6: 24px;--rd-0: 0;--rd-1: 2px;--rd-2: 4px;--ui: "IBM Plex Sans KR", -apple-system, BlinkMacSystemFont, "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;--mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--rail: 196px;--tablewrap-h: 68vh}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--ui);font-size:var(--fs-14);line-height:1.5;letter-spacing:0;-webkit-font-smoothing:antialiased}.rail .sub-en,thead th,.kpi .k,.pagehead .note{letter-spacing:.04em}.envband{height:24px;display:flex;align-items:center;gap:8px;padding:0 var(--sp-5);font-size:var(--fs-11);font-weight:600;color:var(--brass-dim);background:var(--cream);border-bottom:1px solid var(--cream-rule)}.envband:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--brass);display:inline-block}.envband span{letter-spacing:0}.envband.prod{background:var(--crit);color:#fff;border-bottom-color:#6e1310}.envband.prod:before{background:#fff}.envband.prod span{background:transparent;border-color:transparent}.shell{display:flex;height:calc(100% - 26px)}.rail{width:var(--rail);flex:0 0 var(--rail);background:var(--ink);color:#c6d2ce;display:flex;flex-direction:column;padding:16px 0 10px}.rail .brand{margin:0 16px 10px}.rail .brand img{display:block;width:104px;height:auto}.rail h1{font-size:13px;font-weight:700;letter-spacing:.02em;color:#fff;margin:0 16px 2px}.rail .sub-en{font-family:var(--mono);font-size:9.5px;color:#c9a24b;margin:0 16px 6px;letter-spacing:.06em;text-transform:uppercase}.rail .sub{font-family:var(--mono);font-size:10px;color:#6e817c;margin:0 16px 18px;letter-spacing:.04em}.rail nav{display:flex;flex-direction:column}.rail button{all:unset;cursor:pointer;padding:9px 16px;font-size:12.5px;color:#b4c2be;border-left:3px solid transparent;display:flex;justify-content:space-between;align-items:center}.rail button:hover{background:#1d2528;color:#fff}.rail button:focus-visible{outline:2px solid #F0C64A;outline-offset:-2px}.rail button.on{background:#1d2528;color:#fff;border-left-color:var(--pine-dim);font-weight:600}.rail .badge{font-family:var(--mono);font-size:10px;background:var(--crit);color:#fff;padding:1px 5px;border-radius:2px}.rail .badge.info{background:#c9a24b;color:#1a1f22}.rail .badge.mute{background:#3a423f;color:#c9cfcc}.rail .sub{color:#9cb0aa}.rail .foot{color:#8fa19c}.rail .foot{margin-top:auto;padding:12px 16px 0;border-top:1px solid #262F32;font-family:var(--mono);font-size:10px;color:#667874;line-height:1.6}.main{flex:1;overflow:auto;padding:18px 22px 40px}.pagehead{display:flex;align-items:baseline;gap:var(--sp-4);border-bottom:2px solid var(--brass);padding-bottom:var(--sp-3);margin-bottom:var(--sp-5)}.pagehead h2{font-size:var(--fs-22);margin:0;font-weight:700;letter-spacing:-.015em}.pagehead .note{font-size:var(--fs-12);color:var(--muted)}.pagehead .right{margin-left:auto;display:flex;gap:8px;align-items:center}.panel{background:var(--panel);border:1px solid var(--rule);margin-bottom:14px}.panel>header{padding:8px 12px;border-bottom:1px solid var(--rule);background:var(--panel-alt);font-size:11.5px;font-weight:600;letter-spacing:.03em;color:var(--ink-2);display:flex;align-items:center;gap:10px}.panel>header .right{margin-left:auto;font-weight:400;color:var(--muted)}.panel .body{padding:12px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);margin-bottom:14px}.kpi{background:var(--panel);padding:var(--sp-4) var(--sp-5)}.kpi .k{font-size:var(--fs-11);color:var(--muted)}.kpi .v{font-family:var(--mono);font-size:var(--fs-28);font-weight:600;line-height:1.2}.kpi .u{font-size:var(--fs-11);color:var(--muted);margin-left:3px;font-family:var(--ui)}.kpi.crit .v{color:var(--crit)}.kpi.warn .v{color:var(--warn)}.kpi.ok .v{color:var(--ok)}button.btn,label.btn{cursor:pointer;font-family:var(--ui);font-size:12px;font-weight:600;padding:6px 14px;border:1px solid var(--rule-hard);background:var(--panel);color:var(--ink);display:inline-block;line-height:normal;box-sizing:border-box}button.btn{all:unset;cursor:pointer;font-family:var(--ui);font-size:12px;font-weight:600;padding:6px 14px;border:1px solid var(--rule-hard);background:var(--panel);color:var(--ink)}button.btn:hover,label.btn:hover{background:var(--panel-alt)}button.btn:focus-visible,label.btn:focus-within{outline:2px solid var(--pine);outline-offset:1px}button.btn.primary,label.btn.primary{background:var(--pine);border-color:var(--pine);color:#fff}button.btn.primary:hover,label.btn.primary:hover{background:var(--pine-dim)}button.btn:disabled,label.btn.disabled{opacity:.45;cursor:not-allowed}button.btn.sm,label.btn.sm{padding:3px 9px;font-size:11px;font-weight:500}select,input[type=text],input[type=number],input[type=date],input[type=datetime-local],input[type=time],input[type=password],input[type=email],input[type=tel],input[type=search],input[type=url],input:not([type]),textarea{font-family:var(--ui);font-size:12px;padding:5px 8px;border:1px solid var(--rule-hard);background:var(--panel);color:var(--ink);box-sizing:border-box}select:focus,input:focus,textarea:focus{outline:2px solid var(--pine);outline-offset:-1px}input:disabled,select:disabled,textarea:disabled{background:#f3eee0;color:#8a928e}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141673;display:flex;align-items:stretch;justify-content:flex-end;z-index:999}.modal-card{background:#fff;border-left:3px solid var(--brass, #C9A24B);box-shadow:-20px 0 60px #00000059;width:min(640px,100vw);height:100vh;max-height:100vh;display:flex;flex-direction:column;z-index:1000;animation:modal-slide-in .18s ease-out}@keyframes modal-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.modal-card>header{padding:14px 18px;border-bottom:1px solid var(--rule);background:var(--cream, #FBF8EF);font-weight:700;font-size:14px;flex-shrink:0}.modal-card>.modal-body{padding:16px 18px;overflow-y:auto;flex:1 1 auto}.modal-card>footer{padding:10px 18px;border-top:1px solid var(--rule);background:var(--cream, #FBF8EF);display:flex;gap:8px;align-items:center;flex-shrink:0}.form-grid{display:grid;gap:10px 12px}.form-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid label{display:block;font-size:11px;color:var(--muted, #6B7772);min-width:0;align-self:stretch}.form-grid label>input,.form-grid label>select,.form-grid label>textarea{display:block;width:100%;margin-top:4px;font-size:12.5px;color:var(--ink)}.form-grid label>textarea{min-height:64px;resize:vertical}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:span 3}.form-grid .span-full{grid-column:1 / -1}.form-grid label.required:before{content:"*";color:#c24040;margin-right:3px;font-weight:700}.form-grid{align-items:start}table{border-collapse:collapse;width:100%}th,td{padding:7px 10px;border-bottom:1px solid var(--rule);text-align:left;white-space:nowrap;font-size:var(--fs-12)}thead th{position:sticky;top:0;z-index:2;background:var(--cream-alt);font-size:var(--fs-11);font-weight:600;color:var(--ink-2);border-bottom:1px solid var(--rule-hard)}tbody tr:hover{background:#f3f7f5}td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}td.code{font-family:var(--mono);font-size:var(--fs-12)}.tablewrap{max-height:var(--tablewrap-h);overflow:auto;border-top:1px solid var(--rule)}.tag{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:600;padding:1px 6px;border:1px solid currentColor;letter-spacing:.03em}.tag.crit{color:var(--crit);background:var(--crit-bg)}.tag.warn{color:var(--warn);background:var(--warn-bg)}.tag.ok{color:var(--ok);background:var(--ok-bg)}.tag.pr{color:var(--pine);background:#e6f0ee}.tag.wo{color:#2b4e7e;background:#e7eef7}.grid{border:1px solid var(--rule);background:var(--panel);overflow:auto;max-height:70vh}.grid table{border-collapse:separate;border-spacing:0}.grid th,.grid td{border-bottom:1px solid var(--rule);border-right:1px solid var(--rule)}.grid thead th{position:sticky;top:0;z-index:3;font-family:var(--mono);font-size:10px;text-align:right;padding:4px 7px;min-width:62px}.grid thead th.corner{left:0;z-index:5;text-align:left;min-width:230px}.grid td.rowhead,.grid th.rowhead{position:sticky;left:0;z-index:2;background:var(--panel);min-width:230px;max-width:230px;white-space:normal}.grid tr.itemrow td.rowhead{background:var(--panel-alt)}.grid tr.itemrow td{background:var(--panel-alt);font-weight:600}.grid td{text-align:right;font-family:var(--mono);font-size:11px;padding:3px 7px}.grid .lbl{font-family:var(--ui);font-size:11px;color:var(--muted)}.grid .itemcd{font-family:var(--mono);font-size:11.5px;font-weight:600}.grid .itemnm{font-size:11px;color:var(--muted);font-weight:400}.grid td.neg{background:var(--crit-bg);color:var(--crit);font-weight:600}.grid td.brk{background:var(--warn-bg);color:var(--warn);font-weight:600}.grid td.plan{color:var(--pine);font-weight:600}.grid td.zero{color:#b6c0bc}.indent{display:inline-block}.empty{padding:34px 12px;text-align:center;color:var(--muted);font-size:12.5px}.empty strong{display:block;color:var(--ink);font-size:13.5px;margin-bottom:5px}.err{border:1px solid var(--crit);background:var(--crit-bg);color:var(--crit);padding:9px 12px;font-size:12px;margin-bottom:12px}.hint{font-size:11.5px;color:var(--muted);margin:6px 0 0}.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.legend{display:flex;gap:14px;font-size:11px;color:var(--muted);margin-top:8px}.legend i{display:inline-block;width:10px;height:10px;margin-right:4px;vertical-align:-1px}.bar{height:3px;background:var(--rule);overflow:hidden}.bar>div{height:100%;background:var(--pine);animation:sweep 1.1s linear infinite}@keyframes sweep{0%{margin-left:-40%;width:40%}to{margin-left:100%;width:40%}}@media (prefers-reduced-motion: reduce){.bar>div{animation:none;width:100%;margin-left:0}}@media (max-width: 860px){:root{--rail: 60px}.rail h1,.rail .sub,.rail .sub-en,.rail .foot{display:none}.rail button{font-size:11px;padding:10px 6px;justify-content:center}.main{padding:12px}}.nested-page>.pagehead{display:none}.rail .nav-sep{height:1px;background:#3a423f;opacity:.3;margin:8px 12px}
