
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --control-min-height:44px;
  --navy:#1E293B;--blue:#2563EB;--gold:#D97706;--green:#059669;
  --glight:#D1FAE5;--red:#DC2626;--border:#CBD5E1;--odd:#F8FAFC;--bg:#F1F5F9;
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{font-family:'맑은 고딕','Malgun Gothic',sans-serif;font-size:13px;background:var(--bg);color:#334155;overflow-x:hidden;}
.app{padding:1rem;max-width:900px;margin:0 auto;background:#fff;min-height:100vh;box-shadow:0 0 20px rgba(0,0,0,.07);}

.top-bar{display:flex;align-items:center;gap:12px;padding:12px 0 16px;border-bottom:2px solid var(--border);margin-bottom:1rem;flex-wrap:wrap;}
.logo{font-size:18px;font-weight:800;color:var(--navy);letter-spacing:-0.5px;}
.logo span{color:var(--blue);}
.top-sub{font-size:12px;color:#64748B;font-weight:600;}
.storage-info{margin-left:auto;font-size:11px;color:#64748B;background:#F1F5F9;padding:4px 10px;border-radius:20px;}

.tab-bar{display:flex;border-bottom:2px solid var(--border);margin-bottom:1.2rem;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.tab-bar::-webkit-scrollbar{display:none}
.tab{padding:10px 20px;font-size:13px;font-weight:700;cursor:pointer;border-bottom:3px solid transparent;color:#64748B;transition:.2s;display:flex;align-items:center;gap:6px;margin-bottom:-2px;flex-shrink:0;white-space:nowrap;}
.tab.active{color:var(--navy);border-bottom-color:var(--navy);}
.tab:hover:not(.active){color:var(--navy);background:#F8FAFC;}
.tab .tab-short,.step .step-short{display:none}
.tab .tab-full,.step .step-full{display:inline}

.panel{display:none;animation:fadeIn .25s ease;}.panel.active{display:block;}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}

.step-bar{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:1.2rem;}
.step{flex:1;padding:10px 4px;font-size:13px;color:#64748B;display:flex;align-items:center;justify-content:center;gap:6px;border-right:1px solid var(--border);cursor:pointer;transition:background .2s;text-align:center;font-weight:600;}
.step:last-child{border-right:none}.step.active{background:var(--navy);color:#fff}.step.done{background:var(--glight);color:var(--green);}
.step-num{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;background:rgba(255,255,255,.3);}
.step:not(.active):not(.done) .step-num{background:#E2E8F0;color:#64748B}
.step.done .step-num{background:var(--green);color:#fff}

.spanel{display:none;animation:fadeIn .25s ease;}.spanel.active{display:block;}

.drop-zone{border:2px dashed #94A3B8;border-radius:10px;padding:2rem 1rem;text-align:center;cursor:pointer;position:relative;transition:.2s;margin-bottom:1rem;background:#F8FAFC;}
.drop-zone:hover,.drop-zone.drag{border-color:var(--blue);background:#EFF6FF}
.drop-zone.done{border:2px solid var(--green);background:var(--glight);}
.drop-zone input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.dz-icon{font-size:32px;color:#94A3B8;margin-bottom:8px}.drop-zone.done .dz-icon{color:var(--green);}
.dz-title{font-size:15px;font-weight:700;color:#1E293B;margin-bottom:4px}
.dz-sub{font-size:12px;color:#64748B}.fname{font-size:13px;color:var(--green);margin-top:8px;font-weight:700;}

.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:1rem;}
.btn{padding:10px 14px;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;transition:all .2s;white-space:nowrap;min-height:40px;}
.btn:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px);}.btn:disabled{opacity:.4;cursor:not-allowed;}
.btn-navy{background:var(--navy);color:#fff}.btn-green{background:var(--green);color:#fff}
.btn-blue{background:var(--blue);color:#fff}.btn-outline{background:#fff;color:#475569;border:1px solid #CBD5E1;}
.btn-red{background:var(--red);color:#fff}.btn-gold{background:var(--gold);color:#fff}

.prog-wrap{margin:1rem 0;display:none;}
.prog-bg{background:#E2E8F0;border-radius:99px;height:6px;overflow:hidden;margin-bottom:8px;}
.prog-bar{height:6px;background:var(--blue);border-radius:99px;width:0;transition:width .3s;}
.log-box{font-size:12px;font-family:monospace;color:#475569;background:#F8FAFC;border-radius:8px;padding:8px 10px;max-height:80px;overflow-y:auto;border:1px solid #E2E8F0;line-height:1.4;}
.log-ok{color:var(--green);font-weight:600}.log-err{color:var(--red);font-weight:600}

.kpi-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:1rem;}
@media(max-width:600px){.kpi-wrap{grid-template-columns:repeat(2,1fr)}}
.kpi-box{background:#F8FAFC;border:1px solid var(--border);border-radius:6px;padding:10px;text-align:center;}
.kpi-lbl{font-size:11px;color:#64748B;font-weight:700;margin-bottom:4px}.kpi-val{font-size:15px;font-weight:800;}
.text-blue{color:var(--blue)}.text-navy{color:var(--navy)}.text-green{color:var(--green)}.text-red{color:var(--red)}

.sec{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:1rem;background:#fff;}
.sec-hdr{padding:8px 12px;font-size:13px;font-weight:700;color:#fff;display:flex;align-items:center;gap:6px;}
.sec-hdr.navy{background:var(--navy)}.sec-hdr.blue{background:var(--blue)}.sec-hdr.green{background:var(--green)}
.sec-hdr.red{background:var(--red)}.sec-hdr.gray{background:#64748B}.sec-hdr.gold{background:var(--gold);}

.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
table{width:100%;border-collapse:collapse;font-size:12px;min-width:450px;table-layout:fixed;}
th{background:#F1F5F9;color:#334155;padding:6px 4px;text-align:center;font-weight:700;border-bottom:2px solid var(--border);border-right:1px solid var(--border);}
th:last-child{border-right:none}
td{padding:6px 4px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);color:#334155;vertical-align:middle;word-break:keep-all;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
td:last-child{border-right:none}
tr:nth-child(even) td{background:var(--odd)}tr:hover td{background:#EFF6FF}
.tr-total td{background:#FEF3C7!important;color:#92400E!important;font-weight:700;border-top:2px solid #F59E0B!important}
.tr-total-green td{background:#D1FAE5!important;color:#065F46!important;font-weight:700;border-top:2px solid var(--green)!important}
.num{text-align:right;font-variant-numeric:tabular-nums;letter-spacing:-0.3px;}.ctr{text-align:center}

.cash-2col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem;}
@media(max-width:600px){.cash-2col{grid-template-columns:1fr}}
.cash-row{display:flex;align-items:center;padding:6px 10px;border-bottom:1px solid #F1F5F9;gap:8px;}
.cash-lbl{flex:1;font-size:13px;color:#334155;font-weight:600;}
.cash-inp{width:130px;padding:6px 8px;text-align:right;font-size:15px;font-weight:700;border:1px solid #CBD5E1;border-radius:6px;background:#FFFBEB;color:#1E293B;transition:all .2s;}
.cash-inp:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(245,158,11,0.2);}
.sub-hdr{background:#F8FAFC;padding:8px 12px;font-size:13px;font-weight:700;color:var(--navy);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}

.denom-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px;}
@media(max-width:500px){.denom-grid{grid-template-columns:repeat(2,1fr)}}
.dc{background:#F8FAFC;border:1px solid var(--border);border-radius:6px;padding:8px;text-align:center;}
.dc-name{font-size:12px;color:#475569;font-weight:700;margin-bottom:4px}
.dc-inp{width:100%;padding:6px;text-align:center;font-size:15px;font-weight:700;border:1px solid #CBD5E1;border-radius:6px;background:#FFFBEB;color:#1E293B;}
.dc-inp:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(245,158,11,0.2);}
.dc-sub{font-size:11px;color:var(--green);text-align:right;margin-top:4px;font-weight:600;min-height:15px}

.bal-row{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid #F1F5F9;}
.bal-lbl{font-size:13px;font-weight:700;color:#334155}.bal-val{font-size:15px;font-weight:800;}
.ok{color:var(--green)}.ng{color:var(--red)}

textarea.memo-area{width:100%;padding:10px;font-size:13px;border:none;background:#FFFBEB;resize:vertical;height:70px;color:#334155;font-family:inherit;}
textarea.memo-area:focus{outline:none;background:#FEF3C7;}

.save-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:700;}
.save-badge.ok{background:var(--glight);color:var(--green);}
.save-badge.ng{background:#FEE2E2;color:var(--red);}

.filter-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:1rem;padding:12px;background:#F8FAFC;border-radius:8px;border:1px solid var(--border);}
.filter-row label{font-size:13px;font-weight:700;color:#334155;}
.filter-row select{padding:7px 10px;border:1px solid #CBD5E1;border-radius:6px;font-size:13px;background:#fff;cursor:pointer;}

.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:1rem;}
.cal-hdr{text-align:center;font-size:11px;font-weight:700;color:#64748B;padding:4px 0;}
.cal-cell{min-height:56px;background:#F8FAFC;border:1px solid var(--border);border-radius:6px;padding:4px 6px;cursor:default;transition:.15s;position:relative;}
.cal-cell.has-data{background:#EFF6FF;border-color:#93C5FD;cursor:pointer;}
.cal-cell.has-data:hover{background:#DBEAFE;border-color:var(--blue);}
.cal-cell.today{border-color:var(--gold);background:#FFFBEB;}
.cal-cell.empty{background:transparent;border-color:transparent;}
.cal-cell.selected{border-color:var(--navy);border-width:2px;}
.cal-day{font-size:12px;font-weight:700;color:#334155;}
.cal-amt{font-size:10px;color:var(--blue);font-weight:700;margin-top:2px;white-space:nowrap;overflow:hidden;}
.cal-dot{width:6px;height:6px;background:var(--green);border-radius:50%;position:absolute;top:4px;right:4px;}

.summary-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:1rem;}
.sum-box{flex:1;min-width:110px;background:#F8FAFC;border:1px solid var(--border);border-radius:8px;padding:10px 12px;text-align:center;}
.sum-lbl{font-size:11px;color:#64748B;font-weight:700;margin-bottom:4px;}
.sum-val{font-size:14px;font-weight:800;}

.record-card{background:#F8FAFC;border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:8px;cursor:pointer;transition:.15s;}
.record-card:hover{border-color:var(--blue);background:#EFF6FF;}
.rc-date{font-size:14px;font-weight:800;color:var(--navy);margin-bottom:6px;}
.rc-row{display:flex;justify-content:space-between;font-size:12px;margin-top:4px;}
.rc-lbl{color:#64748B}.rc-val{font-weight:700;}

.no-data{text-align:center;padding:2.5rem;color:#94A3B8;font-size:14px;line-height:2;}

.detail-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100;align-items:center;justify-content:center;}
.detail-overlay.open{display:flex;}
.detail-modal{background:#fff;border-radius:12px;padding:1.5rem;max-width:640px;width:92%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.2);}
.modal-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;border-bottom:2px solid var(--border);padding-bottom:10px;}
.modal-title{font-size:16px;font-weight:800;color:var(--navy);}
.close-btn{background:none;border:none;cursor:pointer;font-size:20px;color:#64748B;padding:4px;border-radius:4px;}
.close-btn:hover{background:#F1F5F9;}

.toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;background:var(--navy);color:#fff;border-radius:10px;font-weight:700;font-size:13px;z-index:200;opacity:0;transition:opacity .3s;pointer-events:none;box-shadow:0 4px 20px rgba(0,0,0,.2);}
.toast.show{opacity:1;}

/* 수정 모드 */
.edit-row{display:flex;align-items:center;padding:6px 10px;border-bottom:1px solid #F1F5F9;gap:8px;}
.edit-lbl{flex:1;font-size:13px;color:#334155;font-weight:600;}
.edit-inp{width:130px;padding:5px 8px;text-align:right;font-size:14px;font-weight:700;border:1px solid #CBD5E1;border-radius:6px;background:#FFFBEB;color:#1E293B;}
.edit-inp:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(245,158,11,0.2);}
.edit-sec-hdr{padding:6px 10px;font-size:12px;font-weight:700;color:#fff;display:flex;align-items:center;gap:5px;}
.edit-mode-banner{background:#FEF3C7;border:1px solid #F59E0B;border-radius:6px;padding:8px 12px;font-size:12px;color:#92400E;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:6px;}

/* ===== 모바일 대응 ===== */
@media (max-width:720px){
  body{font-size:14px;}
  .app{padding:10px 10px calc(12px + env(safe-area-inset-bottom,0px));max-width:100%;box-shadow:none;min-height:100dvh;}
  .top-bar{gap:8px;padding:8px 0 12px;margin-bottom:10px;}
  .logo{font-size:16px;}
  .top-sub{font-size:11px;}
  .storage-info{font-size:10px;padding:3px 8px;max-width:100%;}
  .tab-bar{margin-bottom:10px;gap:0;}
  .tab{flex:1 1 0;padding:8px 4px;font-size:11px;gap:3px;justify-content:center;min-width:0;white-space:normal;text-align:center;line-height:1.2;flex-direction:column;}
  .tab i{font-size:16px;line-height:1;}
  .tab .tab-full{display:none}
  .tab .tab-short{display:inline}
  .step .step-full{display:none}
  .step .step-short{display:inline}
  .step-bar{flex-wrap:nowrap;}
  .step{padding:8px 2px;font-size:11px;gap:3px;flex-direction:column;}
  .step-num{width:16px;height:16px;font-size:10px;}
  .drop-zone{padding:1.25rem 0.75rem;}
  .dz-icon{font-size:28px}
  .dz-title{font-size:14px}
  .dz-sub{font-size:12px}
  .btn-row{gap:8px;}
  .btn{width:100%;flex:1 1 100%;padding:12px 14px;font-size:14px;min-height:44px;}
  .btn-row .btn{flex:1 1 calc(50% - 4px);width:auto;}
  .kpi-wrap{grid-template-columns:repeat(2,1fr);gap:8px;}
  .kpi-box{padding:8px;}
  .kpi-lbl{font-size:11px}
  .kpi-val{font-size:14px;word-break:break-all;}
  .sec-hdr{padding:8px 10px;font-size:13px;}
  table{font-size:11px;min-width:360px;}
  th,td{padding:5px 3px;}
  .cash-2col{grid-template-columns:1fr;gap:10px;}
  .cash-lbl,.edit-lbl{font-size:13px;}
  .cash-inp,.edit-inp{width:min(46vw,160px);font-size:16px;min-height:40px;} /* iOS 줌 방지 */
  .dc-inp{font-size:16px;min-height:40px;}
  .denom-grid{grid-template-columns:repeat(2,1fr);gap:6px;padding:8px;}
  .bal-lbl{font-size:13px}.bal-val{font-size:14px}
  textarea.memo-area{font-size:16px;height:88px;}
  .filter-row{padding:10px;gap:8px;}
  .filter-row label{font-size:12px;}
  .filter-row select,.filter-row input{font-size:16px;min-height:40px;flex:1 1 120px;}
  .cal-grid{gap:3px;}
  .cal-cell{min-height:48px;padding:3px 4px;}
  .cal-day{font-size:11px}
  .cal-amt{font-size:9px}
  .sum-box{min-width:calc(50% - 4px);padding:8px;}
  .sum-val{font-size:13px}
  .record-card{padding:10px;}
  .rc-date{font-size:14px}
  .rc-row{font-size:12px;flex-wrap:wrap;gap:2px 8px;}
  .detail-overlay{align-items:flex-end;}
  .detail-modal{width:100%;max-width:100%;border-radius:16px 16px 0 0;padding:14px 12px calc(14px + env(safe-area-inset-bottom,0px));max-height:92dvh;}
  .modal-title{font-size:15px;}
  .toast{left:12px;right:12px;bottom:calc(16px + env(safe-area-inset-bottom,0px));text-align:center;font-size:13px;padding:12px 14px;}
  .edit-mode-banner{font-size:12px;line-height:1.4;}
}

@media (max-width:380px){
  .tab{font-size:10px;padding:7px 2px;}
  .logo{font-size:15px;}
  .kpi-val{font-size:13px;}
  .btn-row .btn{flex:1 1 100%;}
}

/* ===== 인쇄 스타일 ===== */
.print-only{display:none!important;}
@media print{
  .no-print{display:none!important}
  .print-only{display:block!important}
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;}
  .app{padding:0;box-shadow:none;max-width:100%;}
  @page{size:A4 portrait;margin:8mm 10mm;}
  .pt-doc{font-family:'맑은 고딕',sans-serif;font-size:8pt;color:#000;line-height:1.2}
  .pt-title{background:#1E293B;color:#fff;text-align:center;padding:6pt 0;font-size:13pt;font-weight:800;letter-spacing:2pt;margin-bottom:5pt;}
  .pt-sign-wrap{display:flex;justify-content:flex-end;margin-bottom:5pt;}
  .pt-sign{display:grid;grid-template-columns:repeat(3,40pt);border:1pt solid #000;text-align:center;}
  .pt-sign-hdr{background:#F1F5F9;border-bottom:1pt solid #000;padding:2pt 0;font-size:7pt;font-weight:700;border-right:1pt solid #000;}
  .pt-sign-hdr:last-child{border-right:none}
  .pt-sign-box{height:25pt;border-right:1pt solid #000;}.pt-sign-box:last-child{border-right:none}
  .pt-kpi{display:flex;justify-content:space-between;border:1pt solid #94A3B8;padding:4pt 6pt;margin-bottom:5pt;background:#F8FAFC;font-weight:700;font-size:8pt;}
  .pt-shdr{padding:3pt 6pt;font-size:8.5pt;font-weight:700;color:#fff;margin-top:5pt;}
  .pt-shdr.blue{background:#2563EB}.pt-shdr.red{background:#DC2626}.pt-shdr.green{background:#059669}.pt-shdr.gray{background:#475569}
  .pt table{width:100%;border-collapse:collapse;font-size:7.5pt;table-layout:fixed;}
  .pt th{background:#F1F5F9;color:#000;padding:3pt;border:.5pt solid #94A3B8;text-align:center;font-weight:700}
  .pt td{padding:3pt;border:.5pt solid #94A3B8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .pt .tr-total td{background:#FEF3C7!important;font-weight:700;border-top:1pt solid #D97706!important;}
  .pt .tr-total-green td{background:#D1FAE5!important;font-weight:700;border-top:1pt solid #059669!important;}
  .pt .num{text-align:right}.pt .ctr{text-align:center}
  .pt-memo{border:.5pt solid #94A3B8;min-height:28pt;padding:4pt;margin-top:4pt;font-size:8pt;background:#FFFBEB;}
}
