/*
 * GetPay supplemental styles.
 *
 * public/build/app.css is compiled by Tailwind from resources/views. Utilities that
 * views added after the last `npm run build` are defined here with the same values
 * Tailwind 4 would generate, so the site renders correctly without a rebuild.
 * Running `npm run build` later is harmless: the rules simply duplicate.
 */

.h-12 { height: 3rem; }
.w-12 { width: 3rem; }
.pt-6 { padding-top: 1.5rem; }
.pt-3 { padding-top: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }
.max-w-56 { max-width: 14rem; }
.max-w-64 { max-width: 16rem; }
.min-w-\[56rem\] { min-width: 56rem; }
.min-w-\[60rem\] { min-width: 60rem; }
.tracking-\[0\.5em\] { letter-spacing: 0.5em; }

/* ------------------------------------------------------------------
 * GetPay design system (no build step). Prefix: gp-
 * Palette follows resources/css/app.css tokens.
 * ------------------------------------------------------------------ */
:root {
    --gp-navy: #0b1f33;
    --gp-navy-2: #10294a;
    --gp-brand: #2563eb;
    --gp-brand-2: #1d4ed8;
    --gp-indigo: #4338ca;
    --gp-ink: #0b1f33;
    --gp-body: #334155;
    --gp-muted: #5b6b7c;
    --gp-line: #e2e8f0;
    --gp-soft: #f4f7fb;
    --gp-card: #ffffff;
    --gp-success: #047857;
    --gp-success-bg: #ecfdf5;
    --gp-warning: #92400e;
    --gp-warning-bg: #fffbeb;
    --gp-danger: #991b1b;
    --gp-danger-bg: #fef2f2;
    --gp-radius: 14px;
    --gp-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -16px rgba(15, 23, 42, .18);
}

