/* ============================================================
   Gate-E Portal Theme — BS5-like class names, themeable via
   CSS custom properties. Override :root vars per owner/tenant.
   ============================================================ */
:root{
  --ge-primary:#143C77;
  --ge-primary-soft:#F0F4FA;
  --ge-pay:#2BC46C;
  --ge-pay-hover:#24AC5E;
  --ge-bg:#F4F6F9;
  --ge-card:#ffffff;
  --ge-border:#E3E8EF;
  --ge-border-soft:#EEF1F5;
  --ge-text:#14202E;
  --ge-muted:#5B6B7F;
  --ge-faint:#8A98A9;
  --ge-danger:#D0342E;
  --ge-danger-bg:#FBE7E6;
  --ge-success:#0E7A4A;
  --ge-success-bg:#E4F4EC;
  --ge-warning:#B26A00;
  --ge-warning-bg:#FCF0DC;
  --ge-radius:16px;
  --ge-radius-sm:10px;
  --ge-font-en:'IBM Plex Sans',system-ui,sans-serif;
  --ge-font-ar:'IBM Plex Sans Arabic',system-ui,sans-serif;
}

html,body{margin:0;padding:0;background:var(--ge-bg);}
body{font-family:var(--ge-font-en);color:var(--ge-text);-webkit-font-smoothing:antialiased;}
html[data-lang="ar"] body{font-family:var(--ge-font-ar);}
html:not([data-lang="ar"]) [data-l="ar"]{display:none !important;}
html[data-lang="ar"] [data-l="en"]{display:none !important;}
input,button,select,textarea{font-family:inherit;color:inherit;}
a{color:var(--ge-primary);}

/* Layout */
.portal{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:28px 14px 90px;box-sizing:border-box;}
.portal-card{width:100%;max-width:720px;box-sizing:border-box;}
.portal-card-sm{max-width:480px;}

/* Card */
.card{background:var(--ge-card);border:1px solid var(--ge-border);border-radius:var(--ge-radius);box-shadow:0 1px 3px rgba(16,24,40,0.06);}
.card-body{padding:26px 26px 24px;}
@media (max-width:640px){.card-body{padding:18px 16px 18px;}}

