/* ============================================================================
   INVOICE TEMPLATE ENGINE — DYNAMIC LAYOUT SAFETY LAYER
   ----------------------------------------------------------------------------
   Additive, non-breaking overrides loaded AFTER style.css. This file never
   restructures existing template rules — it only adds overflow/wrapping,
   min-height (instead of fixed clip-height) and opt-in density hooks so that
   large currency values, long descriptions and 1..500+ row invoices never
   overlap borders or clip in the on-screen preview, print, or PDF capture.

   Scope is limited to `.gst-invoice` (the active template system) so legacy
   markup and the standalone invoice.html are untouched.
   ============================================================================ */

/* ----------------------------------------------------------------------------
   FEATURE 1 — DYNAMIC HEIGHT / OVERFLOW PREVENTION
   Containers must grow with content; nothing should be clipped by a fixed
   height. We never pin a height — only ever a *min*-height — on the doc.
   ---------------------------------------------------------------------------- */
.gst-invoice {
  /* The doc grows with its content; never clip overflowing rows. */
  max-height: none;
  overflow: visible;
}

/* ----------------------------------------------------------------------------
   FEATURE 4 — AUTO TABLE ENGINE: smart text wrapping
   With table-layout:fixed, content that can't break visually spills past the
   cell border. Force every item cell to wrap. Long unbroken tokens (huge HSN
   codes, no-space descriptions) break anywhere; ordinary text breaks on words.
   ---------------------------------------------------------------------------- */
.gst-invoice .gst-items-table th,
.gst-invoice .gst-items-table td,
.gst-invoice table th,
.gst-invoice table td {
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;          /* defeat any inherited nowrap that clips */
  vertical-align: top;          /* keep multiline rows top-aligned & tidy */
}

/* Numeric columns: keep them right-aligned and let very large amounts wrap to
   a second line inside the cell rather than overflow the fixed column width. */
