.sidebar { width: 250px; min-height: 100vh; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; flex: 0 0 250px; } main { min-width: 0; } }
.sidebar .nav-link { color: rgba(255,255,255,.75); border-radius: .375rem; padding: .45rem .75rem; }
.sidebar .nav-link:hover { color: #fff; background: rgba(255,255,255,.08); }
.sidebar .nav-link.active { color: #fff; background: var(--bs-primary); }
.sidebar .nav-link i { width: 1.4rem; display: inline-block; }
.sidebar .nav-section { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: rgba(255,255,255,.4); padding: .9rem .75rem .3rem; }
/* 3.48.0: folding groups in the sidebar */
.sidebar .nav-link { display: flex; align-items: center; gap: .15rem; }
.sidebar .nav-group { width: 100%; border: 0; background: transparent; font-weight: 500; }
.sidebar .nav-group.has-active { color: #fff; }
.sidebar .nav-group .nav-caret { width: auto; font-size: .7rem; opacity: .6; transition: transform .15s; margin-left: .35rem; }
.sidebar .nav-group[aria-expanded="true"] .nav-caret { transform: rotate(180deg); }
.sidebar .nav-group[aria-expanded="true"] .nav-group-sum { display: none; }
.sidebar .nav-sub { margin: .1rem 0 .35rem 1.05rem; padding-left: .35rem; border-left: 1px solid rgba(255,255,255,.12); }
.sidebar .nav-sub .nav-link { padding: .32rem .6rem; font-size: .9rem; }
.sidebar .nav-sub .nav-link i { width: 1.25rem; font-size: .85rem; }
.sidebar .nav-link .badge { font-size: .68rem; }
/* 3.48.1: admin dashboard – one compact attention bar (only what is waiting), sound and auto reload */
.att-bar .att-title { font-weight: 600; font-size: .95rem; margin-right: .25rem; white-space: nowrap; }
.att-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .7rem; border-radius: 999px; font-size: .85rem; text-decoration: none; border: 1px solid; white-space: nowrap; }
.att-chip b { font-size: .95rem; }
.att-chip.att-danger { color: var(--bs-danger-text-emphasis); background: var(--bs-danger-bg-subtle); border-color: var(--bs-danger-border-subtle); }
.att-chip.att-warning { color: var(--bs-warning-text-emphasis); background: var(--bs-warning-bg-subtle); border-color: var(--bs-warning-border-subtle); }
.att-chip:hover { filter: brightness(.96); }
.dash-reload { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-size: .85rem; }
.dash-reload .form-select { width: auto; }
@media (max-width: 767.98px) { .dash-reload { margin-left: 0 !important; width: 100%; } }
/* 3.48.1: sidebar search */
.side-search { padding: .5rem .5rem 0; }
.side-search .form-control { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.15); color: #fff; }
.side-search .form-control::placeholder { color: rgba(255,255,255,.45); }
.side-search .form-control:focus { background: rgba(255,255,255,.12); color: #fff; box-shadow: none; border-color: rgba(255,255,255,.35); }
.sidebar .nav-link mark { padding: 0; background: rgba(255,193,7,.35); color: inherit; }
.side-empty { color: rgba(255,255,255,.5); font-size: .85rem; padding: .5rem .75rem; }
.stat-card .value { font-size: 1.5rem; font-weight: 600; }
.stat-card .label { font-size: .8rem; color: var(--bs-secondary-color); text-transform: uppercase; letter-spacing: .04em; }
.table td, .table th { vertical-align: middle; }
.op-choice input { display: none; }
.op-choice label { cursor: pointer; border: 2px solid var(--bs-border-color); border-radius: .5rem; padding: .6rem .9rem; display: block; text-align: center; }
.op-choice input:checked + label { border-color: var(--bs-primary); background: rgba(13,110,253,.08); font-weight: 600; }
pre.json { max-height: 420px; overflow: auto; background: #0f172a; color: #e2e8f0; padding: 1rem; border-radius: .5rem; font-size: .8rem; }
textarea.code { font-family: SFMono-Regular, Menlo, Consolas, monospace; font-size: .8rem; }
.chart-bar { background: var(--bs-primary); border-radius: 3px 3px 0 0; min-height: 2px; }


.pin-input { letter-spacing: .6em; font-weight: 600; }
.pin-modal { position: fixed; inset: 0; background: rgba(15, 23, 42, .55); display: none; align-items: center; justify-content: center; z-index: 1080; padding: 1rem; }
.pin-modal.show { display: flex; }
.pin-modal .pin-box { width: 100%; max-width: 440px; background: var(--bs-body-bg, #fff); border-radius: .75rem; max-height: calc(100vh - 2rem); overflow-y: auto; }
/* confirm popup of a request: number and amount big, so a wrong one is seen before the PIN (fits a phone: sizes follow the width) */
.pin-hero { text-align: center; border: 2px solid rgba(99, 102, 241, .35); border-radius: .75rem; padding: .75rem .5rem; background: rgba(99, 102, 241, .06); }
.pin-hero-op { display: flex; align-items: center; justify-content: center; gap: .4rem; font-weight: 600; color: var(--bs-secondary-color, #64748b); margin-bottom: .25rem; }
.pin-hero-label { font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; color: var(--bs-secondary-color, #64748b); margin-top: .35rem; }
.pin-hero-number { font-size: clamp(1.6rem, 8.5vw, 2.6rem); font-weight: 800; line-height: 1.15; letter-spacing: .03em; font-variant-numeric: tabular-nums; word-break: break-all;
    background: linear-gradient(90deg, #2563eb, #7c3aed); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pin-hero-amount { font-size: clamp(1.8rem, 10vw, 2.9rem); font-weight: 800; line-height: 1.1; color: #15803d; font-variant-numeric: tabular-nums; }
.pin-hero-cost { font-size: .85rem; margin-top: .35rem; }
@media (max-width: 400px) { .pin-modal { padding: .5rem; } .pin-modal .pin-box .card-body { padding: 1rem !important; } }
main.flex-grow-1 { min-width: 0; } /* flex item: never grow wider than the screen because of a wide table */
pre { max-width: 100%; overflow-x: auto; }
#op-wrap.op-locked select { pointer-events: none; background-color: var(--bs-secondary-bg); }
.saved-chips { display: flex; gap: .5rem; overflow-x: auto; padding-bottom: .25rem; scrollbar-width: thin; }
.saved-chip { flex: none; display: flex; flex-direction: column; align-items: flex-start; gap: 0; border: 1px solid var(--bs-border-color); background: var(--bs-body-bg); border-radius: .8rem; padding: .35rem .7rem; font-size: .85rem; line-height: 1.2; color: var(--bs-body-color); }
.saved-chip small { color: var(--bs-secondary-color); font-size: .72rem; }
.saved-chip:hover, .saved-chip:focus { border-color: var(--bs-primary); }
.offer-strip { display: flex; gap: .6rem; overflow-x: auto; padding-bottom: .4rem; scroll-snap-type: x mandatory; }
.offer-card-mini { flex: none; width: 168px; scroll-snap-align: start; text-align: left; display: flex; flex-direction: column; gap: .2rem; border: 1px solid var(--bs-border-color); background: var(--bs-body-bg); border-radius: 1rem; padding: .65rem .75rem; color: var(--bs-body-color); font-size: .85rem; }
.offer-card-mini .price { font-size: 1.15rem; font-weight: 700; color: var(--bs-primary); }
.offer-card-mini:hover { border-color: var(--bs-primary); box-shadow: 0 4px 14px rgba(var(--bs-primary-rgb), .15); }
.chat { display: flex; flex-direction: column; gap: .6rem; }
.chat-msg { max-width: 85%; padding: .7rem .9rem; border-radius: 1rem; background: var(--bs-body-bg); box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.chat-msg.me { align-self: flex-end; background: rgba(var(--bs-primary-rgb), .1); border-bottom-right-radius: .3rem; }
.chat-msg.staff { align-self: flex-start; border-bottom-left-radius: .3rem; }
.chat-msg.admin-view.staff { align-self: flex-end; background: rgba(var(--bs-primary-rgb), .1); }
.chat-msg.admin-view.me { align-self: flex-start; background: var(--bs-body-bg); }
html[lang="bn"] body { font-family: "Hind Siliguri", "Noto Sans Bengali", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.lang-switch a { text-decoration: none; }

/* the hidden attribute always wins over Bootstrap display utilities (d-flex …) */
[hidden] { display: none !important; }

/* ---- user offers / packages ---- */
.op-logo { --op: #6f42c1; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #fff; color: var(--op); overflow: hidden; flex: none; }
.op-logo b { font-weight: 800; letter-spacing: -.02em; }
.op-logo img { width: 100%; height: 100%; object-fit: contain; padding: 12%; }
.op-logo.lg { width: 68px; height: 68px; box-shadow: 0 0 0 7px rgba(255,255,255,.28); font-size: 1.35rem; }
.op-logo.xs { width: 20px; height: 20px; font-size: .55rem; box-shadow: inset 0 0 0 1.5px var(--op); }
.pk-filters { border: 0; border-radius: 1.1rem; overflow: hidden; box-shadow: 0 4px 18px rgba(15,23,42,.06); }
.pk-row { display: flex; flex-wrap: nowrap; gap: .45rem; align-items: center; padding: .6rem .75rem; overflow-x: auto; scrollbar-width: none; }
.pk-row::-webkit-scrollbar { display: none; }
.pk-row + .pk-row { border-top: 1px solid var(--bs-border-color-translucent); }
.pk-row[data-filter=op] { background: rgba(var(--app-primary-rgb), .04); }
.pk-row[data-filter=type] { background: rgba(25,135,84,.04); }
.pk-row[data-filter=sort] { background: rgba(111,66,193,.04); }
.pk-chip { --op: var(--app-primary); display: inline-flex; align-items: center; gap: .35rem; white-space: nowrap; border: 1.5px solid var(--bs-border-color); background: var(--bs-body-bg);
    color: var(--bs-body-color); border-radius: 2rem; padding: .3rem .85rem; font-size: .85rem; font-weight: 600; line-height: 1.4; transition: all .12s; }
.pk-chip.op { border-color: color-mix(in srgb, var(--op) 45%, transparent); color: var(--op); }
.pk-chip:hover { transform: translateY(-1px); }
.pk-chip.active { background: var(--app-gradient); border-color: transparent; color: #fff; box-shadow: 0 4px 12px rgba(var(--app-primary-rgb), .3); }
.pk-chip.active .op-logo { box-shadow: none; }
.pk-search { border-radius: 2rem; max-width: 420px; }
.pk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(178px, 1fr)); gap: 1rem; }
.pk-card { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; color: #fff; border-radius: 1.4rem; padding: 1.1rem .9rem .9rem;
    background: linear-gradient(165deg, #ffb238 0%, #ff6a88 42%, #c13dd3 72%, #7b1fd1 100%); box-shadow: 0 10px 24px rgba(193,61,211,.25); transition: transform .15s, box-shadow .15s; }
.pk-card:hover { transform: translateY(-3px); box-shadow: 0 16px 30px rgba(193,61,211,.33); }
.pk-comm { position: absolute; top: .7rem; right: .7rem; background: rgba(0,0,0,.28); color: #7dffb3; font-weight: 700; font-size: .72rem; border-radius: 1rem; padding: .1rem .5rem; }
.pk-type { margin-top: .9rem; background: rgba(255,255,255,.25); border-radius: 1rem; padding: .05rem .6rem; font-size: .72rem; font-weight: 600; }
.pk-title { margin-top: .35rem; font-weight: 800; font-size: 1.12rem; line-height: 1.2; text-shadow: 0 1px 2px rgba(0,0,0,.15); word-break: break-word; }
.pk-valid { font-size: .8rem; opacity: .92; margin-top: .25rem; }
.pk-details { font-size: .7rem; opacity: .8; margin-top: .25rem; }
.pk-price { margin-top: auto; padding-top: .9rem; font-weight: 800; font-size: 1.6rem; line-height: 1; }
.pk-price small { font-size: .8rem; font-weight: 600; margin-right: .1rem; }
.pk-buy { width: 100%; margin-top: .75rem; border: 0; border-radius: .9rem; background: #fff1e8; color: #7a2b00; font-weight: 700; padding: .55rem; transition: background .12s; }
.pk-buy:hover { background: #fff; }
.pk-buy:disabled { opacity: .6; }
@media (max-width: 575.98px) {
    .pk-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .7rem; }
    .pk-card { padding: .9rem .6rem .7rem; border-radius: 1.1rem; }
    .op-logo.lg { width: 54px; height: 54px; font-size: 1.1rem; box-shadow: 0 0 0 5px rgba(255,255,255,.28); }
    .pk-title { font-size: .98rem; }
    .pk-price { font-size: 1.35rem; }
}

/* ---- scratch cards ---- */
.pk-card.sc-card { background: linear-gradient(165deg, #2dd4bf 0%, #0ea5e9 45%, #4f46e5 100%); box-shadow: 0 10px 24px rgba(14,165,233,.25); }
.pk-card.sc-card:hover { box-shadow: 0 16px 30px rgba(79,70,229,.33); }
.sc-stock { margin-top: .35rem; font-size: .72rem; font-weight: 600; background: rgba(255,255,255,.22); border-radius: 1rem; padding: .05rem .55rem; }
.sc-stock.out { background: rgba(0,0,0,.3); }
.pk-card.sc-card .pk-buy { background: #ecfeff; color: #164e63; }
.sc-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: .9rem; }
.sc-ticket { position: relative; background: var(--bs-body-bg); border: 1.5px dashed rgba(var(--app-primary-rgb), .35); border-radius: 1rem; padding: .9rem 1rem; box-shadow: 0 4px 14px rgba(15,23,42,.05); }
.sc-ticket.is-new { border-style: solid; border-color: #198754; box-shadow: 0 6px 20px rgba(25,135,84,.18); }
.sc-head { display: flex; align-items: center; gap: .4rem; font-size: .9rem; }
.sc-pin { margin: .6rem 0 .4rem; padding: .55rem .7rem; border-radius: .7rem; text-align: center; font: 700 1.35rem/1.2 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .08em;
    background: repeating-linear-gradient(135deg, rgba(var(--app-primary-rgb), .08) 0 8px, rgba(var(--app-primary-rgb), .14) 8px 16px); color: var(--bs-body-color); word-break: break-all; }
.sc-ticket.is-new .sc-pin, .sc-pin.shown { background: rgba(25,135,84,.08); }
.sc-meta { display: flex; flex-wrap: wrap; gap: .2rem .9rem; font-size: .75rem; color: var(--bs-secondary-color); }
.sc-actions { display: flex; gap: .4rem; margin-top: .6rem; }
@media print {
    .no-print, .m-appbar, .m-tabbar, aside, nav, header, .app-sidebar, .pwa-banner { display: none !important; }
    .sc-list { grid-template-columns: repeat(2, 1fr); }
    .sc-ticket { break-inside: avoid; box-shadow: none; border: 1.5px dashed #000; }
}

/* ---- sign-up account types ---- */
.signup-plans { display: grid; gap: .5rem; }
.signup-plan { display: block; border: 1.5px solid var(--bs-border-color); border-radius: .9rem; padding: .6rem .8rem .6rem 2.2rem; position: relative; cursor: pointer; }
.signup-plan input { position: absolute; left: .8rem; top: .85rem; }
.signup-plan:has(input:checked) { border-color: var(--app-primary); background: rgba(var(--app-primary-rgb), .06); }
@media print {
    .statement { border: 0 !important; box-shadow: none !important; }
    body { background: #fff !important; }
    main, .app-content, .container-fluid { padding: 0 !important; margin: 0 !important; }
}
.legend-box { display: inline-block; width: .7rem; height: .7rem; border-radius: 2px; vertical-align: -1px; }

/* messages on a transaction (user ⇄ team) */
.tx-chat { display: flex; flex-direction: column; gap: .5rem; max-height: 420px; overflow-y: auto; }
.tx-msg { max-width: 85%; }
.tx-msg.me { align-self: flex-end; text-align: right; }
.tx-msg .bubble { display: inline-block; padding: .5rem .75rem; border-radius: 1rem; background: var(--bs-tertiary-bg); text-align: left; white-space: normal; word-break: break-word; }
.tx-msg.me .bubble { background: var(--bs-primary); color: #fff; border-bottom-right-radius: .3rem; }
.tx-msg.them .bubble { border-bottom-left-radius: .3rem; }
.tx-msg .meta { font-size: .7rem; color: var(--bs-secondary-color); margin-top: .15rem; }
.mq-timer { background: var(--bs-secondary-bg); color: var(--bs-body-color); font-variant-numeric: tabular-nums; }
.mq-timer.warn { background: #fef3c7; color: #92400e; }
.mq-timer.late { background: #fee2e2; color: #b91c1c; }
.delivered-code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 1.3rem; font-weight: 700; letter-spacing: .04em; word-break: break-all; }
.m-tile-ico { width: 48px; height: 48px; border-radius: 14px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.35rem; color: #fff; flex: none; }
.m-tile-ico.c1 { background: linear-gradient(135deg, #3b82f6, #6366f1); } .m-tile-ico.c2 { background: linear-gradient(135deg, #ec4899, #f43f5e); }
.m-tile-ico.c3 { background: linear-gradient(135deg, #10b981, #059669); } .m-tile-ico.c4 { background: linear-gradient(135deg, #f59e0b, #f97316); }
.m-tile-ico.c5 { background: linear-gradient(135deg, #8b5cf6, #d946ef); } .m-tile-ico.c6 { background: linear-gradient(135deg, #06b6d4, #0ea5e9); }
.m-tile-ico.c7 { background: linear-gradient(135deg, #64748b, #334155); } .m-tile-ico.c8 { background: var(--app-gradient); }
.cs-packages { display: grid; gap: .5rem; }
.cs-pkg { display: flex; align-items: center; gap: .75rem; padding: .8rem 1rem; border: 2px solid var(--bs-border-color); border-radius: .9rem; cursor: pointer; background: var(--bs-body-bg); }
.cs-pkg input { accent-color: var(--bs-primary); width: 1.1rem; height: 1.1rem; flex: none; }
.cs-pkg-body { flex: 1; min-width: 0; }
.cs-pkg-price { font-weight: 700; text-align: right; white-space: nowrap; }
.cs-pkg:has(input:checked) { border-color: var(--bs-primary); background: rgba(var(--bs-primary-rgb), .06); }

/* trial licence ribbon (licence server trial) */
.trial-ribbon { position: fixed; right: 12px; bottom: 12px; z-index: 1030; background: #0ea5e9; color: #fff; font-size: .75rem; font-weight: 600; padding: .3rem .7rem; border-radius: 999px; box-shadow: 0 4px 14px rgba(14, 165, 233, .35); pointer-events: none; }
@media (max-width: 991.98px) { .trial-ribbon { bottom: calc(80px + env(safe-area-inset-bottom)); } }

/* 3.23.0 service grid (dashboards): coloured tiles, one per service / wallet */
.svc-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; padding: .75rem; border-radius: 1rem; background: var(--bs-tertiary-bg, #f4f7fd); border: 1px solid var(--bs-border-color-translucent, rgba(13, 110, 253, .15)); }
@media (max-width: 575.98px) { .svc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; padding: .5rem; } }
.svc-tile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .45rem; min-height: 96px; padding: .7rem .35rem; border-radius: .9rem; color: #fff !important; text-decoration: none; font-weight: 700; text-align: center; box-shadow: 0 4px 12px rgba(15, 23, 42, .12); transition: transform .15s ease, box-shadow .15s ease; }
.svc-tile:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(15, 23, 42, .18); }
.svc-tile .svc-name { font-size: .95rem; line-height: 1.15; text-shadow: 0 1px 2px rgba(0, 0, 0, .18); overflow-wrap: anywhere; }
@media (max-width: 575.98px) { .svc-tile { min-height: 84px; } .svc-tile .svc-name { font-size: .8rem; } }
.svc-ico { width: 46px; height: 46px; border-radius: 50%; background: #fff; color: #1e293b; display: inline-flex; align-items: center; justify-content: center; font-size: 1.35rem; box-shadow: 0 2px 6px rgba(0, 0, 0, .12); overflow: hidden; }
.svc-ico .op-logo.sg { width: 46px; height: 46px; font-size: .85rem; box-shadow: none; }
.svc-tile.g0 { background: linear-gradient(135deg, #5b7be6, #764ba2); } .svc-tile.g1 { background: linear-gradient(135deg, #8b5cf6, #6366f1); }
.svc-tile.g2 { background: linear-gradient(135deg, #0ea5e9, #06b6d4); } .svc-tile.g3 { background: linear-gradient(135deg, #f43f5e, #f093fb); }
.svc-tile.g4 { background: linear-gradient(135deg, #38bdf8, #00f2fe); } .svc-tile.g5 { background: linear-gradient(135deg, #22c55e, #2dd4bf); }
.svc-tile.g6 { background: linear-gradient(135deg, #fb7185, #fcd34d); } .svc-tile.g7 { background: linear-gradient(135deg, #2bc0c4, #3b1a6e); }
.svc-tile.g8 { background: linear-gradient(135deg, #f59e0b, #ef4444); } .svc-tile.g9 { background: linear-gradient(135deg, #64748b, #0f766e); }

/* 3.26.0 number suggestions under the number / account box */
.num-suggest { position: absolute; left: 0; right: 0; top: 100%; z-index: 1050; max-height: 260px; overflow-y: auto; margin-top: 2px; }
.num-suggest .list-group-item { padding: .55rem .75rem; }
.num-suggest mark { padding: 0; background: rgba(13, 110, 253, .18); color: inherit; border-radius: 2px; }

/* 3.30.0 bKash merchant payment */
.btn-bkash { --bs-btn-color: #fff; --bs-btn-bg: #e2136e; --bs-btn-border-color: #e2136e; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #c40f5f; --bs-btn-hover-border-color: #c40f5f;
    --bs-btn-active-color: #fff; --bs-btn-active-bg: #a80c51; --bs-btn-active-border-color: #a80c51; --bs-btn-disabled-bg: #e2136e; --bs-btn-disabled-border-color: #e2136e; --bs-btn-disabled-color: #fff; }
.bkash-badge { width: 64px; height: 64px; border-radius: 1.1rem; background: #e2136e; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.8rem; }
.bkash-badge.sm { width: 42px; height: 42px; border-radius: .8rem; font-size: 1.2rem; flex: none; }
.border-bkash { border-top: 4px solid #e2136e !important; }

/* 3.31.0 "Last 10 requests" box next to the request forms */
.rr-side { position: sticky; top: 1rem; }
.rr-box { border-radius: 1rem; overflow: hidden; background: var(--bs-body-bg); box-shadow: 0 6px 24px rgba(15, 23, 42, .08); border: 1px solid var(--bs-border-color-translucent); }
.rr-head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .75rem 1rem; color: #fff; font-weight: 600;
    background: linear-gradient(90deg, #ec4899, #a855f7); }
.rr-dot { width: 9px; height: 9px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 3px rgba(34, 197, 94, .25); }
.rr-busy .rr-dot { background: #facc15; box-shadow: 0 0 0 3px rgba(250, 204, 21, .3); animation: rr-pulse 1.2s infinite; }
@keyframes rr-pulse { 50% { opacity: .35; } }
.rr-refresh { border: 0; background: rgba(255, 255, 255, .2); color: #fff; width: 28px; height: 28px; border-radius: .5rem; line-height: 1; }
.rr-refresh.spin i { display: inline-block; animation: rr-spin .8s linear infinite; }
@keyframes rr-spin { to { transform: rotate(360deg); } }
.rr-cols, .rr-row { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, .8fr) minmax(0, .8fr) minmax(0, 1.1fr); gap: .5rem; align-items: center; padding: .55rem 1rem; }
.rr-cols { font-size: .78rem; font-weight: 600; color: #fff; background: linear-gradient(90deg, #a855f7cc, #ec4899cc); }
.rr-body { max-height: 560px; overflow-y: auto; }
.rr-row { text-decoration: none; color: inherit; border-bottom: 1px solid var(--bs-border-color-translucent); }
.rr-row:nth-child(even) { background: rgba(236, 72, 153, .04); }
.rr-row:hover { background: rgba(168, 85, 247, .09); }
.rr-num { display: flex; align-items: center; gap: .5rem; min-width: 0; }
.rr-num .op-logo.xs { width: 26px; height: 26px; font-size: .6rem; }
.rr-n { font-weight: 700; color: #198754; letter-spacing: .01em; }
.rr-num small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rr-amt { text-align: right; font-weight: 700; white-space: nowrap; }
.rr-st .badge { font-size: .78rem; padding: .4em .7em; }
.rr-time { line-height: 1.25; }
@media (max-width: 575.98px) {
    .rr-cols { display: none; }
    .rr-row { grid-template-columns: minmax(0, 1fr) auto; row-gap: .15rem; padding: .6rem .8rem; }
    .rr-amt { grid-column: 2; grid-row: 1; } .rr-st { grid-column: 2; grid-row: 2; text-align: right; } .rr-time { grid-column: 1; grid-row: 2; font-size: .72rem; }
}
@media (max-width: 991.98px) { .rr-side { position: static; } }

/* 3.32.0 "Switch service" pills under the request forms */
.sw-box { background: linear-gradient(135deg, rgba(236, 72, 153, .06), rgba(251, 191, 36, .06)); border: 1px solid var(--bs-border-color-translucent); border-radius: 1rem; padding: .75rem .9rem .9rem; }
.sw-title { font-size: .9rem; font-weight: 600; margin-bottom: .6rem; }
.sw-title i { color: var(--app-primary); }
.sw-pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.sw-pill { display: inline-flex; align-items: center; gap: .45rem; padding: .3rem .85rem .3rem .3rem; border-radius: 2rem; color: #fff !important; text-decoration: none;
    font-weight: 600; font-size: .9rem; box-shadow: 0 3px 8px rgba(15, 23, 42, .12); transition: transform .12s, box-shadow .12s; text-shadow: 0 1px 2px rgba(0, 0, 0, .15); }
.sw-pill:hover { transform: translateY(-1px); box-shadow: 0 6px 14px rgba(15, 23, 42, .18); }
.sw-pill.on { outline: 3px solid rgba(255, 255, 255, .95); box-shadow: 0 0 0 5px rgba(99, 102, 241, .45), 0 6px 14px rgba(15, 23, 42, .2); }
.sw-ico { width: 30px; height: 30px; border-radius: 50%; background: #fff; color: #334155; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; flex: none; font-size: 1rem; text-shadow: none; }
.sw-ico .op-logo.sg { width: 30px; height: 30px; font-size: .6rem; box-shadow: none; }
.sw-pill.p0 { background: linear-gradient(135deg, #5b7be6, #764ba2); } .sw-pill.p1 { background: linear-gradient(135deg, #fb7185, #f472b6); }
.sw-pill.p2 { background: linear-gradient(135deg, #38bdf8, #22d3ee); } .sw-pill.p3 { background: linear-gradient(135deg, #34d399, #6ee7b7); }
.sw-pill.p4 { background: linear-gradient(135deg, #f472b6, #fcd34d); } .sw-pill.p5 { background: linear-gradient(135deg, #2bc0c4, #4c1d95); }
.sw-pill.p6 { background: linear-gradient(135deg, #fb923c, #fda4af); } .sw-pill.p7 { background: linear-gradient(135deg, #8b5cf6, #6366f1); }
@media (max-width: 575.98px) { .sw-pills { flex-wrap: nowrap; overflow-x: auto; padding: .4rem .3rem; scrollbar-width: none; } .sw-pills::-webkit-scrollbar { display: none; } .sw-pill { flex: none; } }

/* 3.34.0: list footer with page size */
.pager-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; }
.pager-size { width: auto; min-width: 4.5rem; padding-top: .15rem; padding-bottom: .15rem; }

/* 3.34.0 (owner): big number / amount boxes on every request form, and a bigger number / amount in the PIN confirmation */
.form-control.big-input { font-size: clamp(1.35rem, 5.2vw, 1.85rem); font-weight: 700; letter-spacing: .04em; font-variant-numeric: tabular-nums; padding: .6rem .95rem; min-height: 3.6rem; border-width: 2px; border-radius: .7rem; }
.form-control.big-input::placeholder { font-weight: 500; letter-spacing: .02em; opacity: .45; }
.form-control.big-input:focus { border-color: var(--bs-primary, #4f46e5); box-shadow: 0 0 0 .25rem rgba(79, 70, 229, .15); }
.form-control.big-amount { color: #15803d; }
.big-group > .form-control.big-input { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.big-group > .btn { border-width: 2px; border-top-right-radius: .7rem; border-bottom-right-radius: .7rem; font-weight: 600; }
@media (max-width: 400px) { .big-group > .btn { padding-left: .6rem; padding-right: .6rem; font-size: .9rem; } }
[data-bs-theme="dark"] .form-control.big-amount { color: #4ade80; }
.pin-modal .pin-box { max-width: 480px; }
.pin-hero { padding: 1rem .75rem; border-radius: 1rem; }
.pin-hero-op { font-size: 1rem; }
.pin-hero-label { font-size: .85rem; font-weight: 600; margin-top: .55rem; }
.pin-hero-number { font-size: clamp(2rem, 10.5vw, 3.1rem); letter-spacing: .05em; }
.pin-hero-amount { font-size: clamp(2.2rem, 12vw, 3.4rem); }
.pin-hero-cost { font-size: .95rem; }
.pin-modal .pin-input { font-size: 1.8rem; letter-spacing: .5em; font-weight: 700; min-height: 3.4rem; }
.pin-modal .pin-ok, .pin-modal .pin-cancel { padding-top: .7rem; padding-bottom: .7rem; font-weight: 600; font-size: 1.05rem; }

/* 3.34.0: admin user page */
.u-head .u-avatar { width: 64px; height: 64px; flex: 0 0 64px; border-radius: 18px; display: grid; place-items: center; font-size: 1.5rem; font-weight: 800; color: #fff; background: linear-gradient(135deg, #4f46e5, #7c3aed); }
.u-stat { display: flex; align-items: center; gap: .8rem; height: 100%; padding: .9rem 1rem; border-radius: .9rem; background: var(--bs-body-bg, #fff); border: 1px solid var(--bs-border-color, #e5e7eb); }
.u-stat-ic { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 12px; display: grid; place-items: center; font-size: 1.2rem; }
.u-stat-ic.i-green { background: #ecfdf5; color: #059669; } .u-stat-ic.i-indigo { background: #eef2ff; color: #4f46e5; }
.u-stat-ic.i-sky { background: #f0f9ff; color: #0284c7; } .u-stat-ic.i-amber { background: #fffbeb; color: #d97706; }
.u-stat-v { font-size: 1.25rem; font-weight: 700; line-height: 1.15; }
.u-stat-l { font-size: .8rem; color: var(--bs-secondary-color, #64748b); font-weight: 600; }
.u-stat-s { font-size: .75rem; color: var(--bs-secondary-color, #64748b); }
.u-tabs { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
.u-tabs .nav-link { white-space: nowrap; font-weight: 600; }
@media (max-width: 575.98px) { .u-tabs .nav-link { padding: .5rem .7rem; } .u-head .u-avatar { width: 52px; height: 52px; flex-basis: 52px; font-size: 1.2rem; } }
.u-dl { display: grid; grid-template-columns: minmax(0, 45%) 1fr; margin: 0; }
.u-dl dt, .u-dl dd { padding: .55rem 1rem; border-bottom: 1px solid var(--bs-border-color-translucent, #eef0f4); margin: 0; }
.u-dl dt { font-weight: 500; color: var(--bs-secondary-color, #64748b); }
.u-lock:disabled .u-save { display: none; }
.u-lock:disabled .form-control, .u-lock:disabled .form-select { background-color: var(--bs-tertiary-bg, #f8fafc); }
.u-lock:disabled .form-text a, .u-lock:disabled #u-parent-q { display: none; }
.u-lock:disabled button[type=submit], .u-lock:disabled .btn-primary { display: none; }
.u-lock.editing { padding: .75rem; margin: -.75rem; border-radius: .75rem; background: rgba(79, 70, 229, .04); outline: 2px dashed rgba(79, 70, 229, .25); }
@media (max-width: 575.98px) { .u-stat { flex-direction: column; align-items: flex-start; gap: .5rem; padding: .8rem; } .u-stat-ic { width: 36px; height: 36px; flex-basis: 36px; font-size: 1rem; } .u-stat-v { font-size: 1.08rem; word-break: break-word; } }

/* 3.34.0: My rates */
.rates-legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; color: var(--bs-secondary-color, #64748b); }
.rates-legend .dot { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; margin-right: .15rem; }
.rates-legend .dot-c { background: #dc3545; } .rates-legend .dot-m { background: #198754; }
/* 3.35.0: one table on every screen; the operator column stays while the rest scrolls on phones */
.op-logo.rt { width: 30px; height: 30px; font-size: .62rem; box-shadow: inset 0 0 0 1.5px var(--op); }
.op-logo.rt img { padding: 8%; }
.rt-table { font-size: .9rem; }
.rt-table th, .rt-table td { white-space: nowrap; padding: .55rem .6rem; }
.rt-table thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }
.rt-sticky { position: sticky; left: 0; z-index: 1; background: var(--bs-body-bg, #fff); }
.rt-table thead .rt-sticky { background: var(--bs-tertiary-bg, #f8f9fa); }
.rt-table tbody tr:hover .rt-sticky { background: var(--bs-tertiary-bg, #f8f9fa); }
.rt-table .rt-plan { background: rgba(79, 70, 229, .04); border-left: 1px dashed rgba(79, 70, 229, .25); }
.rt-slabs { display: inline-block; text-align: right; font-size: .78rem; font-weight: 500; line-height: 1.35; }
.plan-up { border: 2px solid rgba(79, 70, 229, .2); border-radius: 1rem; padding: 1rem; background: linear-gradient(180deg, rgba(79, 70, 229, .05), transparent 60%), var(--bs-body-bg, #fff); }
.plan-up-price { font-weight: 800; font-size: 1.15rem; color: #4f46e5; white-space: nowrap; background: rgba(79, 70, 229, .08); border-radius: .6rem; padding: .2rem .55rem; }
@media (max-width: 575.98px) {
    .rt-table { font-size: .8rem; }
    .rt-table th, .rt-table td { padding: .45rem .4rem; }
    .op-logo.rt { width: 24px; height: 24px; }
    .rt-name { white-space: normal; max-width: 7.5rem; display: inline-block; line-height: 1.2; }
}

/* User guide (3.36.0) */
.guide-lang .nav-link { border-radius: 999px; padding: .35rem 1rem; }
.guide-hero { background: linear-gradient(135deg, rgba(var(--bs-primary-rgb), .08), transparent 60%); }
.guide-hero-ico { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; font-size: 1.6rem; color: #fff; background: var(--bs-primary); }
.guide-chip { display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .7rem .3rem .35rem; border-radius: 999px; border: 1px solid var(--bs-border-color); font-size: .85rem; text-decoration: none; color: var(--bs-body-color); background: var(--bs-body-bg); }
.guide-chip span { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: .75rem; font-weight: 700; color: #fff; background: var(--bs-primary); flex-shrink: 0; }
.guide-chip:hover { border-color: var(--bs-primary); color: var(--bs-primary); }
.guide-video-empty { background: repeating-linear-gradient(45deg, var(--bs-tertiary-bg), var(--bs-tertiary-bg) 12px, var(--bs-secondary-bg) 12px, var(--bs-secondary-bg) 24px); color: var(--bs-secondary-color); }
.guide-sec { scroll-margin-top: 80px; }
.guide-num { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; font-weight: 700; color: var(--bs-primary); background: rgba(var(--bs-primary-rgb), .12); flex-shrink: 0; }
.guide-steps { padding-left: 1.3rem; }
.guide-steps li { margin-bottom: .45rem; line-height: 1.55; }
.guide-steps li::marker { font-weight: 700; color: var(--bs-primary); }
.guide-tip { font-size: .9rem; padding: .6rem .8rem; border-radius: 10px; background: rgba(var(--bs-warning-rgb), .12); border-left: 3px solid var(--bs-warning); }

/* 3.37.0: name + "My profile" in the top bar */
.top-user { display: flex; align-items: center; gap: .55rem; max-width: 220px; padding: .2rem .55rem .2rem .25rem; border-radius: 999px; border: 1px solid transparent; }
.top-user:hover { border-color: var(--bs-border-color); background: var(--bs-tertiary-bg); }
.top-user .top-avatar { width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: .8rem; color: #fff; background: linear-gradient(135deg, #4f46e5, #7c3aed); }
.top-user .lh-sm { min-width: 0; }

/* 3.37.0: seller chain on the admin user page */
.net-chain { list-style: none; padding: 0; margin: 0; position: relative; }
.net-chain li { position: relative; padding: 0 0 .9rem 1.6rem; }
.net-chain li::before { content: ""; position: absolute; left: .35rem; top: .45rem; width: .65rem; height: .65rem; border-radius: 50%; background: var(--bs-primary); }
.net-chain li:not(:last-child)::after { content: ""; position: absolute; left: .62rem; top: 1.1rem; bottom: .1rem; width: 2px; background: var(--bs-border-color); }
.net-chain li.net-me::before { background: var(--bs-success); }

/* 3.37.0: customer book – due manager */
.u-stat-ic.i-red { background: #fef2f2; color: #dc2626; }
.cb-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: .75rem; align-items: center; }
.cb-who { display: flex; gap: .75rem; align-items: center; min-width: 0; }
.cb-av { width: 42px; height: 42px; flex: 0 0 42px; border-radius: 12px; display: grid; place-items: center; font-weight: 700; background: var(--bs-tertiary-bg); color: var(--bs-secondary-color); }
.cb-av.owes { background: #fef2f2; color: #dc2626; } .cb-av.adv { background: #ecfdf5; color: #059669; }
@media (max-width: 575.98px) { .cb-row { grid-template-columns: minmax(0, 1fr) auto; } .cb-act { grid-column: 1 / -1; justify-content: flex-end; } .cb-act .btn { flex: 1; } }
.cb-hist td, .cb-hist th { white-space: nowrap; } .cb-hist td.cb-note { white-space: normal; min-width: 160px; }
.grp-card { transition: border-color .15s, box-shadow .15s; } .grp-card:hover { border-color: var(--bs-primary); box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .06); }

/* 3.37.0: scheduled recharges */
.sch-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; gap: .75rem; align-items: center; }
.sch-row.sch-off { background: var(--bs-tertiary-bg); }
.sch-freq .btn { font-size: .9rem; }
@media (max-width: 767.98px) { .sch-row { grid-template-columns: auto minmax(0, 1fr) auto; } .sch-act { grid-column: 1 / -1; justify-content: flex-end; } }
@media (max-width: 575.98px) { .sch-freq { flex-direction: column; } .sch-freq .btn { border-radius: .375rem !important; margin: 0 0 .25rem 0 !important; } }

/* 3.38.0: sign-in / sign-up – brand panel + form card */
.auth-shell { display: grid; gap: 0; }
@media (min-width: 992px) {
    .guest-wide { padding-top: 3rem !important; }
    .auth-shell { grid-template-columns: 1fr 1fr; border-radius: 1.5rem; overflow: hidden; box-shadow: 0 1.5rem 3rem rgba(15, 23, 42, .12); background: var(--bs-body-bg); }
    .auth-shell .auth-card { border: 0; box-shadow: none; border-radius: 0; }
    .auth-main { display: flex; flex-direction: column; justify-content: center; padding: 1rem 0; }
}
.auth-side { flex-direction: column; justify-content: space-between; padding: 3rem; color: #fff; background: var(--app-gradient, linear-gradient(135deg, #4f46e5, #7c3aed)); position: relative; }
.auth-side::after { content: ""; position: absolute; right: -80px; bottom: -80px; width: 260px; height: 260px; border-radius: 50%; background: rgba(255, 255, 255, .08); }
.auth-side-logo { width: 52px; height: 52px; border-radius: 14px; border: 2px solid rgba(255, 255, 255, .5); }
.auth-points li { display: flex; align-items: center; gap: .8rem; margin-bottom: 1rem; font-size: 1.05rem; }
.auth-points li span { width: 38px; height: 38px; flex: 0 0 38px; border-radius: 11px; display: grid; place-items: center; background: rgba(255, 255, 255, .16); }
.auth-side-foot { opacity: .85; position: relative; z-index: 1; }
.auth-card { border-radius: 1.25rem; box-shadow: 0 .75rem 2rem rgba(15, 23, 42, .08); }
.auth-input .input-group-text { background: var(--bs-tertiary-bg); color: var(--bs-secondary-color); }
.auth-input .auth-eye { border: var(--bs-border-width) solid var(--bs-border-color); border-left: 0; background: var(--bs-body-bg); color: var(--bs-secondary-color); }
.auth-or { display: flex; align-items: center; gap: .75rem; margin: 1.5rem 0 1rem; color: var(--bs-secondary-color); font-size: .85rem; }
.auth-or::before, .auth-or::after { content: ""; flex: 1; height: 1px; background: var(--bs-border-color); }
.auth-plan { padding: .6rem .75rem; border-radius: .6rem; background: var(--bs-tertiary-bg); }
.tx-msg { white-space: pre-line; } /* 3.40.0: an MFS SMS keeps its lines */

/* 3.44.0: the amount is also a pack's price – a tap sends the pack, no tap = plain recharge */
.offer-match { border: 1px solid var(--bs-primary-border-subtle); background: var(--bs-primary-bg-subtle); border-radius: .75rem; padding: .75rem; }
.offer-match .om-opt { display: flex; width: 100%; text-align: start; gap: .6rem; align-items: flex-start; padding: .55rem .65rem; border-radius: .6rem; background: var(--bs-body-bg); color: inherit; border: 1px solid var(--bs-border-color); margin-bottom: .4rem; line-height: 1.35; }
.offer-match .om-opt:last-child { margin-bottom: 0; }
.offer-match .om-opt:hover, .offer-match .om-opt:focus-visible { border-color: var(--bs-primary); }

/* 3.56.0: "Get our Android app" banner on phones */
.app-banner { display: flex; align-items: center; gap: .65rem; margin: 0 0 1rem; padding: .6rem .75rem; border-radius: 1rem; color: #fff;
  background: var(--app-gradient, linear-gradient(135deg, #4f46e5, #7c3aed)); box-shadow: 0 6px 18px rgba(79, 70, 229, .25); }
.app-banner[hidden] { display: none; }
.site-body .app-banner { margin: .75rem; }
