/* Compatibility layer between the ParsAbr client theme and module/addon output that was written for Lagom.
   Loaded after the theme by includes/hooks/parsabr_compat.php; the theme files themselves stay untouched.
   Every rule maps old Lagom names onto the theme's own tokens, so light and dark mode follow the theme. */

/* Lagom design tokens used by aiassistant (chat, ticket assistant) and the clientvps panel. */
:root {
  --panel-bg: var(--white);
  --panel-border-divider-color: var(--line);
  --panel-default-border: var(--line);
  --panel-box-shadow: var(--shadow-pop);
  --panel-border-radius: var(--radius-sm);
  --panel-lg-border-radius: var(--radius);
  --border-radius-base: var(--radius-sm);
  --text-heading-color: var(--strong);
  --text-body-color: var(--text);
  --text-lighter-color: var(--text-2);
  --text-faded-color: var(--text-2);
  --gray-lighter-2: var(--text-2);
  --gray-lighter-3: var(--hair-2);
  --gray-lighter-4: var(--input);
  --link-color: var(--strong);
  --brand-primary: var(--strong);
  --brand-success: var(--ok);
  --brand-warning: var(--warn);
  --brand-danger: var(--danger);
  --brand-info: var(--text-2);
  --btn-primary-bg: var(--strong);
  --btn-primary-hover-bg: var(--btn-solid-hover);
  --btn-primary-color: var(--btn-fg);
  --label-primary-faded-bg: var(--chip-bg);
  --label-primary-faded-color: var(--text);
  --alert-success-bg: var(--ok-soft);
  --alert-success-text: var(--ok);
  --alert-warning-bg: var(--warn-soft);
  --alert-warning-text: var(--warn);
  --alert-danger-bg: var(--danger-soft);
  --alert-danger-text: var(--danger);
  --alert-info-bg: var(--chip-bg);
  --alert-info-text: var(--text);
  --ui-block-bg: var(--white);
  --ui-block-border-color: var(--line);
  --ui-block-link-hover-bg: var(--nav-hover);
  --ui-icon-color: var(--text-2);
  --input-bg: var(--input);
  --input-border-color: var(--line);
  --progress-bar-bg: var(--input);
  --progress-bar-success: var(--ok);
  --progress-bar-warning: var(--warn);
  --progress-bar-danger: var(--danger);
}

/* Lagom's key/value list (clientvps panel: connection facts, IPs, activity log). */
.list-info { list-style: none; margin: 0; padding: 0; }
.list-info > li { display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 0; border-bottom: 1px solid var(--line); }
.list-info > li:last-child { border-bottom: 0; }
.list-info-bordered > li { padding-inline: 14px; }
.list-info-title { color: var(--text-2); font-size: .9rem; }
.list-info-text, .list-info-v { color: var(--text); font-weight: 600; text-align: end; }
.list-info-50 > li > * { flex: 1 1 50%; }

/* Product spec cards (descriptions written by tools/product_cards.php): class-only markup, one tone per
   product group. The tone colours the header and badge; rows stay on theme tokens so both modes read well. */
.pt-product-html br { display: none; }
.pa-card { --pa-tone: #2563eb; max-width: 460px; margin: 0 auto; border: 1px solid var(--line); border-radius: var(--radius-sm);
  overflow: hidden; text-align: right; background: var(--white); }