.gst-invoice .gst-items-table td.text-right,
.gst-invoice .gst-items-table th.text-right {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* The description column carries the most text — give it room and let it be
   the natural growth column for tall rows. */
.gst-invoice .item-desc,
.gst-invoice .gst-items-table td:nth-child(2) {
  overflow-wrap: anywhere;
  word-break: break-word;
}

.gst-invoice .item-note-text {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* ----------------------------------------------------------------------------
   FEATURE 1 — TOTALS NEVER OVERFLOW
   Totals boxes are fixed-width (240/300px). Large grand totals must wrap
   inside, not bleed past the border.
   ---------------------------------------------------------------------------- */
.gst-invoice .inv-totals,
.gst-invoice .inv-totals-min,
.gst-invoice .inv-summary,
.gst-invoice .totals-box,
.gst-invoice [class*="totals"],
.gst-invoice [class*="-tot-"] {
  min-width: 0;
}
.gst-invoice .inv-totals span,
.gst-invoice .inv-totals strong,
.gst-invoice .summary-row span,
.gst-invoice .summary-row strong,
.gst-invoice .inv-grand-row span,
.gst-invoice [class*="-tot-value"],
.gst-invoice [class*="totals-value"] {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Amount-in-words & party blocks: long company names / addresses wrap. */
.gst-invoice .inv-words-text,
.gst-invoice .amount-words,
.gst-invoice .inv-party-detail,
.gst-invoice .party-box span,
.gst-invoice .bank-box span,
.gst-invoice .gst-company-name {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* ----------------------------------------------------------------------------
   FEATURE 1 / 9 — SIGNATURE & FOOTER NEVER OVERLAP CONTENT
   Keep signature/footer blocks together and let them flow below content. Any
   fixed-height sign space becomes a *min*-height so an inserted signature image
   can grow the block instead of overlapping the caption.
   ---------------------------------------------------------------------------- */
.gst-invoice .inv-sign-space,
.gst-invoice .sign-space,
.gst-invoice .sign-line {
  height: auto;
  min-height: 42px;
}
.gst-invoice .inv-footer,
.gst-invoice .inv-footer-min,
.gst-invoice .signature-row,
.gst-invoice .gst-footer-table tr,
.gst-invoice .gst-note {
  break-inside: avoid;
  page-break-inside: avoid;
}

/* Signature image (FEATURE 7): always scale DOWN to its box, never up; preserve
   aspect ratio (no stretch/distortion). Size is template-aware via the
   registry's --sig-max-w / --sig-max-h vars (fallbacks keep originals at 70px).
   Class is .inv-sig-img (renderSignatureImage); the alt selectors are belt-and-
   suspenders for any markup variant. */
.gst-invoice .inv-sig-img,
.gst-invoice .inv-sign-img,
.gst-invoice img[alt="Authorised signature"],
.gst-invoice img[alt="Authorized signature"] {
  max-width: var(--sig-max-w, 100%);
  max-height: var(--sig-max-h, 70px);
  height: auto;
  width: auto;
  object-fit: contain;
  display: inline-block;
}

/* ----------------------------------------------------------------------------
   FEATURE 14 — SMART AUTO-SCALING (opt-in via data-density on .invoice-doc)
   The registry sets data-density="compact" | "dense" for invoices with many
   rows so type and padding shrink proportionally while staying readable.
   These are additive class/attribute hooks — default (no attribute) is
   unchanged, preserving backward compatibility.
   ---------------------------------------------------------------------------- */
.gst-invoice[data-density="compact"] .gst-items-table th,
.gst-invoice[data-density="compact"] .gst-items-table td {
  padding-top: 5px;
  padding-bottom: 5px;
  font-size: 9.5px;
}
.gst-invoice[data-density="dense"] .gst-items-table th,
.gst-invoice[data-density="dense"] .gst-items-table td {
  padding-top: 3px;
  padding-bottom: 3px;
  font-size: 8.5px;
  line-height: 1.25;
}

/* Optional global font scale set by registry (var fallback = 1). */
.gst-invoice[data-font-scale] {
  font-size: calc(12.5px * var(--inv-font-scale, 1));
}

/* ----------------------------------------------------------------------------
   FEATURE 2/3 — SIGNATURE POSITIONING HOOKS (consumed in Phase 3)
   Position classes applied to the signature container. Default templates that
   don't set one keep their existing layout untouched.
   ---------------------------------------------------------------------------- */
.gst-invoice .inv-sign-pos { display: block; }
.gst-invoice .inv-sign-pos--left   { text-align: left;   margin-right: auto; }
.gst-invoice .inv-sign-pos--center { text-align: center; margin: 0 auto; }
.gst-invoice .inv-sign-pos--right  { text-align: right;  margin-left: auto; }
.gst-invoice .inv-sign-pos--bottom {
  display: block;
  width: 100%;
  text-align: center;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px dashed #cbd5e1;
}

/* ----------------------------------------------------------------------------
   FEATURE 2/3 — SIGNATURE POSITIONING (driven by root data-sign-pos)
   Only applies to engine-managed templates (data-sign-managed="1" — set by the
   registry for the 5 new templates and any the user explicitly opts in). The
   existing 12 templates have NO such flag, so their own signature CSS is
   completely untouched. Aligns the *contents* of the template's signature
   container — no per-template markup changes needed.
   ---------------------------------------------------------------------------- */
/* LEFT */
.gst-invoice[data-sign-managed][data-sign-pos="left"] .inv-footer-right,
.gst-invoice[data-sign-managed][data-sign-pos="left"] .inv-footer-min-right,
.gst-invoice[data-sign-managed][data-sign-pos="left"] .sign-cell,
.gst-invoice[data-sign-managed][data-sign-pos="left"] .inv-sign-label {
  text-align: left;
}
.gst-invoice[data-sign-managed][data-sign-pos="left"] .sign-line,
.gst-invoice[data-sign-managed][data-sign-pos="left"] .inv-sign-space,
.gst-invoice[data-sign-managed][data-sign-pos="left"] .inv-footer-right .inv-sig-img { margin-left: 0; margin-right: auto; align-self: flex-start; }

/* CENTER */
.gst-invoice[data-sign-managed][data-sign-pos="center"] .inv-footer-right,
.gst-invoice[data-sign-managed][data-sign-pos="center"] .inv-footer-min-right,
.gst-invoice[data-sign-managed][data-sign-pos="center"] .sign-cell,
.gst-invoice[data-sign-managed][data-sign-pos="center"] .inv-sign-label {
  text-align: center;
}
.gst-invoice[data-sign-managed][data-sign-pos="center"] .sign-line,
.gst-invoice[data-sign-managed][data-sign-pos="center"] .inv-sign-space,
.gst-invoice[data-sign-managed][data-sign-pos="center"] .inv-footer-right .inv-sig-img { margin-left: auto; margin-right: auto; align-self: center; }

/* RIGHT */
.gst-invoice[data-sign-managed][data-sign-pos="right"] .inv-footer-right,
.gst-invoice[data-sign-managed][data-sign-pos="right"] .inv-footer-min-right,
.gst-invoice[data-sign-managed][data-sign-pos="right"] .sign-cell,
.gst-invoice[data-sign-managed][data-sign-pos="right"] .inv-sign-label {
  text-align: right;
}
.gst-invoice[data-sign-managed][data-sign-pos="right"] .sign-line,
.gst-invoice[data-sign-managed][data-sign-pos="right"] .inv-sign-space,
.gst-invoice[data-sign-managed][data-sign-pos="right"] .inv-footer-right .inv-sig-img { margin-left: auto; margin-right: 0; align-self: flex-end; }

/* BOTTOM — signature spans the full width of its footer cell, centered low. */
.gst-invoice[data-sign-managed][data-sign-pos="bottom"] .inv-footer-right,
.gst-invoice[data-sign-managed][data-sign-pos="bottom"] .inv-footer-min-right,
.gst-invoice[data-sign-managed][data-sign-pos="bottom"] .sign-cell {
  text-align: center;
  width: 100%;
}

/* ============================================================================
   FEATURE 5 — 5 NEW PROFESSIONAL TEMPLATES (engine skins)
   ----------------------------------------------------------------------------
   All five share one overflow-safe DOM (_engInvoiceBody). Layout is defined
   once on .eng-tpl; each skin (.eng-<name>) only overrides accent/typography.
   --eng-accent can be overridden inline by a company brand color.
   ============================================================================ */
.gst-invoice .eng-tpl { --eng-accent:#2563eb; padding:0; }
.gst-invoice .eng-section { padding:16px 22px; }

/* Parties row */
.gst-invoice .eng-parties {
  display:flex; gap:0; background:#f8fafc; border-bottom:1px solid #e2e8f0;
}
.gst-invoice .eng-party-card { flex:1; padding:0 16px 0 0; min-width:0; }
.gst-invoice .eng-party-card + .eng-party-card { padding:0 16px; border-left:1px solid #e2e8f0; }
.gst-invoice .eng-info-card { flex:0 0 210px; padding-left:16px; border-left:1px solid #e2e8f0; min-width:0; }
.gst-invoice .eng-section-head {
  font-size:9px; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
  color:#64748b; margin-bottom:6px;
}
.gst-invoice .eng-party-name {
  font-size:13px; font-weight:800; color:#0f172a; margin-bottom:4px;
  overflow-wrap:anywhere; word-break:break-word;
}
.gst-invoice .eng-info-number {
  font-size:18px; font-weight:900; color:var(--eng-accent); margin-bottom:8px;
  font-family:'DM Mono','Inter Mono','Inter',monospace; overflow-wrap:anywhere;
}

/* Items */
.gst-invoice .eng-items { padding:16px 22px; }
.gst-invoice .eng-items .gst-items-table { border:1px solid #e2e8f0; border-radius:8px; overflow:hidden; }
.gst-invoice .eng-items .gst-items-table th {
  background:var(--eng-accent); color:#fff; font-size:9px; letter-spacing:.04em;
  border-right:1px solid rgba(255,255,255,.18);
}
.gst-invoice .eng-items .gst-items-table th:last-child { border-right:0; }
.gst-invoice .eng-items .gst-items-table td { border-bottom:1px solid #f1f5f9; border-right:1px solid #f1f5f9; }
.gst-invoice .eng-items .gst-items-table td:last-child { border-right:0; }
.gst-invoice .eng-items .gst-items-table tbody tr:nth-child(even) { background:#f8fafc; }
.gst-invoice .eng-items .gst-items-table tr:last-child td { border-bottom:0; }

/* Summary (amount in words + totals) */
.gst-invoice .eng-summary { display:flex; gap:0; border-top:1px solid #e2e8f0; }
.gst-invoice .eng-words { flex:1; padding-right:20px; min-width:0; }
.gst-invoice .eng-tpl .inv-words-text { font-size:10.5px; color:#334155; font-weight:600; margin-top:2px; overflow-wrap:anywhere; }
.gst-invoice .eng-totals { flex:0 0 248px; border-left:1px solid #e2e8f0; padding-left:20px; min-width:0; }
.gst-invoice .eng-totals .inv-grand-row {
  margin-top:6px; padding:8px 10px; background:var(--eng-accent); border-radius:6px;
  font-size:12px; font-weight:900; color:#fff;
}
.gst-invoice .eng-totals .inv-grand-row span { color:#fff !important; }
.gst-invoice .eng-totals .inv-grand-row span:last-child { font-size:15px; }

/* Footer (bank / terms / signature) */
.gst-invoice .eng-footer {
  display:flex; gap:0; border-top:1px solid #e2e8f0; padding:16px 22px; background:#f8fafc;
}
.gst-invoice .eng-footer .inv-footer-col { flex:1; min-width:0; }
.gst-invoice .eng-footer .inv-footer-center { padding:0 16px; border-left:1px solid #e2e8f0; border-right:1px solid #e2e8f0; }
.gst-invoice .eng-footer .inv-footer-right { display:flex; flex-direction:column; justify-content:flex-end; }

/* ── Skin 1: Modern Minimal Blue ───────────────────────────────────────────── */
.gst-invoice .eng-minimalblue { --eng-accent:#1d4ed8; }
.gst-invoice .eng-minimalblue .eng-parties,
.gst-invoice .eng-minimalblue .eng-footer { background:#fff; }
.gst-invoice .eng-minimalblue .eng-items .gst-items-table { border-color:#dbeafe; }
.gst-invoice .eng-minimalblue .eng-items .gst-items-table th { background:#eff6ff; color:#1e3a8a; }

/* ── Skin 2: Traditional Indian GST (boxed, mono, high-contrast) ───────────── */
.gst-invoice .eng-indiangst { --eng-accent:#9a3412; color:#1f2937; }
.gst-invoice .eng-indiangst .eng-parties,
.gst-invoice .eng-indiangst .eng-footer { background:#fff; }
.gst-invoice .eng-indiangst .eng-parties,
.gst-invoice .eng-indiangst .eng-summary,
.gst-invoice .eng-indiangst .eng-footer { border-color:#000; }
.gst-invoice .eng-indiangst .eng-party-card + .eng-party-card,
.gst-invoice .eng-indiangst .eng-info-card,
.gst-invoice .eng-indiangst .eng-totals,
.gst-invoice .eng-indiangst .eng-footer .inv-footer-center { border-color:#000; }
.gst-invoice .eng-indiangst .eng-items .gst-items-table,
.gst-invoice .eng-indiangst .eng-items .gst-items-table td { border-color:#000; border-radius:0; }
.gst-invoice .eng-indiangst .eng-items .gst-items-table th { background:#fdf2e9; color:#7c2d12; border-color:#000; }
.gst-invoice .eng-indiangst .eng-totals .inv-grand-row { border-radius:0; }

/* ── Skin 3: Enterprise Corporate (slate, refined) ─────────────────────────── */
.gst-invoice .eng-enterprise { --eng-accent:#1e293b; }
.gst-invoice .eng-enterprise .eng-info-number { color:#0f172a; }
.gst-invoice .eng-enterprise .eng-items .gst-items-table th { background:#1e293b; }
.gst-invoice .eng-enterprise .eng-parties { background:#f1f5f9; border-top:3px solid #1e293b; }

/* ── Skin 4: Compact Thermal (narrow receipt) ──────────────────────────────── */
.gst-invoice .eng-thermal { --eng-accent:#000; max-width:420px; margin:0 auto; font-size:10px; }
.gst-invoice .eng-thermal .eng-parties,
.gst-invoice .eng-thermal .eng-summary,
.gst-invoice .eng-thermal .eng-footer { flex-direction:column; gap:8px; background:#fff; }
.gst-invoice .eng-thermal .eng-party-card + .eng-party-card,
.gst-invoice .eng-thermal .eng-info-card,
.gst-invoice .eng-thermal .eng-totals,
.gst-invoice .eng-thermal .eng-footer .inv-footer-center,
.gst-invoice .eng-thermal .eng-footer .inv-footer-right { border-left:0; padding-left:0; }
.gst-invoice .eng-thermal .eng-totals { flex:1 1 auto; }
.gst-invoice .eng-thermal .eng-section,
.gst-invoice .eng-thermal .eng-items { padding:10px 14px; }
.gst-invoice .eng-thermal .eng-items .gst-items-table th { background:#000; color:#fff; }
.gst-invoice .eng-thermal .eng-totals .inv-grand-row { background:#000; }

/* ── Skin 5: Premium Gradient Professional ─────────────────────────────────── */
.gst-invoice .eng-gradient { --eng-accent:#7c3aed; }
.gst-invoice .eng-gradient .eng-parties { background:linear-gradient(135deg,#faf5ff,#f5f3ff); }
.gst-invoice .eng-gradient .eng-items .gst-items-table th { background:linear-gradient(135deg,#7c3aed,#4f46e5); }
.gst-invoice .eng-gradient .eng-totals .inv-grand-row { background:linear-gradient(135deg,#7c3aed,#4f46e5); }
.gst-invoice .eng-gradient .eng-footer { background:linear-gradient(135deg,#faf5ff,#f5f3ff); }
.gst-invoice .eng-gradient .eng-info-number { color:#7c3aed; }

/* ============================================================================
   E-INVOICE QR SYSTEM — details block additions (FEATURE 5/8)
   Additive styles for the GST-verified badge + verification line in the IRN
   bar. The signed QR itself renders in the header QR slot (resolved by the QR
   engine); this block is text-only details. Print-safe colors.
   ============================================================================ */
.gst-invoice .inv-irn-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 18px;
  flex: 1 1 100%;
}
.gst-invoice .inv-irn-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #dcfce7;
  color: #166534;
  font-weight: 800;
  font-size: 9.5px;
  letter-spacing: .03em;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid #86efac;
  white-space: nowrap;
  flex-shrink: 0;
  print-color-adjust: exact;
  -webkit-print-color-adjust: exact;
}
.gst-invoice .inv-irn-verify {
  flex-basis: 100%;
  width: 100%;
  margin-top: 4px;
  font-size: 9.5px;
  color: #1e40af;
  opacity: .9;
  overflow-wrap: anywhere;
}

/* ============================================================================
   FEATURE 7 — 5 MORE ENTERPRISE TEMPLATES (engine skins)
   Same shared .eng-tpl DOM; accent/typography only. Real-world inspirations.
   ============================================================================ */
/* Vyapar Style — retail GST, blue header + orange accents */
.gst-invoice .eng-vyaparstyle { --eng-accent:#2563eb; }
.gst-invoice .eng-vyaparstyle .eng-parties { background:#eff6ff; border-bottom:2px solid #f97316; }
.gst-invoice .eng-vyaparstyle .eng-items .gst-items-table th { background:#2563eb; }
.gst-invoice .eng-vyaparstyle .eng-info-number { color:#f97316; }
.gst-invoice .eng-vyaparstyle .eng-totals .inv-grand-row { background:#f97316; }
.gst-invoice .eng-vyaparstyle .eng-footer { background:#eff6ff; }

/* Tally Prime — classic ledger, thin double rules, navy */
.gst-invoice .eng-tallyprime { --eng-accent:#1e40af; }
.gst-invoice .eng-tallyprime .eng-parties,
.gst-invoice .eng-tallyprime .eng-footer { background:#fff; }
.gst-invoice .eng-tallyprime .eng-parties { border-top:1px solid #1e40af; border-bottom:3px double #1e40af; }
.gst-invoice .eng-tallyprime .eng-items .gst-items-table { border-color:#1e40af; }
.gst-invoice .eng-tallyprime .eng-items .gst-items-table th { background:#dbeafe; color:#1e3a8a; }
.gst-invoice .eng-tallyprime .eng-summary { border-top:3px double #1e40af; }

/* Busy ERP — dense green corporate sheet */
.gst-invoice .eng-busyerp { --eng-accent:#15803d; }
.gst-invoice .eng-busyerp .eng-parties { background:#f0fdf4; border-bottom:1px solid #bbf7d0; }
.gst-invoice .eng-busyerp .eng-items .gst-items-table th { background:#15803d; }
.gst-invoice .eng-busyerp .eng-totals .inv-grand-row { background:#15803d; }
.gst-invoice .eng-busyerp .eng-footer { background:#f0fdf4; }
.gst-invoice .eng-busyerp .eng-section,
.gst-invoice .eng-busyerp .eng-items { padding-top:11px; padding-bottom:11px; }

/* Corporate Plus — premium dual-tone teal */
.gst-invoice .eng-corporateplus { --eng-accent:#0f766e; }
.gst-invoice .eng-corporateplus .eng-parties { background:#f0fdfa; border-top:4px solid #0f766e; }
.gst-invoice .eng-corporateplus .eng-items .gst-items-table th { background:#0f766e; }
.gst-invoice .eng-corporateplus .eng-totals .inv-grand-row { background:#134e4a; }
.gst-invoice .eng-corporateplus .eng-footer { background:#f0fdfa; }

/* Royal Premium — dark slate + gold */
.gst-invoice .eng-royalpremium { --eng-accent:#b45309; }
.gst-invoice .eng-royalpremium .eng-parties { background:#1e293b; }
.gst-invoice .eng-royalpremium .eng-parties .eng-section-head { color:#fbbf24; }
.gst-invoice .eng-royalpremium .eng-parties .eng-party-name,
.gst-invoice .eng-royalpremium .eng-parties .inv-party-detail,
.gst-invoice .eng-royalpremium .eng-parties .inv-info-row .inv-value { color:#f1f5f9; }
.gst-invoice .eng-royalpremium .eng-parties .inv-info-row .inv-label { color:#94a3b8; }
.gst-invoice .eng-royalpremium .eng-info-number { color:#fbbf24; }
.gst-invoice .eng-royalpremium .eng-items .gst-items-table th { background:#0f172a; color:#fbbf24; }
.gst-invoice .eng-royalpremium .eng-totals .inv-grand-row { background:linear-gradient(135deg,#b45309,#92400e); }

/* ============================================================================
   ADAPTIVE SIGNATURE POSITIONING — natural content-flow (FEATURE 2/3/6)
   ----------------------------------------------------------------------------
   The signature/footer ANCHOR NATURALLY right after the invoice content — they
   flow with the document height and never float to the page bottom. (An earlier
   "bottom-float" mode using min-height + margin-top:auto created a large blank
   gap above the signature on short invoices — removed.) Empty space collapses
   on its own; the footer stays visually tied to the content above it.
   ============================================================================ */
/* Template-aware spacing above the signature block (FEATURE 1 marginTop):
   a small, proportional gap — never a page-filling void. */
.gst-invoice[data-sign-managed] .inv-footer-right .inv-sig-img,
.gst-invoice[data-sign-managed] .inv-footer-right .inv-sign-space {
  margin-top: var(--sig-mt, 14px);
}

/* FEATURE 6 — smart footer: never let the signature/footer hug the content
   above it; guarantee a minimum gap on every template (managed or not). */
.gst-invoice .inv-footer,
.gst-invoice .eng-footer,
.gst-invoice .gst-footer-table {
  margin-top: 0; /* spacing comes from each template's own padding/border-top */
}
/* The signature cell keeps its caption and image/line from colliding. */
.gst-invoice .inv-sign-label { margin-top: 4px; }

/* ── Free-plan branding line ("Powered by EGPL Billing") ─────────────────────
   Rendered after .gst-note by buildInvoiceHtml only when the workspace lacks the
   remove_branding feature (Free plan). Subtle + print-safe; never breaks across
   pages. Paid plans + Premium Trial never render this element at all. */
.gst-invoice .invoice-branding {
  margin-top: 6px;
  padding-top: 6px;
  text-align: center;
  font-size: 9px;
  letter-spacing: .04em;
  color: #94a3b8;
  break-inside: avoid;
  page-break-inside: avoid;
}
.gst-invoice .invoice-branding::before { content: "✦ "; opacity: .6; }
@media print {
  .gst-invoice .invoice-branding { color: #64748b !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
