.inv-pub-wrap{min-height:100vh;font-family:var(--font-inter,"Inter", sans-serif);background:#f3f4f6;padding:40px 20px 64px}.inv-pub-container{max-width:840px;margin:0 auto}.inv-pub-paid-banner,.inv-pub-overdue-banner,.inv-pub-cancelled-banner{border-radius:12px;margin-bottom:20px;padding:13px 22px}.inv-pub-cancelled-banner{color:#374151;background:#f3f4f6;border:1px solid #d1d5db}.inv-pub-cancelled-banner-title{margin-bottom:4px;font-size:14px;font-weight:800}.inv-pub-cancelled-banner-text{color:#6b7280;font-size:13px;line-height:1.5}.inv-pub-paid-banner{color:#065f46;background:#d1fae5;border:1px solid #6ee7b7;align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex}.inv-pub-overdue-banner{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.inv-pub-overdue-banner-title{margin-bottom:4px;font-size:14px;font-weight:800}.inv-pub-overdue-banner-text{font-size:13px;line-height:1.5}.inv-pub-pop-cta{color:#4c1d95;background:#faf5ff;border:1px solid #ede9fe;border-radius:12px;align-items:center;gap:10px;margin-bottom:20px;padding:13px 22px;font-size:13px;display:flex}.inv-pub-pop-cta svg{color:#7c3aed;flex-shrink:0}.inv-pub-pop-cta span{flex:1;font-weight:500}.inv-pub-pop-link{color:#5b21b6;white-space:nowrap;font-weight:700;text-decoration:none}.inv-pub-pop-link:hover{color:#7c3aed;text-decoration:underline}.inv-pub-card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 1px 3px #00000012,0 12px 40px #00000012}.inv-pub-empty{text-align:center;padding:64px 32px}.inv-pub-empty .icon-wrap{width:56px;height:56px;color:var(--violet,#5b21b6);background:#f3f0ff;border-radius:14px;place-items:center;margin:0 auto 18px;display:grid}.inv-pub-empty h2{color:var(--ink);margin:0;font-size:19px;font-weight:700}.inv-pub-empty p{color:var(--ink-2);margin:8px 0 0;font-size:14px}@media (max-width:520px){.inv-pub-empty{padding:48px 20px}.inv-pub-empty h2{font-size:17px}}.inv-pub-header{background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:flex-start;gap:32px;padding:36px 48px;display:flex}.inv-pub-header-left{flex:1;min-width:0}.inv-pub-brand{align-items:center;gap:16px;display:flex}.inv-pub-brand-copy{min-width:0}.inv-pub-biz-kicker{text-transform:uppercase;letter-spacing:.16em;color:#9ca3af;margin-bottom:6px;font-size:10px;font-weight:800}.inv-pub-biz-logo,.inv-pub-biz-mark{border-radius:16px;flex-shrink:0;width:56px;height:56px}.inv-pub-biz-logo{object-fit:contain;background:#fff;border:1px solid #e5e7eb;padding:6px}.inv-pub-biz-mark{color:#fff;font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);letter-spacing:.08em;background:linear-gradient(135deg,#2e1065 0%,#5b21b6 100%);place-items:center;font-size:18px;font-weight:700;display:grid}.inv-pub-biz-name{color:#111827;font-size:24px;font-weight:800;line-height:1.2}.inv-pub-header-right{text-align:right;flex-shrink:0}.inv-pub-doc-type{text-transform:uppercase;letter-spacing:.16em;color:#9ca3af;margin-bottom:8px;font-size:10px;font-weight:700}.inv-pub-inv-number{font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);color:#111827;letter-spacing:-.01em;font-size:20px;font-weight:700}.inv-pub-status-pill{letter-spacing:.07em;text-transform:uppercase;border-radius:999px;margin-top:10px;padding:4px 13px;font-size:11px;font-weight:800;display:inline-block}.inv-pub-status-pill.paid{color:#fff;background:#10b981}.inv-pub-status-pill.overdue{color:#fff;background:#ef4444}.inv-pub-status-pill.partial{color:#fff;background:#f59e0b}.inv-pub-body{padding:40px 48px}.inv-pub-bill-to{background:#fcfbff;border:1px solid #ede9fe;border-radius:12px;grid-template-columns:1fr 1px 1fr;align-items:start;gap:0 24px;margin-bottom:24px;padding:20px 24px;display:grid}.inv-pub-party-label{text-transform:uppercase;letter-spacing:.15em;color:#9ca3af;margin-bottom:8px;font-size:9px;font-weight:800}.inv-pub-party-name{color:#111827;margin-bottom:4px;font-size:14.5px;font-weight:700}.inv-pub-party-company{color:#6b7280;margin-bottom:6px;font-size:12.5px}.inv-pub-party-detail{color:#6b7280;font-size:12px;line-height:1.7}.inv-pub-party-detail strong{color:#4b5563;font-weight:600}.inv-pub-vat-tag{color:#6b7280;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;margin-top:8px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.inv-pub-bill-to-divider{background:#ede9fe;align-self:stretch;width:1px}.inv-pub-meta{border:1px solid #e5e7eb;border-radius:10px;margin-bottom:32px;display:flex;overflow:hidden}.inv-pub-meta-item{border-right:1px solid #e5e7eb;flex-direction:column;flex:1;justify-content:flex-start;min-width:0;padding:12px 16px;display:flex}.inv-pub-meta-item:last-child{border-right:0}.inv-pub-meta-label{text-transform:uppercase;letter-spacing:.13em;color:#9ca3af;margin-bottom:5px;font-size:9px;font-weight:800;line-height:1}.inv-pub-meta-value{color:#111827;white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:600;line-height:1.3;overflow:hidden}.inv-pub-meta-value.overdue{color:#ef4444}.inv-pub-table{table-layout:fixed;border-collapse:collapse;width:100%;margin-bottom:4px}.inv-pub-table thead tr{border-bottom:2px solid #e5e7eb}.inv-pub-table thead th{text-transform:uppercase;letter-spacing:.1em;color:#9ca3af;white-space:nowrap;padding:0 0 11px;font-size:10px;font-weight:700}.inv-pub-table thead th+th{text-align:right;padding-left:22px}.inv-pub-table tbody tr{border-bottom:1px solid #f3f4f6}.inv-pub-table tbody tr:last-child{border-bottom:0}.inv-pub-table tbody td{color:#111827;vertical-align:top;padding:14px 0;font-size:13.5px}.inv-pub-table tbody td+td{text-align:right;font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);white-space:nowrap;padding-left:22px;font-size:13px}.inv-pub-table tbody td:last-child{font-weight:700}.inv-pub-line-desc{line-height:1.4}.inv-pub-vat-badge{color:#6b7280;letter-spacing:.04em;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;margin-top:4px;padding:1px 6px;font-family:inherit;font-size:9.5px;font-weight:700;display:inline-block}.inv-pub-totals-wrap{justify-content:flex-end;margin-bottom:32px;padding-top:4px;display:flex}.inv-pub-totals{border-top:1px solid #e5e7eb;width:310px;padding-top:16px}.inv-pub-total-row{justify-content:space-between;align-items:center;padding:5px 0;font-size:13.5px;display:flex}.inv-pub-total-row .lbl{color:#6b7280}.inv-pub-total-row .val{font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);color:#111827;font-weight:500}.inv-pub-total-row.discount .lbl{color:#d97706}.inv-pub-total-row.discount .val{color:#d97706;font-weight:600}.inv-pub-total-grand{border-top:2px solid #111827;justify-content:space-between;align-items:center;margin-top:10px;padding-top:14px;display:flex}.inv-pub-total-grand .lbl{color:#111827;font-size:17px;font-weight:800}.inv-pub-total-grand .val{font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);color:#111827;font-size:22px;font-weight:800}.inv-pub-total-row.paid-row .val{color:#10b981;font-weight:700}.inv-pub-total-row.balance-row{padding-top:6px}.inv-pub-total-row.balance-row .lbl{color:#111827;font-size:14px;font-weight:700}.inv-pub-total-row.balance-row .val{color:#ef4444;font-size:16px;font-weight:800}.inv-pub-paid-badge{color:#065f46;text-align:center;background:#d1fae5;border:1px solid #6ee7b7;border-radius:8px;justify-content:center;align-items:center;gap:7px;margin-top:14px;padding:10px 14px;font-size:13px;font-weight:700;display:flex}.inv-pub-eft-free-badge{color:#4c1d95;letter-spacing:.06em;text-transform:uppercase;background:#ede9fe;border:1px solid #c4b5fd;border-radius:999px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:9px;font-weight:700;display:inline-flex}.inv-pub-banking{background:#faf5ff;border:1px solid #ede9fe;border-radius:12px;margin-bottom:24px;overflow:hidden}.inv-pub-banking-header{background:#f5f0ff;border-bottom:1px solid #ede9fe;align-items:center;gap:10px;padding:13px 20px;display:flex}.inv-pub-banking-icon{color:#fff;background:#374151;border-radius:7px;flex-shrink:0;place-items:center;width:26px;height:26px;display:grid}.inv-pub-banking-title{color:#111827;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px;font-weight:700;line-height:1.4;display:flex}.inv-pub-banking-sub{color:#9ca3af;margin-top:2px;font-size:11px}.inv-pub-banking-rows{padding:4px 0 2px}.inv-pub-banking-row{border-bottom:1px solid #ede9fe;align-items:center;gap:0;padding:8px 20px;display:flex}.inv-pub-banking-row:last-child{border-bottom:0}.inv-pub-banking-lbl{color:#9ca3af;text-transform:uppercase;letter-spacing:.07em;min-width:120px;font-size:10.5px;font-weight:700}.inv-pub-banking-val{color:#111827;font-size:13px;font-weight:500}.inv-pub-banking-val.mono{font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);font-weight:600}.inv-pub-banking-ref-bar{background:#ede9fe;border-top:1px solid #ddd6fe;justify-content:space-between;align-items:center;gap:16px;padding:11px 20px;display:flex}.inv-pub-banking-ref-label{color:#4c1d95;font-size:11.5px;font-weight:700}.inv-pub-banking-ref-value{font-family:var(--font-jetbrains-mono,"JetBrains Mono", monospace);color:#1e1b4b;letter-spacing:.02em;background:#ddd6fe;border-radius:6px;padding:4px 12px;font-size:13.5px;font-weight:800}.inv-pub-notes{background:#faf5ff;border:1px solid #ede9fe;border-radius:10px;margin-bottom:16px;padding:16px 20px}.inv-pub-notes:last-of-type{margin-bottom:24px}.inv-pub-notes-label{text-transform:uppercase;letter-spacing:.13em;color:#9ca3af;margin-bottom:6px;font-size:9.5px;font-weight:800}.inv-pub-notes-text{color:#6b7280;font-size:13px;line-height:1.65}.inv-pub-footer{text-align:center;color:#9ca3af;border-top:1px solid #e5e7eb;padding-top:20px;font-size:12px}.inv-pub-footer strong{color:#6b7280}.inv-pub-footer a{color:inherit;text-decoration:none}.inv-pub-footer a:hover{text-decoration:underline}.inv-pub-no-banking{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;align-items:flex-start;gap:12px;margin-bottom:24px;padding:16px 20px;display:flex}.inv-pub-no-banking-icon{color:#fff;background:#f59e0b;border-radius:8px;flex-shrink:0;place-items:center;width:30px;height:30px;display:grid}.inv-pub-no-banking-title{color:#92400e;margin-bottom:4px;font-size:13px;font-weight:700}.inv-pub-no-banking-text{color:#b45309;font-size:12.5px;line-height:1.55}.inv-pub-no-banking-text strong{color:#78350f}.inv-pub-status-pill.draft{color:#6b7280;background:#f3f4f6;border:1px solid #d1d5db}.inv-pub-404-card{text-align:center;background:#fff;border-radius:16px;padding:56px 40px;box-shadow:0 1px 3px #00000012,0 8px 24px #0000000f}.inv-pub-404-icon{color:#9ca3af;background:#f3f4f6;border-radius:20px;place-items:center;width:72px;height:72px;margin:0 auto 24px;display:grid}.inv-pub-404-title{color:#111827;letter-spacing:-.01em;margin:0 0 10px;font-size:22px;font-weight:800}.inv-pub-404-body{color:#6b7280;max-width:40ch;margin:0 auto 28px;font-size:14px;line-height:1.65}.inv-pub-404-home{color:#fff;background:#1e1b4b;border-radius:10px;padding:12px 26px;font-size:14px;font-weight:700;text-decoration:none;display:inline-block}@media (hover:hover){.inv-pub-404-home:hover{background:#2e1065}}@media (max-width:520px){.inv-pub-404-card{padding:40px 24px}}.inv-pub-col-vat{white-space:nowrap}@media (max-width:680px){.inv-pub-header{flex-direction:column;gap:20px;padding:28px 22px}.inv-pub-header-right{text-align:left}.inv-pub-brand{align-items:flex-start}.inv-pub-body{padding:28px 22px}.inv-pub-bill-to{grid-template-columns:1fr;gap:20px 0}.inv-pub-bill-to-divider{display:none}.inv-pub-meta{flex-wrap:wrap}.inv-pub-meta-item{border-bottom:1px solid #e5e7eb;border-right:0;min-width:50%}.inv-pub-meta-item:nth-child(odd){border-right:1px solid #e5e7eb}.inv-pub-meta-item:last-child,.inv-pub-meta-item:nth-last-child(2):nth-child(odd){border-bottom:0}.inv-pub-totals{width:100%}.inv-pub-totals-wrap{justify-content:stretch}.inv-pub-banking-lbl{min-width:90px}.inv-pub-col-vat{display:none}.inv-pub-table{table-layout:auto}.inv-pub-table tbody td:first-child{white-space:normal}}@media (max-width:520px){.inv-pub-wrap{padding:22px 12px 40px}.inv-pub-paid-banner,.inv-pub-overdue-banner{padding:12px 14px}.inv-pub-brand{gap:12px}.inv-pub-biz-logo,.inv-pub-biz-mark{border-radius:14px;width:46px;height:46px}.inv-pub-biz-name{font-size:21px}.inv-pub-inv-number{font-size:18px}.inv-pub-table thead th{font-size:9px}.inv-pub-table tbody td,.inv-pub-table tbody td+td{font-size:12px}.inv-pub-banking-row{flex-direction:column;align-items:flex-start;gap:4px}.inv-pub-banking-lbl{min-width:0}.inv-pub-banking-ref-bar{flex-direction:column;align-items:flex-start}}.inv-pub-section-label{letter-spacing:.1em;text-transform:uppercase;color:#9ca3af;align-items:center;gap:10px;margin:20px 0 8px;font-size:10px;font-weight:700;display:flex}.inv-pub-section-label:after{content:"";background:#e5e7eb;flex:1;height:1px}.inv-pub-pay-online{border:1px solid var(--line,#ede9fe);background:var(--bg,#faf5ff);border-radius:12px;margin-top:24px;margin-bottom:24px;padding:18px 20px}.inv-pub-pay-online-header{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.inv-pub-pay-online-icon{background:var(--violet,#5b21b6);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.inv-pub-pay-online-title{color:#1e1b4b;font-size:14px;font-weight:700}.inv-pub-pay-online-sub{color:#6b7280;margin-top:2px;font-size:12.5px}.inv-pub-pay-online-buttons{flex-wrap:wrap;gap:10px;display:flex}.inv-pub-pay-btn{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:10px;align-items:center;gap:10px;padding:10px 16px;transition:border-color .15s,box-shadow .15s,transform .15s;display:inline-flex}.inv-pub-pay-logo{flex-shrink:0;width:auto;height:20px}.inv-pub-pay-logo-payfast{border-radius:4px}.inv-pub-pay-caption{color:#6b7280;white-space:nowrap;font-size:12px;font-weight:600}@media (max-width:480px){.inv-pub-pay-online-buttons{flex-direction:column}.inv-pub-pay-btn{justify-content:center;width:100%}}.inv-pub-pay-btn:hover:not(:disabled){border-color:var(--violet,#5b21b6);box-shadow:0 2px 8px #5b21b61f}.inv-pub-pay-btn:active:not(:disabled){transform:scale(.98)}.inv-pub-pay-btn:disabled{opacity:.6;cursor:default}.inv-pub-pay-error{color:#ef4444;margin-top:10px;font-size:12.5px}.inv-pub-pay-spin{animation:.8s linear infinite inv-pub-pay-spin}@keyframes inv-pub-pay-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