.pa-tone-blue { --pa-tone: #2563eb; } .pa-tone-indigo { --pa-tone: #4f46e5; } .pa-tone-slate { --pa-tone: #475569; }
.pa-tone-purple { --pa-tone: #7c3aed; } .pa-tone-teal { --pa-tone: #0d9488; } .pa-tone-orange { --pa-tone: #ea580c; }
.pa-tone-red { --pa-tone: #dc2626; }
.pa-header { padding: .7rem 1rem; font-weight: 700; font-size: 1rem; text-align: center; color: #fff; background: var(--pa-tone); }
.pa-item { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; padding: .55rem 1rem; font-size: .9rem;
  border-top: 1px solid var(--line); }
.pa-header + .pa-item { border-top: 0; }
.pa-label { color: var(--text-2); }
.pa-value { color: var(--strong); font-weight: 600; text-align: left; unicode-bidi: plaintext; } /* "50 GB" never turns into "GB 50" */
.pa-badge { margin: .7rem 1rem .9rem; padding: .4rem .8rem; border: 1px dashed var(--pa-tone); border-radius: var(--radius-pill);
  font-size: .85rem; font-weight: 600; text-align: center; color: var(--strong); background: color-mix(in srgb, var(--pa-tone) 12%, transparent); }
:root[data-theme=dark] .pa-badge { border-color: color-mix(in srgb, var(--pa-tone) 70%, #fff); }
@media (prefers-color-scheme: dark) { :root:not([data-theme=light]) .pa-badge { border-color: color-mix(in srgb, var(--pa-tone) 70%, #fff); } }
#order-standard_cart .products .product .pt-product-html { margin-bottom: .75rem; }
#order-standard_cart .products .pt-product-html .pa-card { max-width: none; border-top: 3px solid var(--pa-tone); }
#order-standard_cart .products .pt-product-html .pa-header { display: none; } /* the product name is already the card title */
/* Support phone box (includes/hooks/parsabr_contact_phone.php): keep the number on one line on phones. */
.parsabr-support-phone a { white-space: nowrap; }

/* Header: never let the menu run under the tools on narrower desktops. */
.pt-header__main { min-width: 0; }
.pt-theme-btn { white-space: nowrap; }

/* Every WHMCS status label, not only the ones the theme styles (expired, fraud, ... were white on white). */
.label.status, .status { border-radius: 999px; }
.label.status-expired, .label.status-fraud, .label.status-transferred-away, .label.status-collections,
.label.status-cancelled, .label.status-terminated, .status-expired, .status-fraud, .status-transferred-away, .status-collections {
  background: var(--danger-soft) !important; color: var(--danger) !important; }
.label.status-payment-pending, .label.status-pending-transfer, .label.status-pending-registration, .label.status-on-hold,
.label.status-in-progress, .label.status-customer-reply, .label.status-draft,
.status-payment-pending, .status-pending-transfer, .status-pending-registration, .status-on-hold, .status-in-progress,
.status-customer-reply, .status-draft {
  background: var(--warn-soft) !important; color: var(--warn) !important; }
.label.status-refunded, .label.status-closed, .label.status-completed, .label.status-grace, .label.status-redemption,
.status-refunded, .status-closed, .status-completed, .status-grace, .status-redemption {
  background: var(--chip-bg) !important; color: var(--text-2) !important; }

/* Order form: the stock standard_cart CSS is printed after the theme's, so these need the cart id. */
#order-standard_cart .view-cart-empty { background: var(--white) !important; color: var(--text-2) !important;
  border: 1px solid var(--line) !important; border-radius: var(--radius) !important; }
#order-standard_cart .prepend-icon .field { padding-inline-start: 38px !important; padding-inline-end: 12px !important; }
#order-standard_cart .prepend-icon .field-icon { inset-inline-start: 0 !important; inset-inline-end: auto !important; }

/* Ticket list status stripe sits on the start edge in RTL. */
a.border-left { border-left-width: 0 !important; border-right-width: 4px !important; border-right-style: solid !important; }

/* Dashboard "register a domain" card: the captcha must not squeeze the domain field. */
#registerDomainPanel .input-group { flex-wrap: wrap; }
#registerDomainPanel .recaptcha-content-domain-checker, #registerDomainPanel .captcha-container { flex-basis: 100%; }

/* Service page header tabs from module sidebars (e.g. Virtualizor): keep labels and links aligned. */
.pt-tabs__label { text-align: start; color: var(--text-2); }

/* AI chat launcher sits above the mobile dock instead of covering it. */
@media (max-width: 991.98px) {
  #aicc-root { bottom: calc(var(--dock-h, 64px) + 16px) !important; }
}

/* Invoice list amounts on one line. */
.table-list td, #tableInvoicesList td { white-space: nowrap; }

/* Service page: the stock tab box kept a light #ddd frame. */
.product-details-tab-container { border-color: var(--line) !important; }

/* A pill-tab row with a single tab ("اطلاعات" alone under the title) says nothing; hide it and its label. */
.pt-tabs:not(:has(> .pt-tab ~ .pt-tab)) { display: none !important; }
.pt-tabs__label:has(+ .pt-tabs:not(:has(> .pt-tab ~ .pt-tab))) { display: none !important; }

/* Button labels never break into two lines ("بسته / شده"). */
.btn { white-space: nowrap; }

/* File picker: Persian button text, theme colours. */
.custom-file-label { background: var(--input) !important; color: var(--text-2) !important; border-color: var(--line) !important; }
.custom-file-label::after { content: "انتخاب فایل" !important; background: var(--chip-bg) !important; color: var(--text) !important;
  border-color: var(--line) !important; }

/* Dashboard "register a new domain": the domain field had collapsed to an empty box beside the buttons and
   the captcha sat inside the same row. Field and buttons on one line, captcha underneath. */
.input-group:has(> input[name="domain"]) { flex-wrap: wrap; gap: 8px 0; }
.input-group:has(> input[name="domain"]) > input[name="domain"] { flex: 1 1 0; min-width: 150px;
  background: var(--input) !important; border: 1px solid var(--line) !important; color: var(--text) !important; }
.input-group:has(> input[name="domain"]) > .recaptcha-content-domain-checker { flex: 1 1 100%; order: 3; margin-top: 10px; }
.recaptcha-content-domain-checker p { color: var(--text-2); font-size: .85rem; }
.recaptcha-content-domain-checker .captchaimage img { border-radius: 8px; }

/* Tickets */
.btn-danger.disabled, .btn-danger:disabled { background: var(--danger-soft) !important; color: var(--danger) !important;
  border-color: transparent !important; opacity: 1 !important; }
.ticket-reply .posted-by, .posted-by { background: var(--chip-bg) !important; color: var(--text-2) !important;
  border-color: var(--line) !important; }
.posted-by .posted-by-name { color: var(--text) !important; }

/* Scrollable lists in dashboard cards (recent tickets): thin scrollbar in the theme's colour. */
.card .list-group, .card .card-body, .client-home-cards .card { scrollbar-width: thin; scrollbar-color: var(--scroll-thumb, var(--line)) transparent; }

/* =====================================================================================================
   Design QA pass (2026-10-25): stock and foreign widgets brought into the X-mono language.
   ===================================================================================================== */

/* ---------- Global ---------- */
/* Persian has no italic: stock <em> (client name, "required fields" notes) rendered slanted. */
em, .font-italic { font-style: normal !important; }
/* "Return to admin" (shown to staff logged in as a client): the rotated edge tab and the header redo key. */
.btn-return-to-admin, .pt-header a[href*="returntoadmin"], .pt-drawer a[href*="returntoadmin"] { display: none !important; }
/* Status filters above lists: the far-circle icons read as radio buttons inside pill tabs. */
.pt-tabs .pt-tab > .sidebar-menu-item-icon.fa-circle, .pt-tabs .pt-tab > .sidebar-menu-item-icon.fa-dot-circle { display: none; }
/* Pagination: separate soft pills instead of the stock segmented strip. */
.pagination { display: flex; flex-wrap: wrap; gap: 4px; }
.pagination .page-item .page-link { display: inline-flex; align-items: center; justify-content: center; min-width: 38px; height: 38px;
  padding: 0 12px; margin: 0 !important; border-radius: var(--radius-pill) !important; border: 1px solid var(--line);
  background: var(--white); color: var(--text); font-weight: 600; font-size: .85rem; box-shadow: none; }
.pagination .page-item:not(.active):not(.disabled) .page-link:hover { background: var(--nav-hover); color: var(--strong); }
.pagination .page-item.active .page-link { background: var(--strong); border-color: var(--strong); color: var(--paper); }
.pagination .page-item.disabled .page-link { opacity: .45; }
/* Field + button groups: the button is its own pill beside the field, not a square block glued to it. */
.input-group:not(.input-group-merge):has(> .input-group-append > .btn, > .input-group-prepend > .btn) { flex-wrap: nowrap; gap: 8px; }
.input-group:not(.input-group-merge) > .input-group-append > .btn,
.input-group:not(.input-group-merge) > .input-group-prepend > .btn { margin: 0 !important; border-radius: var(--radius-pill) !important; }
.input-group:not(.input-group-merge):has(> .input-group-append > .btn, > .input-group-prepend > .btn) > .form-control { border-radius: var(--radius-input) !important; }
/* Merged groups (login, password reset): icon box, field and eye key read as one field (RTL: append sits on the left). */
.input-group-merge > .input-group-prepend > .input-group-text { background: var(--input) !important; color: var(--text-2) !important; border-inline-end: 0 !important; }
.input-group-merge > .form-control:not(:first-child) { border-inline-start: 0 !important; }
.input-group-merge > .form-control:not(:last-child) { border-inline-end: 0 !important; }
.input-group-merge > .input-group-append > .btn { min-height: 44px; background: var(--input) !important; color: var(--text-2) !important;
  border: 1px solid var(--hair-2) !important; border-inline-start: 0 !important; box-shadow: none !important;
  border-start-start-radius: 0 !important; border-end-start-radius: 0 !important;
  border-start-end-radius: var(--radius-input) !important; border-end-end-radius: var(--radius-input) !important; }
/* Code blocks in tickets and articles: the stock #444 slab, right-aligned. */
.message pre, .markdown-content pre, .ticket-reply pre, article pre { background: var(--input) !important; color: var(--text) !important;
  border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 12px 14px; direction: ltr; text-align: left; white-space: pre-wrap; overflow-wrap: anywhere; }
.message pre code, .markdown-content pre code, article pre code { background: none !important; color: inherit !important; padding: 0; }
/* Empty DataTables: one quiet message instead of headers, a search box, "0 of 0" and dead pagination. */
.dataTables_wrapper:has(td.dataTables_empty) :is(.dataTables_filter, .dataTables_info, .dataTables_paginate, .dataTables_length) { display: none !important; }
.dataTables_wrapper:has(td.dataTables_empty) thead { display: none; }
.table-list td.dataTables_empty { padding: 44px 16px !important; color: var(--text-2) !important; text-align: center !important; white-space: normal; }
/* Support phone strip: same surface, edges and width as the footer card under it. */
body .parsabr-support-phone { max-width: 1180px; padding: 0 var(--gutter); }
body .parsabr-support-phone__inner { background: var(--white) !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow-card); }
/* A card footer the template prints with nothing inside. */
.card-footer:not(:has(*)) { display: none; }
/* Dark-mode leftovers in stock lists */
.kb-article-item small, .kb-article-item .text-muted { color: var(--text-2) !important; }
.text-black-50 { color: var(--text-2) !important; }

/* ---------- Dashboard ---------- */
@media (max-width: 1023.98px) { .pt-frame:has(.client-home-cards) > .pt-aside { order: 2; } } /* services before the side cards on phones */
.client-home-cards .card-body { text-align: start; }
.client-home-cards .card-body > p:only-child, .client-home-cards .card-body > div > p:only-child { margin: 0; color: var(--text-2); font-size: .92rem; line-height: 1.9; }
.client-home-cards .card-header .card-title { display: flex; align-items: center; gap: 8px; font-size: 1rem; }
.client-home-cards .card-header .card-title > .float-right { order: 9; margin-inline-start: auto; float: none !important; }
.client-home-cards .btn-view-more { display: inline-flex; align-items: center; min-height: 34px; padding: 0 14px; border-radius: var(--radius-pill);
  background: var(--ghost-bg); border: 1px solid var(--ghost-border); color: var(--text) !important; font-size: .8rem; font-weight: 700; text-decoration: none; float: none !important; }
.client-home-cards .btn-view-more.disabled { display: none; }
/* Register a new domain: field on its own row, captcha under it, then two separate actions. */
#registerDomainPanel .card-body { padding: 18px 20px 20px; }
#registerDomainPanel .input-group { display: grid !important; grid-template-columns: 1fr 1fr; gap: 10px !important; margin: 0 !important; padding: 0 !important; }
#registerDomainPanel .input-group > input[name="domain"] { grid-column: 1 / -1; width: 100%; min-width: 0; order: 0; border-radius: var(--radius-input) !important; }
#registerDomainPanel .input-group-append { display: contents; }
#registerDomainPanel .input-group-append > .btn { order: 2; width: 100%; margin: 0 !important; border-radius: var(--radius-pill) !important; }
#registerDomainPanel .input-group > .recaptcha-content-domain-checker { grid-column: 1 / -1; order: 1; margin: 0 !important; }
/* Image captcha (dashboard domain card, register, contact): note, image and field on one tidy row. */
.recaptcha-content-domain-checker > .row, [id^="default-captcha"] { margin: 0 !important; }
.recaptcha-content-domain-checker > .row > [class*="col-"] { flex: 0 0 100%; max-width: 100%; padding: 0; margin: 0 !important; }
[id^="default-captcha"] { display: grid !important; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 10px;
  padding: 0 !important; text-align: start !important; max-width: 440px; margin-inline: auto !important; }
[id^="default-captcha"] > p { grid-column: 1 / -1; margin: 0; font-size: .82rem; line-height: 1.8; color: var(--text-2); text-align: start; }
[id^="default-captcha"] > [class*="col-"] { flex: none; max-width: none; width: auto; padding: 0; }
[id^="default-captcha"] .captchaimage img { display: block; height: 44px; width: auto; border-radius: var(--radius-input); border: 1px solid var(--line); }
[id^="default-captcha"] input { min-height: 44px; width: 100%; }
#registerDomainPanel [id^="default-captcha"] { max-width: none; }
/* Recent tickets: one row = subject (ellipsis) + status, date under it; the list scrolls with a fade. */
#ticketsPanel .list-group-item.pt-tk { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; padding: 10px 20px; }
#ticketsPanel .pt-tk__subj { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--text); font-weight: 600; font-size: .9rem; }
#ticketsPanel .pt-tk.is-unread .pt-tk__subj { color: var(--strong); font-weight: 800; }
#ticketsPanel .pt-tk__num { color: var(--text-2); font-weight: 500; margin-inline-end: 6px; font-size: .8rem; }
#ticketsPanel .pt-tk > .label { grid-column: 2; grid-row: 1 / span 2; margin: 0; font-size: .72rem; padding: .3em .8em; }
#ticketsPanel .pt-tk > small { grid-column: 1; color: var(--text-2); font-size: .75rem; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
#ticketsPanel .pt-tk > br { display: none; }
.client-home-cards .list-group.pt-fit { overflow-y: auto; }
.client-home-cards .list-group.pt-fit.is-more { -webkit-mask-image: linear-gradient(#000 calc(100% - 36px), transparent); mask-image: linear-gradient(#000 calc(100% - 36px), transparent); }

/* ---------- Services and other lists ---------- */
#tableServicesList th:nth-child(2), #tableServicesList td:nth-child(2) { text-align: start; }
#tableTicketsList th:nth-child(2), #tableTicketsList td:nth-child(2) { text-align: start; }
#tableTicketsList td a.border-left { display: block; padding-inline-start: 12px; text-decoration: none; }
#tableTicketsList .ticket-number { display: block; font-size: .78rem; font-weight: 500; color: var(--text-2); }
#tableTicketsList .ticket-subject { display: block; font-weight: 700; color: var(--strong); }
/* Domains bulk toolbar: separate keys, not a segmented strip. */
.btn-group.btn-group-sm.mb-3 { display: flex; flex-wrap: wrap; gap: 6px; }
.btn-group.btn-group-sm.mb-3 > .btn, .btn-group.btn-group-sm.mb-3 > .btn-group > .btn { margin: 0 !important; border-radius: var(--radius-pill) !important; }

/* ---------- Service details ---------- */
.product-details .product-status { border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--white); }
.product-details .product-status .product-icon { border: 0 !important; border-radius: 0 !important; }
.product-details .product-status .product-icon h3 { font-size: 1.15rem; }
.product-details .product-status .product-icon h4 { font-size: .9rem; font-weight: 500; }
.product-details .product-status-text { background: var(--chip-bg) !important; color: var(--text-2) !important; font-weight: 700; font-size: .9rem; padding: 10px; border-radius: 0 !important; }
.product-details .product-status-active .product-status-text { background: var(--ok-soft) !important; color: var(--ok) !important; }
.product-details :is(.product-status-pending, .product-status-pending-transfer) .product-status-text { background: var(--warn-soft) !important; color: var(--warn) !important; }
.product-details :is(.product-status-suspended, .product-status-terminated, .product-status-cancelled, .product-status-fraud) .product-status-text { background: var(--danger-soft) !important; color: var(--danger) !important; }
/* Facts beside the status card: label | value rows instead of big headings over small values. */
.product-details > .row > .text-center:has(> h4) { display: grid; grid-template-columns: auto minmax(0, 1fr); align-content: start; align-items: baseline;
  gap: 0 16px; padding: 14px 22px; background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); text-align: end !important;
  color: var(--strong); font-weight: 600; font-size: .92rem; }
.product-details > .row > .text-center:has(> h4) > h4 { margin: 0; padding: 9px 0; font-size: .85rem; font-weight: 500; color: var(--text-2); text-align: start; }
@media (max-width: 767.98px) { .product-details > .row > .text-center:has(> h4) { margin-inline: 15px; } }
/* Module pages that print label/value pairs as centred <h4> + text */
#main-body .tab-content [class*="col-"].text-center:has(> h4) { color: var(--strong); font-weight: 600; font-size: .95rem; }
#main-body .tab-content [class*="col-"].text-center > h4 { margin: 14px 0 2px; font-size: .82rem; font-weight: 500; color: var(--text-2); }
/* License module: "cancel" was a huge red block with a 2x icon on its own line. */
form[action*="action=cancel"] .btn-danger { min-height: 44px; padding: .35rem 22px; font-size: .95rem; font-weight: 700;
  background: var(--danger-soft) !important; color: var(--danger) !important; box-shadow: none !important; }
form[action*="action=cancel"] .btn-danger > br { display: none; }
form[action*="action=cancel"] .btn-danger > .fa-2x { font-size: 1em; }
/* License install box: kit surfaces instead of navy, and no fake window dots. */
#tabOverview .lic-wrap { --surface: var(--white); --surface-2: var(--input); --ink: var(--text); --muted: var(--text-2); --code-ink: var(--text);
  --border: var(--line); --accent: var(--strong); --accent-2: var(--text-2); --header-grad: var(--chip-bg);
  background: var(--white) !important; border: 1px solid var(--line) !important; box-shadow: var(--shadow-card) !important; margin: 24px 0 !important; max-width: none !important; }
#tabOverview .lic-wrap::before { display: none !important; }
#tabOverview .lic-wrap .dots { display: none !important; }
#tabOverview .lic-wrap .lic-head { background: var(--chip-bg) !important; color: var(--text) !important; border-color: var(--line) !important; }
#tabOverview .lic-wrap .lic-head span[style] { color: var(--text-2) !important; }
#tabOverview .lic-wrap .term-card { background: var(--input) !important; border: 1px solid var(--line) !important; box-shadow: none !important; }
#tabOverview .lic-wrap .term-label { color: var(--strong) !important; }
#tabOverview .lic-wrap code.term-code { color: var(--text) !important; }
#tabOverview .lic-wrap .copy-btn { background: var(--ghost-bg) !important; color: var(--text) !important; border: 1px solid var(--ghost-border) !important; border-radius: var(--radius-pill) !important; }
#tabOverview > .tab:not(:has(*)) { display: none; }
#tabOverview > h2 { font-size: 1.3rem; margin-bottom: 2px; }
#tabOverview > h2 + p { color: var(--text-2); }

/* ---------- Tickets ---------- */
/* AI ticket helper is printed straight into #main-body on step 1: give it the container's width. */
#main-body > .aia-ta { width: min(1132px, calc(100% - 2 * var(--gutter))); margin-inline: auto !important; }
/* Submit ticket: name/email, subject and department/service/priority rows share one grid instead of ragged columns. */
@media (min-width: 768px) {
  .row:has(> .form-group > #inputName):has(> .form-group > #inputEmail) > .form-group,
  .row:has(> .form-group > #inputSubject) > .form-group,
  .row:has(> .form-group > #inputDepartment) > .form-group { flex: 1 1 0; max-width: none; }
}

/* ---------- Billing ---------- */
/* Add funds: the two cards were squeezed into the middle of the column beside the side card. */
.pt-frame__main:has(form[action*="addfunds"]) > .row > .offset-md-2 { flex: 0 0 100%; max-width: 100%; margin-inline: 0; }
.pt-frame__main:has(form[action*="addfunds"]) .card > .table { margin: 0; }
.pt-frame__main:has(form[action*="addfunds"]) .card > .table td { padding: 12px 20px; }
/* Invoice page */
.invoice-container .card-header :is(.card-title, .card-subtitle, h3) { font-size: 1.05rem !important; margin: 0 !important; }
.invoice-container .card-header { padding: 12px 20px !important; }
.invoice-container .card > .card-title.bg-info { padding: 12px 20px !important; font-size: 1.05rem; }
.invoice-container form:has(> input[name="applycredit"]) { text-align: start; color: var(--text); }
.invoice-container form:has(> input[name="applycredit"]) > .row > [class*="col-"] { flex: 0 0 100%; max-width: 420px; margin: 12px 0 0 !important; }
/* Affiliates: the three stat tiles in the dashboard's stat style (no tinted blocks, no giant icons). */
.affiliate-stat { display: flex !important; flex-direction: column; align-items: flex-start; gap: 2px; padding: 1rem 1.1rem !important; height: calc(100% - .5rem);
  background: var(--white) !important; border: 1px solid var(--line) !important; border-radius: var(--radius) !important; box-shadow: var(--shadow-card);
  color: var(--text-2) !important; font-size: .85rem !important; text-align: start; }
.affiliate-stat i { float: none !important; width: 36px; height: 36px; display: inline-flex !important; align-items: center; justify-content: center;
  margin: 0 0 6px !important; font-size: 1rem !important; opacity: 1 !important; border-radius: .7rem; background: var(--chip-bg); border: 1px solid var(--line); color: var(--strong) !important; }
.affiliate-stat span { display: block; font-size: 1.6rem !important; font-weight: 600; line-height: 1.2; color: var(--strong); }
form[action*="affiliates"] .btn.disabled { background: var(--chip-bg) !important; color: var(--text-2) !important; border: 1px solid var(--line) !important; box-shadow: none !important; }

/* ---------- Account ---------- */
/* Contacts picker: the stock bar was a white strip on the dark page. */
.alert:has(form) { background: var(--white) !important; border: 1px solid var(--line) !important; color: var(--text) !important; }

/* ---------- Guest pages ---------- */
/* Login: remember-me, then one column of full-width keys (sign in, e-mail link, mobile). */
.login-form .card-body { display: flex; flex-direction: column; }
.login-form .card-body > .text-right { order: 2; margin: 0 0 14px; text-align: start !important; }
.login-form .card-body > .text-right label { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-weight: 500; }
.login-form .card-body > .text-right .form-check-input { position: static; margin: 0; }
.login-form .card-body > .float-left { order: 3; float: none !important; display: flex; flex-direction: column; gap: 10px; }
.login-form .card-body > .float-left > .btn { width: 100%; margin: 0 !important; }
.login-form .card-body > #lsl-root { order: 4; margin-top: 10px; }
#lsl-root .btn, .lsl-block { border-radius: var(--radius-pill) !important; }
#lsl-root .lsl-mt { margin-top: 0 !important; }
#resetPasswordButton { width: 100%; }
/* Contact form: every field as wide as the message box. */
@media (min-width: 576px) {
  form[action="contact.php"] .form-group.row > [class*="col-sm-"]:not(label) { flex: 0 0 75%; max-width: 75%; }
  form[action="contact.php"] > .text-center:last-child { padding-inline-start: calc(25% + 15px); text-align: start !important; }
}
/* Knowledgebase article: the card repeated the page title in 2.3rem; keep only its print key. */
.pt-frame__main .card-body > h1:first-child:has(> a[onclick*="print"]) { display: flex; justify-content: flex-end; margin: 0 0 6px; font-size: 0; line-height: 0; }
.pt-frame__main .card-body > h1:first-child > a[onclick*="print"] { float: none !important; font-size: .85rem; line-height: 1.5; }
/* Network status: the "no issues" alert was repeated as plain text over a dead pager. */
.pt-frame__main:has(> nav[aria-label="Network issues navigation"]) > .alert-success + p { display: none; }
nav[aria-label="Network issues navigation"]:not(:has(.page-item:not(.disabled))) { display: none; }
/* Register: the required-fields note under a heading */
.card-title + p > em, .card-title em { color: var(--text-2); font-size: .85rem; }

/* ---------- Order form ---------- */
/* Order summary: one panel (no box inside a box), label/amount rows, total with its label above it. */
#order-standard_cart .order-summary { padding: 0 !important; overflow: hidden; }
#order-standard_cart .order-summary h2 { margin: 0 !important; padding: 14px 18px; font-size: 1.05rem !important; font-weight: 700; text-align: start;
  background: transparent !important; border-bottom: 1px solid var(--line); }
#order-standard_cart .order-summary .summary-container { background: transparent !important; border: 0 !important; box-shadow: none !important;
  border-radius: 0 !important; padding: 14px 18px 18px !important; margin: 0 !important; font-size: .88rem; }
#order-standard_cart .summary-container .product-name { display: block; font-weight: 700; font-size: .95rem; }
#order-standard_cart .summary-container .product-group { display: block; margin-bottom: 8px; color: var(--text-2); font-size: .8rem; }
#order-standard_cart .summary-container .clearfix { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 3px 0; }
#order-standard_cart .summary-container .clearfix::after { content: none; }
#order-standard_cart .summary-container .clearfix > span { float: none !important; }
#order-standard_cart .summary-container .clearfix > span:first-child { min-width: 0; color: var(--text-2); }
#order-standard_cart .summary-container .clearfix > span:last-child { flex: none; white-space: nowrap; color: var(--text); font-weight: 600; text-align: end; }
#order-standard_cart .summary-container .clearfix.pt-sub > span:first-child { padding-inline-start: 10px; }
#order-standard_cart .summary-container :is(.summary-totals, .bordered-totals, .recurring-totals) { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--line) !important; border-bottom: 0 !important; }
#order-standard_cart .summary-container .recurring-totals:not(:has(#recurring > span:not([style*="none"]))) { display: none; }
#order-standard_cart .summary-container .total-due-today { display: flex; flex-direction: column; align-items: flex-start; gap: 0; margin-top: 12px; padding: 12px 0 0;
  border-top: 1px solid var(--line); text-align: start; }
#order-standard_cart .summary-container .total-due-today > span:not(.amt) { order: 1; color: var(--text-2); font-size: .8rem; }
#order-standard_cart .summary-container .total-due-today .amt { order: 2; font-size: 1.55rem; line-height: 1.4; }
#order-standard_cart .order-summary .text-right { text-align: center !important; padding: 4px 0 0; }
#order-standard_cart .order-summary .btn-checkout { width: 100%; }
#order-standard_cart .order-summary .btn-continue-shopping { margin-top: 6px; font-size: .85rem; font-weight: 600; }
/* View cart: a lone "promo code" tab heading over a box; show the box with the field and key side by side. */
#order-standard_cart .view-cart-tabs .nav-tabs:not(:has(> li + li)) { display: none; }
#order-standard_cart .view-cart-tabs .tab-content { background: var(--white); border: 1px solid var(--line) !important; border-radius: var(--radius); padding: 16px; box-shadow: var(--shadow-card); }
#order-standard_cart .view-cart-tabs .promo form { display: flex; gap: 8px; align-items: stretch; }
#order-standard_cart .view-cart-tabs .promo form > .form-group { flex: 1 1 auto; margin: 0; }
#order-standard_cart .view-cart-tabs .promo form > .btn { width: auto; flex: none; margin: 0; }
@media (max-width: 480px) { #order-standard_cart .view-cart-tabs .promo form { flex-direction: column; } }
/* Customer reviews under the configure page: a card on the layout grid, not a narrow centred box. */
#order-standard_cart > .pa-reviews { max-width: none; margin: 28px 0 0; padding: 20px 24px; background: var(--white);
  border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow-card); }
#order-standard_cart > .pa-reviews h3 { font-size: 1.05rem; }
[id^="default-captcha"] #inputCaptcha, [id^="default-captcha"] input[name="code"] { width: 100% !important; max-width: none !important; margin: 0 !important; }
.client-home-cards .card-body > p:only-child { text-align: start !important; padding: 0 !important; }
/* Service page tabs (server info, configurable options): stock label/value rows centred in two loose columns. */
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) { display: flex; justify-content: space-between; gap: 16px; margin: 0; padding: 10px 4px; border-bottom: 1px solid var(--line); }
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) > .col-sm-5 { flex: 1 1 auto; max-width: none; padding: 0; text-align: start !important; color: var(--text-2); }
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) > .col-sm-5 > strong { font-weight: 500; }
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) > .col-sm-7 { flex: 0 1 auto; max-width: none; padding: 0; text-align: end !important; color: var(--strong); font-weight: 600; overflow-wrap: anywhere; }
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) { flex-wrap: nowrap; }
.tab-content > .tab-pane > .row:has(> .col-sm-5 > strong) > [class*="col-sm-"] { width: auto; }
#tabOverview .lic-wrap .lic-head .title { color: var(--strong) !important; }
#tabOverview .margin-bottom-5 > h4, #tabOverview > h3, #tabOverview h3[style] { font-size: 1.05rem; font-weight: 700; }
#tableTicketsList .ticket-number { direction: ltr; text-align: end; }
/* Affiliates: commission figures as a card list, not a striped grey grid; quieter headings. */
.table.table-rounded { border-collapse: separate; border-spacing: 0; background: var(--white); border: 1px solid var(--line) !important;
  border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-card); }