/* Brand block */
.brand-block{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;padding:6px 0 14px;}
.print-view-btn{position:absolute;top:14px;inset-inline-end:14px;z-index:2;width:38px;height:38px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--ge-primary-soft);color:var(--ge-primary);border:1px solid var(--ge-border);text-decoration:none;transition:background 0.15s ease,color 0.15s ease;}
.print-view-btn:hover{background:var(--ge-primary);color:#ffffff;}
.brand-logo{width:64px;height:64px;border-radius:50%;background:var(--ge-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:700;margin-bottom:6px;}
.brand-name{font-size:17px;font-weight:700;}
.brand-sub{font-size:12.5px;color:var(--ge-muted);}
.brand-contact{font-size:11.5px;color:var(--ge-faint);}
.brand-tag{margin-top:8px;font-size:11px;font-weight:700;letter-spacing:0.5px;background:var(--ge-border-soft);border:1px solid var(--ge-border);border-radius:6px;padding:4px 10px;}
.brand-title{margin-top:6px;font-size:15px;font-weight:600;color:var(--ge-muted);}

/* Party strip */
.party-strip{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:#F8FAFC;border:1px solid var(--ge-border-soft);border-radius:var(--ge-radius-sm);padding:14px 16px;}

/* Type utils */
.small{font-size:12px;}
.fw-bold{font-weight:700;}
.fw-semibold{font-weight:600;}
.text-muted{color:var(--ge-muted);}
.text-faint{color:var(--ge-faint);}
.text-end{text-align:end;}
.text-center{text-align:center;}
.text-success{color:var(--ge-success);}
.text-danger{color:var(--ge-danger);}

/* Badges */
.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;letter-spacing:0.5px;padding:4px 10px;border-radius:99px;white-space:nowrap;}
.text-bg-success{background:var(--ge-success-bg);color:var(--ge-success);border:1px solid #B7E1C9;}
.text-bg-danger{background:var(--ge-danger-bg);color:var(--ge-danger);border:1px solid #F0B9B6;}
.text-bg-warning{background:var(--ge-warning-bg);color:var(--ge-warning);border:1px solid #EDD3A8;}
.text-bg-secondary{background:var(--ge-border-soft);color:var(--ge-muted);border:1px solid var(--ge-border);}

/* List / items */
.list-row{display:flex;align-items:flex-start;gap:10px;padding:13px 4px;border-bottom:1px solid var(--ge-border-soft);}
.list-row:last-child{border-bottom:none;}
.totals-row{display:flex;justify-content:space-between;align-items:center;padding:14px 4px;border-top:2px solid var(--ge-text);font-weight:700;}
.kv-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:4px 0;color:var(--ge-muted);}
.kv-row .v{color:var(--ge-text);}

/* Divider with title */
.divider-title{display:flex;align-items:center;gap:14px;color:var(--ge-muted);font-size:13px;margin:18px 0 12px;}
.divider-title::before,.divider-title::after{content:"";flex:1;border-top:1px solid var(--ge-border);}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--ge-radius-sm);border:1px solid transparent;font-size:14px;font-weight:600;padding:12px 20px;cursor:pointer;text-decoration:none;box-sizing:border-box;}
.btn:focus-visible{outline:2px solid var(--ge-primary);outline-offset:2px;}
.btn-pay{background:var(--ge-pay);color:#fff;width:100%;font-size:15px;padding:14px 20px;}
.btn-pay:hover{background:var(--ge-pay-hover);}
.btn-primary{background:var(--ge-primary);color:#fff;}
.btn-primary:hover{background:#0F2E5C;}
.btn-outline-secondary{background:var(--ge-card);border-color:var(--ge-border);color:var(--ge-text);}
.btn-outline-secondary:hover{background:#F7F9FC;}
.btn-link{background:none;border:none;color:var(--ge-primary);font-size:13px;font-weight:600;cursor:pointer;padding:6px;}
.btn-sm{padding:8px 14px;font-size:12.5px;}

/* Forms */
.form-label{display:block;font-size:12px;color:var(--ge-muted);font-weight:600;margin-bottom:6px;}
.form-control,.form-select{width:100%;box-sizing:border-box;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);padding:13px 14px;font-size:14px;background:var(--ge-card);}
.form-control:focus,.form-select:focus{outline:2px solid var(--ge-primary);outline-offset:1px;border-color:var(--ge-primary);}
.input-group{display:flex;direction:ltr;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);background:var(--ge-card);overflow:hidden;}
.input-group:focus-within{outline:2px solid var(--ge-primary);outline-offset:1px;}
.input-group .form-control{border:none;border-radius:0;flex:1;min-width:0;}
.input-group .form-control:focus{outline:none;}
.input-group-text{display:flex;align-items:center;background:#F7F9FC;border-inline-start:1px solid var(--ge-border-soft);padding:0 14px;font-size:13.5px;font-weight:600;color:var(--ge-muted);flex:none;}
.input-group .form-select{border:none;border-radius:0;width:auto;background:#F7F9FC;border-inline-end:1px solid var(--ge-border-soft);flex:none;cursor:pointer;}
.input-group .form-select:focus{outline:none;}

/* Payment methods */
.methods-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
@media (max-width:640px){.methods-grid{grid-template-columns:1fr;}}
.method-row{display:flex;align-items:center;gap:10px;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);padding:12px 14px;cursor:pointer;background:var(--ge-card);}
.method-row:hover{border-color:#B9C7DA;}
.method-row.active{border-color:var(--ge-primary);background:var(--ge-primary-soft);}
.method-row input{accent-color:var(--ge-primary);width:16px;height:16px;flex:none;}
.method-cur{margin-inline-start:auto;font-size:11px;color:var(--ge-faint);font-weight:600;}

/* Payment method variants */
.pm-rows{display:flex;flex-direction:column;gap:10px;}
.pm-rows.pm-cols-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
.pm-acc.pm-cols-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;}
.pm-rows.pm-cols-2>*,.pm-acc.pm-cols-2>*{min-width:0;width:100%;box-sizing:border-box;}
@media (max-width:640px){.pm-rows.pm-cols-2,.pm-acc.pm-cols-2{display:flex;flex-direction:column;}}
.pm-name{font-size:13px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pm-grid2{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
@media (max-width:640px){.pm-grid2{grid-template-columns:repeat(2,1fr);}}
.pm-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);background:var(--ge-card);padding:16px 10px 12px;cursor:pointer;}
.pm-tile:hover{border-color:#B9C7DA;}
.pm-tile.active{border-color:var(--ge-primary);background:var(--ge-primary-soft);box-shadow:0 0 0 1px var(--ge-primary);}
.pm-tile .pm-check{position:absolute;top:8px;inset-inline-end:8px;width:16px;height:16px;border-radius:50%;background:var(--ge-primary);color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center;}
.pm-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;}
.pm-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ge-border);border-radius:99px;background:var(--ge-card);padding:9px 15px;cursor:pointer;font-size:12.5px;font-weight:600;}
.pm-chip:hover{border-color:#B9C7DA;}
.pm-chip.active{border-color:var(--ge-primary);background:var(--ge-primary-soft);color:var(--ge-primary);box-shadow:0 0 0 1px var(--ge-primary);}
.pm-drop{position:relative;}
.pm-drop-btn{width:100%;display:flex;align-items:center;gap:10px;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);background:var(--ge-card);padding:13px 14px;cursor:pointer;font-size:13.5px;font-weight:600;}
.pm-drop-btn:focus-visible{outline:2px solid var(--ge-primary);outline-offset:1px;}
.pm-drop-list{position:absolute;top:calc(100% + 6px);inset-inline:0;background:var(--ge-card);border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);box-shadow:0 10px 30px rgba(16,24,40,0.14);z-index:30;overflow:hidden;}
.pm-drop-item{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;padding:12px 14px;cursor:pointer;font-size:13.5px;font-weight:600;border-bottom:1px solid var(--ge-border-soft);text-align:start;}
.pm-drop-item:last-child{border-bottom:none;}
.pm-drop-item:hover{background:#F7F9FC;}
.pm-drop-item.active{background:var(--ge-primary-soft);color:var(--ge-primary);}
.pm-caret{margin-inline-start:auto;color:var(--ge-muted);font-size:11px;}

/* Payment method variants (extra) */
.pm-scroll{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin;}
.pm-scroll .pm-tile{flex:0 0 108px;}
.pm-detail{display:flex;flex-direction:column;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);overflow:hidden;}
.pm-detail-row{display:flex;align-items:center;gap:12px;width:100%;border:none;background:var(--ge-card);padding:13px 14px;cursor:pointer;border-bottom:1px solid var(--ge-border-soft);text-align:start;}
.pm-detail-row:last-child{border-bottom:none;}
.pm-detail-row:hover{background:#F7F9FC;}
.pm-detail-row.active{background:var(--ge-primary-soft);}
.pm-radio{width:18px;height:18px;border-radius:50%;border:2px solid var(--ge-border);flex:none;margin-inline-start:auto;display:flex;align-items:center;justify-content:center;}
.pm-detail-row.active .pm-radio{border-color:var(--ge-primary);}
.pm-radio-dot{width:9px;height:9px;border-radius:50%;background:var(--ge-primary);}
.pm-sub{font-size:11.5px;color:var(--ge-muted);font-weight:400;margin-top:1px;}
.pm-acc{display:flex;flex-direction:column;gap:8px;}
.pm-acc-row{border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);background:var(--ge-card);overflow:hidden;}
.pm-acc-row.active{border-color:var(--ge-primary);box-shadow:0 0 0 1px var(--ge-primary);}
.pm-acc-head{display:flex;align-items:center;gap:12px;width:100%;border:none;background:none;padding:13px 14px;cursor:pointer;font-size:13px;font-weight:600;text-align:start;}
.pm-acc-body{padding:0 14px 13px;font-size:12px;color:var(--ge-muted);line-height:1.6;border-top:1px dashed var(--ge-border-soft);padding-top:10px;margin:0 14px 13px;padding-inline:0;}
.pm-icons{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;}
.pm-icon-btn{width:64px;height:44px;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);background:var(--ge-card);display:flex;align-items:center;justify-content:center;cursor:pointer;}
.pm-icon-btn:hover{border-color:#B9C7DA;}
.pm-icon-btn.active{border-color:var(--ge-primary);background:var(--ge-primary-soft);box-shadow:0 0 0 1.5px var(--ge-primary);}
.pm-icons-name{text-align:center;font-size:12.5px;font-weight:600;margin-top:10px;color:var(--ge-primary);}

/* Segmented */
.seg{display:flex;border:1px solid var(--ge-border);border-radius:var(--ge-radius-sm);overflow:hidden;}
.seg .seg-btn{flex:1;border:none;background:var(--ge-card);color:var(--ge-muted);font-size:12.5px;font-weight:600;padding:10px 8px;cursor:pointer;}
.seg .seg-btn.active{background:var(--ge-primary);color:#fff;}

/* Floating buttons */
.fab{position:fixed;bottom:20px;width:48px;height:48px;border-radius:14px;background:var(--ge-card);border:1px solid var(--ge-border);box-shadow:0 4px 14px rgba(16,24,40,0.12);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12.5px;font-weight:700;color:var(--ge-primary);text-decoration:none;z-index:40;}
.fab-start{inset-inline-start:20px;}
.fab-end{inset-inline-end:20px;}

/* Powered by */
.powered{margin-top:18px;font-size:12px;color:var(--ge-muted);display:flex;align-items:center;gap:6px;}
.powered .dot{width:16px;height:16px;border-radius:50%;background:var(--ge-primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;}
.powered .powered-icon{width:16px;height:16px;object-fit:contain;}

/* Modal */
.modal-backdrop-ge{position:fixed;inset:0;background:rgba(10,18,30,0.5);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50;}
.modal-ge{background:var(--ge-card);border-radius:var(--ge-radius);max-width:380px;width:100%;padding:26px;box-sizing:border-box;box-shadow:0 20px 50px rgba(10,18,30,0.3);}

/* Responsive helpers */
@media (max-width:640px){.hide-sm{display:none !important;}}
@media (min-width:641px){.show-sm-only{display:none !important;}}

@media print{.fab,.powered,[data-noprint]{display:none !important;} body{background:#fff;}}

/* ============================================================
   theme_v2 additions — page-level styles ported from the design
   prototypes (kept out of Smarty templates on purpose: inline
   <style> blocks break the {# } delimiters).
   ============================================================ */

/* Brand logo as image (real entity logos) */
.brand-logo-img{max-width:180px;max-height:64px;object-fit:contain;margin-bottom:6px;}

/* Status notices */
.notice{border-radius:10px;padding:14px;font-size:13.5px;font-weight:600;text-align:center;line-height:1.6;margin-top:4px;}
.notice-success{background:var(--ge-success-bg);border:1px solid #B7E1C9;color:var(--ge-success);}
.notice-danger{background:var(--ge-danger-bg);border:1px solid #F0B9B6;color:var(--ge-danger);}
.notice-warning{background:var(--ge-warning-bg);border:1px solid #EDD3A8;color:var(--ge-warning);}
.notice-secondary{background:var(--ge-border-soft);border:1px solid var(--ge-border);color:var(--ge-muted);}

/* Collapsible details box */
.details-box{background:#F8FAFC;border:1px solid var(--ge-border-soft);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;}
.details-box .sep{border-top:1px solid var(--ge-border);margin:8px 0;}
.details-box .kv-title{color:var(--ge-faint);font-size:10.5px;font-weight:700;letter-spacing:0.6px;text-transform:uppercase;margin-bottom:4px;}

/* Payment method row logos */
.pm-logos{display:flex;align-items:center;gap:6px;flex:none;}
.pm-logos img{height:18px;width:auto;display:block;}

/* Item row hints */
.item-hint{font-size:10.5px;color:var(--ge-faint);}
.item-hint-danger{font-size:10.5px;color:var(--ge-danger);}
.item-hint-info{font-size:10.5px;color:var(--ge-primary);}

/* Loading spinner (pay buttons) */
.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,0.45);border-top-color:#ffffff;border-radius:50%;display:inline-block;animation:tx-spin 0.8s linear infinite;vertical-align:-3px;margin-inline-end:8px;}
.spinner[hidden]{display:none;}

/* A4 sheet pages (print / view / tax) */
.sheet-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:24px 12px 48px;box-sizing:border-box;gap:16px;background:#E9EDF2;}
.sheet-toolbar{width:100%;max-width:794px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.sheet-toolbar .back-link{font-size:13px;color:var(--ge-primary);font-weight:600;text-decoration:none;padding:9px 4px;}
.sheet{width:794px;max-width:100%;background:#ffffff;box-shadow:0 4px 24px rgba(16,24,40,0.12);border-radius:6px;box-sizing:border-box;padding:56px 56px 40px;display:flex;flex-direction:column;gap:26px;}
.sheet-head{display:flex;align-items:flex-start;gap:16px;}
.sheet-brand{display:flex;align-items:center;gap:12px;flex:1;min-width:0;}
.sheet-logo{max-height:80px;max-width:240px;object-fit:contain;}
.sheet-logo-fallback{width:80px;height:80px;flex:none;border-radius:16px;background:var(--ge-primary);display:flex;align-items:center;justify-content:center;color:#ffffff;font-weight:700;font-size:36px;}
.sheet-head .text-end{flex:none;overflow-wrap:anywhere;}
.sheet-title{font-size:24px;font-weight:700;letter-spacing:-0.3px;color:var(--ge-primary);}
.sheet-stamp{display:inline-flex;margin-top:6px;font-size:12.5px;font-weight:800;letter-spacing:1px;padding:3px 10px;border-radius:5px;color:var(--ge-success);border:2px solid var(--ge-success);background:var(--ge-success-bg);}
.sheet-stamp-danger{color:var(--ge-danger);border-color:var(--ge-danger);background:var(--ge-danger-bg);}
.sheet-stamp-warning{color:var(--ge-warning);border-color:var(--ge-warning);background:var(--ge-warning-bg);}
.sheet-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;border-top:1px solid var(--ge-border);border-bottom:1px solid var(--ge-border);padding:18px 0;}
.sheet-col-title{font-size:10px;font-weight:700;color:var(--ge-muted);letter-spacing:0.6px;text-transform:uppercase;margin-bottom:6px;}
.sheet-col-body{font-size:12px;line-height:1.7;overflow-wrap:anywhere;}
.sheet-table-wrap{overflow-x:auto;}
.sheet-table{width:100%;border-collapse:collapse;}
.sheet-table th{font-size:10px;color:var(--ge-muted);font-weight:700;letter-spacing:0.5px;text-transform:uppercase;padding:8px;border-bottom:2px solid var(--ge-primary);text-align:start;}
.sheet-table th.r,.sheet-table td.r{text-align:end;}
.sheet-table td{padding:12px 8px;border-bottom:1px solid var(--ge-border-soft);font-size:12.5px;vertical-align:top;overflow-wrap:anywhere;}
.sheet-sub-table th{font-size:10.5px;color:var(--ge-muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--ge-border);text-transform:none;letter-spacing:0;}
.sheet-sub-table td{padding:7px 8px;font-size:11.5px;}
.sheet-flex{display:flex;gap:28px;align-items:flex-start;}
.sheet-totals{width:250px;flex:none;display:flex;flex-direction:column;gap:6px;}
.sheet-totals .trow{display:flex;justify-content:space-between;font-size:12px;color:var(--ge-muted);}
.sheet-totals .trow .v{color:var(--ge-text);}
.sheet-grand{display:flex;justify-content:space-between;align-items:center;background:var(--ge-primary);color:#ffffff;border-radius:9px;padding:11px 13px;margin-top:5px;}
.sheet-qr{display:flex;align-items:center;gap:10px;margin-top:12px;border:1px solid var(--ge-border);border-radius:10px;padding:10px;}
.sheet-qr img{width:72px;height:72px;flex:none;background:#ffffff;}
.sheet-foot{display:flex;gap:28px;align-items:flex-end;border-top:1px solid var(--ge-border);padding-top:18px;}
.sheet-legal{text-align:center;font-size:9.5px;color:var(--ge-faint);border-top:1px solid var(--ge-border-soft);padding-top:12px;}
@media (max-width:640px){
  .sheet{padding:24px 14px;}
  /* shrink the header so the logo + title never leave the frame */
  .sheet-head{gap:10px;}
  .sheet-logo{max-width:120px;max-height:46px;}
  .sheet-logo-fallback{width:46px;height:46px;border-radius:10px;font-size:22px;}
  .sheet-title{font-size:17px;}
  .sheet-stamp{font-size:11px;letter-spacing:0.5px;padding:2px 8px;margin-top:5px;}
  /* keep From / Bill To / Details on one row so the invoice stays short */
  .sheet-cols{gap:8px;padding:14px 0;}
  .sheet-col-title{font-size:8px;letter-spacing:0.3px;margin-bottom:3px;}
  .sheet-col-body{font-size:9.5px;line-height:1.5;}
  /* QR sits below the totals on mobile */
  .sheet-flex{flex-direction:column-reverse;}
  .sheet-totals{width:100%;}
  .sheet-table th,.sheet-table td{padding:7px 5px;font-size:10.5px;}
  .sheet-sub-table th,.sheet-sub-table td{padding:5px 4px;font-size:9.5px;}
}

/* Transaction result */
.tx-hero{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:24px 0 10px;}
.tx-icon{width:92px;height:92px;border-radius:50%;display:flex;align-items:center;justify-content:center;animation:tx-pop 0.5s cubic-bezier(0.34,1.56,0.64,1) both;}
.tx-icon-success{background:var(--ge-success-bg);}
.tx-icon-pending{background:var(--ge-warning-bg);}
.tx-icon-failed{background:var(--ge-danger-bg);}
.tx-title{margin:8px 0 0;font-size:24px;font-weight:700;}
.tx-sub{margin:0;font-size:14px;color:var(--ge-muted);max-width:440px;line-height:1.6;}
.tx-amount{margin-top:8px;font-size:30px;font-weight:700;letter-spacing:-0.5px;}
.tx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 24px;text-align:start;}
.tx-grid .k{font-size:11.5px;color:var(--ge-muted);}
.tx-grid .v{font-size:13.5px;font-weight:600;}
.tx-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;}
.tx-actions .btn{flex:1 1 160px;}
.tx-draw{animation:tx-draw 0.6s ease-out 0.2s both;}
.tx-spin-icon{animation:tx-spin 1.2s linear infinite;}
@keyframes tx-pop{0%{transform:scale(0.4);opacity:0;}60%{transform:scale(1.08);}100%{transform:scale(1);opacity:1;}}
@keyframes tx-draw{from{stroke-dashoffset:48;}to{stroke-dashoffset:0;}}
@keyframes tx-spin{to{transform:rotate(360deg);}}

/* QR page */
.qr-img{width:232px;height:232px;border:1px solid var(--ge-border);border-radius:14px;background:#ffffff;object-fit:contain;}

/* Print rules */
@page{size:A4;margin:0;}
@media print{
  html,body{background:#ffffff !important;}
  [data-noprint],.sheet-toolbar,.fab,.powered{display:none !important;}
  .sheet{box-shadow:none !important;margin:0 auto !important;border-radius:0 !important;}
  .sheet-page{padding:0;background:#ffffff;}
}

/* Refunded transaction state */
.tx-icon-refunded{background:var(--ge-primary-soft);}
.text-bg-refunded{background:#E8EFF9;color:#155BB5;border:1px solid #BBD0EC;}
