:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Apple SD Gothic Neo,Noto Sans KR,sans-serif;line-height:1.5;font-weight:400;color:#d8dce5;background-color:#141820;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px}:root{--bg: #171b28;--panel: #1d2235;--muted: #7e8a9e;--text: #d8dce5;--line: #283148;--accent: #ee7225;--good: #3ab882;--warn: #e8a840;--bad: #e05252;--chip: #212842}#root{width:95%;max-width:95vw;margin:0 auto;padding:0;text-align:left}header{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center;flex-wrap:wrap}header h1{font-size:17px;margin:0;color:var(--text);white-space:nowrap}header .sub{color:var(--muted);font-size:12px}.header-fields{display:flex;gap:10px;align-items:center;margin-left:auto}.header-field{display:flex;align-items:center;gap:6px}.header-field label{font-size:11px;color:var(--muted);white-space:nowrap}.header-field input{background:#1a2030;color:var(--text);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-size:12px;outline:none;width:140px}.header-field input:focus{border-color:var(--accent)}main{padding:12px;display:flex;flex-direction:column;gap:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 26px #00000040}.card .hd{padding:12px 14px 8px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.card .hd h2{margin:0;font-size:14px;color:var(--text)}.card .bd{padding:10px}.field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 14px}.field-grid label{font-size:11px;color:var(--muted);margin-bottom:2px;display:block}.field-grid input[type=text],.field-grid input[type=number]{width:100%;background:#1a2030;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 8px;outline:none;font-size:12px;box-sizing:border-box}.field-grid input:focus{border-color:var(--accent)}button{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:9px 14px;cursor:pointer;font-weight:700;font-size:12px}button.secondary{background:#2a3550;color:var(--text);border:1px solid var(--line);font-weight:600}button:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}.upload-area{border:2px dashed var(--line);border-radius:12px;padding:28px 20px 22px;text-align:center;background:#1e2230;transition:all .2s;cursor:pointer}.upload-area:hover,.upload-area.dragover{border-color:#ee7225e6;background:#ee72250f}.upload-area p{margin:4px 0;color:var(--muted);font-size:13px}.upload-area-sm{padding:14px 20px 12px;border-width:1.5px}.format-icons{display:flex;justify-content:center;gap:18px;margin-top:4px}.format-icon{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 16px;border:1.5px solid rgba(126,138,158,.3);border-radius:10px;background:transparent;transition:all .2s;color:var(--muted)}.format-icon span{font-size:10px;font-weight:700;letter-spacing:.5px}.format-icon.pdf,.format-icon.jpg,.format-icon.xlsx{border-color:#7e8a9e4d;color:var(--muted)}.upload-area:hover .format-icon.pdf,.upload-area:hover .format-icon.jpg,.upload-area:hover .format-icon.xlsx{border-color:#7e8a9e80;background:#7e8a9e0f}.table-wrap{overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:12px;max-height:70vh}table{width:100%;border-collapse:separate;border-spacing:0;background:#181d2c;font-size:11px;table-layout:fixed}thead th{position:sticky;top:0;background:#1f2840;z-index:2;border-bottom:1px solid var(--line);color:var(--text);padding:8px 3px;text-align:center;font-weight:800;font-size:12px;overflow:hidden;text-overflow:ellipsis;word-break:keep-all}tbody td{border-bottom:1px solid rgba(40,49,72,.6);padding:3px 2px;vertical-align:middle;overflow:hidden}tbody tr:hover td{background:#ee72250a}.item-label{font-size:10px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subtotal-row td{background:#ee722508}.subtotal-row .item-label{font-weight:800;color:#cdd2de}.num-input{width:100%;box-sizing:border-box;background:#181d2c;border:1px solid rgba(40,49,72,.9);border-radius:4px;padding:3px;color:var(--text);font-variant-numeric:tabular-nums;font-size:11px;text-align:right;outline:none}.num-input:focus{border-color:var(--accent)}.num-input[type=number]::-webkit-inner-spin-button,.num-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input[type=number]{-moz-appearance:textbox}.highlight-row td{background:#ee722514!important}.highlight-row .item-label{color:var(--accent)!important;font-weight:800}.input-alert{border:4px solid var(--accent)!important;background:#ee72251a!important;animation:alert-pulse 1s ease-in-out infinite}.input-alert::placeholder{color:var(--accent);opacity:.9;font-weight:700;text-align:center}@keyframes alert-pulse{0%,to{box-shadow:0 0 #ee722500}50%{box-shadow:0 0 10px 3px #ee722580}}.num-cell{text-align:right;font-variant-numeric:tabular-nums;font-size:11px;padding:4px 6px;color:var(--text)}.num-cell.total{font-weight:800;color:#cdd2de}.num-cell.negative{color:var(--bad)}.kpi{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.chip{background:var(--chip);border:1px solid var(--line);padding:6px 10px;border-radius:999px;font-size:12px;display:inline-flex;gap:4px;align-items:center}.chip b{font-weight:800}.chip.good{border-color:#3ab88266}.chip.warn{border-color:#e8a84066}.chip.bad{border-color:#e0525266}.result-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#181e30;margin-bottom:8px}.result-card.good{border-color:#3ab88266}.result-card.warn{border-color:#e8a84066}.result-card.bad{border-color:#e0525266}.result-card.alert{border-color:#ee722566}.result-card h3{margin:0 0 6px;font-size:13px}.result-card .detail{font-size:12px;color:var(--muted);line-height:1.6}.result-card .ratio{font-size:20px;font-weight:800}.result-card .ratio.good{color:var(--good)}.result-card .ratio.warn{color:var(--warn)}.result-card .ratio.bad{color:var(--bad)}.verdict-text{font-weight:800}.verdict-text.good{color:var(--good)}.verdict-text.warn{color:var(--warn)}.verdict-text.bad{color:var(--bad)}.verdict-text.alert{color:var(--accent);font-size:12px}.pill.warn{border-color:#e8a84099;color:var(--warn);font-weight:800}.pill.bad{border-color:#e0525299;color:var(--bad);font-weight:800}.pill.good{border-color:#3ab8828c;color:var(--good);font-weight:800}.pill.alert{border-color:#ee722599;color:var(--accent);font-weight:800;font-size:12px}.summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.summary-item{background:#181e30;border:1px solid var(--line);border-radius:10px;padding:12px}.summary-item label{font-size:11px;color:var(--muted);display:block;margin-bottom:4px}.summary-item .value{font-size:18px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.pill{display:inline-block;padding:3px 8px;border-radius:999px;border:1px solid var(--line);font-size:11px;color:var(--muted)}.verify-table{width:100%;border-collapse:collapse}.verify-table th,.verify-table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:right;font-size:12px}.verify-table th{color:var(--muted);font-weight:700;text-align:center;background:#1f2840}.verify-table td:first-child{text-align:left;font-weight:600}.verify-table .highlight{color:var(--accent);font-weight:800;font-size:18px}.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.log-area{max-height:120px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:8px;background:#181e30;font-size:11px;color:var(--muted)}.log-area div{padding:1px 0}.ratio-table{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#181e30}.ratio-header{padding:8px 14px;font-size:12px;font-weight:700;color:var(--muted);background:#1f2840;border-bottom:1px solid var(--line)}.ratio-table table{width:100%;border-collapse:collapse;background:transparent}.ratio-table td{padding:9px 14px;border-bottom:1px solid rgba(40,49,72,.5);font-size:12px;vertical-align:middle}.ratio-table tr:last-child td{border-bottom:none}.ratio-label{font-weight:600;color:var(--text);white-space:nowrap}.ratio-sub{font-size:10px;color:var(--muted);font-weight:400}.ratio-input{width:100%;background:#181d2c;border:2px solid var(--accent);border-radius:6px;padding:8px 10px;color:#fff;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;outline:none;box-sizing:border-box}.ratio-input:focus{border-color:#fff;box-shadow:0 0 0 3px #ee72254d}.ratio-value{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;text-align:right}.ratio-note{font-size:11px;color:var(--muted);line-height:1.5}.ratio-note-highlight{color:var(--accent);font-size:11px}.ratio-result-row{background:#ee72250a}.ratio-result-row td{border-bottom:none}.ratio-result{font-size:18px;font-weight:800;color:var(--accent);text-align:left;font-variant-numeric:tabular-nums}.card-dim{opacity:.45;pointer-events:none;transition:opacity .3s}.card-active{opacity:1;pointer-events:auto;transition:opacity .3s}.next-step{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px;padding:15px 21px;border:1px solid rgba(58,184,130,.35);border-radius:10px;background:#3ab8820f;font-size:18px;color:var(--good);font-weight:600;cursor:pointer;transition:all .2s}.next-step:hover{border-color:#3ab88299;background:#3ab8821a}.next-step-check{font-size:14px;font-weight:800}.next-step-btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 21px;font-weight:700;font-size:18px;cursor:pointer}.next-step-btn:hover{opacity:.9}.step-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px}.step-badge.pulse{background:#ee72251f;border:1px solid rgba(238,114,37,.5);color:var(--accent);animation:pulse-glow 2s ease-in-out infinite}.step-badge.done{background:#3ab8821a;border:1px solid rgba(58,184,130,.4);color:var(--good)}@keyframes pulse-glow{0%,to{box-shadow:0 0 #ee722500}50%{box-shadow:0 0 8px 2px #ee72254d}}@media(max-width:800px){.field-grid,.summary-grid{grid-template-columns:1fr 1fr}}