.table.table-rounded td { border: 0 !important; border-bottom: 1px solid var(--line) !important; background: transparent !important; padding: 12px 18px; }
.table.table-rounded tr:last-child td { border-bottom: 0 !important; }
.table.table-rounded td:first-child { color: var(--text-2); }
.pt-frame__main > .card .card-body > p.h3:first-child { font-size: 1.05rem; margin-bottom: 12px; }
.pt-frame__main > h2 { font-size: 1.2rem; margin-top: 28px; }
.table.table-rounded tbody tr { background: transparent !important; }
.btn-group.btn-group-sm.mb-3 > .btn, .btn-group.btn-group-sm.mb-3 > .btn-group { flex: 0 0 auto; }
/* Submit ticket step 1: departments as tiles */
.pt-depts { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; flex: 0 0 100% !important; max-width: 100% !important; margin: 0 !important; }
.pt-dept { display: grid; gap: 4px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--white); color: var(--text); text-decoration: none;
  transition: border-color .15s ease, background-color .15s ease; }
.pt-dept:hover, .pt-dept:focus { border-color: var(--hair-2); background: var(--nav-hover); color: var(--strong); text-decoration: none; }
.pt-dept__t { font-weight: 700; color: var(--strong); }
.pt-dept__d { font-size: .85rem; color: var(--text-2); }
#order-standard_cart .order-summary h2 { text-align: start !important; }
@media (max-width: 767.98px) {
  /* Phones: the SSL-badge column of the services list is empty for most rows; give its width to the content. */
  #tableServicesList th:first-child, #tableServicesList td:first-child { display: none; }
}
#ticketsPanel .pt-tk__num { margin-inline-end: 8px; }
/* Captcha outside the dashboard card (register, contact, checkout): its own small card, clear of the submit key. */
.card-body [id^="default-captcha"], #registerDomainPanel [id^="default-captcha"] { background: none; border: 0; padding: 0 !important; margin-bottom: 0 !important; }
[id^="default-captcha"] { background: var(--white); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px !important; margin-bottom: 18px !important; }
