:root{--pad:#edf1eb;--paper:#fff;--ink:#17261f;--ink-soft:#4d5f55;--rule:#cbd7ce;--rule-strong:#9db3a4;--ledger:#1e5b47;--ledger-deep:#123b2e;--ledger-tint:#dde9e1;--stamp:#b3312a;--stamp-tint:#fbe8e5;--hl-date:#8fe0a1;--hl-merchant:#ff9fc4;--hl-bizNo:#97c6ff;--hl-total:#ffe25c;--font:var(--font-plex), "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--pad);min-height:100vh;color:var(--ink);font-family:var(--font);word-break:keep-all;overflow-wrap:anywhere;flex-direction:column;margin:0;font-size:15px;line-height:1.6;display:flex}h1,h2,h3,p{margin:0}a{color:inherit}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline:3px solid var(--ledger);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:50;background:var(--ledger);color:#fff;border-radius:6px;padding:8px 14px;position:absolute;top:-60px;left:12px}.skip-link:focus{top:12px}.site-header{background:var(--paper);border-bottom:1px solid var(--rule);align-items:center;gap:28px;padding:14px clamp(16px,3vw,36px);display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-size:18px;font-weight:700;text-decoration:none;display:inline-flex}.brand-mark{background:var(--ledger);color:#fff;border-radius:8px;place-items:center;width:34px;height:34px;display:grid}.site-header nav{gap:4px;display:flex}.site-header nav a{color:var(--ink-soft);border-radius:6px;padding:6px 12px;font-weight:500;text-decoration:none}.site-header nav a:hover{background:var(--pad);color:var(--ink)}.site-header nav a.active{color:var(--ledger-deep);background:var(--ledger-tint)}.account{margin-left:auto}.text-button,.login-link{color:var(--ledger);text-underline-offset:4px;background:0 0;border:0;padding:6px 4px;font-weight:500;text-decoration:underline}.global-error{background:var(--stamp-tint);color:var(--stamp);padding:10px clamp(16px,3vw,36px)}.site-footer{color:var(--ink-soft);border-top:1px solid var(--rule);margin-top:auto;padding:22px clamp(16px,3vw,36px) 28px;font-size:13px}.button{border:1px solid var(--ledger);background:var(--ledger);color:#fff;white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){background:var(--ledger-deep)}.button.quiet{background:var(--paper);color:var(--ledger-deep);border-color:var(--rule-strong)}.button.quiet:hover:not(:disabled){background:var(--ledger-tint)}.button.danger{background:var(--paper);color:var(--stamp);border-color:#e3b1ab}.button.small{min-height:34px;padding:0 12px;font-size:14px}.hl{background-image:linear-gradient(100deg, transparent .2em, var(--hl) .35em, var(--hl) calc(100% - .35em), transparent calc(100% - .2em));background-position:0 88%;background-repeat:no-repeat;background-size:100% .62em;border-radius:.2em;padding:0 .2em}.hl-date{--hl:var(--hl-date)}.hl-merchant{--hl:var(--hl-merchant)}.hl-bizNo{--hl:var(--hl-bizNo)}.hl-total{--hl:var(--hl-total)}.intro{gap:28px;width:min(1120px,100%);margin:0 auto;padding:clamp(28px,6vw,72px) clamp(16px,3vw,36px) 56px;display:grid}.intro h1{letter-spacing:-.025em;max-width:16em;font-size:clamp(30px,4.6vw,48px);font-weight:700;line-height:1.18}.intro-lead{max-width:40em;color:var(--ink-soft);font-size:17px}.dropzone{background:var(--paper);border:2px dashed var(--rule-strong);border-radius:10px;gap:18px;padding:clamp(20px,4vw,36px);transition:border-color .15s,background-color .15s;display:grid;position:relative}.dropzone.over{border-color:var(--ledger);background:#f7fbf8}.dropzone input[type=file]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.drop-row{flex-wrap:wrap;align-items:center;gap:14px 20px;display:flex}.drop-row p{color:var(--ink-soft)}.ledger-preview{border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);grid-template-columns:1.1fr 1.6fr 1.5fr 1.2fr;font-size:15px;font-weight:600;display:grid}.ledger-preview span{border-left:1px solid var(--rule);padding:10px 12px}.ledger-preview span:first-child{border-left:0}.ledger-preview .total{text-align:right}.ledger-preview-rows{grid-template-columns:1.1fr 1.6fr 1.5fr 1.2fr;display:grid}.ledger-preview-rows i{border-left:1px solid var(--rule);border-bottom:1px solid var(--rule);height:30px}.ledger-preview-rows i:nth-child(4n+1){border-left:0}.how{counter-reset:how;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.how li{border-top:1px solid var(--rule-strong);color:var(--ink-soft);padding-top:14px}.how li:before{counter-increment:how;content:counter(how) "단계";color:var(--ledger);margin-bottom:4px;font-weight:600;display:block}.how strong{color:var(--ink);font-weight:600;display:block}.workbench{grid-template-columns:minmax(0,1.7fr) minmax(360px,1fr);align-items:start;gap:22px;width:100%;max-width:1560px;margin:0 auto;padding:22px clamp(12px,2.4vw,32px) 48px;display:grid}.desk{gap:16px;min-width:0;display:grid}.desk-head{flex-wrap:wrap;align-items:center;gap:10px 16px;display:flex}.desk-head h1{letter-spacing:-.015em;margin-right:auto;font-size:22px}.desk-head h1 small{color:var(--ink-soft);letter-spacing:0;font-size:13px;font-weight:400;display:block}.desk-actions{flex-wrap:wrap;gap:8px;display:flex}.notice{background:var(--ledger-tint);color:var(--ledger-deep);border-radius:6px;padding:10px 14px}.notice.error{background:var(--stamp-tint);color:var(--stamp)}.files{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.file-chip{background:var(--paper);border:1px solid var(--rule);border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:2px 10px;padding:10px 12px;display:grid}.file-chip svg{color:var(--ink-soft);grid-row:span 2}.file-name{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.file-state{color:var(--ink-soft);font-size:13px}.file-chip[data-state=FAILED]{border-color:#e3b1ab}.file-chip[data-state=FAILED] .file-state{color:var(--stamp)}.file-chip[data-state=PREPARING] .file-state,.file-chip[data-state=READING] .file-state{color:var(--ledger);font-weight:500}.working:after{content:"";vertical-align:-.1em;border:2px solid;border-right-color:#0000;border-radius:50%;width:.9em;height:.9em;margin-left:6px;animation:.9s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.totals{background:var(--paper);border:1px solid var(--rule);border-radius:8px;flex-wrap:wrap;gap:8px 32px;margin:0;padding:14px 16px;display:flex}.totals div{display:grid}.totals dt{color:var(--ink-soft);font-size:13px}.totals dd{font-variant-numeric:tabular-nums;margin:0;font-size:20px;font-weight:600}.totals .review dd{color:var(--stamp)}.ledger-wrap{background:var(--paper);border:1px solid var(--rule);border-radius:8px;overflow:hidden}.ledger{border-collapse:collapse;width:100%;font-size:14.5px}.ledger th{text-align:left;border-bottom:2px solid var(--ink);white-space:nowrap;padding:11px 10px;font-weight:600}.ledger td{border-bottom:1px solid var(--rule);vertical-align:top;padding:10px}.ledger th+th,.ledger td+td{border-left:1px solid var(--rule)}.ledger td.num{white-space:nowrap}.ledger .amount{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.ledger tbody tr{cursor:pointer}.ledger tbody tr:hover{background:#f6f9f6}.ledger tbody tr.selected{box-shadow:inset 4px 0 0 var(--ledger);background:#eef5f0}.ledger tbody tr.needs_review{box-shadow:inset 4px 0 0 var(--stamp)}.ledger tbody tr.needs_review.selected{box-shadow:inset 4px 0 0 var(--stamp), inset 0 0 0 1px #e9c2bd}.row-button{font-variant-numeric:tabular-nums;color:var(--ledger-deep);text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.ledger .src{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;max-width:13em;font-size:12.5px;display:block;overflow:hidden}.empty-cell{color:var(--stamp);font-size:13px}.memo-tag{color:var(--ledger);vertical-align:1px;align-items:center;gap:2px;margin-left:6px;font-size:12px;display:inline-flex}.state{white-space:nowrap;border-radius:999px;padding:1px 9px;font-size:12.5px;font-weight:600;display:inline-block}.state.ok{background:var(--ledger-tint);color:var(--ledger-deep)}.state.needs_review{background:var(--stamp-tint);color:var(--stamp)}.state.confirmed{background:var(--ledger);color:#fff}.kind-cancel{color:var(--stamp);font-weight:600}.aside-note{color:var(--ink-soft);font-size:13.5px}.empty-table{text-align:center;color:var(--ink-soft);padding:28px 16px}.inspector{gap:14px;min-width:0;display:grid;position:sticky;top:14px}.panel{background:var(--paper);border:1px solid var(--rule);border-radius:8px;min-width:0;padding:16px}.panel-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.panel-head h2{margin-right:auto;font-size:17px}.viewer{background:#e3e8e2;border-radius:4px;justify-items:center;padding:10px;display:grid}.viewer-frame{max-width:100%;box-shadow:0 1px 0 var(--rule-strong);background:#fff;position:relative;overflow:hidden}.viewer-canvas{position:absolute}.viewer-canvas img{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.region-line{pointer-events:none;border:1.5px dashed #17261f73;position:absolute}.region-line.current{border:2px solid var(--ledger)}.mark{background:var(--hl);opacity:.42;mix-blend-mode:multiply;pointer-events:none;border-radius:2px;outline:2px solid #0000;transition:opacity .15s,outline-color .15s;position:absolute}.mark.on{opacity:.75;outline-color:#17261f8c}.mark.hl-date,.mark.hl-merchant,.mark.hl-bizNo,.mark.hl-total{background-image:none;padding:0}.viewer-legend{color:var(--ink-soft);flex-wrap:wrap;gap:4px 14px;margin-top:10px;font-size:13px;display:flex}.issues{background:var(--stamp-tint);color:var(--stamp);border-radius:6px;gap:2px;margin:0 0 12px;padding:10px 12px;font-size:14px;list-style:none;display:grid}.issues li{align-items:baseline;gap:6px;display:flex}.issues.resolved{background:var(--pad);color:var(--ink-soft)}.fields{gap:12px;display:grid}.field{gap:4px;display:grid}.field label{justify-self:start;font-size:14px;font-weight:600}.field input,.field select,.form-stack input{border:1px solid var(--rule-strong);background:#fff;border-radius:6px;width:100%;min-height:42px;padding:8px 10px}.field input:focus,.field select:focus{border-color:var(--ledger)}.field.changed input,.field.changed select{border-color:var(--ledger);background:#f7fbf8}.compare{color:var(--ink-soft);flex-wrap:wrap;gap:2px 14px;font-size:13px;display:flex}.compare .differs{color:var(--stamp);font-weight:500}.compare .from-memory{color:var(--ledger);font-weight:500}.editor-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.editor-actions p{color:var(--ink-soft);font-size:13px}.not-receipt{color:var(--ink-soft);margin:0;padding-left:18px;font-size:13.5px}.page{gap:22px;width:min(1100px,100%);margin:0 auto;padding:28px clamp(16px,3vw,36px) 48px;display:grid}.page h1{letter-spacing:-.02em;font-size:26px}.page h2{margin-bottom:8px;font-size:18px}.page-lead{color:var(--ink-soft);max-width:44em}.list-table{border-collapse:collapse;background:var(--paper);border:1px solid var(--rule);width:100%;font-size:14.5px}.list-table th,.list-table td{text-align:left;border-bottom:1px solid var(--rule);padding:10px 12px}.list-table th{border-bottom:2px solid var(--ink);white-space:nowrap;font-weight:600}.list-table .amount{text-align:right;font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto}.stat-row{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;display:grid}.stat{background:var(--paper);border:1px solid var(--rule);border-radius:8px;padding:12px 14px}.stat dt{color:var(--ink-soft);font-size:13px}.stat dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:18px;font-weight:600}.online{color:var(--ledger)}.offline{color:var(--stamp)}.auth{gap:18px;width:min(420px,100%);margin:0 auto;padding:56px 18px;display:grid}.auth h1{font-size:26px}.form-stack{background:var(--paper);border:1px solid var(--rule);border-radius:8px;gap:14px;padding:20px;display:grid}.form-stack label{gap:4px;font-size:14px;font-weight:600;display:grid}@media (max-width:1080px){.workbench{grid-template-columns:minmax(0,1fr)}.inspector{position:static}}@media (max-width:760px){.site-header{flex-wrap:wrap;gap:8px 16px}.site-header nav{order:3;width:100%}.how{grid-template-columns:minmax(0,1fr)}.ledger-preview,.ledger-preview-rows{grid-template-columns:1fr 1.3fr}.ledger-preview span:nth-child(3){border-left:0}.ledger-preview span:nth-child(n+3){border-top:1px solid var(--rule)}.ledger-preview-rows,.ledger thead{display:none}.ledger,.ledger tbody,.ledger tr,.ledger td{display:block}.ledger tr{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"no s""m m""d t""b k";gap:2px 12px;padding:10px 12px 10px 16px;display:grid}.ledger td{border:0;padding:0}.ledger td+td{border-left:0}.ledger td[data-label=번호]{grid-area:no;align-items:baseline;gap:8px;min-width:0;display:flex}.ledger td[data-label=상태]{text-align:right;grid-area:s}.ledger td[data-label=상호]{grid-area:m;font-size:15.5px;font-weight:600}.ledger td[data-label=날짜]{grid-area:d}.ledger td[data-label=결제금액]{grid-area:t;font-weight:600}.ledger td[data-label=사업자번호]{color:var(--ink-soft);grid-area:b;font-size:13.5px}.ledger td[data-label=유형]{text-align:right;grid-area:k;font-size:13.5px}.desk>.files{order:1}.files{grid-template-columns:repeat(2,minmax(0,1fr))}.file-chip{padding:8px 10px}.file-chip svg{display:none}.file-chip{grid-template-columns:minmax(0,1fr)}.list-table.stack thead{display:none}.list-table.stack,.list-table.stack tbody,.list-table.stack tr,.list-table.stack td{display:block}.list-table.stack tr{border-bottom:1px solid var(--rule);padding:8px 12px}.list-table.stack td{border:0;padding:2px 0}.list-table.stack td:before{content:attr(data-label) " ";color:var(--ink-soft);font-size:12.5px}.list-table.stack .amount{text-align:left}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
