*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#F0F0F0;--surface:#FFFFFF;--border:#CCCCCC;--border2:#AAAAAA;--text1:#000000;--text2:#333333;--text3:#666666;--blue:#0066CC;--blue-bg:#E8F0FF;--blue-sel:#C5D9F1;--green:#006600;--green-bg:#EEFFEE;--red:#CC0000;--red-bg:#FFEEEE;--amber:#996600;--amber-bg:#FFF8E0;--header-bg:#D4D0C8;--row-alt:#F9F9F9;--mono:"Segoe UI","Malgun Gothic","맑은 고딕",system-ui,sans-serif}body{font-family:맑은 고딕,Malgun Gothic,Arial,sans-serif;font-size:13px;background:var(--bg);color:var(--text1)}.layout{display:flex;height:100vh}.sidebar{width:200px;background:#F0F0F0;border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.main-content{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:36px;background:var(--header-bg);border-bottom:1px solid var(--border2);display:flex;align-items:center;padding:0 10px;font-size:12px;gap:8px}.page-area{flex:1 1;overflow:auto;padding:6px 8px}.sidebar-logo{padding:8px 10px;font-size:13px;font-weight:700;border-bottom:1px solid var(--border);background:#E8E8E8}.sidebar-nav{flex:1 1;overflow-y:auto}.nav-group,.nav-group-title{border-bottom:1px solid var(--border)}.nav-group-title{padding:5px 10px;font-size:11px;font-weight:700;background:#E0E0E0;color:var(--text2)}.nav-item{display:flex;align-items:center;padding:5px 12px;font-size:12px;cursor:pointer;color:var(--text2);text-decoration:none;border-bottom:1px solid #ebebeb}.nav-item.active,.nav-item:hover{background:var(--blue-sel)}.nav-item.active{font-weight:700;color:var(--blue)}.tabs{display:flex;border-bottom:1px solid var(--border2);background:var(--bg)}.tab-item{padding:5px 14px;font-size:12px;cursor:pointer;border:1px solid var(--border);border-bottom:none;margin-right:2px;background:#E0E0E0;color:var(--text2);position:relative;top:1px}.tab-item.active{background:var(--surface);font-weight:700;color:var(--text1);border-bottom:1px solid var(--surface)}.filter-bar{display:flex;align-items:center;gap:4px;padding:4px 6px;background:var(--bg);border:1px solid var(--border);margin-bottom:4px;flex-wrap:wrap}.filter-label{font-size:12px;color:var(--text2);white-space:nowrap;padding:0 2px}.filter-input{height:22px;border:1px solid var(--border2);font-size:12px;padding:0 4px;font-family:inherit;background:var(--surface);color:var(--text1);min-width:80px}.filter-input:focus{outline:1px solid var(--blue)}.filter-select{height:22px;border:1px solid var(--border2);font-size:12px;padding:0 2px;font-family:inherit;background:var(--surface);color:var(--text1)}.filter-select:focus{outline:1px solid var(--blue)}.page-actions{display:flex;margin-left:auto;flex-wrap:wrap}.btn,.page-actions{gap:4px;align-items:center}.btn{height:24px;padding:0 10px;font-size:12px;font-family:inherit;cursor:pointer;border:1px solid var(--border2);display:inline-flex;white-space:nowrap;background:#E0E0E0;color:var(--text1)}.btn:hover{background:#C8C8C8}.btn:active{background:#B0B0B0}.btn-primary{background:#1166BB;color:#fff;border-color:#0055AA}.btn-primary:hover{background:#0055AA}.btn-success{background:#006600;color:#fff;border-color:#004400}.btn-success:hover{background:#004400}.btn-danger{background:#CC2200;color:#fff;border-color:#AA1100}.btn-danger:hover{background:#AA1100}.btn-sm{height:22px;padding:0 8px;font-size:11px}.card{background:var(--surface);border:1px solid var(--border2);margin-bottom:4px}.card-header{display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--header-bg);border-bottom:1px solid var(--border2);min-height:26px}.card-title{font-size:12px;font-weight:700;color:var(--text1)}.card-body{padding:8px}.table-wrap{overflow:auto;border:1px solid var(--border2);position:relative}.tbl{width:100%;border-collapse:collapse;font-size:12px}.tbl thead tr{background:var(--header-bg)}.tbl thead{position:sticky;top:0;z-index:2}.tbl th{padding:3px 6px;border:1px solid var(--border);font-weight:700;text-align:left;font-size:12px;color:var(--text1)}.tbl td,.tbl th{white-space:nowrap}.tbl td{padding:2px 6px;border-right:1px solid var(--border);border-bottom:1px solid #e8e8e8}.tbl tbody tr:hover{background:#E8F0FF}.tbl tbody tr.selected{background:var(--blue-sel)!important}.tbl tbody tr:nth-child(2n){background:var(--row-alt)}.tbl tbody tr:nth-child(2n):hover{background:#E8F0FF}.tbl tfoot tr{background:var(--header-bg);font-weight:700;position:sticky;bottom:0;z-index:2}.tbl tfoot td{padding:3px 6px;border:1px solid var(--border)}.tbl:not(.tbl-pivot) th{resize:horizontal;overflow:hidden}.num{text-align:right;font-family:var(--mono);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums;font-weight:500;-webkit-font-smoothing:antialiased}.name{font-weight:500;max-width:220px;overflow:hidden;text-overflow:ellipsis}.tbl .prod-name,.tbl td.prod-name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.pivot-table-scroll{flex:1 1;min-height:0;min-width:0;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.tbl.tbl-pivot{table-layout:fixed;margin-left:0;margin-right:auto;border-collapse:collapse;border-spacing:0}.tbl.tbl-pivot td,.tbl.tbl-pivot th{text-align:left;box-sizing:border-box;padding:0 1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.15}.tbl.tbl-pivot thead tr.pivot-col-header-row th{position:relative;overflow:hidden;padding:0 1px;line-height:1.1;font-size:10px}.tbl.tbl-pivot .num{text-align:right;font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums;padding:0 1px;font-size:11px;line-height:1.2;font-weight:500}.tbl.tbl-pivot .prod-name,.tbl.tbl-pivot td.prod-name{max-width:none}input[type=number]{font-family:var(--mono);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums}.table-scroll{overflow:auto;max-height:calc(100vh - 220px);position:relative}.split-panel{display:grid;grid-template-columns:1fr 1fr;gap:4px}.estimate-split-panel{grid-template-columns:minmax(260px,3fr) minmax(0,7fr)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:6px}.kpi-card{background:var(--surface);border:1px solid var(--border2);padding:8px 10px}.kpi-label{font-size:11px;color:var(--text3);margin-bottom:4px}.kpi-value{font-size:18px;font-weight:700;font-family:var(--mono);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums;color:var(--text1)}.kpi-sub{font-size:11px;color:var(--text3);margin-top:2px}.kpi-accent .kpi-value{color:var(--blue)}.kpi-green .kpi-value{color:var(--green)}.kpi-amber .kpi-value{color:var(--amber)}.kpi-red .kpi-value{color:var(--red)}.kpi-up{color:var(--green)}.kpi-down{color:var(--red)}.badge{display:inline-block;padding:0 5px;font-size:11px;border:1px solid;border-radius:2px}.badge-blue{background:#E8F0FF;color:#0055AA;border-color:#A0B8E8}.badge-green{background:#EEFFEE;color:#006600;border-color:#88CC88}.badge-red{background:#FFEEEE;color:#CC0000;border-color:#FFAAAA}.badge-amber{background:#FFF8E0;color:#996600;border-color:#DDBB66}.badge-gray{background:#F0F0F0;color:#555555;border-color:#AAAAAA}.badge-purple{background:#F0EEFF;color:#5500AA;border-color:#AAAADD}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.form-row-1{grid-template-columns:1fr}.form-row-3{grid-template-columns:1fr 1fr 1fr}.form-group{display:flex;flex-direction:column;gap:3px}.form-label{font-size:12px;font-weight:700;color:var(--text2)}.form-control{height:24px;border:1px solid var(--border2);font-size:12px;padding:0 6px;font-family:inherit;background:var(--surface);color:var(--text1)}.form-control:focus{outline:1px solid var(--blue)}textarea.form-control{height:auto;padding:4px 6px;resize:vertical}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--surface);border:2px solid var(--border2);width:100%;max-width:500px;box-shadow:3px 3px 8px rgba(0,0,0,.3)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--header-bg);border-bottom:1px solid var(--border2)}.modal-title{font-size:13px;font-weight:700}.modal-body{padding:12px;max-height:60vh;overflow-y:auto}.modal-footer{padding:8px 12px;border-top:1px solid var(--border);display:flex;justify-content:center;gap:8px;background:var(--bg)}.empty-state{padding:32px;text-align:center;color:var(--text3)}.empty-icon{font-size:32px;margin-bottom:8px}.empty-text{font-size:13px}.empty-sub{font-size:11px;margin-top:4px}input[type=checkbox]{width:13px;height:13px}input[type=checkbox],input[type=radio]{cursor:pointer;accent-color:var(--blue)}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{background:#F0F0F0;border:1px solid #d0d0d0}::-webkit-scrollbar-thumb{background:#B0B0B0;border:1px solid #909090}::-webkit-scrollbar-thumb:hover{background:#909090}.skeleton{background:linear-gradient(90deg,#E8E8E8 25%,#D8D8D8 50%,#E8E8E8 75%);background-size:200% 100%;animation:skel 1.4s infinite}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}.banner-info{background:var(--blue-bg);border:1px solid #a0b8e8;color:var(--blue)}.banner-info,.banner-warn{padding:4px 8px;font-size:12px;margin-bottom:4px}.banner-warn{background:var(--amber-bg);border:1px solid #ddbb66;color:var(--amber)}.banner-ok{background:var(--green-bg);border:1px solid #88cc88;color:var(--green)}.banner-err,.banner-ok{padding:4px 8px;font-size:12px;margin-bottom:4px}.banner-err{background:var(--red-bg);border:1px solid #ffaaaa;color:var(--red)}.chip{display:inline-block;padding:1px 7px;border:1px solid var(--border2);font-size:11px;cursor:pointer;background:#E0E0E0}.chip-active{background:var(--blue);color:#fff;border-color:#0055AA}.chip-inactive{background:#E0E0E0;color:var(--text2)}.chip-inactive:hover{background:#C8C8C8}.section-header{font-size:12px;font-weight:700;padding:4px 8px;background:var(--header-bg);border:1px solid var(--border);margin-bottom:4px}@media (max-width:768px){.sidebar{display:none}.kpi-grid{grid-template-columns:1fr 1fr}.estimate-split-panel,.form-row,.split-panel{grid-template-columns:1fr}}.dot-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:4px}.tbl th.resizable{position:relative;-webkit-user-select:none;user-select:none}.tbl th.resizable .col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:col-resize;background:transparent;z-index:5;border-right:2px solid rgba(37,99,235,.28)}.tbl th.resizable .col-resize-handle.dragging,.tbl th.resizable .col-resize-handle:hover{background:var(--blue);opacity:.45;border-right-color:var(--blue)}