/* Auth: split layout ------------------------------------------------ */
.gp-auth { min-height: 100vh; display: grid; grid-template-columns: 1fr; background: var(--gp-soft); }
.gp-auth-aside { display: none; }
.gp-auth-main { display: flex; flex-direction: column; min-height: 100vh; }
.gp-auth-top { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; }
.gp-auth-body { flex: 1; display: flex; align-items: center; justify-content: center; padding: 16px 16px 40px; }
.gp-auth-card { width: 100%; max-width: 440px; background: var(--gp-card); border: 1px solid var(--gp-line); border-radius: 18px; box-shadow: var(--gp-shadow); padding: 28px 24px; }
.gp-auth-foot { padding: 16px 20px 24px; font-size: 12px; line-height: 1.6; color: var(--gp-muted); text-align: center; }
.gp-auth-foot a { color: var(--gp-muted); text-decoration: none; margin: 0 6px; }
.gp-auth-foot a:hover { color: var(--gp-brand); }
@media (min-width: 640px) { .gp-auth-card { padding: 36px 36px; } }
@media (min-width: 1024px) {
    .gp-auth { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
    .gp-auth-aside {
        display: flex; flex-direction: column; justify-content: space-between; padding: 40px 48px; color: #e2e8f0;
        background:
            radial-gradient(60rem 30rem at 120% -10%, rgba(67, 56, 202, .55), transparent 60%),
            radial-gradient(40rem 24rem at -20% 110%, rgba(37, 99, 235, .45), transparent 60%),
            var(--gp-navy);
        position: sticky; top: 0; height: 100vh;
    }
    .gp-auth-top .gp-auth-logo-mobile { display: none; }
}
.gp-auth-aside h2 { margin: 0; font-family: var(--font-display, inherit); font-size: 30px; line-height: 1.2; font-weight: 700; letter-spacing: -.02em; color: #fff; }
.gp-auth-aside p { margin: 12px 0 0; font-size: 15px; line-height: 1.65; color: #cbd5e1; }
.gp-auth-points { list-style: none; margin: 28px 0 0; padding: 0; display: grid; gap: 14px; }
.gp-auth-points li { display: flex; gap: 12px; align-items: flex-start; font-size: 14px; line-height: 1.55; color: #e2e8f0; }
.gp-auth-points svg { flex: none; width: 20px; height: 20px; margin-top: 1px; color: #a5b4fc; }
.gp-auth-note { font-size: 12px; line-height: 1.6; color: #64748b; }
.gp-auth-wordmark { font-family: var(--font-display, inherit); font-weight: 800; font-size: 22px; letter-spacing: -.02em; color: #fff; text-decoration: none; }
.gp-auth-wordmark span { color: #a5b4fc; }

/* Generic UI ---------------------------------------------------------- */
.gp-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--gp-indigo); }
.gp-link { color: var(--gp-brand); font-weight: 600; text-decoration: none; }
.gp-link:hover { color: var(--gp-brand-2); text-decoration: underline; }
/* Batch 15: standalone links (not inside running text) get a 44px-tall touch area without moving the layout. */
.flex > .gp-link, .grid > .gp-link { display: inline-flex; align-items: center; min-height: 2.75rem; }
.gp-divider { display: flex; align-items: center; gap: 12px; color: var(--gp-muted); font-size: 12px; }
.gp-divider::before, .gp-divider::after { content: ""; flex: 1; height: 1px; background: var(--gp-line); }
.gp-badge { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 3px 10px; font-size: 12px; font-weight: 600; line-height: 1.4; white-space: nowrap; }
.gp-badge::before { content: ""; width: 6px; height: 6px; border-radius: 999px; background: currentColor; opacity: .85; }
.gp-badge-neutral { background: #f1f5f9; color: #475569; }
.gp-badge-info { background: #eff6ff; color: var(--gp-brand-2); }
.gp-badge-success { background: var(--gp-success-bg); color: var(--gp-success); }
.gp-badge-warning { background: var(--gp-warning-bg); color: var(--gp-warning); }
.gp-badge-danger { background: var(--gp-danger-bg); color: var(--gp-danger); }
.gp-badge-plain::before { display: none; }

/* Legal / long-form pages --------------------------------------------- */
.gp-doc { max-width: 1120px; margin: 0 auto; padding: 40px 16px 72px; display: grid; gap: 32px; }
@media (min-width: 1024px) { .gp-doc { grid-template-columns: 240px minmax(0, 1fr); gap: 56px; padding: 56px 32px 96px; } }
.gp-doc-head { grid-column: 1 / -1; border-bottom: 1px solid var(--gp-line); padding-bottom: 24px; }
.gp-doc-head h1 { margin: 8px 0 0; font-family: var(--font-display, inherit); font-size: 32px; line-height: 1.15; font-weight: 700; letter-spacing: -.02em; color: var(--gp-ink); }
@media (min-width: 640px) { .gp-doc-head h1 { font-size: 40px; } }
.gp-doc-head p { margin: 12px 0 0; max-width: 46rem; font-size: 16px; line-height: 1.7; color: var(--gp-body); }
.gp-doc-meta { margin-top: 14px; font-size: 13px; color: var(--gp-muted); }
.gp-toc { display: none; }
@media (min-width: 1024px) {
    .gp-toc { display: block; position: sticky; top: 88px; align-self: start; font-size: 13px; }
    .gp-toc p { margin: 0 0 10px; font-weight: 600; color: var(--gp-ink); }
    .gp-toc ol { list-style: none; margin: 0; padding: 0; border-left: 1px solid var(--gp-line); }
    .gp-toc a { display: block; padding: 6px 0 6px 14px; margin-left: -1px; border-left: 2px solid transparent; color: var(--gp-muted); text-decoration: none; line-height: 1.45; }
    .gp-toc a:hover { color: var(--gp-brand); border-left-color: var(--gp-brand); }
}
.gp-prose { min-width: 0; max-width: 46rem; color: var(--gp-body); font-size: 15.5px; line-height: 1.75; }
.gp-prose h2 { scroll-margin-top: 88px; margin: 40px 0 12px; font-family: var(--font-display, inherit); font-size: 22px; line-height: 1.3; font-weight: 700; letter-spacing: -.01em; color: var(--gp-ink); }
.gp-prose h2:first-child { margin-top: 0; }
.gp-prose h3 { margin: 24px 0 8px; font-size: 16px; font-weight: 600; color: var(--gp-ink); }
.gp-prose p { margin: 0 0 14px; }
.gp-prose ul, .gp-prose ol { margin: 0 0 16px; padding-left: 22px; }
.gp-prose ul { list-style: disc; }
.gp-prose ol { list-style: decimal; }
.gp-prose li::marker { color: #94a3b8; }
.gp-prose li { margin: 6px 0; }
.gp-prose a { color: var(--gp-brand); font-weight: 500; text-decoration: underline; text-underline-offset: 2px; }
.gp-prose strong { color: var(--gp-ink); font-weight: 600; }
.gp-prose table { width: 100%; border-collapse: collapse; margin: 8px 0 20px; font-size: 14px; }
.gp-prose th, .gp-prose td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid var(--gp-line); }
.gp-prose th { font-weight: 600; color: var(--gp-ink); background: var(--gp-soft); }
.gp-callout { margin: 0 0 20px; padding: 14px 16px; border: 1px solid #c7d2fe; background: #eef2ff; border-radius: 12px; font-size: 14px; line-height: 1.65; color: #312e81; }
.gp-related { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--gp-line); display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: 14px; }

/* Staff console --------------------------------------------------------- */
.gp-console-wide { max-width: 1280px; }
.gp-side { background: #fff; border-right: 1px solid var(--gp-line); }
.gp-side-brand { display: flex; height: 64px; align-items: center; justify-content: space-between; padding: 0 16px; border-bottom: 1px solid var(--gp-line); }
.gp-side-tag { margin-left: 8px; border-radius: 6px; background: #eef2ff; color: var(--gp-indigo); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 2px 6px; }
.gp-nav { padding: 12px 10px 24px; }
.gp-nav-group + .gp-nav-group { margin-top: 18px; }
.gp-nav-label { padding: 0 10px 6px; font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #64748b; }
.gp-nav-link { display: flex; align-items: center; min-height: 38px; padding: 0 10px; border-radius: 8px; font-size: 14px; font-weight: 500; color: #334155; text-decoration: none; }
.gp-nav-link:hover { background: var(--gp-soft); color: var(--gp-ink); }
.gp-nav-link[aria-current="page"] { background: #eff6ff; color: var(--gp-brand-2); font-weight: 600; box-shadow: inset 3px 0 0 var(--gp-brand); }
.gp-side-foot { margin: 0 10px; padding: 14px 10px; border-top: 1px solid var(--gp-line); font-size: 12px; color: var(--gp-muted); }
.gp-side-foot strong { display: block; color: var(--gp-ink); font-size: 13px; font-weight: 600; word-break: break-all; }

.gp-page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px 24px; margin-bottom: 20px; }
.gp-page-head h1 { margin: 0; font-family: var(--font-display, inherit); font-size: 24px; line-height: 1.25; font-weight: 700; letter-spacing: -.015em; color: var(--gp-ink); }
.gp-page-head p { margin: 6px 0 0; max-width: 48rem; font-size: 14px; line-height: 1.6; color: var(--gp-muted); }

.gp-kpis { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1024px) { .gp-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.gp-kpi { display: flex; flex-direction: column; gap: 4px; padding: 16px; background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); text-decoration: none; color: inherit; }
a.gp-kpi:hover { border-color: #bfdbfe; }
.gp-kpi dt, .gp-kpi .gp-kpi-label { font-size: 13px; font-weight: 500; color: var(--gp-muted); }
.gp-kpi dd, .gp-kpi .gp-kpi-value { margin: 0; font-family: var(--font-display, inherit); font-size: 28px; line-height: 1.15; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--gp-ink); }
.gp-kpi-note { font-size: 12px; line-height: 1.5; color: var(--gp-muted); }
.gp-kpi-attn { border-color: #fde68a; background: linear-gradient(180deg, #fffbeb, #fff 60%); }

.gp-grid-2 { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); align-items: stretch; }
@media (min-width: 1100px) { .gp-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-grid-3 { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); align-items: stretch; }
@media (min-width: 1100px) { .gp-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gp-stack > * + * { margin-top: 16px; }

.gp-panel { display: flex; flex-direction: column; min-width: 0; background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-panel-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 14px 16px; border-bottom: 1px solid var(--gp-line); }
.gp-panel-head h2 { margin: 0; font-size: 15px; font-weight: 600; color: var(--gp-ink); }
.gp-panel-head p { margin: 2px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--gp-muted); }
.gp-panel-head a { font-size: 13px; font-weight: 600; color: var(--gp-brand); text-decoration: none; white-space: nowrap; }
.gp-panel-head a:hover { text-decoration: underline; }
.gp-panel-body { padding: 16px; }
.gp-panel-empty { padding: 28px 16px; text-align: center; font-size: 14px; color: var(--gp-muted); }
.gp-panel-empty strong { display: block; margin-bottom: 4px; font-size: 15px; color: var(--gp-ink); }
.gp-count { margin-left: 6px; border-radius: 999px; background: #f1f5f9; padding: 1px 8px; font-size: 12px; font-weight: 600; color: #475569; }

.gp-statlist { margin: 0; padding: 4px 16px 8px; }
.gp-statlist > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px dashed var(--gp-line); }
.gp-statlist > div:last-child { border-bottom: 0; }
.gp-statlist dt { font-size: 14px; color: #334155; }
.gp-statlist dt small { display: block; font-size: 12px; color: var(--gp-muted); }
.gp-statlist dd { margin: 0; font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gp-ink); }
.gp-statlist dd.is-zero { color: #64748b; font-weight: 500; }

.gp-table-wrap { overflow-x: auto; }
.gp-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.gp-table th { position: sticky; top: 0; background: #f8fafc; text-align: left; font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--gp-muted); padding: 10px 14px; border-bottom: 1px solid var(--gp-line); white-space: nowrap; }
.gp-table td { padding: 12px 14px; border-bottom: 1px solid #eef2f7; vertical-align: top; color: var(--gp-ink); }
.gp-table tbody tr:hover td { background: #fafcff; }
.gp-table tbody tr:last-child td { border-bottom: 0; }
.gp-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; word-break: break-all; }
.gp-sub { display: block; margin-top: 3px; font-size: 12px; line-height: 1.45; color: var(--gp-muted); }
.gp-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.gp-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.gp-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--gp-line); background: #fff; border-radius: 999px; padding: 4px 10px; font-size: 12.5px; color: #475569; }
.gp-details summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--gp-brand); list-style: none; }
.gp-details summary::-webkit-details-marker { display: none; }
.gp-details[open] summary { margin-bottom: 4px; }
.gp-side { display: none; }
.gp-side.is-open { display: flex; flex-direction: column; position: fixed; inset: 0 auto 0 0; z-index: 50; width: 18rem; max-width: 85vw; box-shadow: 0 20px 40px -12px rgba(15, 23, 42, .35); }
@media (min-width: 1024px) {
    .gp-side { display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; }
    .gp-side.is-open { position: sticky; width: auto; max-width: none; box-shadow: none; }
}
.gp-nav { flex: 1; overflow-y: auto; }
.gp-statlist-label { padding: 6px 16px 0; font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #64748b; }
.gp-empty { align-items: center; padding: 32px 20px; text-align: center; border-style: dashed; box-shadow: none; }
.gp-empty h2, .gp-empty h3 { margin: 10px 0 0; font-size: 16px; font-weight: 600; color: var(--gp-ink); }
.gp-empty-text { margin: 6px auto 0; max-width: 32rem; font-size: 14px; line-height: 1.6; color: var(--gp-muted); }
.gp-empty-icon { display: inline-flex; width: 40px; height: 40px; align-items: center; justify-content: center; border-radius: 12px; background: #eff6ff; color: var(--gp-brand); }
.gp-empty-icon svg { width: 20px; height: 20px; }
.gp-table-wrap > .gp-table th:first-child, .gp-table-wrap > .gp-table td:first-child { padding-left: 16px; }
.gp-nav-icon { width: 18px; height: 18px; margin-right: 10px; flex: none; color: #94a3b8; }
.gp-nav-link[aria-current="page"] .gp-nav-icon { color: var(--gp-brand); }
.gp-merchant-id { display: flex; align-items: center; gap: 10px; margin: 12px 10px 0; padding: 10px; border: 1px solid var(--gp-line); border-radius: 12px; background: var(--gp-soft); }
.gp-merchant-id strong { display: block; font-size: 13.5px; font-weight: 600; color: var(--gp-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-merchant-id span span, .gp-merchant-id > span > span { display: block; font-size: 12px; color: var(--gp-muted); }
.gp-merchant-avatar { display: inline-flex; flex: none; width: 34px; height: 34px; align-items: center; justify-content: center; border-radius: 10px; background: var(--gp-navy); color: #fff; font-weight: 700; font-size: 14px; }
.gp-tabbar { position: fixed; inset: auto 0 0 0; z-index: 30; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); border-top: 1px solid var(--gp-line); background: #fff; padding-bottom: env(safe-area-inset-bottom); }
.gp-tabbar a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 58px; font-size: 11px; font-weight: 500; color: var(--gp-muted); text-decoration: none; }
.gp-tabbar svg { width: 20px; height: 20px; }
.gp-tabbar a[aria-current="page"] { color: var(--gp-brand); font-weight: 600; }
@media (min-width: 1024px) { .gp-tabbar { display: none; } }
.gp-balances { display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gp-balances > .gp-balance-primary { grid-column: 1 / -1; }
@media (max-width: 639px) { .gp-balances > .gp-balance:last-child:nth-child(odd):not(.gp-balance-primary) { grid-column: 1 / -1; } .gp-balances > .gp-balance-primary ~ .gp-balance:last-child:nth-child(odd) { grid-column: auto; } }
@media (min-width: 640px) { .gp-balances { gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); } .gp-balances > .gp-balance-primary { grid-column: auto; } }
.gp-balance { display: flex; flex-direction: column; gap: 6px; padding: 18px; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); background: #fff; box-shadow: var(--gp-shadow); }
.gp-balance-primary { border-color: transparent; color: #fff; background: radial-gradient(30rem 12rem at 110% -20%, rgba(67, 56, 202, .55), transparent 60%), var(--gp-navy); }
.gp-balance-label { font-size: 13px; font-weight: 500; color: var(--gp-muted); }
.gp-balance-primary .gp-balance-label { color: #cbd5e1; }
.gp-balance-value { font-family: var(--font-display, inherit); font-size: 28px; line-height: 1.15; font-weight: 700; letter-spacing: -.01em; font-variant-numeric: tabular-nums; color: var(--gp-ink); }
.gp-balance-primary .gp-balance-value { color: #fff; }
.gp-balance-value-sm { font-size: 20px; }
/* Batch 15/16: mobile sizes must come after the base rules above, otherwise the base rules win. */
.gp-balance-value { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 639px) { .gp-balance { padding: 14px; } .gp-balance-value { font-size: 22px; } .gp-balance-value-sm { font-size: 17px; } .gp-balance:not(.gp-balance-primary) .gp-balance-value:not(.gp-balance-value-sm) { font-size: clamp(17px, 5.4vw, 22px); } }
.gp-balance-note { font-size: 12px; line-height: 1.5; color: var(--gp-muted); }
.gp-balance-primary .gp-balance-note { color: #94a3b8; }
.gp-split { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1100px) { .gp-split { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); } }
.gp-feed { list-style: none; margin: 0; padding: 0; }
.gp-feed li { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #eef2f7; }
.gp-feed li:last-child { border-bottom: 0; }
.gp-feed-title { margin: 0; font-size: 14px; font-weight: 500; color: var(--gp-ink); }
.gp-feed-meta { margin: 3px 0 0; font-size: 12px; color: var(--gp-muted); word-break: break-all; }
.gp-feed-amount { margin: 0; flex: none; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gp-ink); text-align: right; }
.gp-feed-amount.is-out { color: #b91c1c; }

/* Uniform styling for tables inside the merchant and staff consoles that are not yet .gp-table */
.gp-console-wide table:not(.gp-table) { border-collapse: collapse; font-size: 13.5px; }
.gp-console-wide table:not(.gp-table) thead th { background: #f8fafc; font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--gp-muted); white-space: nowrap; border-bottom: 1px solid var(--gp-line); }
.gp-console-wide table:not(.gp-table) tbody td { vertical-align: top; }
.gp-console-wide table:not(.gp-table) tbody tr:hover td { background: #fafcff; }
.gp-console-wide div.overflow-x-auto:has(> table) { background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-console-wide dl.divide-y.rounded-lg, .gp-console-wide section.rounded-lg.border { border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-section-head h2 { margin: 0; font-family: var(--font-display, inherit); font-size: 18px; font-weight: 700; letter-spacing: -.01em; color: var(--gp-ink); }
.gp-section-head p { margin: 4px 0 0; font-size: 13.5px; line-height: 1.6; color: var(--gp-muted); }
.gp-filters { display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; padding: 12px; background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-filters label { display: block; margin-bottom: 4px; font-size: 12px; font-weight: 600; color: var(--gp-muted); }
.gp-filters input, .gp-filters select { width: 100%; height: 40px; border: 1px solid var(--gp-line); border-radius: 8px; background: #fff; padding: 0 10px; font-size: 14px; color: var(--gp-ink); }
.gp-filters input:focus, .gp-filters select:focus { outline: 2px solid #bfdbfe; border-color: var(--gp-brand); }
.gp-filter-grow { grid-column: 1 / -1; }
.gp-filter-actions { grid-column: 1 / -1; display: flex; gap: 8px; }
@media (min-width: 900px) { .gp-filters { grid-template-columns: minmax(0, 2fr) repeat(2, minmax(0, 1fr)) auto; } .gp-filter-grow, .gp-filter-actions { grid-column: auto; } }
details.gp-panel > summary { list-style: none; }
details.gp-panel > summary::-webkit-details-marker { display: none; }
details.gp-panel[open] > summary .gp-link { visibility: hidden; }
.gp-tabs { display: flex; gap: 4px; overflow-x: auto; margin-top: -4px; padding: 4px; background: #fff; border: 1px solid var(--gp-line); border-radius: 12px; scrollbar-width: none; }
.gp-tabs a { flex: none; display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border-radius: 8px; font-size: 13.5px; font-weight: 500; color: #475569; text-decoration: none; white-space: nowrap; }
.gp-tabs a:hover { background: var(--gp-soft); color: var(--gp-ink); }
.gp-events { display: grid; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .gp-events { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-events li { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid #eef2f7; }
.gp-steps { list-style: none; margin: 0; padding: 14px 16px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; background: #fff; border: 1px solid var(--gp-line); border-radius: var(--gp-radius); box-shadow: var(--gp-shadow); }
.gp-steps li { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
.gp-steps li + li::before { content: ""; position: absolute; top: 14px; right: calc(50% + 18px); width: calc(100% - 28px); height: 2px; background: var(--gp-line); }
.gp-steps li.is-done + li::before, .gp-steps li.is-done + li.is-done::before { background: #93c5fd; }
.gp-step-dot { position: relative; z-index: 1; display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border-radius: 999px; border: 2px solid var(--gp-line); background: #fff; font-size: 12px; font-weight: 700; color: #94a3b8; }
.gp-step-label { font-size: 12px; font-weight: 600; line-height: 1.3; color: var(--gp-muted); }
.gp-steps .is-done .gp-step-dot { border-color: var(--gp-brand); background: var(--gp-brand); color: #fff; }
.gp-steps .is-current .gp-step-dot { border-color: var(--gp-brand); color: var(--gp-brand); box-shadow: 0 0 0 4px #dbeafe; }
.gp-steps .is-attention .gp-step-dot { border-color: #f59e0b; color: #b45309; box-shadow: 0 0 0 4px #fef3c7; }
.gp-steps .is-stopped .gp-step-dot { border-color: #ef4444; background: #ef4444; color: #fff; }
.gp-steps .is-done .gp-step-label, .gp-steps .is-current .gp-step-label, .gp-steps .is-attention .gp-step-label { color: var(--gp-ink); }
.gp-tabs a[aria-current="page"] { background: #eff6ff; color: var(--gp-brand-2); font-weight: 600; }
.gp-filter-more { grid-column: 1 / -1; }
.gp-filter-more summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--gp-brand); }
.gp-filter-more[open] summary { margin-bottom: 8px; }
.gp-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; font-size: 14px; background: #fff; border: 1px solid var(--gp-line); border-radius: 12px; }
.gp-pager a { font-weight: 600; color: var(--gp-brand); text-decoration: none; }
.gp-pager span { color: var(--gp-muted); }
.gp-review .gp-panel-body > h2:first-child, .gp-review .gp-panel-body > div:first-child > h2 { font-size: 14px; }
.gp-review .gp-panel-body > h2:first-child { margin: -16px -16px 12px; padding: 12px 16px; border-bottom: 1px solid var(--gp-line); }
.gp-review dl dt { font-size: 12.5px; }
.gp-doc-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border: 1px solid var(--gp-line); border-radius: 10px; background: var(--gp-soft); }
.gp-doc-row a { word-break: break-all; text-align: right; }
.gp-decision { border-color: #bfdbfe; box-shadow: 0 0 0 3px #eff6ff, var(--gp-shadow); }
.gp-timeline { list-style: none; padding: 0; margin: 0; border-left: 2px solid var(--gp-line); }
.gp-timeline > li { position: relative; padding: 0 0 14px 16px; }
.gp-timeline > li::before { content: ""; position: absolute; left: -6px; top: 5px; width: 10px; height: 10px; border-radius: 999px; background: #fff; border: 2px solid var(--gp-brand); }
.gp-timeline > li:last-child { padding-bottom: 0; }
.gp-metrics { display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1100px) { .gp-metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.gp-kpi .gp-kpi-value-sm, .gp-kpi-value-sm { font-size: 19px; overflow-wrap: anywhere; }
@media (min-width: 900px) { .gp-filters.gp-filters-4 { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; } }
@media (min-width: 900px) { .gp-filters.gp-filters-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .gp-filters.gp-filters-6 .gp-filter-actions { grid-column: 1 / -1; } }
.gp-dialog { width: min(42rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow: auto; padding: 20px; border: 1px solid var(--gp-line); border-radius: 16px; background: #fff; color: var(--gp-ink); box-shadow: 0 30px 60px -20px rgba(15, 23, 42, .35); }
.gp-dialog::backdrop { background: rgba(11, 31, 51, .45); }
.gp-sub.mt-0 { margin-top: 0; }

/* Batch 8: shared centred copyright line. Stays on one line on phones by
   shrinking slightly; wraps only on very narrow screens. */
.gp-copyright { margin: 0; padding: 1rem; text-align: center; font-size: 0.75rem; line-height: 1.25rem; color: #5b6b7c; }
@media (max-width: 420px) { .gp-copyright { font-size: 0.6875rem; white-space: nowrap; overflow-wrap: normal; padding-left: .5rem; padding-right: .5rem; } }
@media (max-width: 320px) { .gp-copyright { white-space: normal; } }
.gp-copyright-dark { color: rgba(255,255,255,.45); }

/* Batch 8: Contact Us page */
.gp-contact { max-width: 64rem; margin: 0 auto; padding: 2.5rem 1rem 3rem; }
.gp-contact-hero { text-align: center; }
.gp-contact-hero h1 { margin: .5rem 0 0; font-size: clamp(1.75rem, 4vw, 2.5rem); font-weight: 700; letter-spacing: -.02em; color: #0b1f33; }
.gp-contact-hero > p { margin: .75rem auto 0; max-width: 36rem; color: #5b6b7c; line-height: 1.6; }
.gp-contact-card { margin: 1.75rem auto 0; max-width: 40rem; display: flex; align-items: center; gap: 1rem; padding: 1.25rem; text-align: left; background: #fff; border: 1px solid #e2e8f0; border-radius: 1rem; box-shadow: 0 10px 30px -18px rgba(11,31,51,.35); }
.gp-contact-icon { flex: none; display: inline-flex; width: 3rem; height: 3rem; align-items: center; justify-content: center; border-radius: .75rem; background: #eff6ff; color: #2563eb; }
.gp-contact-icon svg { width: 1.5rem; height: 1.5rem; }
.gp-contact-card > div { flex: 1; }
.gp-contact-label { margin: 0; font-size: .75rem; color: #5b6b7c; }
.gp-contact-email { display: inline-block; margin-top: .125rem; font-size: 1.125rem; font-weight: 600; color: #0b1f33; word-break: break-all; }
.gp-contact-email:hover, .gp-contact-email:focus-visible { color: #2563eb; }
.gp-contact-button { flex: none; display: inline-flex; min-height: 2.75rem; align-items: center; padding: 0 1.125rem; border-radius: .75rem; background: #2563eb; color: #fff; font-weight: 600; font-size: .875rem; }
.gp-contact-button:hover { background: #1d4ed8; }
.gp-contact-button:focus-visible, .gp-contact-topic:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-contact-warn { margin: 1rem auto 0 !important; font-size: .8125rem; color: #92400e !important; }
.gp-contact-grid { margin-top: 2.5rem; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.gp-contact-topic { display: flex; flex-direction: column; gap: .375rem; padding: 1.125rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .875rem; transition: border-color .15s, box-shadow .15s; }
.gp-contact-topic:hover { border-color: #93c5fd; box-shadow: 0 6px 20px -14px rgba(37,99,235,.6); }
.gp-contact-topic strong { color: #0b1f33; font-size: .9375rem; }
.gp-contact-topic span { color: #5b6b7c; font-size: .875rem; line-height: 1.5; }
.gp-contact-topic em { margin-top: auto; padding-top: .25rem; font-style: normal; font-size: .8125rem; font-weight: 600; color: #2563eb; }
.gp-contact-foot { margin-top: 2rem; text-align: center; font-size: .875rem; color: #5b6b7c; line-height: 1.7; }
.gp-contact-foot a { color: #2563eb; }
@media (max-width: 560px) { .gp-contact-card { flex-wrap: wrap; } .gp-contact-button { width: 100%; justify-content: center; } }

/* Batch 8: avatar account menu (merchant + admin headers) */
.gp-usermenu { position: relative; }
.gp-usermenu-button { display: inline-flex; align-items: center; gap: .25rem; min-height: 2.75rem; padding: 0 .25rem; border-radius: 9999px; color: #0b1f33; }
.gp-usermenu-button:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-avatar { display: inline-flex; width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; border-radius: 9999px; background: linear-gradient(135deg,#1d4ed8,#0b1f33); color: #fff; font-size: .875rem; font-weight: 600; }
.gp-usermenu-caret { width: 1rem; height: 1rem; color: #5b6b7c; }
.gp-usermenu-panel { position: absolute; right: 0; top: calc(100% + .5rem); z-index: 40; width: 15rem; padding: .375rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .875rem; box-shadow: 0 18px 40px -20px rgba(11,31,51,.45); }
.gp-usermenu-head { display: flex; flex-direction: column; gap: .125rem; padding: .5rem .625rem .625rem; margin-bottom: .25rem; border-bottom: 1px solid #f1f5f9; }
.gp-usermenu-head strong { font-size: .875rem; color: #0b1f33; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-usermenu-head span { font-size: .75rem; color: #5b6b7c; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gp-usermenu-role { align-self: flex-start; margin-top: .25rem; padding: .0625rem .5rem; border-radius: 9999px; background: #eff6ff; color: #1d4ed8 !important; font-weight: 600; }
.gp-usermenu-panel a, .gp-usermenu-panel button { display: block; width: 100%; padding: .5rem .625rem; border-radius: .5rem; text-align: left; font-size: .875rem; color: #0b1f33; }
.gp-usermenu-panel a:hover, .gp-usermenu-panel button:hover { background: #f1f5f9; }
.gp-usermenu-panel a:focus-visible, .gp-usermenu-panel button:focus-visible { background: #f1f5f9; outline: 2px solid #2563eb; outline-offset: -2px; }
.gp-usermenu-panel form button { color: #b91c1c; }
[x-cloak] { display: none !important; }

/* Batch 8: notification bell + list */
.gp-bell { position: relative; }
.gp-bell-button { position: relative; display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; border-radius: 9999px; color: #0b1f33; }
.gp-bell-button:hover { background: #f1f5f9; }
.gp-bell-button:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-bell-button svg { width: 1.25rem; height: 1.25rem; }
.gp-bell-count { position: absolute; top: .3rem; right: .2rem; min-width: 1.125rem; height: 1.125rem; padding: 0 .25rem; border-radius: 9999px; background: #dc2626; color: #fff; font-size: .625rem; font-weight: 700; line-height: 1.125rem; text-align: center; }
.gp-bell-panel { position: absolute; right: -3rem; top: calc(100% + .5rem); z-index: 40; width: min(22rem, calc(100vw - 2rem)); padding: .375rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .875rem; box-shadow: 0 18px 40px -20px rgba(11,31,51,.45); }
.gp-bell-head { display: flex; align-items: center; justify-content: space-between; padding: .5rem .625rem; border-bottom: 1px solid #f1f5f9; }
.gp-bell-head strong { font-size: .875rem; color: #0b1f33; }
.gp-bell-head button { font-size: .75rem; font-weight: 600; color: #2563eb; }
.gp-bell-item { display: flex; width: 100%; flex-direction: column; gap: .125rem; padding: .625rem; border-radius: .5rem; text-align: left; }
.gp-bell-item:hover { background: #f8fafc; }
.gp-bell-item:focus-visible { background: #f8fafc; outline: 2px solid #2563eb; outline-offset: -2px; }
.gp-bell-item strong { font-size: .8125rem; color: #0b1f33; }
.gp-bell-item span { font-size: .75rem; color: #5b6b7c; line-height: 1.45; }
.gp-bell-item em { font-style: normal; font-size: .6875rem; color: #64748b; }
.gp-bell-item.is-unread { background: #eff6ff; }
.gp-bell-item.is-unread strong::before { content: ""; display: inline-block; width: .4rem; height: .4rem; margin-right: .375rem; border-radius: 9999px; background: #2563eb; vertical-align: middle; }
.gp-bell-empty { margin: 0; padding: 1rem .625rem; font-size: .8125rem; color: #5b6b7c; }
.gp-bell-all { display: block; margin-top: .25rem; padding: .5rem; border-top: 1px solid #f1f5f9; text-align: center; font-size: .8125rem; font-weight: 600; color: #2563eb; }
.gp-note-list { list-style: none; margin: 0; padding: 0; }
.gp-note-list li + li { border-top: 1px solid #f1f5f9; }
.gp-note-list button { display: flex; width: 100%; gap: .75rem; padding: 1rem 1.25rem; text-align: left; }
.gp-note-list button:hover { background: #f8fafc; }
.gp-note-list button:focus-visible { background: #f8fafc; outline: 2px solid #2563eb; outline-offset: -2px; }
.gp-note-list strong { display: block; font-size: .875rem; color: #0b1f33; }
.gp-note-list span span, .gp-note-list .min-w-0 > span { display: block; font-size: .8125rem; color: #5b6b7c; line-height: 1.5; }
.gp-note-list em { display: block; margin-top: .25rem; font-style: normal; font-size: .75rem; color: #64748b; }
.gp-note-dot { flex: none; width: .5rem; height: .5rem; margin-top: .375rem; border-radius: 9999px; background: transparent; }
.gp-note-list li.is-unread .gp-note-dot { background: #2563eb; }

/* Batch 8: maintenance page + admin switch */
.gp-maint { min-height: calc(100vh - 3.5rem); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.5rem; padding: 2rem 1rem; }
.gp-maint-card { max-width: 30rem; padding: 2rem 1.5rem; text-align: center; background: #fff; border: 1px solid #e2e8f0; border-radius: 1.25rem; box-shadow: 0 18px 50px -30px rgba(11,31,51,.5); }
.gp-maint-icon { display: inline-flex; width: 3.25rem; height: 3.25rem; align-items: center; justify-content: center; border-radius: 9999px; background: #eff6ff; color: #2563eb; }
.gp-maint-icon svg { width: 1.5rem; height: 1.5rem; }
.gp-maint-card h1 { margin: 1rem 0 .5rem; font-size: 1.5rem; font-weight: 700; color: #0b1f33; }
.gp-maint-card p { margin: 0; color: #5b6b7c; line-height: 1.6; }
.gp-maint-small { margin-top: 1rem !important; font-size: .8125rem; }
.gp-maint-small a { color: #2563eb; }
.gp-maint-banner { margin-bottom: 1rem; padding: .75rem 1rem; border-radius: .75rem; background: #fef3c7; border: 1px solid #fde68a; color: #92400e; font-size: .875rem; }

.gp-req { color: #dc2626; font-weight: 600; }

/* Batch 9: shared icons + field icons */
.gp-ico { width: 1.25rem; height: 1.25rem; flex: none; }
.gp-field-icon { position: relative; }
.gp-field-icon > input, .gp-field-icon > select { padding-left: 2.5rem !important; }
.gp-field-glyph { position: absolute; left: .75rem; top: calc(.375rem + 1.375rem); transform: translateY(-50%); color: #94a3b8; pointer-events: none; display: inline-flex; }
.gp-field-glyph .gp-ico { width: 1.1rem; height: 1.1rem; }
.gp-field-icon:focus-within .gp-field-glyph { color: #2563eb; }

/* Batch 9: merchant application shell */
.gp-apply { display: grid; gap: 1.5rem; }
@media (min-width: 1024px) { .gp-apply { grid-template-columns: 15.5rem minmax(0, 1fr); gap: 3rem; align-items: start; } }
.gp-apply-steps { display: none; }
@media (min-width: 1024px) { .gp-apply-steps { display: block; position: sticky; top: 5.5rem; padding: 1rem; background: #fff; border: 1px solid #e2e8f0; border-radius: 1rem; } }
.gp-apply-steps-title { margin: 0 0 .75rem .25rem; font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: #5b6b7c; }
.gp-apply-steps ol { list-style: none; margin: 0; padding: 0; display: grid; gap: .125rem; }
.gp-apply-steps a, .gp-apply-steps li > span { display: flex; align-items: center; gap: .625rem; min-height: 2.75rem; padding: 0 .5rem; border-radius: .625rem; font-size: .875rem; color: #5b6b7c; }
.gp-apply-steps a:hover { background: #f8fafc; color: #0b1f33; }
.gp-apply-dot { display: inline-flex; width: 1.875rem; height: 1.875rem; align-items: center; justify-content: center; border-radius: 9999px; background: #f1f5f9; color: #64748b; }
.gp-apply-dot .gp-ico { width: 1rem; height: 1rem; }
.gp-apply-steps li.is-current a { background: #eff6ff; color: #0b1f33; font-weight: 600; }
.gp-apply-steps li.is-current .gp-apply-dot { background: #2563eb; color: #fff; box-shadow: 0 0 0 4px #dbeafe; }
.gp-apply-steps li.is-done .gp-apply-dot { background: #dcfce7; color: #15803d; }
.gp-apply-steps li.is-locked { opacity: .55; }
.gp-apply-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; }
.gp-apply-chip { display: inline-flex; padding: .25rem .625rem; border-radius: 9999px; background: #eff6ff; color: #1d4ed8; font-size: .75rem; font-weight: 600; }
.gp-apply-id { font-size: .75rem; color: #64748b; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.gp-apply-bar { margin-top: .75rem; height: .375rem; border-radius: 9999px; background: #e2e8f0; overflow: hidden; }
.gp-apply-bar span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2563eb, #4f46e5); transition: width .4s ease; }
.gp-apply-title { margin: 1.25rem 0 0; font-size: clamp(1.5rem, 3vw, 1.875rem); font-weight: 700; letter-spacing: -.02em; color: #0b1f33; }
.gp-apply-lead { margin: .5rem 0 0; max-width: 42rem; font-size: .9375rem; line-height: 1.6; color: #5b6b7c; }
.gp-apply-legend { margin: .5rem 0 0; font-size: .75rem; color: #64748b; }
.gp-apply-actions { position: fixed; inset-inline: 0; bottom: 0; z-index: 20; padding: .75rem 1rem; background: rgba(255,255,255,.96); border-top: 1px solid #e2e8f0; backdrop-filter: blur(6px); }
.gp-apply-actions > div { margin: 0 auto; max-width: 72rem; display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
@media (min-width: 1024px) { .gp-apply-actions { position: static; margin-top: 2rem; padding: 0; background: transparent; border: 0; backdrop-filter: none; } }
.gp-apply-back { display: inline-flex; min-height: 2.75rem; align-items: center; padding: 0 .5rem; font-size: .875rem; font-weight: 600; color: #0b1f33; }
.gp-apply-back:hover { color: #2563eb; }

/* Section card inside a step */
.gp-form-card { padding: 1.25rem; background: #fff; border: 1px solid #e2e8f0; border-radius: 1rem; }
.gp-form-card + .gp-form-card { margin-top: 1rem; }
.gp-form-card-head { display: flex; align-items: center; gap: .625rem; margin-bottom: 1rem; }
.gp-form-card-head .gp-ico-wrap { display: inline-flex; width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; border-radius: .625rem; background: #eff6ff; color: #2563eb; }
.gp-form-card-head h2 { margin: 0; font-size: 1rem; font-weight: 600; color: #0b1f33; }
.gp-form-card-head p { margin: .125rem 0 0; font-size: .8125rem; color: #5b6b7c; }
.gp-form-grid { display: grid; gap: 1rem; }
@media (min-width: 640px) { .gp-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gp-form-grid .gp-span-2 { grid-column: span 2 / span 2; } }

/* Choice cards (methods, type, category) */
.gp-choice-grid { display: grid; gap: .75rem; }
@media (min-width: 640px) { .gp-choice-grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gp-choice-grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gp-choice { position: relative; display: flex; gap: .875rem; align-items: flex-start; padding: 1rem; background: #fff; border: 1.5px solid #e2e8f0; border-radius: .875rem; cursor: pointer; transition: border-color .15s, box-shadow .15s, background-color .15s; }
.gp-choice:hover { border-color: #93c5fd; }
.gp-choice input { position: absolute; opacity: 0; pointer-events: none; }
.gp-choice:has(input:checked) { border-color: #2563eb; background: #f8fbff; box-shadow: 0 0 0 3px #dbeafe; }
.gp-choice:has(input:focus-visible) { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-choice-icon { flex: none; display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center; border-radius: .75rem; background: #f1f5f9; color: #0b1f33; }
.gp-choice:has(input:checked) .gp-choice-icon { background: #2563eb; color: #fff; }
.gp-choice-body { min-width: 0; flex: 1; }
.gp-choice-body strong { display: block; font-size: .9375rem; color: #0b1f33; }
.gp-choice-body span { display: block; margin-top: .125rem; font-size: .8125rem; line-height: 1.5; color: #5b6b7c; }
.gp-choice-tick { flex: none; display: inline-flex; width: 1.25rem; height: 1.25rem; align-items: center; justify-content: center; border-radius: 9999px; border: 1.5px solid #cbd5e1; color: transparent; }
.gp-choice-tick .gp-ico { width: .8rem; height: .8rem; }
.gp-choice:has(input:checked) .gp-choice-tick { background: #2563eb; border-color: #2563eb; color: #fff; }
.gp-choice.is-compact { align-items: center; padding: .75rem .875rem; }
.gp-choice.is-compact .gp-choice-icon { width: 2.25rem; height: 2.25rem; }

/* Upload cards */
.gp-upload { padding: 1rem; background: #fff; border: 1.5px dashed #cbd5e1; border-radius: .875rem; transition: border-color .15s, background-color .15s; }
.gp-upload.is-done { border-style: solid; border-color: #bbf7d0; background: #f7fef9; }
.gp-upload.is-picked { border-color: #2563eb; background: #f8fbff; }
.gp-upload-row { display: flex; align-items: flex-start; gap: .875rem; }
.gp-upload-row .gp-choice-icon { background: #eff6ff; color: #2563eb; }
.gp-upload.is-done .gp-choice-icon { background: #dcfce7; color: #15803d; }
.gp-upload-pick { margin-top: .75rem; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.gp-upload-pick label { display: inline-flex; min-height: 2.5rem; align-items: center; gap: .375rem; padding: 0 .875rem; border-radius: .625rem; border: 1px solid #cbd5e1; background: #fff; font-size: .8125rem; font-weight: 600; color: #0b1f33; cursor: pointer; }
.gp-upload-pick label:hover { border-color: #2563eb; color: #2563eb; }
.gp-upload-pick input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.gp-upload-pick input[type=file]:focus-visible + span, .gp-upload-pick label:focus-within { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-upload-name { font-size: .8125rem; color: #5b6b7c; word-break: break-all; }
.gp-upload-meta { font-size: .75rem; color: #64748b; }

/* Review summary */
.gp-review { padding: 1.125rem 1.25rem; background: #fff; border: 1px solid #e2e8f0; border-radius: 1rem; }
.gp-review + .gp-review { margin-top: .875rem; }
.gp-review-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.gp-review-head h2 { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: .9375rem; font-weight: 600; color: #0b1f33; }
.gp-review-head h2 .gp-ico { color: #2563eb; }
.gp-review-head a { display: inline-flex; min-height: 2.75rem; align-items: center; font-size: .8125rem; font-weight: 600; color: #2563eb; }
.gp-review dl { margin: .5rem 0 0; display: grid; gap: .75rem; }
@media (min-width: 640px) { .gp-review dl { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-review dt { font-size: .75rem; color: #5b6b7c; }
.gp-review dd { margin: .125rem 0 0; font-size: .875rem; color: #0b1f33; overflow-wrap: anywhere; }
.gp-declare { display: flex; gap: .75rem; align-items: flex-start; padding: .875rem 1rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem; font-size: .875rem; color: #0b1f33; line-height: 1.5; cursor: pointer; }
.gp-declare input { margin-top: .2rem; width: 1rem; height: 1rem; flex: none; accent-color: #2563eb; }
.gp-hint-box { display: flex; gap: .625rem; padding: .75rem .875rem; border-radius: .75rem; background: #f8fafc; border: 1px solid #e2e8f0; font-size: .8125rem; line-height: 1.5; color: #475569; }
.gp-hint-box .gp-ico { color: #2563eb; margin-top: .05rem; }
.gp-hint-box.is-warn { background: #fffbeb; border-color: #fde68a; color: #92400e; }
.gp-hint-box.is-warn .gp-ico { color: #b45309; }
.gp-same { display: inline-flex; align-items: center; gap: .5rem; font-size: .8125rem; color: #0b1f33; cursor: pointer; }
.gp-same input { width: 1rem; height: 1rem; accent-color: #2563eb; }

/* Batch 9 utilities missing from the prebuilt CSS */
.mb-2 { margin-bottom: .5rem; }
.mb-3 { margin-bottom: .75rem; }
.min-h-10 { min-height: 2.5rem; }
.text-\[\#15803d\] { color: #15803d; }

/* Batch 9: developer portal */
.gp-docs { max-width: 76rem; margin: 0 auto; padding: 2.5rem 1rem 4rem; }
.gp-docs-hero { max-width: 48rem; }
.gp-docs-hero h1 { margin: .375rem 0 0; font-size: clamp(1.875rem, 4vw, 2.5rem); font-weight: 700; letter-spacing: -.02em; color: #0b1f33; }
.gp-docs-hero > p { margin: .625rem 0 0; color: #5b6b7c; line-height: 1.65; }
.gp-docs-search { margin-top: 1.25rem; position: relative; display: flex; align-items: center; }
.gp-docs-search .gp-ico { position: absolute; left: .875rem; color: #94a3b8; }
.gp-docs-search input { width: 100%; height: 3rem; padding: 0 1rem 0 2.75rem; border: 1px solid #cbd5e1; border-radius: .875rem; background: #fff; font-size: .9375rem; box-shadow: 0 6px 20px -16px rgba(11,31,51,.5); }
.gp-docs-search input:focus { outline: 2px solid #2563eb; outline-offset: 1px; border-color: #2563eb; }
.gp-docs-pills { margin-top: .875rem; display: flex; flex-wrap: wrap; gap: .5rem; }
.gp-docs-pill { display: inline-flex; align-items: center; gap: .375rem; padding: .25rem .625rem; border-radius: 9999px; background: #f1f5f9; font-size: .75rem; color: #475569; }
.gp-docs-body { margin-top: 2rem; display: grid; gap: 2rem; }
@media (min-width: 1024px) { .gp-docs-body { grid-template-columns: 13rem minmax(0, 1fr); gap: 3rem; } }
.gp-docs-nav { display: none; }
@media (min-width: 1024px) { .gp-docs-nav { display: block; position: sticky; top: 5.5rem; align-self: start; max-height: calc(100vh - 7rem); overflow: auto; } }
.gp-docs-nav p { margin: 0 0 .5rem; font-size: .75rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #5b6b7c; }
.gp-docs-nav ul { list-style: none; margin: 0; padding: 0; border-left: 1px solid #e2e8f0; }
.gp-docs-nav a { display: block; padding: .375rem .875rem; margin-left: -1px; border-left: 2px solid transparent; font-size: .875rem; color: #5b6b7c; }
.gp-docs-nav a:hover { color: #0b1f33; border-left-color: #93c5fd; }
.gp-docs-main { min-width: 0; }
.gp-docs-empty { padding: 1rem; border-radius: .75rem; background: #f8fafc; color: #5b6b7c; }
.gp-doc-section { scroll-margin-top: 5.5rem; padding: 1.75rem 0; border-top: 1px solid #f1f5f9; }
.gp-doc-section h2 { margin: 0 0 .75rem; font-size: 1.375rem; font-weight: 700; letter-spacing: -.01em; color: #0b1f33; }
.gp-doc-section h3 { margin: 0 0 .5rem; font-size: 1rem; font-weight: 600; color: #0b1f33; }
.gp-doc-section p { margin: .75rem 0 0; font-size: .9375rem; line-height: 1.7; color: #334155; }
.gp-doc-section code, .gp-docs-pill code { padding: .0625rem .3125rem; border-radius: .3125rem; background: #f1f5f9; font-size: .8125em; color: #0b1f33; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.gp-doc-list { margin: .75rem 0 0; padding-left: 1.125rem; display: grid; gap: .375rem; font-size: .9375rem; line-height: 1.65; color: #334155; }
.gp-steps-list { margin: .5rem 0 1rem; padding-left: 1.25rem; display: grid; gap: .5rem; font-size: .9375rem; line-height: 1.6; color: #334155; }
.gp-endpoint { display: flex; flex-wrap: wrap; align-items: center; overflow-wrap: anywhere; gap: .625rem; margin: .5rem 0 0 !important; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .875rem !important; color: #0b1f33 !important; }
.gp-endpoint span { display: inline-flex; min-width: 3.25rem; justify-content: center; padding: .125rem .5rem; border-radius: .375rem; background: #0b1f33; color: #fff; font-size: .6875rem; font-weight: 700; letter-spacing: .04em; }
.gp-doc-table { margin-top: 1rem; width: 100%; border-collapse: collapse; font-size: .875rem; display: block; overflow-x: auto; }
.gp-doc-table th { padding: .625rem .75rem; text-align: left; font-size: .75rem; font-weight: 600; color: #5b6b7c; background: #f8fafc; border-bottom: 1px solid #e2e8f0; white-space: nowrap; }
.gp-doc-table td { padding: .625rem .75rem; vertical-align: top; border-bottom: 1px solid #f1f5f9; color: #334155; line-height: 1.55; }
.gp-doc-table td:first-child { white-space: nowrap; }
.gp-callout { display: flex; gap: .75rem; padding: 1rem 1.125rem; border-radius: .875rem; background: #eff6ff; border: 1px solid #bfdbfe; color: #1e3a8a; font-size: .9375rem; line-height: 1.6; }
.gp-callout.is-warn { background: #fffbeb; border-color: #fde68a; color: #78350f; }
.gp-callout .gp-ico { margin-top: .125rem; }
.gp-compare { margin-top: .5rem; display: grid; gap: 1rem; }
@media (min-width: 640px) { .gp-compare { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-compare > div { padding: 1rem 1.125rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .875rem; }
.gp-compare ul { margin: 0; padding-left: 1.125rem; display: grid; gap: .375rem; font-size: .875rem; line-height: 1.55; color: #334155; }
.gp-flow { margin-top: .5rem; display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; }
.gp-flow span { padding: .25rem .625rem; border-radius: 9999px; background: #f1f5f9; font-family: ui-monospace, monospace; font-size: .75rem; font-weight: 600; color: #0b1f33; }
.gp-flow span.is-good { background: #dcfce7; color: #166534; }
.gp-flow i { font-style: normal; color: #64748b; }
.gp-code { margin-top: 1rem; border-radius: .875rem; overflow: hidden; background: #0b1324; border: 1px solid #0f1b33; }
.gp-code-bar { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .375rem .5rem .375rem .375rem; background: #0f1b33; border-bottom: 1px solid #1e293b; }
.gp-code-tabs { display: flex; gap: .125rem; overflow-x: auto; }
.gp-code-tabs button { padding: .375rem .75rem; border-radius: .5rem; font-size: .75rem; font-weight: 600; color: #94a3b8; white-space: nowrap; }
.gp-code-tabs button[aria-selected="true"] { background: #1e293b; color: #fff; }
.gp-code-copy { display: inline-flex; align-items: center; gap: .375rem; padding: .375rem .625rem; border-radius: .5rem; font-size: .75rem; font-weight: 600; color: #cbd5e1; }
.gp-code-copy:hover { background: #1e293b; color: #fff; }
.gp-code-copy .gp-ico { width: .9rem; height: .9rem; }
.gp-code pre { margin: 0; padding: 1rem 1.125rem; overflow-x: auto; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .8125rem; line-height: 1.65; color: #e2e8f0; white-space: pre; }
.gp-code pre code { background: none; padding: 0; color: inherit; font-size: inherit; }
.gp-steps-list { list-style: decimal; }
.gp-steps-list li::marker { color: #2563eb; font-weight: 700; }
.gp-doc-list, .gp-compare ul { list-style: disc; }
.gp-doc-list li::marker, .gp-compare li::marker { color: #94a3b8; }

/* Batch 9: One Checkout */
.gp-co { padding: 1.5rem 1.25rem; background: #fff; border: 1px solid #e2e8f0; border-radius: 1.25rem; box-shadow: 0 24px 60px -36px rgba(11,31,51,.45); animation: gp-co-in .25s ease-out; }
@keyframes gp-co-in { from { transform: translateY(4px); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .gp-co, .gp-co-badge.is-spin::after { animation: none !important; } }
.gp-co-head { text-align: center; }
.gp-co-to { margin: 0; font-size: .875rem; color: #5b6b7c; }
.gp-co-amount { margin: .375rem 0 0; font-size: 2.5rem; font-weight: 700; letter-spacing: -.03em; color: #0b1f33; line-height: 1.1; }
.gp-co-amount span { font-size: 1.0625rem; font-weight: 600; color: #5b6b7c; letter-spacing: 0; }
.gp-co-business { margin: .25rem 0 0; font-size: .875rem; color: #0b1f33; }
.gp-co-tags { margin-top: .875rem; display: flex; flex-wrap: wrap; justify-content: center; gap: .375rem; }
.gp-co-tag { display: inline-flex; align-items: center; gap: .3125rem; min-height: 1.75rem; padding: 0 .625rem; border-radius: 9999px; background: #f1f5f9; font-size: .75rem; font-weight: 600; color: #334155; }
.gp-co-tag .gp-ico { width: .9rem; height: .9rem; }
.gp-co-tag.is-success { background: #dcfce7; color: #166534; }
.gp-co-tag.is-danger { background: #fee2e2; color: #991b1b; }
.gp-co-tag.is-info { background: #dbeafe; color: #1e40af; }
.gp-co-tag.is-warning { background: #fef3c7; color: #92400e; }
.gp-co-tag.is-clock { background: #0b1f33; color: #fff; }
.gp-co-tag.is-clock span { font-weight: 500; opacity: .75; }
.gp-co-refs { margin: 1.25rem 0 0; padding: .875rem 1rem; display: grid; gap: .5rem; border-radius: .875rem; background: #f8fafc; }
.gp-co-refs > div { display: flex; flex-wrap: wrap; justify-content: space-between; column-gap: .75rem; row-gap: .125rem; font-size: .8125rem; }
.gp-co-refs dt { flex: none; white-space: nowrap; color: #5b6b7c; }
.gp-co-refs dd { flex: 1 1 auto; min-width: 0; margin: 0; text-align: right; font-weight: 600; color: #0b1f33; overflow-wrap: break-word; }
.gp-co-note { margin: 1rem 0 0; padding: .625rem .875rem; border-radius: .75rem; border: 1px dashed #cbd5e1; font-size: .8125rem; color: #334155; }
.gp-co-error { margin-top: 1rem; padding: .625rem .875rem; border-radius: .75rem; border: 1px solid #fecaca; background: #fef2f2; font-size: .875rem; color: #991b1b; }
.gp-co-result { margin-top: 1.5rem; text-align: center; }
.gp-co-result h1 { margin: .75rem 0 0; font-size: 1.25rem; font-weight: 700; color: #0b1f33; }
.gp-co-result p { margin: .5rem 0 0; font-size: .875rem; line-height: 1.6; color: #5b6b7c; }
.gp-co-result.is-plain { text-align: left; }
.gp-co-result.is-plain h1 { margin-top: 0; }
.gp-co-badge { position: relative; display: inline-flex; width: 3.5rem; height: 3.5rem; align-items: center; justify-content: center; border-radius: 9999px; background: #f1f5f9; color: #475569; }
.gp-co-badge .gp-ico { width: 1.6rem; height: 1.6rem; }
.gp-co-result.is-success .gp-co-badge { background: #16a34a; color: #fff; box-shadow: 0 0 0 8px #dcfce7; animation: gp-co-pop .35s ease-out; }
@keyframes gp-co-pop { from { transform: scale(.7); } to { transform: none; } }
.gp-co-result.is-danger .gp-co-badge { background: #fee2e2; color: #b91c1c; }
.gp-co-result.is-info .gp-co-badge { background: #dbeafe; color: #1d4ed8; }
.gp-co-badge.is-spin::after { content: ""; position: absolute; inset: -4px; border-radius: 9999px; border: 2px solid transparent; border-top-color: #2563eb; animation: gp-co-spin 1.1s linear infinite; }
@keyframes gp-co-spin { to { transform: rotate(360deg); } }
.gp-co-receipt { margin: 1rem 0 0; display: grid; gap: .5rem; padding: .875rem 1rem; text-align: left; border: 1px solid #e2e8f0; border-radius: .875rem; }
.gp-co-receipt > div { display: flex; flex-wrap: wrap; justify-content: space-between; column-gap: .75rem; row-gap: .125rem; font-size: .8125rem; }
.gp-co-receipt > div.is-wide { flex-direction: column; gap: .25rem; }
.gp-co-receipt dt { flex: none; white-space: nowrap; color: #5b6b7c; }
.gp-co-receipt dd { flex: 1 1 auto; min-width: 0; margin: 0; text-align: right; color: #0b1f33; overflow-wrap: break-word; }
.gp-co-receipt > div.is-wide dd { text-align: left; }
.gp-co-meter { margin: 1rem auto 0; max-width: 16rem; height: .5rem; border-radius: 9999px; background: #e2e8f0; overflow: hidden; }
.gp-co-meter span { display: block; height: 100%; background: #2563eb; transition: width .4s ease; }
.gp-co-strong { color: #0b1f33 !important; font-weight: 600; }
.gp-co-small { margin: .5rem 0 0; font-size: .75rem !important; line-height: 1.55; color: #64748b !important; }
.gp-co-warn { margin-top: .875rem !important; padding: .625rem .875rem; border-radius: .75rem; background: #fffbeb; color: #92400e !important; }
.gp-co-qr { margin: 1rem auto 0; width: fit-content; max-width: 100%; padding: .75rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .875rem; }
.gp-co-actions { margin-top: .875rem; display: grid; gap: .5rem; }
@media (min-width: 480px) { .gp-co-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gp-co-btn { display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; padding: 0 .75rem; border-radius: .75rem; border: 1px solid #e2e8f0; background: #fff; font-size: .8125rem; font-weight: 600; color: #0b1f33; text-align: center; }
.gp-co-btn:hover { border-color: #2563eb; color: #2563eb; }
.gp-co-form { margin-top: 1.5rem; display: grid; gap: 1.125rem; }
.gp-co-form legend, .gp-co-form label[for] { display: block; margin-bottom: .5rem; font-size: .875rem; font-weight: 600; color: #0b1f33; }
.gp-co-form #mobile-hint { margin: -.25rem 0 .5rem; }
.gp-co-form input[type=tel], .gp-co-form input[type=email] { width: 100%; height: 3rem; padding: 0 .875rem; border: 1px solid #cbd5e1; border-radius: .75rem; background: #fff; font-size: .9375rem; color: #0b1f33; }
.gp-co-form input[type=tel]:focus, .gp-co-form input[type=email]:focus { outline: 2px solid #2563eb; outline-offset: 1px; border-color: #2563eb; }
.gp-co-methods { display: grid; gap: .5rem; }
.gp-co-method { position: relative; display: flex; align-items: center; gap: .75rem; padding: .75rem .875rem; border: 1.5px solid #e2e8f0; border-radius: .875rem; cursor: pointer; transition: border-color .15s, background-color .15s, box-shadow .15s; }
.gp-co-method:hover { border-color: #93c5fd; }
.gp-co-method input { position: absolute; opacity: 0; pointer-events: none; }
.gp-co-method img { width: 2.25rem; height: 2.25rem; object-fit: contain; border-radius: .5rem; }
.gp-co-method > span:not(.gp-choice-tick) { flex: 1; min-width: 0; }
.gp-co-method strong { display: block; font-size: .9375rem; color: #0b1f33; }
.gp-co-method em { display: block; font-style: normal; font-size: .75rem; color: #64748b; }
.gp-co-method:has(input:checked) { border-color: #2563eb; background: #f8fbff; box-shadow: 0 0 0 3px #dbeafe; }
.gp-co-method:has(input:checked) .gp-choice-tick { background: #2563eb; border-color: #2563eb; color: #fff; }
.gp-co-method:has(input:focus-visible) { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-co-submit { display: inline-flex; width: 100%; min-height: 3rem; align-items: center; justify-content: center; border-radius: .875rem; background: #2563eb; color: #fff; font-size: .9375rem; font-weight: 700; box-shadow: 0 10px 24px -12px rgba(37,99,235,.8); transition: background-color .15s, transform .1s; }
.gp-co-submit:hover { background: #1d4ed8; }
.gp-co-submit:active { transform: translateY(1px); }
.gp-co-submit:disabled { cursor: wait; opacity: .65; }
.gp-co-history { margin-top: 1.5rem; padding: .75rem 1rem; border-radius: .875rem; background: #f8fafc; }
.gp-co-history summary { cursor: pointer; font-size: .8125rem; font-weight: 600; color: #0b1f33; }
.gp-co-history ol { list-style: none; margin: .75rem 0 0; padding: 0 0 0 .875rem; border-left: 2px solid #e2e8f0; display: grid; gap: .5rem; }
.gp-co-history li { position: relative; display: flex; justify-content: space-between; gap: .75rem; font-size: .8125rem; color: #0b1f33; }
.gp-co-history li::before { content: ""; position: absolute; left: -1.25rem; top: .35rem; width: .5rem; height: .5rem; border-radius: 9999px; background: #94a3b8; box-shadow: 0 0 0 3px #f8fafc; }
.gp-co-history li.is-success::before { background: #16a34a; }
.gp-co-history li.is-danger::before { background: #dc2626; }
.gp-co-history li.is-info::before { background: #2563eb; }
.gp-co-history li.is-warning::before { background: #d97706; }
.gp-co-history time { flex: none; color: #64748b; font-variant-numeric: tabular-nums; }
.gp-co-return { margin-top: 1.25rem; text-align: center; }
.gp-co-return a { display: inline-flex; min-height: 2.75rem; align-items: center; font-size: .875rem; font-weight: 600; color: #2563eb; }
.gp-co-return p { margin: 0; font-size: .75rem; line-height: 1.5; color: #64748b; }
.gp-co-offline { margin: 1rem 0 0; padding: .5rem .75rem; border-radius: .625rem; background: #fef3c7; font-size: .75rem; color: #92400e; text-align: center; }

/* Batch 10: Google button + security page */
.gp-or { display: flex; align-items: center; gap: .75rem; margin: 1.5rem 0 1rem; color: #64748b; font-size: .75rem; text-transform: uppercase; letter-spacing: .12em; }
.gp-or::before, .gp-or::after { content: ""; flex: 1; height: 1px; background: #e2e8f0; }
.gp-google-btn { display: flex; width: 100%; min-height: 2.75rem; align-items: center; justify-content: center; gap: .625rem; border: 1px solid #cbd5e1; border-radius: .75rem; background: #fff; font-size: .875rem; font-weight: 600; color: #1f2937; transition: background-color .15s, border-color .15s; }
.gp-google-btn:hover { background: #f8fafc; border-color: #94a3b8; }
.gp-google-btn:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-google-note { margin: .5rem 0 0; font-size: .75rem; line-height: 1.5; color: #64748b; text-align: center; }
.gp-sec-grid { display: grid; gap: 1rem; }
@media (min-width: 1024px) { .gp-sec-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gp-sec-status { display: inline-flex; align-items: center; gap: .375rem; padding: .1875rem .625rem; border-radius: 9999px; font-size: .75rem; font-weight: 600; }
.gp-sec-status.is-on { background: #dcfce7; color: #166534; }
.gp-sec-status.is-off { background: #f1f5f9; color: #475569; }
.gp-sec-qr { width: 12rem; max-width: 100%; padding: .5rem; background: #fff; border: 1px solid #e2e8f0; border-radius: .75rem; }
.gp-sec-qr svg { display: block; width: 100%; height: auto; }
.gp-sec-secret { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .875rem; letter-spacing: .05em; color: #0b1f33; word-break: break-all; }
.gp-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; padding: 1rem; border-radius: .75rem; background: #0b1324; }
.gp-codes code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .9375rem; color: #e2e8f0; letter-spacing: .06em; }
.pt-5 { padding-top: 1.25rem; }
.self-start { align-self: flex-start; }

/* Batch 14: installer (centered glass wizard) */
.gp-inst-body { min-height: 100vh; margin: 0; background: #0b1f33; color: #0b1f33; font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; overflow-x: hidden; }
.gp-inst-bg { position: fixed; inset: 0; z-index: 0; background:
    radial-gradient(60rem 40rem at 10% -10%, rgba(37,99,235,.45), transparent 60%),
    radial-gradient(50rem 40rem at 110% 10%, rgba(79,70,229,.35), transparent 60%),
    linear-gradient(160deg, #0b1f33 0%, #10294a 55%, #0b1f33 100%); }
.gp-inst { position: relative; z-index: 1; display: flex; min-height: 100vh; flex-direction: column; align-items: center; justify-content: center; gap: 1.25rem; padding: 2rem 1rem; box-sizing: border-box; }
.gp-inst-brand { display: flex; align-items: center; gap: .75rem; color: #fff; }
.gp-inst-brand img { height: 2.25rem; width: auto; }
.gp-inst-brand strong { font-size: 1.375rem; font-weight: 800; letter-spacing: -.02em; }
.gp-inst-brand > span { padding: .1875rem .625rem; border-radius: 9999px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); font-size: .75rem; font-weight: 600; letter-spacing: .04em; color: #dbeafe; }
.gp-inst-steps { width: 100%; max-width: 44rem; }
.gp-inst-steps ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .25rem; }
.gp-inst-steps li { display: flex; flex-direction: column; align-items: center; gap: .375rem; text-align: center; }
.gp-inst-dot { display: inline-flex; width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; border-radius: 9999px; background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.22); color: #cbd5e1; font-size: .875rem; font-weight: 700; transition: background-color .2s, color .2s, box-shadow .2s; }
.gp-inst-dot svg { width: 1.1rem; height: 1.1rem; }
.gp-inst-steps li.is-done .gp-inst-dot { background: #22c55e; border-color: #22c55e; color: #fff; }
.gp-inst-steps li.is-current .gp-inst-dot { background: #fff; border-color: #fff; color: #1d4ed8; box-shadow: 0 0 0 5px rgba(147,197,253,.35); }
.gp-inst-step-label { font-size: .75rem; font-weight: 600; color: #cbd5e1; }
.gp-inst-steps li.is-current .gp-inst-step-label { color: #fff; }
.gp-inst-progress { margin: .75rem auto 0; height: .25rem; max-width: 36rem; border-radius: 9999px; background: rgba(255,255,255,.15); overflow: hidden; }
.gp-inst-progress span { display: block; height: 100%; background: linear-gradient(90deg, #60a5fa, #a5b4fc); transition: width .4s ease; }
@media (max-width: 480px) { .gp-inst-step-label { display: none; } .gp-inst-dot { width: 2rem; height: 2rem; } }
.gp-inst-card { width: 100%; max-width: 44rem; box-sizing: border-box; padding: 1.75rem 1.5rem; border-radius: 1.5rem; background: rgba(255,255,255,.94); border: 1px solid rgba(255,255,255,.6); box-shadow: 0 30px 80px -30px rgba(2,6,23,.65), inset 0 1px 0 rgba(255,255,255,.8); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); animation: gp-inst-in .3s ease-out; }
@media (min-width: 640px) { .gp-inst-card { padding: 2.25rem 2.5rem; } }
@keyframes gp-inst-in { from { transform: translateY(6px); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .gp-inst-card, .gp-inst-dot, .gp-inst-progress span, .gp-inst-spinner { animation: none !important; transition: none !important; } }
.gp-inst-foot { margin: 0; font-size: .75rem; color: rgba(226,232,240,.7); text-align: center; }
.gp-inst-eyebrow { margin: 0; font-size: .75rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #2563eb; }
.gp-inst-card h1 { margin: .375rem 0 0; font-size: clamp(1.5rem, 3.5vw, 1.875rem); font-weight: 800; letter-spacing: -.02em; color: #0b1f33; line-height: 1.2; }
.gp-inst-card h2 { margin: 0; font-size: 1.0625rem; font-weight: 700; color: #0b1f33; }
.gp-inst-lead { margin: .5rem 0 0; font-size: .9375rem; line-height: 1.6; color: #475569; }
.gp-inst-form { display: grid; gap: 1rem; margin-top: 1.5rem; }
.gp-inst-grid { display: grid; gap: 1rem; }
@media (min-width: 560px) { .gp-inst-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gp-inst-grid .is-wide { grid-column: span 2 / span 2; } }
.gp-inst-field label { display: block; margin-bottom: .375rem; font-size: .8125rem; font-weight: 600; color: #0b1f33; }
.gp-inst-field input, .gp-inst-field select { box-sizing: border-box; width: 100%; height: 2.875rem; padding: 0 .875rem; border: 1px solid #cbd5e1; border-radius: .75rem; background: #fff; font-size: .9375rem; color: #0b1f33; transition: border-color .15s, box-shadow .15s; }
.gp-inst-field input:focus, .gp-inst-field select:focus { outline: none; border-color: #2563eb; box-shadow: 0 0 0 4px rgba(37,99,235,.18); }
.gp-inst-field input[aria-invalid="true"] { border-color: #dc2626; }
.gp-inst-hint { margin: .375rem 0 0; font-size: .75rem; line-height: 1.5; color: #475569; }
.gp-inst-check { display: flex; gap: .625rem; align-items: flex-start; padding: .75rem .875rem; border: 1px solid #e2e8f0; border-radius: .75rem; background: #f8fafc; font-size: .875rem; line-height: 1.5; color: #0b1f33; cursor: pointer; }
.gp-inst-check input { margin-top: .2rem; width: 1rem; height: 1rem; accent-color: #2563eb; flex: none; }
.gp-inst-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-top: .5rem; }
.gp-inst-btn { display: inline-flex; min-height: 2.875rem; align-items: center; justify-content: center; gap: .5rem; padding: 0 1.375rem; border: 0; border-radius: .875rem; background: linear-gradient(180deg, #2563eb, #1d4ed8); color: #fff; font-size: .9375rem; font-weight: 700; box-shadow: 0 12px 24px -12px rgba(37,99,235,.9); cursor: pointer; text-decoration: none; transition: transform .1s, box-shadow .15s, opacity .15s; }
.gp-inst-btn:hover { box-shadow: 0 16px 28px -12px rgba(37,99,235,.95); }
.gp-inst-btn:active { transform: translateY(1px); }
.gp-inst-btn:focus-visible, .gp-inst-btn-ghost:focus-visible { outline: 3px solid #93c5fd; outline-offset: 2px; }
.gp-inst-btn:disabled { opacity: .65; cursor: wait; }
.gp-inst-btn.is-wide { width: 100%; }
.gp-inst-btn-ghost { display: inline-flex; min-height: 2.875rem; align-items: center; justify-content: center; padding: 0 1.125rem; border: 1px solid #cbd5e1; border-radius: .875rem; background: #fff; color: #0b1f33; font-size: .875rem; font-weight: 600; text-decoration: none; cursor: pointer; }
.gp-inst-btn-ghost:hover { border-color: #2563eb; color: #1d4ed8; }
.gp-inst-spinner { width: 1rem; height: 1rem; border-radius: 9999px; border: 2px solid rgba(255,255,255,.45); border-top-color: #fff; animation: gp-inst-spin .8s linear infinite; display: none; }
.gp-inst-btn.is-busy .gp-inst-spinner { display: inline-block; }
@keyframes gp-inst-spin { to { transform: rotate(360deg); } }
.gp-inst-alert { display: flex; gap: .625rem; margin-top: 1.25rem; padding: .875rem 1rem; border-radius: .875rem; font-size: .875rem; line-height: 1.55; }
.gp-inst-alert svg { flex: none; width: 1.125rem; height: 1.125rem; margin-top: .1rem; }
.gp-inst-alert.is-success { background: #f0fdf4; border: 1px solid #bbf7d0; color: #166534; }
.gp-inst-alert.is-danger { background: #fef2f2; border: 1px solid #fecaca; color: #991b1b; }
.gp-inst-alert.is-warning { background: #fffbeb; border: 1px solid #fde68a; color: #92400e; }
.gp-inst-alert.is-info { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; }
.gp-inst-reqs { list-style: none; margin: 1.25rem 0 0; padding: 0; display: grid; gap: .5rem; }
.gp-inst-req { display: flex; gap: .75rem; align-items: flex-start; padding: .75rem .875rem; border: 1px solid #e2e8f0; border-radius: .875rem; background: #fff; }
.gp-inst-badge { flex: none; display: inline-flex; min-width: 4.75rem; justify-content: center; padding: .1875rem .5rem; border-radius: 9999px; font-size: .6875rem; font-weight: 700; letter-spacing: .04em; }
.gp-inst-req.is-passed .gp-inst-badge { background: #dcfce7; color: #166534; }
.gp-inst-req.is-warning .gp-inst-badge { background: #fef3c7; color: #92400e; }
.gp-inst-req.is-failed { border-color: #fecaca; background: #fffafa; }
.gp-inst-req.is-failed .gp-inst-badge { background: #fee2e2; color: #991b1b; }
.gp-inst-req strong { display: block; font-size: .875rem; color: #0b1f33; }
.gp-inst-req p { margin: .125rem 0 0; font-size: .8125rem; line-height: 1.5; color: #64748b; overflow-wrap: anywhere; }
.gp-inst-summary { margin: 1.25rem 0 0; display: grid; gap: .5rem; padding: 1rem 1.125rem; border-radius: .875rem; background: #f8fafc; border: 1px solid #e2e8f0; }
.gp-inst-summary > div { display: flex; justify-content: space-between; gap: 1rem; font-size: .8125rem; }
.gp-inst-summary dt { color: #64748b; }
.gp-inst-summary dd { margin: 0; text-align: right; font-weight: 600; color: #0b1f33; overflow-wrap: anywhere; }
.gp-inst-section { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid #e2e8f0; }
.gp-inst-success { text-align: center; }
.gp-inst-success-badge { display: inline-flex; width: 4rem; height: 4rem; align-items: center; justify-content: center; border-radius: 9999px; background: #16a34a; color: #fff; box-shadow: 0 0 0 10px #dcfce7; }
.gp-inst-success-badge svg { width: 2rem; height: 2rem; }
.gp-inst-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .8125rem; }

/* Batch 15: one global reduced-motion guard so every gp-* animation and transition respects the OS setting. */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* Batch 17: WCAG AA contrast (measured on computed styles). Unlayered, so it overrides the compiled Tailwind theme token without a rebuild.
   danger #ef4444 was 3.76:1 for error text and for white text on danger buttons. */
:root { --color-danger: #dc2626; }
.text-danger { color: #b91c1c; }

/* Batch 21: support tickets */
.gp-ticket-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.gp-ticket-list a { display: grid; gap: .25rem; padding: .875rem 1rem; border: 1px solid var(--gp-line); border-radius: .875rem; background: #fff; color: inherit; text-decoration: none; }
.gp-ticket-list a:hover { border-color: #bfdbfe; }
.gp-ticket-list a:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.gp-ticket-list strong { min-width: 0; overflow-wrap: anywhere; font-size: .9375rem; color: #0b1f33; }
.gp-ticket-id { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .75rem; color: #526070; overflow-wrap: anywhere; }
.gp-ticket-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-size: .75rem; color: #526070; }
.gp-ticket-facts { margin: 1rem 0 0; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; font-size: .8125rem; }
.gp-ticket-facts dt { color: #526070; }
.gp-ticket-facts dd { margin: 0; color: #0b1f33; overflow-wrap: anywhere; }
.gp-ticket-thread { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: .75rem; }
.gp-ticket-msg { padding: 1rem; border: 1px solid var(--gp-line); border-radius: .875rem; background: #fff; }
.gp-ticket-msg.is-staff { border-color: #bfdbfe; background: #f8fbff; }
.gp-ticket-author { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .25rem .75rem; margin: 0; font-size: .8125rem; color: #526070; }
.gp-ticket-author strong { color: #0b1f33; }
.gp-ticket-body { margin-top: .5rem; font-size: .9375rem; line-height: 1.6; color: #1e293b; white-space: pre-line; overflow-wrap: anywhere; }
.gp-ticket-attachments { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem; font-size: .8125rem; }
.gp-ticket-attachments a { display: inline-flex; align-items: center; min-height: 2.75rem; padding: 0 .75rem; border: 1px solid var(--gp-line); border-radius: .625rem; color: #1d4ed8; overflow-wrap: anywhere; }
.gp-ticket-attachments span { align-self: center; color: #526070; }
.gp-ticket-file { display: block; width: 100%; max-width: 100%; font-size: .875rem; color: #334155; }
