:root{--paper:#fbfaf7;--ink:#1c2320;--rule:#d9d4c8;--accent:#0f6b4f;--accent-ink:#0a4a37;--warn:#8a4b12;--mono:"IBM Plex Mono",monospace;--body:"Inter",sans-serif;--display:"Fraunces",serif}
*{box-sizing:border-box;margin:0}
body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;background-image:repeating-linear-gradient(transparent,transparent 27px,rgba(15,107,79,.055) 27px,rgba(15,107,79,.055) 28px)}
.wrap{max-width:880px;margin:0 auto;padding:0 20px}
.masthead{border-bottom:2px solid var(--ink);background:var(--paper);padding:14px 0}
.masthead .wrap{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.brand{font-family:var(--display);font-weight:700;font-size:1.35rem;letter-spacing:-.01em}
.tagline{font-family:var(--mono);font-size:.78rem;color:#5a6360}
.ledger-card{margin:42px 0 26px}
.drop{border:2px dashed var(--rule);background:#fff;border-radius:6px;padding:48px 28px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}
.drop:hover,.drop:focus-visible,.drop.over{border-color:var(--accent);background:#f4faf7;outline:none}
.drop-ic{width:44px;height:44px;color:var(--accent);margin-bottom:14px}
.drop h1{font-family:var(--display);font-size:1.7rem;font-weight:600;margin-bottom:8px}
.drop-sub{color:#4c5450;max-width:520px;margin:0 auto 20px;font-size:.95rem}
.btn{font-family:var(--mono);font-size:.9rem;background:var(--accent);color:#fff;border:none;border-radius:4px;padding:10px 20px;cursor:pointer}
.btn:hover{background:var(--accent-ink)}
.btn.ghost{background:transparent;color:var(--accent-ink);border:1px solid var(--rule)}
.btn.ghost:hover{border-color:var(--accent-ink)}
.mini{font-family:var(--mono);font-size:.72rem;border:1px solid var(--rule);background:#fff;border-radius:3px;padding:2px 8px;cursor:pointer;vertical-align:middle}
.progress{margin-top:14px;text-align:center}
.mono{font-family:var(--mono)}
.result{background:#fff;border:1px solid var(--rule);border-radius:6px;padding:22px;margin-bottom:34px}
.result-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.result-head h2{font-size:1rem;font-weight:600}
.result-meta{font-size:.78rem;color:#5a6360}
.result-actions{display:flex;gap:10px}
.table-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:4px}
table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:.82rem}
th{background:#f1efe8;text-align:left;padding:7px 10px;border-bottom:2px solid var(--rule);position:sticky;top:0}
td{padding:6px 10px;border-bottom:1px solid #eceade;white-space:nowrap}
td.amt{text-align:right}
td.neg{color:#943326}
td.pos{color:var(--accent-ink)}
.unlock-line{margin-top:14px;text-align:center;font-size:.82rem;color:#5a6360}
.linkbtn{font:inherit;color:var(--accent-ink);background:none;border:0;padding:0;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.linkbtn:hover{color:var(--ink)}
.paywall{margin-top:16px;border:1px solid var(--warn);background:#fdf6ec;border-radius:4px;padding:14px 16px;font-size:.92rem}
.paywall p{margin-bottom:8px}
.paywall .btn{margin-top:4px}
.how{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:10px 0 44px}
.how-col h3{font-family:var(--display);font-size:1.05rem;font-weight:600;margin-bottom:6px}
.how-col p{font-size:.9rem;color:#434b47}
.faq{background:#fff;border:1px solid var(--rule);border-radius:6px;margin:0 0 44px;padding:28px}
.faq-head{border-bottom:2px solid var(--ink);padding-bottom:20px}
.faq-kicker{color:var(--accent-ink);font-size:.75rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px}
.faq-head h2{font-family:var(--display);font-size:1.45rem;font-weight:600;margin-bottom:6px}
.faq-head>p:last-child{color:#4c5450;font-size:.92rem;max-width:620px}
.faq-list{margin:0}
.faq-item{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(0,1.4fr);gap:28px;padding:20px 0;border-bottom:1px solid var(--rule)}
.faq-item:last-child{border-bottom:none;padding-bottom:0}
.faq-item dt{font-family:var(--display);font-size:1.02rem;font-weight:600;line-height:1.4}
.faq-item dd{color:#434b47;font-size:.9rem}
.faq-item a{color:var(--accent-ink);overflow-wrap:anywhere}
dialog{border:2px solid var(--ink);border-radius:6px;padding:26px;max-width:520px;width:92%;margin:auto}
dialog::backdrop{background:rgba(28,35,32,.45)}
dialog h2{font-family:var(--display);margin-bottom:14px}
.paysteps{padding-left:20px;margin-bottom:16px}
.paysteps li{margin-bottom:12px;font-size:.93rem}
.addr{font-size:.78rem;word-break:break-all;background:#f1efe8;padding:2px 6px;border-radius:3px;display:inline-block;margin-top:4px}
#txHash{width:100%;font-size:.85rem;padding:9px 10px;border:1px solid var(--rule);border-radius:4px;margin-bottom:12px}
.payrow{display:flex;gap:10px}
.paystatus{margin-top:12px;font-size:.82rem;min-height:1.2em}
.fineprint{margin-top:14px;font-size:.78rem;color:#5a6360}
.guide-links{display:flex;gap:20px;flex-wrap:wrap;padding-top:8px;font-family:var(--mono);font-size:.78rem}
.guide-links a{color:var(--accent-ink);text-decoration:none;border-bottom:1px solid var(--rule)}
.guide-links a:hover{border-color:var(--accent-ink)}
.foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--rule);padding-top:16px;padding-bottom:30px;font-size:.82rem;color:#5a6360}
.foot a{color:var(--accent-ink)}
.guide-nav{display:flex;gap:18px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px;border-bottom:1px solid var(--rule);font-family:var(--mono);font-size:.76rem}
.guide-nav a{color:var(--accent-ink);text-underline-offset:3px}
.article{max-width:720px;margin:42px auto 48px;background:#fff;border:1px solid var(--rule);border-radius:6px;padding:38px 42px}
.article-head{border-bottom:2px solid var(--ink);padding-bottom:24px;margin-bottom:26px}
.article-kicker{font-family:var(--mono);font-size:.74rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:8px}
.article h1{font-family:var(--display);font-size:clamp(2rem,5vw,3.15rem);line-height:1.08;letter-spacing:-.025em;font-weight:600}
.article h2{font-family:var(--display);font-size:1.35rem;line-height:1.25;font-weight:600;margin:30px 0 9px}
.article p{margin-bottom:16px;color:#343c38;line-height:1.72}
.article ol{padding-left:22px;margin:0 0 18px}
.article li{padding-left:5px;margin-bottom:11px;line-height:1.65}
.article a{color:var(--accent-ink)}
.article-note{border-left:3px solid var(--accent);background:#f4faf7;padding:15px 18px;margin:22px 0;font-size:.92rem}
.article-note p:last-child{margin-bottom:0}
.csv-sample{display:block;background:#f1efe8;border:1px solid var(--rule);border-radius:4px;padding:13px 15px;margin:18px 0 22px;overflow-x:auto;font-family:var(--mono);font-size:.78rem;line-height:1.7;white-space:pre}
.article-cta{border-top:2px solid var(--ink);margin-top:32px;padding-top:24px}
.article-cta h2{margin-top:0}
.article-cta .btn{display:inline-block;text-decoration:none;margin-top:2px;color:#fff}
.article-cta .btn:hover{color:#fff}
@media(max-width:640px){.how{grid-template-columns:1fr}.result-head{flex-direction:column}.faq{padding:22px 20px}.faq-item{grid-template-columns:1fr;gap:7px}.guide-nav{gap:10px 16px}.article{margin:24px auto 36px;padding:28px 22px}.article h1{font-size:2rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
