
@font-face {
    font-family: "estedadFa";
    src: url("../fonts/estedad/estedad-fd.woff2") format("woff2-variations");
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
}


@font-face {
    font-family: 'FontAwesome';
    src: url("../plugins/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
         url("../plugins/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),
         url("../plugins/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype");
    font-weight: normal;
    font-style: normal;
    font-display: block;
}

/* مرورگرهای قدیمی که از فونت variable پشتیبانی نمی‌کنند */
@supports not (font-variation-settings: normal) {
    @font-face {
        font-family: "estedadFa";
        src: url("../fonts/estedad/static/fd/Estedad-FD-Light.woff2") format("woff2");
        font-style: normal;
        font-weight: 300;
        font-display: swap;
    }

    @font-face {
        font-family: "estedadFa";
        src: url("../fonts/estedad/static/fd/Estedad-FD-Regular.woff2") format("woff2");
        font-style: normal;
        font-weight: 400;
        font-display: swap;
    }

    @font-face {
        font-family: "estedadFa";
        src: url("../fonts/estedad/static/fd/Estedad-FD-Bold.woff2") format("woff2");
        font-style: normal;
        font-weight: 700;
        font-display: swap;
    }
}

:root {
    --gutter: 28px;
    --maxw: 1280px;
    --bg: #05070f;
    --glow1: rgba(0, 112, 243, .20);
    --glow2: rgba(120, 60, 255, .12);
    --headerbg: rgba(5, 7, 15, .82);
    --surface: rgba(255, 255, 255, .035);
    --surface2: rgba(255, 255, 255, .06);
    --surface3: rgba(255, 255, 255, .05);
    --border: rgba(255, 255, 255, .08);
    --border2: rgba(255, 255, 255, .12);
    --text: #fff;
    --text1: #e8ecf5;
    --text2: #9aa4bb;
    --text3: #7d879e;
    --text4: #6f7a91;
    --brandtext: #7fc0ff;
    --brandsoft: rgba(0, 112, 243, .15);
    --brandline: rgba(0, 163, 255, .22);
    --brandwash: rgba(0, 112, 243, .10);
    --panel: linear-gradient(180deg, #0c1322, #080b14);
    --imgbg: linear-gradient(140deg, #0b1a33, #0d2a52);
    --imgline: rgba(255, 255, 255, .05);
    --imgtext: rgba(255, 255, 255, .4);
    --warnbg: rgba(251, 191, 36, .07);
    --warnline: rgba(251, 191, 36, .2);
    --warntext: #d6c08a;
    --warnicon: #fbbf24;
    --okbg: rgba(16, 185, 129, .10);
    --okline: rgba(16, 185, 129, .28);
    --oktext: #6ee7b7;
    --okicon: #34d399;
    --dangerbg: rgba(239, 68, 68, .11);
    --dangerline: rgba(239, 68, 68, .28);
    --dangertext: #fca5a5;
    --shadow: 0 30px 80px rgba(0, 0, 0, .55);
    --logocut: #05070f;
    /*
     * پس‌زمینه فیلدها مات است، نه نیمه‌شفاف. دلیلش select است: مرورگر رنگ
     * نیمه‌شفاف را روی پس‌زمینه پیش‌فرض خودِ ویجت ترکیب می‌کند نه پس‌زمینه
     * صفحه، پس select هیچ‌وقت با input کنار خودش یکسان در نمی‌آمد.
     *
     * حالا input و select و textarea هر سه از همین یک مقدار استفاده می‌کنند
     * تا در هر پنلی که قرار بگیرند دقیقا هم‌رنگ باشند.
     */
    --fieldbg: #161c2b;
    --selectbg: var(--fieldbg);
    --optionbg: var(--fieldbg);
}

:root[data-theme="light"] {
    --bg: #f1f4fb;
    --glow1: rgba(0, 112, 243, .14);
    --glow2: rgba(120, 60, 255, .07);
    --headerbg: rgba(255, 255, 255, .88);
    --surface: #fff;
    --surface2: #eaf1fd;
    --surface3: #f3f7fe;
    --border: rgba(11, 18, 32, .10);
    --border2: rgba(11, 18, 32, .16);
    --text: #0b1220;
    --text1: #16203a;
    --text2: #55607f;
    --text3: #78849d;
    --text4: #8d97ae;
    --brandtext: #0057c8;
    --brandsoft: rgba(0, 112, 243, .10);
    --brandline: rgba(0, 112, 243, .20);
    --brandwash: rgba(0, 112, 243, .07);
    --panel: linear-gradient(180deg, #fff, #f4f8ff);
    --imgbg: linear-gradient(140deg, #dce8fb, #bed4f6);
    --imgline: rgba(11, 18, 32, .05);
    --imgtext: rgba(11, 18, 32, .45);
    --warnbg: rgba(217, 119, 6, .08);
    --warnline: rgba(217, 119, 6, .22);
    --warntext: #8a5a06;
    --warnicon: #d97706;
    --okbg: rgba(16, 185, 129, .10);
    --okline: rgba(16, 185, 129, .32);
    --oktext: #047857;
    --okicon: #059669;
    --dangertext: #b91c1c;
    --shadow: 0 24px 60px rgba(19, 40, 88, .13);
    --logocut: #fff;
    --fieldbg: #f5f8fe;
    --selectbg: var(--fieldbg);
    --optionbg: var(--fieldbg);
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    background: var(--bg);
    font-family: "estedadFa", Tahoma, sans-serif;
    font-synthesis: none;
}

body {
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    background:
        radial-gradient(1200px 600px at 80% -10%, var(--glow1), transparent 60%),
        radial-gradient(900px 500px at 10% 10%, var(--glow2), transparent 60%),
        var(--bg);
    color: var(--text1);
    font-family: inherit;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body,
button,
input,
select,
textarea,
option,
optgroup {
    font-family: inherit;
}

button,
input,
select,
textarea {
    letter-spacing: 0;
}

button,
a {
    -webkit-tap-highlight-color: transparent;
}

a {
    color: #0f8bff;
    text-decoration: none;
}

a:hover {
    color: #4dabff;
}

img {
    max-width: 100%;
}

::selection {
    color: #fff;
    background: #0070f3;
}

@keyframes gpFloat {
    0%,
    100% { transform: translateY(0); }
    50% { transform: translateY(-14px); }
}

@keyframes gpFade {
    from { opacity: 0; transform: translateY(14px); }
    to { opacity: 1; transform: none; }
}

@keyframes gpSpin {
    to { transform: rotate(360deg); }
}

.gp-loading {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(5, 7, 15, .72);
    backdrop-filter: blur(8px);
}

.gp-loading.is-active {
    display: flex;
}

.gp-loading span {
    width: 38px;
    height: 38px;
    border: 3px solid rgba(255, 255, 255, .15);
    border-top-color: #00a3ff;
    border-radius: 50%;
    animation: gpSpin .8s linear infinite;
}

.gp-header {
    position: sticky;
    top: 0;
    z-index: 50;
    border-bottom: 1px solid var(--border);
    background: var(--headerbg);
    backdrop-filter: blur(16px);
}

.gp-header__inner {
    width: min(var(--maxw), 100%);
    height: 78px;
    margin: 0 auto;
    padding: 0 var(--gutter);
    display: flex;
    align-items: center;
    gap: 26px;
}

.gp-brand {
    flex: none;
    display: flex;
    align-items: center;
    gap: 11px;
    color: var(--text);
}

.gp-brand:hover {
    color: var(--text);
}

/*
 * لوگوی تک‌تصویری سایت. ارتفاع ثابت است و عرض از روی نسبت خود تصویر
 * ساخته می‌شود تا لوگوهای مربعی و کشیده هر دو درست بنشینند.
 */
.gp-brand__image {
    height: 40px;
    width: auto;
    max-width: 190px;
    display: block;
    object-fit: contain;
}

.gp-brand__mark {
    width: 40px;
    height: 40px;
    flex: none;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #0070f3, #00d4ff);
    box-shadow: 0 6px 20px rgba(0, 112, 243, .45);
}

.gp-brand__mark span {
    width: 16px;
    height: 16px;
    border: 3px solid var(--logocut);
    border-radius: 50%;
}

.gp-brand__copy {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.gp-brand__copy strong {
    color: var(--text);
    font-size: 17px;
    font-weight: 800;
}

.gp-brand__copy small {
    color: var(--text3);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: .06em;
}

.gp-nav {
    min-width: 0;
    flex: 1;
    display: flex;
    align-items: center;
    gap: 2px;
}

.gp-nav a {
    padding: 10px 13px;
    border-radius: 10px;
    color: var(--text2);
    font-size: 14px;
    font-weight: 500;
    white-space: nowrap;
    transition: background .18s ease, color .18s ease;
}

.gp-nav a:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-nav a {
    position: relative;
}

.gp-nav a.is-active {
    color: var(--text);
}

.gp-nav a.is-active::after {
    position: absolute;
    right: 13px;
    bottom: 2px;
    left: 13px;
    height: 2px;
    border-radius: 2px;
    content: "";
    background: linear-gradient(90deg, #0070f3, #00d4ff);
}

.gp-mobile-panel a.is-active {
    color: var(--brandtext);
    background: var(--brandwash);
}

/* دکمه تغییر تم داخل منوی موبایل، هم‌شکل با لینک‌های همان منو */
.gp-mobile-panel__theme {
    width: 100%;
    margin-top: 4px;
    padding: 11px 12px;
    border: 0;
    border-top: 1px solid var(--border);
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    color: var(--text2);
    background: none;
    font: inherit;
    font-size: 14px;
    text-align: right;
}

.gp-mobile-panel__theme > i {
    width: 18px;
    color: var(--text3);
    text-align: center;
}

.gp-mobile-panel__theme:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-header__actions {
    flex: none;
    display: flex;
    align-items: center;
    gap: 10px;
}

.gp-icon-button {
    position: relative;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--text2);
    background: var(--surface3);
}

.gp-icon-button:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-cart-count {
    position: absolute;
    top: -6px;
    left: -6px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: #0070f3;
    font-size: 9px;
    font-weight: 800;
}

.gp-cart-count.is-empty {
    display: none;
}

.gp-support-pill {
    position: relative;
    padding: 9px 14px 9px 12px;
    border: 1px solid var(--okline);
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--oktext);
    background: var(--okbg);
}

.gp-support-pill:hover {
    color: var(--oktext);
    filter: brightness(1.06);
}

.gp-support-pill__status {
    position: absolute;
    top: -9px;
    right: 10px;
    padding: 2px 7px;
    border-radius: 6px;
    color: #fff;
    background: #10b981;
    font-size: 9.5px;
    font-weight: 700;
}

.gp-support-pill__icon {
    width: 26px;
    height: 26px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--okicon);
    background: rgba(16, 185, 129, .18);
    font-size: 13px;
}

.gp-support-pill strong {
    color: var(--oktext);
    font-size: 14px;
    letter-spacing: .02em;
}

.gp-primary-button,
.gp-user-button {
    min-height: 42px;
    border: 0;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    cursor: pointer;
    color: #fff;
    background: linear-gradient(135deg, #0070f3, #00a3ff);
    box-shadow: 0 8px 22px rgba(0, 112, 243, .35);
    font-size: 14px;
    font-weight: 600;
}

.gp-primary-button {
    padding: 11px 18px;
}

.gp-primary-button:hover,
.gp-user-button:hover {
    color: #fff;
    filter: brightness(1.1);
}

.gp-primary-button:disabled,
.gp-submit:disabled {
    cursor: not-allowed;
    filter: grayscale(.5);
    opacity: .55;
    box-shadow: none;
}

.gp-user-button {
    position: relative;
    padding: 7px 25px 7px 25px;
}

/* آیکون فقط زمانی لازم است که متن دکمه در موبایل مخفی می‌شود */
.gp-user-button > i {
    display: none;
    font-size: 15px;
}

.gp-mobile-toggle,
.gp-mobile-panel {
    display: none;
}

.gp-shell,
.container {
    width: min(var(--maxw), 100%);
    margin-right: auto;
    margin-left: auto;
    padding-right: var(--gutter);
    padding-left: var(--gutter);
}

.gp-hero {
    padding-top: 56px;
    padding-bottom: 24px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(380px, 460px);
    gap: 56px;
    align-items: start;
}

.gp-hero__content {
    position: sticky;
    top: 100px;
    align-self: start;
    animation: gpFade .5s ease both;
}

.gp-kicker {
    margin-bottom: 22px;
    padding: 7px 14px;
    border: 1px solid var(--brandline);
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 12.5px;
    font-weight: 500;
}

.gp-kicker::before {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    content: "";
    background: #00a3ff;
    box-shadow: 0 0 10px #00a3ff;
}

.gp-hero h1 {
    margin: 0 0 18px;
    color: var(--text);
    font-size: 52px;
    line-height: 1.25;
    font-weight: 800;
    text-wrap: balance;
}

.gp-gradient-text {
    color: transparent;
    background: linear-gradient(120deg, #0070f3, #00a3ff 60%, #7b6bff);
    -webkit-background-clip: text;
    background-clip: text;
}

.gp-hero__lead {
    max-width: 620px;
    margin: 0 0 30px;
    color: var(--text2);
    font-size: 16.5px;
    line-height: 2.15;
    text-wrap: pretty;
}

.gp-features {
    max-width: 620px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.gp-feature {
    min-width: 0;
    padding: 15px 16px;
    border: 1px solid var(--border);
    border-radius: 14px;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--surface);
}

.gp-feature__icon {
    width: 34px;
    height: 34px;
    flex: none;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 15px;
}

.gp-feature__text {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.gp-feature__text strong {
    color: var(--text1);
    font-size: 14px;
    font-weight: 600;
}

.gp-feature__text small {
    color: var(--text3);
    font-size: 12px;
    line-height: 1.7;
}

.gp-buy-frame {
    position: sticky;
    top: 100px;
    padding: 1px;
    border-radius: 26px;
    background: linear-gradient(160deg, rgba(0, 163, 255, .55), var(--border) 40%, rgba(123, 107, 255, .35));
    box-shadow: var(--shadow);
}

.gp-buy-panel {
    padding: 22px;
    border-radius: 25px;
    background: var(--panel);
}

.gp-gift-card {
    position: relative;
    min-height: 230px;
    padding: 22px;
    aspect-ratio: 1.6;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    border-radius: 18px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    color: #fff;
    background: linear-gradient(150deg, #0057c8, #0091ff 45%, #00d4ff);
    animation: gpFloat 7s ease-in-out infinite;
}

.gp-gift-card::before {
    position: absolute;
    inset: 0;
    content: "";
    background: repeating-linear-gradient(115deg, rgba(255, 255, 255, .07) 0 2px, transparent 2px 16px);
}

.gp-gift-card::after {
    position: absolute;
    top: -110px;
    left: -60px;
    width: 260px;
    height: 260px;
    border-radius: 50%;
    content: "";
    background: rgba(255, 255, 255, .10);
}

.gp-gift-card__top,
.gp-gift-card__bottom {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.gp-gift-card__top small {
    color: rgba(255, 255, 255, .85);
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .18em;
}

.gp-gift-card__badge {
    padding: 5px 11px;
    border-radius: 8px;
    color: #fff;
    background: rgba(5, 7, 15, .5);
    font-size: 12px;
    font-weight: 700;
}

.gp-gift-card__title {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gp-gift-card__title small {
    color: rgba(255, 255, 255, .8);
    font-size: 13px;
}

.gp-gift-card__title strong {
    color: #fff;
    font-size: 25px;
    font-weight: 800;
}

.gp-gift-card__logo {
    width: 58px;
    height: 58px;
    flex: none;
    padding: 7px;
    overflow: hidden;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #0070f3;
    background: rgba(255, 255, 255, .92);
    font-size: 22px;
}

.gp-gift-card__logo img {
    width: 100%;
    height: 100%;
    border-radius: 10px;
    object-fit: cover;
}

.gp-selector {
    margin-top: 22px;
}

.gp-selector__label {
    margin: 20px 0 11px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.gp-selector__label:first-child {
    margin-top: 0;
}

.gp-selector__label strong {
    color: var(--text1);
    font-size: 13px;
    font-weight: 600;
}

.gp-selector__label small {
    color: var(--text3);
    font-size: 11.5px;
}

.gp-region-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gp-region-chip,
.gp-product-chip,
.gp-qty-button,
.gp-qty-shortcut {
    cursor: pointer;
    color: var(--text1);
    background: var(--surface3);
    transition: background .18s ease, color .18s ease, border-color .18s ease;
}

.gp-region-chip {
    position: relative;
    min-height: 42px;
    padding: 9px 12px;
    border: 1px solid var(--border);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
}

.gp-region-chip small {
    padding: 2px 5px;
    border-radius: 5px;
    color: var(--text3);
    background: var(--surface2);
    font-size: 9.5px;
    font-weight: 700;
}

.gp-region-chip:hover,
.gp-product-chip:hover,
.gp-qty-button:hover {
    background: var(--surface2);
}

.gp-region-chip.is-active,
.gp-product-chip.is-active {
    border-color: #00a3ff;
    color: var(--brandtext);
    background: var(--brandwash);
    box-shadow: 0 0 0 3px rgba(0, 112, 243, .12);
}

.gp-product-list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}

.gp-product-chip {
    min-height: 43px;
    padding: 8px 5px;
    border: 1px solid var(--border);
    border-radius: 11px;
    font-size: 12.5px;
    font-weight: 700;
    line-height: 1.45;
}

.gp-product-chip[hidden] {
    display: none;
}

.gp-quantity {
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--surface3);
}

.gp-qty-button {
    width: 40px;
    height: 40px;
    flex: none;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 700;
}

.gp-qty-value {
    flex: 1;
    text-align: center;
}

.gp-qty-value strong {
    display: block;
    color: var(--text);
    font-size: 20px;
    font-weight: 800;
}

.gp-qty-value small {
    display: block;
    margin-top: 2px;
    color: var(--text4);
    font-size: 10.5px;
}

.gp-qty-shortcuts {
    margin-top: 8px;
    display: flex;
    gap: 8px;
}

.gp-qty-shortcut {
    flex: 1;
    padding: 8px 0;
    border: 1px dashed var(--border2);
    border-radius: 10px;
    color: var(--text3);
    background: transparent;
    font-size: 12px;
    font-weight: 600;
}

.gp-qty-shortcut:hover {
    border-color: var(--brandline);
    color: var(--brandtext);
}

.gp-qty-shortcut.is-active {
    border-color: #00a3ff;
    color: var(--brandtext);
    background: var(--brandwash);
}

.gp-qty-button:disabled,
.gp-qty-shortcut:disabled {
    cursor: not-allowed;
    opacity: .4;
}

.gp-total-box {
    margin-top: 20px;
    padding: 16px 18px;
    border: 1px solid var(--brandline);
    border-radius: 16px;
    background: var(--brandwash);
}

.gp-total-line,
.gp-total-payable,
.gp-total-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.gp-total-line {
    margin-bottom: 9px;
    color: var(--text3);
    font-size: 12px;
}

.gp-total-line strong {
    color: var(--text2);
    font-size: 12.5px;
    font-weight: 600;
}

.gp-total-payable {
    padding-top: 11px;
    border-top: 1px solid var(--border);
}

.gp-total-payable > span {
    color: var(--text2);
    font-size: 13px;
}

.gp-total-price {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.gp-total-price strong {
    color: var(--text);
    font-size: 28px;
    font-weight: 800;
}

.gp-total-price small {
    color: var(--text2);
    font-size: 13px;
}

.gp-total-meta {
    margin-top: 9px;
    padding-top: 11px;
    border-top: 1px solid var(--border);
    color: var(--text3);
    font-size: 11.5px;
}

.gp-total-meta b {
    color: var(--warnicon);
    font-weight: 600;
}

.gp-total-meta del {
    margin: 0 3px;
    color: var(--text4);
}

.gp-buy-actions {
    margin-top: 14px;
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 10px;
}

.gp-buy-actions .gp-primary-button,
.gp-secondary-button {
    min-width: 0;
    min-height: 50px;
    padding: 14px;
    border-radius: 14px;
    font-size: 14px;
    font-weight: 700;
}

.gp-secondary-button {
    /* دکمه یک تگ <a> است، پس برای وسط‌چین شدن متن به flex نیاز دارد */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid var(--border2);
    cursor: pointer;
    color: var(--text1);
    background: var(--surface3);
    text-align: center;
    text-decoration: none;
    transition: border-color .18s ease, background .18s ease, color .18s ease, transform .18s ease;
}

.gp-secondary-button > i {
    color: var(--text3);
    font-size: 16px;
    transition: color .18s ease;
}

.gp-secondary-button:hover {
    border-color: var(--brandline);
    color: var(--brandtext);
    background: var(--brandwash);
    transform: translateY(-1px);
}

.gp-secondary-button:hover > i {
    color: var(--brandtext);
}

.gp-secondary-button:active {
    transform: translateY(0);
}

.gp-secondary-button:focus-visible {
    outline: 2px solid var(--brandline);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {

    .gp-secondary-button,
    .gp-secondary-button > i {
        transition: none;
    }

    .gp-secondary-button:hover {
        transform: none;
    }
}

.gp-buy-note {
    margin: 14px 0 0;
    color: var(--text4);
    font-size: 11.5px;
    line-height: 1.9;
    text-align: center;
}

.gp-warning-wrap {
    padding-top: 14px;
}

.gp-warning {
    padding: 14px 18px;
    border: 1px solid var(--warnline);
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--warntext);
    background: var(--warnbg);
    font-size: 13px;
    line-height: 1.9;
}

.gp-warning i {
    flex: none;
    color: var(--warnicon);
}

.gp-warning a {
    color: var(--warnicon);
    font-weight: 600;
}

.gp-stats {
    padding-top: 70px;
    padding-bottom: 70px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}

.gp-stat {
    padding: 24px 22px;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--surface);
}

.gp-stat strong {
    display: block;
    color: var(--text);
    font-size: 30px;
    font-weight: 800;
}

.gp-stat span {
    display: block;
    margin-top: 6px;
    color: var(--text2);
    font-size: 13px;
}

.gp-section {
    padding-top: 80px;
    padding-bottom: 80px;
}

.gp-section--wash {
    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
    background: var(--brandwash);
}

.gp-section__narrow {
    width: min(1000px, 100%);
    margin: 0 auto;
    padding: 0 var(--gutter);
}

.gp-section__head {
    margin-bottom: 44px;
    text-align: center;
}

.gp-section__head h2 {
    margin: 0 0 10px;
    color: var(--text);
    font-size: 34px;
    font-weight: 800;
}

.gp-section__head p {
    margin: 0;
    color: var(--text2);
    font-size: 15px;
}

.gp-faq-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gp-faq {
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--surface);
}

.gp-faq summary {
    width: 100%;
    padding: 20px 22px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    cursor: pointer;
    color: var(--text1);
    font-size: 15.5px;
    font-weight: 600;
    list-style: none;
}

.gp-faq summary::-webkit-details-marker {
    display: none;
}

.gp-faq summary::after {
    width: 28px;
    height: 28px;
    flex: none;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    content: "+";
    color: var(--brandtext);
    background: var(--surface2);
    font-size: 15px;
}

.gp-faq[open] summary::after {
    content: "−";
}

.gp-faq__answer {
    padding: 0 22px 22px;
    color: var(--text2);
    font-size: 14px;
    line-height: 2.2;
}

.gp-faq__answer p:first-child {
    margin-top: 0;
}

.gp-faq__answer p:last-child {
    margin-bottom: 0;
}

.gp-section-bar {
    margin-bottom: 34px;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
}

.gp-section-bar h2 {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 32px;
    font-weight: 800;
}

.gp-section-bar p {
    margin: 0;
    color: var(--text2);
    font-size: 15px;
}

.gp-text-link {
    flex: none;
    padding: 11px 18px;
    border: 1px solid var(--border);
    border-radius: 12px;
    color: var(--text1);
    background: var(--surface3);
    font-size: 13.5px;
    font-weight: 600;
}

.gp-text-link:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-blog-grid,
.gp-product-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

.gp-blog-card,
.gp-related-card {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    color: var(--text1);
    background: var(--surface);
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.gp-blog-card:hover,
.gp-related-card:hover {
    border-color: var(--brandline);
    color: var(--text1);
    box-shadow: var(--shadow);
    transform: translateY(-2px);
}

.gp-blog-card__image,
.gp-related-card__image {
    position: relative;
    overflow: hidden;
    aspect-ratio: 1.9;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--imgbg);
}

.gp-blog-card__image::after {
    position: absolute;
    inset: 0;
    content: "";
    background: repeating-linear-gradient(45deg, var(--imgline) 0 1px, transparent 1px 12px);
}

.gp-blog-card__image img,
.gp-related-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gp-blog-card__image span {
    position: relative;
    z-index: 1;
    color: var(--imgtext);
    font-family: ui-monospace, Menlo, monospace;
    font-size: 11px;
    letter-spacing: .08em;
}

.gp-blog-card__body,
.gp-related-card__body {
    padding: 20px;
}

.gp-blog-card__meta {
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--text3);
    font-size: 11.5px;
}

.gp-blog-card__meta b {
    padding: 3px 9px;
    border-radius: 7px;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-weight: 600;
}

.gp-blog-card h3,
.gp-related-card h3 {
    margin: 0 0 9px;
    color: var(--text1);
    font-size: 16px;
    line-height: 1.75;
    font-weight: 700;
}

.gp-blog-card p {
    margin: 0;
    color: var(--text2);
    font-size: 13px;
    line-height: 2;
}

/* ------------------------------------------------------------------ *
 * Customer panel
 * ------------------------------------------------------------------ */
.gp-panel {
    width: min(var(--maxw), 100%);
    margin: 0 auto;
    padding: 44px var(--gutter) 90px;
    display: grid;
    grid-template-columns: minmax(230px, 260px) minmax(0, 1fr);
    gap: 26px;
    align-items: start;
}

.gp-panel__aside {
    position: sticky;
    top: 100px;
    /*
     * آیتم گرید به‌طور پیش‌فرض min-width: auto دارد، یعنی هیچ‌وقت کوچک‌تر
     * از محتوای خودش نمی‌شود. بدون این خط، محتوای نوار کناری (نام کاربر،
     * تب‌ها، دکمه خروج) ستون را تا ~۹۷۷ پیکسل باز می‌کرد و کل پنل کاربری
     * در موبایل اسکرول افقی می‌ساخت. .gp-panel__main از قبل این را داشت.
     */
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
}

.gp-panel__user {
    margin-bottom: 16px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 12px;
}

.gp-panel__identity {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gp-panel__identity strong {
    overflow: hidden;
    color: var(--text);
    font-size: 14.5px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gp-panel__identity small {
    color: var(--text3);
    font-size: 11.5px;
}

.gp-panel__tabs {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gp-panel__tabs a {
    padding: 12px 13px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 11px;
    color: var(--text2);
    background: transparent;
    font-size: 14px;
    font-weight: 600;
    transition: background .18s ease, color .18s ease;
}

.gp-panel__tabs a:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-panel__tabs a.is-active {
    color: var(--brandtext);
    background: var(--brandwash);
}

.gp-panel__tabs i {
    width: 18px;
    flex: none;
    text-align: center;
    font-size: 14px;
}

.gp-panel__tabs span {
    min-width: 0;
    flex: 1;
}

.gp-panel__tabs em {
    min-width: 20px;
    height: 20px;
    flex: none;
    padding: 0 6px;
    border-radius: 7px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: #ef4444;
    font-size: 10px;
    font-style: normal;
    font-weight: 700;
}

.gp-panel__logout {
    width: 100%;
    margin-top: 16px;
    padding: 12px;
    border: 1px solid var(--border2);
    border-radius: 12px;
    display: block;
    color: var(--text3);
    background: transparent;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    transition: color .18s ease, border-color .18s ease;
}

.gp-panel__logout:hover {
    border-color: rgba(239, 68, 68, .4);
    color: #ef4444;
}

.gp-panel__main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 22px;
}

.gp-panel__stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 16px;
}

.gp-panel__stat {
    padding: 20px 22px;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--surface);
}

.gp-panel__stat-label {
    display: block;
    margin-bottom: 9px;
    color: var(--text3);
    font-size: 12.5px;
}

.gp-panel__stat-value {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.gp-panel__stat-value strong {
    color: var(--text);
    font-size: 24px;
    font-weight: 800;
}

.gp-panel__stat-value small {
    color: var(--text3);
    font-size: 12px;
}

.gp-panel__card {
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
}

.gp-panel__card--pad {
    padding: 24px;
}

.gp-panel__card--wash {
    border-color: var(--brandline);
    background: var(--brandwash);
}

.gp-panel__card h3 {
    margin: 0 0 16px;
    color: var(--text);
    font-size: 15.5px;
    font-weight: 700;
}

.gp-panel__card--wash h3 {
    margin-bottom: 10px;
}

.gp-panel__card--wash > p {
    margin: 0 0 18px;
    color: var(--text2);
    font-size: 13px;
    line-height: 2;
}

.gp-panel__note {
    margin: 0 0 18px;
    color: var(--text2);
    font-size: 13px;
    line-height: 2;
}

.gp-panel__card-head {
    padding: 20px 24px;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.gp-panel__card--pad .gp-panel__card-head {
    margin: -24px -24px 22px;
}

.gp-panel__card-head--plain {
    border-bottom: 1px solid var(--border);
}

.gp-panel__card-head h2 {
    margin: 0;
    color: var(--text);
    font-size: 18px;
    font-weight: 700;
}

.gp-panel__count {
    color: var(--text3);
    font-size: 12.5px;
}

/* Generic padded body for panel cards that hold a form instead of a table. */
.gp-panel__card-body {
    padding: 24px;
}

.gp-gift-form {
    max-width: 520px;
}

.gp-gift-hints {
    margin: 22px 0 0;
    padding: 18px 20px;
    list-style: none;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface3);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.gp-gift-hints li {
    position: relative;
    padding-inline-start: 20px;
    color: var(--text2);
    font-size: 12.5px;
    line-height: 1.9;
}

.gp-gift-hints li::before {
    content: "";
    position: absolute;
    inset-inline-start: 0;
    top: 10px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--brandtext);
}

.gp-panel__head-meta {
    display: flex;
    align-items: center;
    gap: 10px;
}

.gp-panel__head-button {
    min-height: 40px;
    padding: 10px 16px;
    border-radius: 11px;
    font-size: 13px;
}

.gp-panel__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 16px;
}

.gp-panel__grid--wallet {
    grid-template-columns: minmax(0, 1fr);
}

.gp-panel__block-button {
    width: 100%;
    margin-top: 18px;
    padding: 12px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 600;
}

.gp-panel__wallet {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.gp-panel__wallet-box {
    min-width: 0;
    flex: 1;
    padding: 16px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface);
}

.gp-panel__wallet-box span {
    display: block;
    margin-bottom: 7px;
    color: var(--text3);
    font-size: 11.5px;
}

.gp-panel__wallet-box strong {
    color: var(--text);
    font-size: 19px;
    font-weight: 800;
}

.gp-panel__wallet-box small {
    margin-right: 4px;
    color: var(--text3);
    font-size: 11.5px;
}

.gp-panel__wallet-actions {
    margin-top: 16px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.gp-panel__wallet-actions > a {
    min-height: 44px;
    flex: 1;
    padding: 12px 16px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13.5px;
    font-weight: 600;
}

.gp-panel__pagination {
    padding: 18px 24px;
    display: flex;
    justify-content: center;
}

.gp-panel__empty {
    padding: 54px 24px;
    text-align: center;
}

.gp-panel__empty > span {
    width: 58px;
    height: 58px;
    margin: 0 auto 18px;
    border-radius: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 22px;
}

.gp-panel__empty p {
    margin: 0 0 22px;
    color: var(--text2);
    font-size: 14px;
    line-height: 2;
}

.gp-panel__empty .gp-primary-button {
    padding: 12px 22px;
}

/* Key / value list */
.gp-kv-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gp-kv {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-size: 13px;
}

.gp-kv > span {
    flex: none;
    color: var(--text3);
}

.gp-kv > strong {
    min-width: 0;
    color: var(--text1);
    font-weight: 600;
    overflow-wrap: anywhere;
    text-align: left;
}

/* Panel tables */
.gp-table {
    display: flex;
    flex-direction: column;
}

.gp-table__head,
.gp-table__row {
    display: grid;
    gap: 12px;
    align-items: center;
}

.gp-table__head {
    padding: 14px 24px;
    border-bottom: 1px solid var(--border);
    color: var(--text3);
    background: var(--surface3);
    font-size: 11.5px;
}

.gp-table__row {
    padding: 16px 24px;
    border-bottom: 1px solid var(--border);
}

.gp-table__row:last-child {
    border-bottom: 0;
}

.gp-table--orders .gp-table__head,
.gp-table--orders .gp-table__row,
.gp-table--tickets .gp-table__head,
.gp-table--tickets .gp-table__row {
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, .9fr);
}

.gp-table--transactions .gp-table__head,
.gp-table--transactions .gp-table__row {
    grid-template-columns: 40px minmax(0, 1.1fr) minmax(0, .9fr) minmax(0, .9fr) minmax(0, 1.2fr) minmax(0, 1fr);
}

.gp-table--gifts .gp-table__head,
.gp-table--gifts .gp-table__row {
    grid-template-columns: 40px minmax(0, 1fr) minmax(0, 1.6fr) minmax(0, 1.2fr);
}

.gp-table__cell {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gp-table__cell b {
    color: var(--text1);
    font-size: 13px;
    font-weight: 700;
}

.gp-table__cell small,
.gp-table__sub {
    color: var(--text4);
    font-size: 11px;
}

.gp-table__cell--index {
    color: var(--text3);
    font-size: 12px;
}

.gp-table__cell--action {
    align-items: flex-end;
}

.gp-table__cell--wrap {
    overflow-wrap: anywhere;
    font-size: 12px;
}

.gp-table__muted {
    color: var(--text4);
}

.gp-table__link {
    color: var(--text1);
    font-size: 13.5px;
    font-weight: 600;
}

.gp-table__link:hover {
    color: var(--brandtext);
}

.gp-badge {
    padding: 5px 11px;
    border-radius: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    font-size: 11.5px;
    font-style: normal;
    font-weight: 600;
    white-space: nowrap;
}

.gp-badge.is-ok {
    color: var(--okicon);
    background: rgba(16, 185, 129, .14);
}

.gp-badge.is-pending {
    color: var(--warnicon);
    background: rgba(217, 119, 6, .14);
}

.gp-badge.is-failed {
    color: #ef4444;
    background: rgba(239, 68, 68, .13);
}

.gp-badge.is-muted {
    color: var(--text2);
    background: var(--surface2);
}

.gp-badge.is-new {
    color: #fff;
    background: #0070f3;
}

.gp-legend {
    display: flex;
    gap: 7px;
    flex-wrap: wrap;
}

.gp-ghost-button,
.gp-danger-button,
.gp-link-button {
    border-radius: 9px;
    cursor: pointer;
    font-weight: 600;
}

.gp-ghost-button {
    padding: 7px 12px;
    border: 1px solid var(--border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    background: var(--surface3);
    font-size: 11.5px;
    transition: color .18s ease, border-color .18s ease;
}

.gp-ghost-button:hover {
    border-color: var(--brandline);
    color: var(--brandtext);
}

.gp-danger-button {
    min-height: 46px;
    padding: 12px 20px;
    border: 1px solid var(--dangerline);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--dangertext);
    background: var(--dangerbg);
    font-size: 14px;
}

.gp-danger-button:hover {
    filter: brightness(1.1);
}

.gp-link-button {
    padding: 0;
    border: 0;
    align-self: flex-start;
    color: var(--brandtext);
    background: transparent;
    font-size: 13px;
    text-align: right;
}

.gp-link-button small {
    color: var(--text3);
    font-size: 11px;
}

/* Delivered code cards */
.gp-code-list {
    padding: 20px 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.gp-code-card {
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: var(--surface3);
}

.gp-code-card__head {
    padding: 16px 18px;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 14px;
}

.gp-code-card__thumb {
    width: 52px;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 13px;
    background: var(--imgbg);
}

.gp-code-card__thumb img {
    width: 75%;
    height: 75%;
    object-fit: contain;
}

.gp-code-card__title {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.gp-code-card__title strong {
    color: var(--text);
    font-size: 14.5px;
    font-weight: 700;
}

.gp-code-card__title small {
    color: var(--text3);
    font-size: 11.5px;
}

.gp-code-card__tracking {
    flex: none;
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-align: left;
}

.gp-code-card__tracking small {
    color: var(--text4);
    font-size: 10.5px;
}

.gp-code-card__tracking b {
    color: var(--text1);
    font-size: 12.5px;
    font-weight: 700;
}

.gp-code-card__body {
    padding: 18px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gp-code-row {
    padding: 14px 16px;
    border: 1px dashed var(--brandline);
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    background: var(--brandwash);
}

.gp-code-row__label {
    flex: none;
    color: var(--text3);
    font-size: 11.5px;
}

.gp-code-row__value {
    min-width: 0;
    flex: 1;
    color: var(--text);
    font-family: ui-monospace, Menlo, monospace;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: .1em;
    overflow-wrap: anywhere;
}

.gp-copy-button {
    flex: none;
    padding: 9px 14px;
    border: 1px solid var(--border2);
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    cursor: pointer;
    color: var(--text1);
    background: var(--surface);
    font-size: 12.5px;
    font-weight: 600;
}

.gp-copy-button:hover {
    border-color: #00a3ff;
    color: var(--brandtext);
}

.gp-code-card__note {
    padding: 14px 16px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface);
    font-size: 13px;
    line-height: 2;
}

.gp-code-card__pending {
    margin: 18px;
    padding: 14px 16px;
    border: 1px solid var(--warnline);
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--warntext);
    background: var(--warnbg);
    font-size: 13px;
}

.gp-code-card__foot {
    padding: 0 18px 18px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.gp-code-card__foot > a {
    min-height: 44px;
    padding: 12px 18px;
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-size: 13.5px;
    font-weight: 600;
}

/* Ticket thread */
.gp-thread {
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.gp-message {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.gp-message.is-self {
    flex-direction: row-reverse;
}

.gp-message__bubble {
    max-width: min(560px, 82%);
    padding: 16px 18px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: var(--surface3);
}

.gp-message.is-self .gp-message__bubble {
    border-color: var(--brandline);
    background: var(--brandwash);
}

.gp-message__text {
    color: var(--text1);
    font-size: 14px;
    line-height: 2.1;
    overflow-wrap: anywhere;
}

.gp-message__meta {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    color: var(--text3);
    font-size: 11.5px;
}

.gp-message__attach {
    color: var(--brandtext);
    font-weight: 600;
}

.gp-thread__composer {
    padding: 22px 24px 24px;
    border-top: 1px solid var(--border);
    background: var(--surface3);
}

.gp-thread__actions {
    margin-top: 6px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.gp-thread__actions > button {
    min-height: 46px;
    padding: 12px 20px;
    border-radius: 12px;
    font-size: 14px;
}

/* Panel forms */
.gp-form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 4px 18px;
}

.gp-field--full {
    grid-column: 1 / -1;
}

.gp-field--actions {
    margin-top: 10px;
}

.gp-field--actions .gp-submit {
    width: auto;
    min-width: 220px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

/* Account profile: keep labels and fields aligned in a predictable grid. */
.gp-profile-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 20px;
}

.gp-profile-form .gp-field {
    min-width: 0;
    margin-bottom: 0;
}

.gp-profile-form .gp-field label {
    min-height: 20px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.gp-profile-form .gp-field label small {
    padding: 2px 7px;
    border-radius: 999px;
    background: var(--surface3);
    line-height: 1.5;
}

.gp-profile-form .gp-field input[disabled] {
    background: var(--surface3);
}

@media (max-width: 620px) {
    .gp-profile-form {
        grid-template-columns: 1fr;
        gap: 18px;
    }

    .gp-profile-form .gp-field label {
        min-height: 0;
        flex-wrap: wrap;
    }
}

.gp-field label small {
    color: var(--text4);
    font-size: 11.5px;
}

.gp-field input[disabled],
.gp-field select[disabled],
.gp-field textarea[disabled] {
    cursor: not-allowed;
    color: var(--text3);
    opacity: .75;
}

.gp-field input[type="file"] {
    padding: 10px 14px;
    cursor: pointer;
}

.gp-req {
    color: #ef4444;
}

/* Narrow standalone pages (guide / about) */
.gp-narrow {
    width: min(var(--maxw), 100%);
    min-height: 460px;
    margin: 0 auto;
    padding: 52px var(--gutter) 90px;
}

.gp-about-intro {
    margin-bottom: 40px;
    font-size: 16.5px;
    line-height: 2.35;
}

.gp-guide-intro {
    margin-bottom: 28px;
    padding: 26px 28px;
}

.gp-value-grid {
    margin-bottom: 44px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 16px;
}

.gp-value-card {
    padding: 26px 24px;
    border: 1px solid var(--border);
    border-radius: 20px;
    background: var(--surface);
}

.gp-value-card__icon {
    width: 40px;
    height: 40px;
    margin-bottom: 16px;
    border-radius: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 16px;
}

.gp-value-card h3 {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 16.5px;
    font-weight: 700;
}

.gp-value-card p {
    margin: 0;
    color: var(--text2);
    font-size: 13.5px;
    line-height: 2.05;
}

.gp-stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 16px;
}

.gp-stat--wash {
    padding: 22px;
    border-color: var(--brandline);
    background: var(--brandwash);
}

.gp-stat--wash strong {
    font-size: 26px;
}

.gp-stat--wash span {
    font-size: 12.5px;
}

.gp-step-list {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.gp-step-list .gp-guide-step {
    gap: 20px;
}

.gp-step-list .gp-guide-step h3 {
    margin: 6px 0 8px;
    font-size: 17px;
}

.gp-step-list .gp-guide-step p {
    font-size: 14.5px;
    line-height: 2.1;
}

.gp-warning--block {
    margin-top: 36px;
    padding: 20px 22px;
    align-items: flex-start;
    font-size: 14px;
    line-height: 2.1;
}

.gp-guide-faqs {
    margin-top: 56px;
}

.gp-guide-faqs .gp-section-bar h2 {
    font-size: 26px;
}

/* Payment result */
.gp-result__hero {
    margin-bottom: 24px;
    padding: 44px 30px;
    border: 1px solid var(--border);
    border-radius: 24px;
    background: var(--surface);
    text-align: center;
}

.gp-result__hero.is-ok {
    border-color: var(--okline);
    background: var(--okbg);
}

.gp-result__hero.is-failed {
    border-color: var(--dangerline);
    background: var(--dangerbg);
}

.gp-result__hero.is-warn {
    border-color: var(--warnline);
    background: var(--warnbg);
}

.gp-result__icon {
    width: 68px;
    height: 68px;
    margin: 0 auto 20px;
    border-radius: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 26px;
}

.gp-result__hero.is-ok .gp-result__icon {
    background: linear-gradient(135deg, #059669, #10b981);
}

.gp-result__hero.is-failed .gp-result__icon {
    background: linear-gradient(135deg, #dc2626, #ef4444);
}

.gp-result__hero.is-warn .gp-result__icon {
    background: linear-gradient(135deg, #d97706, #fbbf24);
}

.gp-result__hero h1 {
    margin: 0 0 12px;
    color: var(--text);
    font-size: 28px;
    font-weight: 800;
}

.gp-result__hero p {
    max-width: 560px;
    margin: 0 auto;
    color: var(--text2);
    font-size: 15px;
    line-height: 2;
}

.gp-result__card {
    margin-bottom: 22px;
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
}

.gp-result__card h2 {
    margin: 0 0 18px;
    color: var(--text);
    font-size: 17px;
    font-weight: 700;
}

.gp-result__codes {
    padding: 0;
    margin-bottom: 22px;
}

.gp-result__actions {
    margin-top: 22px;
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    justify-content: center;
}

.gp-result__actions > a {
    min-height: 48px;
    padding: 13px 24px;
    border-radius: 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 14.5px;
    font-weight: 600;
}

/* Wallet top-up */
.gp-charge__balance {
    margin-bottom: 20px;
    padding: 24px;
    border: 1px solid var(--brandline);
    border-radius: 20px;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 8px;
    background: var(--brandwash);
}

.gp-charge__balance span {
    color: var(--text2);
    font-size: 14px;
}

.gp-charge__balance strong {
    color: var(--text);
    font-size: 30px;
    font-weight: 800;
}

.gp-charge__balance small {
    color: var(--text3);
    font-size: 13px;
}

.gp-tabs {
    padding: 14px 22px 0;
    border-bottom: 1px solid var(--border);
}

.gp-tabs .nav-tabs {
    display: flex;
    gap: 8px;
    border: 0;
}

.gp-tabs .nav-link {
    padding: 11px 18px;
    border: 1px solid var(--border);
    border-radius: 12px 12px 0 0;
    cursor: pointer;
    color: var(--text2);
    background: var(--surface3);
    font-size: 13.5px;
    font-weight: 600;
}

.gp-tabs .nav-link.active {
    border-color: var(--brandline);
    border-bottom-color: transparent;
    color: var(--brandtext);
    background: var(--brandwash);
}

/*
 * تب‌ها با data-bs-toggle="tab" کار می‌کنند ولی فایل CSS بوت‌استرپ در
 * page_head.php لود نمی‌شود (فقط giftplus.css و font-awesome). بدون قوانین
 * زیر همه tab-pane‌ها همیشه دیده می‌شوند و کلیک روی تب هیچ اثری ندارد.
 */
.tab-content > .tab-pane {
    display: none;
}

.tab-content > .tab-pane.active {
    display: block;
}

.fade {
    transition: opacity 0.15s linear;
    opacity: 0;
}

.fade.show {
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .fade {
        transition: none;
    }
}

.gp-charge__packages {
    margin-top: 14px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.charge-package {
    padding: 9px 15px;
    border: 1px dashed var(--border2);
    border-radius: 11px;
    cursor: pointer;
    color: var(--text2);
    background: transparent;
    font-size: 13px;
    font-weight: 600;
    transition: border-color .18s ease, color .18s ease, background .18s ease;
}

.charge-package:hover,
.charge-package.active {
    border-color: #00a3ff;
    border-style: solid;
    color: var(--brandtext);
    background: var(--brandwash);
}

.gp-charge__dollar {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid var(--border);
}

.gp-charge__dollar::after {
    display: table;
    clear: both;
    content: "";
}

.gp-charge__dollar .title-box {
    float: right;
    color: var(--text2);
    font-size: 13px;
}

.gp-charge__dollar .box {
    float: left;
    margin: 0;
    color: var(--text1);
    font-size: 13.5px;
    font-weight: 700;
}

.gp-charge__actions {
    padding: 0 22px 22px;
}

/* Blog archive chips */
.gp-chip-row {
    margin-bottom: 28px;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
}

.gp-chip {
    padding: 9px 16px;
    border: 1px solid var(--border);
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--text1);
    background: var(--surface);
    font-size: 13px;
    transition: background .18s ease, border-color .18s ease, color .18s ease;
}

.gp-chip:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-chip small {
    padding: 1px 6px;
    border-radius: 6px;
    color: var(--text3);
    background: var(--surface2);
    font-size: 10.5px;
    font-weight: 700;
}

.gp-chip.is-active {
    border-color: var(--brandline);
    color: var(--brandtext);
    background: var(--brandwash);
}

.gp-chip.is-active small {
    color: var(--brandtext);
    background: var(--brandsoft);
}

/* Pagination */
.gp-pagination-wrap {
    margin-top: 44px;
    display: flex;
    justify-content: center;
}

.gp-pagination {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.gp-pagination a,
.gp-pagination span {
    min-width: 40px;
    height: 40px;
    padding: 0 12px;
    border: 1px solid var(--border);
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text1);
    background: var(--surface);
    font-size: 14px;
    font-weight: 600;
}

.gp-pagination a:hover {
    color: var(--text);
    background: var(--surface2);
}

.gp-pagination span.is-active {
    border-color: #00a3ff;
    color: var(--brandtext);
    background: var(--brandwash);
}

/* Empty state */
.gp-empty-state {
    padding: 64px 28px;
    border: 1px dashed var(--border2);
    border-radius: 22px;
    background: var(--surface);
    text-align: center;
}

.gp-empty-state__icon {
    width: 62px;
    height: 62px;
    margin: 0 auto 20px;
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 24px;
}

.gp-empty-state h2 {
    margin: 0 0 10px;
    color: var(--text);
    font-size: 21px;
    font-weight: 700;
}

.gp-empty-state p {
    max-width: 460px;
    margin: 0 auto 24px;
    color: var(--text2);
    font-size: 14px;
    line-height: 2;
}

.gp-empty-state .gp-primary-button {
    padding: 13px 24px;
}

/* Single post */
.gp-article {
    width: min(var(--maxw), 100%);
    margin: 0 auto;
    padding: 52px var(--gutter) 90px;
}

.gp-article__title {
    margin: 16px 0;
    color: var(--text);
    font-size: 36px;
    line-height: 1.55;
    font-weight: 800;
    text-wrap: balance;
}

.gp-article__meta {
    margin-bottom: 28px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    color: var(--text3);
    font-size: 12.5px;
}

.gp-article__meta b {
    padding: 4px 10px;
    border-radius: 8px;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-weight: 600;
}

.gp-article__cover {
    position: relative;
    margin-bottom: 36px;
    overflow: hidden;
    aspect-ratio: 2.1;
    border: 1px solid var(--border);
    border-radius: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--imgbg);
}

.gp-article__cover::after {
    position: absolute;
    inset: 0;
    content: "";
    background: repeating-linear-gradient(45deg, var(--imgline) 0 1px, transparent 1px 12px);
}

.gp-article__cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.gp-article__cover span {
    position: relative;
    z-index: 1;
    color: var(--imgtext);
    font-family: ui-monospace, Menlo, monospace;
    font-size: 12px;
    letter-spacing: .08em;
}

.gp-article__lead {
    margin-bottom: 26px;
    padding: 20px 22px;
    border: 1px solid var(--brandline);
    border-radius: 16px;
    color: var(--text1);
    background: var(--brandwash);
    font-size: 15px;
    line-height: 2.1;
}

.gp-article__body {
    font-size: 16px;
    line-height: 2.35;
}

.gp-article__body h2 {
    margin: 38px 0 14px;
    font-size: 23px;
    font-weight: 700;
}

.gp-article__body h3 {
    margin: 30px 0 12px;
    font-size: 19px;
    font-weight: 700;
}

.gp-article__body p {
    margin: 0 0 18px;
    text-wrap: pretty;
}

.gp-article__body blockquote {
    margin: 26px 0;
    padding: 20px 22px;
    border: 1px solid var(--brandline);
    border-radius: 16px;
    color: var(--text1);
    background: var(--brandwash);
    font-size: 15px;
    line-height: 2.1;
}

.gp-article__body ul,
.gp-article__body ol {
    margin: 0 0 18px;
    padding-right: 22px;
}

.gp-article__body li {
    margin-bottom: 8px;
}

.gp-article__cta {
    margin-top: 46px;
    padding: 26px;
    border: 1px solid var(--border);
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    background: var(--surface);
}

.gp-article__cta strong {
    display: block;
    margin-bottom: 6px;
    color: var(--text);
    font-size: 17px;
    font-weight: 700;
}

.gp-article__cta span {
    color: var(--text2);
    font-size: 13.5px;
}

.gp-article__cta .gp-primary-button {
    flex: none;
    padding: 14px 22px;
    border-radius: 13px;
}

.gp-article__related {
    margin-top: 56px;
}

.gp-article__related h2 {
    margin: 0 0 22px;
    color: var(--text);
    font-size: 24px;
    font-weight: 800;
}

.gp-article__related .gp-blog-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gp-guide {
    scroll-margin-top: 110px;
}

#about,
#blog,
#faqs {
    scroll-margin-top: 100px;
}

.gp-guide-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
}

.gp-about {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(300px, 1fr);
    gap: 20px;
    align-items: stretch;
}

.gp-about__values {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gp-about__values .gp-feature {
    flex: 1;
}

.gp-guide-step {
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: 20px;
    display: flex;
    gap: 18px;
    background: var(--surface);
}

.gp-guide-step > span {
    width: 44px;
    height: 44px;
    flex: none;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    background: linear-gradient(135deg, #0070f3, #00b3ff);
    font-size: 17px;
    font-weight: 800;
}

.gp-guide-step h3 {
    margin: 4px 0 8px;
    color: var(--text);
    font-size: 16px;
    font-weight: 700;
}

.gp-guide-step p {
    margin: 0;
    color: var(--text2);
    font-size: 13px;
    line-height: 2;
}

/*
 * gp-cta باید دقیقا هم‌عرض بقیه سکشن‌های صفحه اصلی باشد.
 *
 * قبلا فقط padding افقی داشت و هیچ max-width نداشت، پس تا لبه ویوپورت
 * کشیده می‌شد؛ در نتیجه min(--maxw, 100%) روی gp-cta__inner نسبت به کل
 * عرض صفحه حساب می‌شد نه نسبت به ستون مشترک ۱۲۲۴ پیکسلی. بالای ۱۲۸۰
 * پیکسل این باعث می‌شد کادر CTA حدود ۱۶۰ پیکسل از hero/stats/about/footer
 * پهن‌تر باشد. حالا خودش مثل gp-shell محدود و وسط‌چین می‌شود.
 */
.gp-cta {
    width: min(var(--maxw), 100%);
    margin-right: auto;
    margin-left: auto;
    padding: 0 var(--gutter) 90px;
}

.gp-cta__inner {
    width: 100%;
    margin: 0 auto;
    padding: 44px 48px;
    border: 1px solid var(--brandline);
    border-radius: 26px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    flex-wrap: wrap;
    background: var(--brandwash);
}

.gp-cta h3 {
    margin: 0 0 10px;
    color: var(--text);
    font-size: 26px;
    font-weight: 800;
}

.gp-cta p {
    margin: 0;
    color: var(--text2);
    font-size: 15px;
    line-height: 1.9;
}

.gp-cta__actions {
    flex: none;
    display: flex;
    gap: 12px;
}

.gp-cta__actions a {
    min-height: 50px;
    padding: 14px 24px;
    border-radius: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    font-weight: 700;
}

.gp-cta__actions a:first-child {
    color: #fff;
    background: linear-gradient(135deg, #0070f3, #00b3ff);
}

.gp-cta__actions a:last-child {
    border: 1px solid var(--border2);
    color: var(--text1);
    background: var(--surface);
}

.gp-footer {
    border-top: 1px solid var(--border);
    background: var(--surface);
}

.gp-footer__grid {
    width: min(var(--maxw), 100%);
    margin: 0 auto;
    padding: 56px var(--gutter) 30px;
    display: grid;
    grid-template-columns: minmax(260px, 1.6fr) repeat(3, minmax(140px, 1fr));
    gap: 40px;
}

.gp-footer__about .gp-brand {
    margin-bottom: 18px;
}

.gp-footer__about p {
    max-width: 380px;
    margin: 0 0 18px;
    color: var(--text2);
    font-size: 13.5px;
    line-height: 2.1;
}

.gp-socials {
    display: flex;
    gap: 10px;
}

.gp-socials a {
    width: 36px;
    height: 36px;
    border: 1px solid var(--border);
    border-radius: 11px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    background: var(--surface3);
    font-size: 13px;
}

.gp-socials a:hover {
    color: var(--brandtext);
    background: var(--brandsoft);
}

.gp-footer__column h4 {
    margin: 0 0 16px;
    color: var(--text);
    font-size: 14px;
    font-weight: 700;
}

.gp-footer__column nav {
    display: flex;
    flex-direction: column;
    gap: 11px;
    text-align: right;
}

.gp-footer__column a,
.gp-footer__column span {
    color: var(--text2);
    font-size: 13.5px;
}

.gp-footer__column a:hover {
    color: var(--brandtext);
}

/* راه‌های ارتباطی: آدرس چند خطی خواناتر باشد */
.gp-footer__contact span {
    line-height: 2;
}

/* نماد اعتماد در فوتر */
.gp-footer__enamad img,
.gp-footer__enamad a img,
.gp-footer__enamad img[src] {
    max-width: 110px;
    height: auto;
    border-radius: 10px;
    background: #fff;
}

.gp-footer__bottom {
    width: min(var(--maxw), 100%);
    margin: 0 auto;
    padding: 20px var(--gutter) 34px;
    border-top: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
}

.gp-footer__bottom > span {
    color: var(--text4);
    font-size: 12.5px;
}

.gp-certificates {
    display: flex;
    align-items: center;
    gap: 10px;
}

.gp-certificate,
.gp-certificates > a,
.gp-certificates > span {
    min-height: 36px;
    padding: 8px 14px;
    border: 1px solid var(--border);
    border-radius: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    background: var(--surface3);
    font-size: 11.5px;
}

.gp-certificates img {
    width: auto;
    max-width: 70px;
    max-height: 55px;
    object-fit: contain;
}

/* Shared inner pages */
.main,
.gp-inner {
    width: min(var(--maxw), 100%);
    min-height: 460px;
    margin: 0 auto;
    padding: 52px var(--gutter) 90px;
}

.gp-page-head,
.caption {
    margin-bottom: 34px;
    text-align: right;
}

.gp-page-head__crumb {
    margin-bottom: 14px;
    color: var(--text3);
    font-size: 12.5px;
}

.gp-page-head h1,
.caption h1 {
    margin: 0 0 12px;
    color: var(--text);
    font-size: 38px;
    line-height: 1.5;
    font-weight: 800;
}

.gp-page-head p {
    margin: 0;
    color: var(--text2);
    font-size: 15.5px;
    line-height: 2;
}

.gp-content-card,
.card,
.shadow,
.half-box {
    border: 1px solid var(--border);
    border-radius: 20px;
    color: var(--text1);
    background: var(--surface);
    box-shadow: none;
}

.gp-content-card {
    padding: 30px;
}

.gp-prose,
.page-text,
.text-description,
.long-text {
    color: var(--text2);
    font-size: 15px;
    line-height: 2.25;
}

.gp-prose h1,
.gp-prose h2,
.gp-prose h3,
.page-text h1,
.page-text h2,
.page-text h3 {
    color: var(--text);
}

.gp-prose img,
.page-text img {
    height: auto;
    border-radius: 16px;
}

.gp-contact-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(300px, 420px);
    gap: 28px;
    align-items: start;
}

.gp-form-panel,
.gp-auth__panel {
    min-width: 0;
    padding: 30px;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
}

/*
 * عرض و فاصله چپ/راست دقیقا مثل هدر، فوتر و .gp-shell است تا لبه‌ی
 * محتوای این سکشن با بقیه صفحه در یک خط بیفتد.
 *
 * gp-auth__intro حذف شده؛ فرم ورود تنها فرزند است، پس گرید دو ستونه لازم
 * نیست و فرم به صورت تمام‌عرض و وسط‌چین در یک ستون قرار می‌گیرد.
 */
.gp-auth {
    width: min(var(--maxw), 100%);
    margin: 0 auto;
    padding: 60px var(--gutter) 100px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.gp-auth__frame {
    width: 100%;
    max-width: 560px;
}

.gp-auth__frame {
    padding: 1px;
    border-radius: 24px;
    background: linear-gradient(160deg, rgba(0, 163, 255, .5), var(--border) 45%, rgba(123, 107, 255, .3));
    box-shadow: var(--shadow);
}

.gp-auth__panel {
    border: 0;
    border-radius: 23px;
    background: var(--panel);
}

.gp-auth__panel .gp-brand {
    margin-bottom: 24px;
}

.gp-form-title {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 20px;
    font-weight: 700;
}

.gp-form-help {
    margin: 0 0 22px;
    color: var(--text2);
    font-size: 13.5px;
    line-height: 2;
}

.gp-field,
.form-group {
    margin-bottom: 16px;
}

.gp-field label,
.form-group label,
.gp-form-panel label {
    margin-bottom: 8px;
    display: block;
    color: var(--text2);
    font-size: 13px;
}

.gp-field input,
.gp-field select,
.gp-field textarea,
.form-control,
.form-select {
    width: 100%;
    min-height: 48px;
    padding: 12px 14px;
    border: 1px solid var(--border2);
    border-radius: 12px;
    outline: none;
    color: var(--text1);
    background: var(--fieldbg);
    font-size: 14px;
}

/*
 * select دقیقا همان پس‌زمینه input و textarea را می‌گیرد. color-scheme هم
 * فلش و لیست بازشوی بومی مرورگر را با تم هماهنگ می‌کند.
 */
.gp-field select,
.form-select,
select.form-control {
    background-color: var(--selectbg);
    background-image: none;
}

/* تم سایت با data-theme کنترل می‌شود، نه تنظیمات سیستم‌عامل */
:root {
    color-scheme: dark;
}

:root[data-theme="light"] {
    color-scheme: light;
}

/* لیست بازشو در ویندوز/لینوکس از این رنگ‌ها پیروی می‌کند */
.gp-field select option,
.form-select option,
select.form-control option,
.gp-field select optgroup,
.form-select optgroup,
select.form-control optgroup {
    color: var(--text1);
    background-color: var(--optionbg);
}

.gp-field textarea,
textarea.form-control {
    min-height: 130px;
    resize: vertical;
}

.gp-field input:focus,
.gp-field select:focus,
.gp-field textarea:focus,
.form-control:focus,
.form-select:focus {
    border-color: #00a3ff;
    box-shadow: 0 0 0 3px rgba(0, 112, 243, .15);
}

.gp-submit,
.btn.bg-gradient-primary,
.btn-primary {
    width: 100%;
    min-height: 49px;
    padding: 13px 22px;
    border: 0;
    border-radius: 13px;
    cursor: pointer;
    color: #fff;
    background: linear-gradient(135deg, #0070f3, #00b3ff);
    box-shadow: 0 12px 28px rgba(0, 112, 243, .35);
    font-size: 15px;
    font-weight: 700;
}

.gp-submit:hover,
.btn.bg-gradient-primary:hover,
.btn-primary:hover {
    color: #fff;
    filter: brightness(1.1);
}

/* Split OTP input */
.gp-otp {
    margin-bottom: 8px;
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    gap: 10px;
}

.gp-otp__box {
    width: 100%;
    padding: 16px 0;
    border: 1px solid var(--border2);
    border-radius: 13px;
    outline: none;
    color: var(--text);
    background: var(--fieldbg);
    font-size: 22px;
    font-weight: 800;
    text-align: center;
    transition: border-color .18s ease, box-shadow .18s ease;
}

.gp-otp__box:focus {
    border-color: #00a3ff;
    box-shadow: 0 0 0 3px rgba(0, 112, 243, .15);
}

/* The real field stays reachable for assistive tech and no-JS fallback, but
   collapses to a thin line so the boxes are the visual control. */
.gp-otp__value {
    width: 100%;
    min-height: 44px;
    margin-bottom: 6px;
    padding: 10px 14px;
    border: 1px dashed var(--border2);
    border-radius: 11px;
    outline: none;
    color: var(--text2);
    background: transparent;
    font-size: 14px;
    letter-spacing: .3em;
    text-align: center;
    direction: ltr;
}

.gp-otp__value:focus {
    border-color: #00a3ff;
    border-style: solid;
}

.gp-otp__value.is-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    border: 0;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}

.gp-otp__resend {
    margin: 16px 0 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    color: var(--text3);
    font-size: 12.5px;
}

.gp-otp__resend strong {
    color: var(--text1);
    font-weight: 700;
}

.gp-otp__resend a {
    color: var(--brandtext);
    font-weight: 600;
}

.gp-field--captcha {
    margin-bottom: 8px;
}

.gp-field--captcha label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.gp-field--captcha .reload-captcha {
    cursor: pointer;
    color: var(--brandtext);
    font-size: 12px;
    font-weight: 600;
}

.gp-contact-info {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.gp-contact-item {
    padding: 20px;
    border: 1px solid var(--border);
    border-radius: 18px;
    display: flex;
    gap: 14px;
    background: var(--surface);
}

.gp-contact-item > i {
    width: 38px;
    height: 38px;
    flex: none;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
}

.gp-contact-item small {
    display: block;
    margin-bottom: 5px;
    color: var(--text3);
    font-size: 12.5px;
}

.gp-contact-item strong,
.gp-contact-item a {
    color: var(--text1);
    font-size: 14.5px;
    line-height: 1.8;
    font-weight: 600;
}

.alert {
    margin: 0 0 16px;
    padding: 14px 18px;
    border: 1px solid var(--border);
    border-radius: 14px;
    color: var(--text2);
    background: var(--surface3);
    font-size: 13px;
    line-height: 1.9;
}

.alert p {
    margin: 0;
}

/* پیام‌هایی که با hidden از جاوااسکریپت مخفی می‌شوند */
.alert[hidden] {
    display: none;
}

.alert-danger {
    border-color: var(--dangerline);
    color: var(--dangertext);
    background: var(--dangerbg);
}

.alert-success {
    border-color: var(--okline);
    color: var(--oktext);
    background: var(--okbg);
}

.alert-info {
    border-color: var(--brandline);
    color: var(--brandtext);
    background: var(--brandwash);
}

/* Product page */
.gp-product-hero {
    padding-top: 50px;
    padding-bottom: 80px;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(380px, 460px);
    gap: 56px;
    align-items: start;
}

.gp-product-copy h1 {
    margin: 0 0 16px;
    color: var(--text);
    font-size: 42px;
    line-height: 1.5;
    font-weight: 800;
}

.gp-breadcrumb,
.breadcrumb {
    margin: 0 0 22px;
    padding: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text3);
    font-size: 12.5px;
    list-style: none;
}

.gp-breadcrumb a,
.breadcrumb a {
    color: var(--text3);
}

.gp-breadcrumb li + li::before,
.breadcrumb li + li::before {
    margin-left: 8px;
    content: "‹";
}

.gp-product-description {
    color: var(--text2);
    font-size: 15.5px;
    line-height: 2.2;
}

.gp-tier-table {
    width: 100%;
    margin-top: 28px;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 14px;
    color: var(--text2);
    background: var(--surface);
    font-size: 13px;
}

.gp-tier-table td {
    padding: 13px 16px;
    border-bottom: 1px solid var(--border);
}

.gp-tier-table tr:last-child td {
    border-bottom: 0;
}

.gp-tier-table td:last-child {
    color: var(--text1);
    text-align: left;
}

.gp-old-price,
.del-price {
    margin-left: 6px;
    color: var(--text4);
    text-decoration: line-through;
}

.gp-not-available {
    padding: 16px;
    border: 1px solid var(--dangerline);
    border-radius: 14px;
    color: var(--dangertext);
    background: var(--dangerbg);
    text-align: center;
}

.gp-error-page {
    min-height: 620px;
    display: grid;
    grid-template-columns: minmax(260px, 440px) minmax(0, 1fr);
    align-items: center;
    gap: 56px;
}

.gp-error-page img {
    width: 100%;
    max-height: 380px;
    object-fit: contain;
}

.gp-error-page h1 {
    margin: 0 0 12px;
    color: var(--text);
    font-size: 42px;
    font-weight: 800;
}

.gp-error-page p {
    margin: 0 0 24px;
    color: var(--text2);
    font-size: 15px;
    line-height: 2;
}

/* ------------------------------------------------------------------ *
 * Checkout
 * ------------------------------------------------------------------ */
.gp-checkout-page {
    width: min(var(--maxw), 100%);
    min-height: 460px;
    margin: 0 auto;
    padding: 44px var(--gutter) 90px;
}

.gp-checkout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(340px, 420px);
    gap: 22px;
    align-items: start;
}

.gp-checkout__main,
.gp-checkout__side {
    min-width: 0;
}

.gp-checkout__side {
    position: sticky;
    top: 100px;
}

.gp-checkout__card,
.information-box .half-box,
.pay-box .half-box {
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
    box-shadow: none;
}

.gp-checkout__cart {
    margin-bottom: 22px;
}

.gp-checkout__card-head {
    padding: 18px 22px;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    flex-wrap: wrap;
}

.gp-checkout__card-head h2 {
    margin: 0;
    color: var(--text);
    font-size: 17px;
    font-weight: 700;
}

.gp-checkout__count {
    color: var(--text3);
    font-size: 12.5px;
}

.gp-checkout__items {
    padding: 14px 18px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.gp-checkout__body {
    padding: 20px 22px;
}

.gp-checkout__block {
    padding: 18px 22px;
    border-top: 1px solid var(--border);
}

.gp-checkout__block-title {
    display: block;
    margin-bottom: 12px;
    color: var(--text2);
    font-size: 13px;
    font-weight: 600;
}

/* Cart line */
#selected-product .selected-box {
    position: relative;
    padding: 16px 18px;
    border: 1px solid var(--border);
    border-radius: 16px;
    display: flex;
    align-items: center;
    gap: 16px;
    background: var(--surface3);
}

/*
 * جعبه تصویر مربع است و لوگو داخلش وسط‌چین می‌ماند (contain، نه cover)
 * تا بریده نشود. خود تصویر هم گردی جدا دارد.
 */
#selected-product .col-selected-img {
    position: relative;
    width: 72px;
    height: 72px;
    flex: none;
    overflow: hidden;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--imgbg);
}

#selected-product .col-selected-img img {
    width: 72%;
    height: 72%;
    object-fit: contain;
    border-radius: 10px;
}

#selected-product .col-selected-img .special {
    position: absolute;
    top: 6px;
    right: 6px;
    padding: 2px 7px;
    border-radius: 6px;
    color: #fff;
    background: #0070f3;
    font-size: 9.5px;
    font-weight: 700;
}

#selected-product .col-selected-product {
    min-width: 0;
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    flex-wrap: wrap;
}

#selected-product .selected-box__info {
    min-width: 0;
}

#selected-product .title {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 15.5px;
    font-weight: 700;
}

.price-box {
    margin: 0;
    display: flex;
    align-items: baseline;
    gap: 7px;
    color: var(--text2);
    font-size: 13px;
}

.price-box .price {
    color: var(--text1);
    font-size: 15px;
    font-weight: 700;
}

.selected-box__controls {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
}

.selected-box__subtotal {
    display: flex;
    align-items: baseline;
    gap: 6px;
    color: var(--text3);
    font-size: 12px;
}

.selected-box__subtotal .subtotal {
    color: var(--text);
    font-size: 15px;
    font-weight: 800;
}

.quantity {
    padding: 5px;
    border: 1px solid var(--border);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--surface);
}

.quantity .btn {
    width: 34px;
    min-height: 34px;
    /* ارتفاع ثابت تا با عوض شدن آیکون، دکمه بالا/پایین نپرد */
    height: 34px;
    padding: 0;
    border: 0;
    border-radius: 9px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    color: var(--text2);
    background: var(--surface2);
    font-size: 12px;
    line-height: 1;
}
.quantity .btn i {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    text-align: center;
    /* گلیف پهن‌تر از جعبه نباید دکمه را بزرگ کند */
    overflow: hidden;
}

.cart-box .quantity .btn .ripple {
    display: none;
}

.quantity .btn:hover {
    color: var(--brandtext);
    background: var(--brandwash);
}

.quantity input {
    width: 50px;
    min-height: 34px;
    height: 34px;
    padding: 4px;
    border: 0;
    border-radius: 8px;
    /* عرض ثابت تا با تغییر تعداد (۱ رقمی به ۲ رقمی) دکمه‌ها جابه‌جا نشوند */
    flex: none;
    color: var(--text);
    background: transparent;
    font-size: 15px;
    font-weight: 700;
    text-align: center;
}

.remove-from-cart {
    position: absolute;
    top: 12px;
    left: 12px;
    width: 30px;
    height: 30px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text4);
    background: transparent;
    font-size: 13px;
    transition: color .18s ease, background .18s ease;
}

.remove-from-cart:hover {
    color: #ef4444;
    background: var(--dangerbg);
}

.gp-checkout__empty {
    padding: 40px 20px;
    text-align: center;
}

.gp-checkout__empty > span {
    width: 54px;
    height: 54px;
    margin: 0 auto 16px;
    border-radius: 17px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--brandtext);
    background: var(--brandsoft);
    font-size: 20px;
}

.gp-checkout__empty p {
    margin: 0 0 20px;
    color: var(--text2);
    font-size: 14px;
}

.gp-checkout__empty .gp-primary-button {
    padding: 12px 22px;
}

.gp-checkout__gate {
    margin: 0 18px 18px;
    padding: 18px;
    border: 1px solid var(--warnline);
    border-radius: 16px;
    background: var(--warnbg);
    text-align: center;
}

.gp-checkout__gate p {
    margin: 0 0 14px;
    color: var(--warntext);
    font-size: 13.5px;
    line-height: 1.9;
}

.gp-checkout__gate .gp-primary-button {
    padding: 11px 20px;
}

/* Voucher inputs */
.gp-checkout__vouchers {
    margin-top: 6px;
    padding-top: 18px;
    border-top: 1px solid var(--border);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 4px 18px;
}

.gp-voucher__row {
    display: flex;
    gap: 8px;
}

.gp-voucher__row input {
    min-width: 0;
    flex: 1;
}

.gp-voucher__button {
    flex: none;
    min-height: 48px;
    padding: 0 20px;
    border: 1px solid var(--okline);
    border-radius: 12px;
    cursor: pointer;
    color: var(--oktext);
    background: var(--okbg);
    font-size: 13.5px;
    font-weight: 600;
}

.gp-voucher__button:hover {
    filter: brightness(1.08);
}

.gp-checkout__notes {
    margin-top: 18px;
}

.gp-checkout__notes p {
    margin: 0 0 6px;
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.gp-checkout__notes p:last-child {
    margin-bottom: 0;
}

/* Summary rows.
   These use floats on purpose: karta.js fades the rows in/out, which sets an
   inline `display:block`, so a flex-based layout would collapse. */
.gp-checkout__summary {
    padding: 8px 22px 4px;
}

.pay-box .row.has-style {
    margin: 0;
    padding: 13px 0;
    border-bottom: 1px solid var(--border);
    justify-content: space-between;
    align-items: center;
}

.pay-box .row.has-style .title-box {
    float: right;
    padding: 0;
    color: var(--text2);
    font-size: 13px;
}

.pay-box .row.has-style .box {
    float: left;
    margin: 0;
    padding: 0;
    display: block;
    color: var(--text1);
    font-size: 13.5px;
    font-weight: 700;
    text-align: left;
}

.pay-box .row.has-style .box .currency {
    margin-right: 3px;
    color: var(--text3);
    font-size: 11.5px;
    font-weight: 400;
}

.pay-box .gp-checkout__payable {
    border-bottom: 0;
}

.pay-box .gp-checkout__payable .title-box {
    padding-top: 6px;
    color: var(--text1);
    font-size: 14px;
    font-weight: 600;
}

.pay-box .gp-checkout__payable .box #pure-total .price {
    color: var(--text);
    font-size: 24px;
    font-weight: 800;
}

.pay-box .gp-checkout__payable .box #use-amount-wallet {
    display: block;
    margin-top: 4px;
    color: var(--oktext);
    font-size: 12px;
    font-weight: 600;
}

.pay-box .gp-checkout__payable .box #use-amount-wallet.hide {
    display: none;
}

.gp-checkout__wallet {
    margin: 0;
    padding: 14px 0;
    border-bottom: 1px solid var(--border);
    display: block;
}

.gp-checkout__wallet .form-check-label {
    color: var(--text1);
    font-size: 13px;
    line-height: 1.9;
}

.gp-checkout__wallet .form-check-label small {
    display: block;
    color: var(--text3);
    font-size: 11.5px;
}

/* Captcha */
.gp-checkout__captcha-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-direction: row-reverse;
}

/*
 * جعبه کد امنیتی عمدا باریک است تا کنار اینپوت جا بگیرد؛ ارتفاعش با خود
 * فیلدها (۴۸px) یکی است تا ردیف صاف بماند.
 */
.gp-checkout__captcha-row .captcha-image {
    flex: none;
    width: 110px;
    height: 48px;
    overflow: hidden;
    border: 1px solid var(--border2);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
}

.gp-checkout__captcha-row .captcha-image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 0;
}

.gp-checkout__captcha-row .reload-captcha {
    flex: none;
    width: 46px;
    height: 46px;
}

.gp-checkout__captcha-row input {
    min-width: 0;
    flex: 1;
}

/* Gateways */
.gp-gateways {
    margin: 0;
    display: block;
}

.gateway-methods {
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.gateway-method {
    flex: 1;
    padding: 11px 12px;
    border: 1px solid var(--border);
    border-radius: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    cursor: pointer;
    color: var(--text2);
    background: var(--surface3);
    font-size: 12.5px;
    font-weight: 600;
    transition: background .18s ease, color .18s ease, border-color .18s ease;
}

.gateway-method:hover {
    color: var(--text);
    background: var(--surface2);
}

.gateway-method.active {
    border-color: #00a3ff;
    color: var(--brandtext);
    background: var(--brandwash);
}

.gp-gateway-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
    gap: 10px;
}

.gp-gateway {
    padding: 12px 8px 10px;
    border: 1px solid var(--border);
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    background: var(--surface3);
    transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

.gp-gateway:hover {
    background: var(--surface2);
}

.gp-gateway.is-active {
    border-color: #00a3ff;
    background: var(--brandwash);
    box-shadow: 0 0 0 3px rgba(0, 112, 243, .12);
}

.img-gateway {
    width: 46px;
    height: 46px;
    padding: 6px;
    border-radius: 11px;
    cursor: pointer;
    object-fit: contain;
    background: #fff;
    opacity: .78;
    transition: opacity .18s ease;
}

.gp-gateway.is-active .img-gateway,
.img-gateway.active {
    opacity: 1;
}

.gp-gateway__name {
    color: var(--text2);
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1.5;
    text-align: center;
}

.gp-gateway.is-active .gp-gateway__name {
    color: var(--brandtext);
}

.gp-gateway-card {
    margin-top: 16px;
    margin-bottom: 0;
}

.gp-gateway-card .lbl-select-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.btn-add-card {
    cursor: pointer;
    color: var(--brandtext);
    font-size: 12px;
    font-weight: 600;
}

.gateway-error .help-block {
    margin-top: 8px;
}

.gp-checkout__agreement .form-check-label {
    color: var(--text2);
    font-size: 12.5px;
    line-height: 1.9;
}

.gp-checkout__pay {
    width: calc(100% - 44px);
    margin: 0 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
}

.gp-checkout__pay.disabled {
    cursor: not-allowed;
    filter: grayscale(.5);
    opacity: .6;
}

.pay-box .gp-buy-note {
    padding: 0 22px 20px;
}

/* Bootstrap-like structural compatibility for existing backend-driven views. */
.row {
    margin-right: -8px;
    margin-left: -8px;
    display: flex;
    flex-wrap: wrap;
}

[class*="col-"] {
    min-width: 0;
    padding-right: 8px;
    padding-left: 8px;
}

.col-12 { width: 100%; }
.col-8 { width: 66.666%; }
.col-7 { width: 58.333%; }
.col-6 { width: 50%; }
.col-5 { width: 41.666%; }
.col-4 { width: 33.333%; }
.col-3 { width: 25%; }
.m-auto { margin-right: auto !important; margin-left: auto !important; }
.text-center { text-align: center !important; }
.text-left { text-align: left !important; }
.ltr { direction: ltr; }
.w-100 { width: 100% !important; }
.d-none,
.hide { display: none !important; }
.bold { font-weight: 700; }
.relative { position: relative; }
.p-15 { padding: 15px; }
.px-4 { padding-right: 24px; padding-left: 24px; }
.py-4 { padding-top: 24px; padding-bottom: 24px; }
.mb-4 { margin-bottom: 24px; }
.mb-3 { margin-bottom: 16px; }
.mb-2 { margin-bottom: 12px; }
.mt-3 { margin-top: 16px; }
.m-t-30 { margin-top: 30px; }
.m-b-20 { margin-bottom: 20px; }
.m-b-50 { margin-bottom: 50px; }
.btn {
    min-height: 42px;
    padding: 10px 17px;
    border: 1px solid var(--border2);
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    cursor: pointer;
    color: var(--text1);
    background: var(--surface3);
    font-size: 13px;
    font-weight: 600;
}

.btn:hover {
    color: var(--text);
    background: var(--surface2);
}

.btn-icon {
    width: 42px;
    padding: 0;
}

.table {
    width: 100%;
    border-collapse: collapse;
}

.table td,
.table th {
    padding: 11px;
    border: 1px solid var(--border);
    color: var(--text2);
}

.modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: none;
    overflow: auto;
    padding: 30px 16px;
    background: rgba(5, 7, 15, .72);
    backdrop-filter: blur(8px);
}

.modal.show,
.modal.in {
    display: block;
}

.modal-dialog {
    width: min(680px, 100%);
    margin: 20px auto;
}

.modal-lg {
    width: min(920px, 100%);
}

.modal-content {
    overflow: hidden;
    border: 1px solid var(--border2);
    border-radius: 20px;
    color: var(--text1);
    background: var(--panel);
    box-shadow: var(--shadow);
}

.modal-header,
.modal-body,
.modal-footer {
    padding: 20px 22px;
}

.modal-header {
    border-bottom: 1px solid var(--border);
}

.modal-footer {
    border-top: 1px solid var(--border);
}

.modal-title {
    margin: 0;
    color: var(--text);
}

.modal .close {
    float: left;
    border: 0;
    color: var(--text2);
    background: transparent;
    font-size: 25px;
}

.form-check {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.form-check-input {
    margin-top: 4px;
}

.captcha-image img {
    max-width: 110px;
    max-height: 44px;
    border-radius: 8px;
}

.help-block {
    margin-top: 6px;
    color: var(--dangertext);
    font-size: 11px;
}

@media (min-width: 768px) {
    .col-md-12 { width: 100%; }
    .col-md-9 { width: 75%; }
    .col-md-8 { width: 66.666%; }
    .col-md-7 { width: 58.333%; }
    .col-md-6 { width: 50%; }
    .col-md-5 { width: 41.666%; }
    .col-md-4 { width: 33.333%; }
    .col-md-3 { width: 25%; }
}

@media (min-width: 992px) {
    .col-lg-12 { width: 100%; }
    .col-lg-10 { width: 83.333%; }
    .col-lg-9 { width: 75%; }
    .col-lg-8 { width: 66.666%; }
    .col-lg-7 { width: 58.333%; }
    .col-lg-6 { width: 50%; }
    .col-lg-5 { width: 41.666%; }
    .col-lg-4 { width: 33.333%; }
    .col-lg-3 { width: 25%; }
}

@media (min-width: 1200px) {
    .col-xl-12 { width: 100%; }
    .col-xl-10 { width: 83.333%; }
    .col-xl-9 { width: 75%; }
    .col-xl-8 { width: 66.666%; }
    .col-xl-7 { width: 58.333%; }
    .col-xl-6 { width: 50%; }
    .col-xl-5 { width: 41.666%; }
    .col-xl-4 { width: 33.333%; }
    .col-xl-3 { width: 25%; }
    .col-xl-2 { width: 16.666%; }
}

@media (max-width: 1120px) {
    .gp-header__inner {
        gap: 16px;
    }

    .gp-nav a {
        padding-right: 9px;
        padding-left: 9px;
        font-size: 13px;
    }

    .gp-support-pill strong {
        display: none;
    }

    .gp-support-pill {
        width: 42px;
        height: 42px;
        padding: 0;
        justify-content: center;
    }

    .gp-support-pill__status {
        display: none;
    }
}

@media (max-width: 920px) {
    /* یک جا عوض می‌شود و همه سکشن‌ها با هم جابه‌جا می‌شوند */
    :root {
        --gutter: 18px;
    }

    .gp-nav,
    .gp-support-pill,
    .gp-login-button span,
    .gp-user-button > span {
        display: none;
    }

    /* بدون این قانون، دکمه پنل کاربری در موبایل کاملا خالی و بهم‌ریخته دیده می‌شد */
    .gp-user-button > i {
        display: inline-flex;
    }

    .gp-login-button,
    .gp-user-button {
        width: 40px;
        height: 40px;
        min-height: 40px;
        padding: 0;
        flex: none;
        border-radius: 12px;
    }

    .gp-mobile-toggle {
        width: 40px;
        height: 40px;
        margin-right: auto;
        padding: 9px;
        border: 1px solid var(--border);
        border-radius: 11px;
        display: flex;
        flex-direction: column;
        align-items: stretch;
        justify-content: center;
        gap: 4px;
        cursor: pointer;
        background: var(--surface3);
    }

    .gp-mobile-toggle span {
        height: 2px;
        border-radius: 2px;
        background: var(--text2);
    }

    .gp-mobile-panel {
        padding: 12px 28px 20px;
        border-top: 1px solid var(--border);
        flex-direction: column;
        gap: 4px;
    }

    .gp-mobile-panel.is-open {
        display: flex;
    }

    .gp-mobile-panel a {
        padding: 11px 12px;
        border-radius: 10px;
        color: var(--text2);
        font-size: 14px;
    }

    .gp-mobile-panel a:hover {
        color: var(--text);
        background: var(--surface2);
    }

    .gp-hero,
    .gp-product-hero {
        grid-template-columns: 1fr;
        gap: 42px;
    }

    .gp-buy-frame {
        position: static;
        width: min(560px, 100%);
        margin: 0 auto;
    }

    .gp-hero__content {
        position: static;
    }

    .gp-guide-grid {
        grid-template-columns: 1fr;
    }

    .gp-panel,
    .gp-checkout {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .gp-panel__aside,
    .gp-checkout__side {
        position: static;
    }

    /*
     * در تبلت هنوز چند تب در یک ردیف جا می‌شوند، ولی در موبایل (بریک‌پوینت
     * ۷۲۰ پیکسل پایین‌تر) دوباره ستونی می‌شوند.
     */
    .gp-panel__tabs {
        flex-direction: row;
        flex-wrap: wrap;
    }

    .gp-panel__tabs a {
        flex: 1 1 160px;
    }

    .gp-footer__grid {
        grid-template-columns: 1.4fr 1fr 1fr;
    }

    .gp-footer__column:last-child {
        grid-column: 2 / -1;
    }
}

@media (max-width: 720px) {
    :root {
        --gutter: 16px;
    }

    .gp-header__inner {
        height: 68px;
    }

    .gp-brand__copy small {
        display: none;
    }

    .gp-brand__mark {
        width: 36px;
        height: 36px;
        border-radius: 11px;
    }

    .gp-brand__copy strong {
        font-size: 15px;
    }

    .gp-header__actions {
        gap: 7px;
    }

    .gp-icon-button,
    .gp-login-button,
    .gp-user-button {
        width: 38px;
        height: 38px;
        min-height: 38px;
        padding: 0;
    }
    .gp-shell,
    .container {
        width: 100%;
        max-width: 100%;
    }

    .gp-hero,
    .gp-hero__content,
    .gp-features,
    .gp-feature,
    .gp-buy-frame,
    .gp-buy-panel {
        min-width: 0;
        max-width: 100%;
    }

    .gp-hero h1,
    .gp-hero__lead,
    .gp-feature__text {
        overflow-wrap: anywhere;
    }

    .gp-hero {
        padding-top: 38px;
    }

    .gp-hero h1 {
        font-size: 38px;
    }

    .gp-hero__lead {
        font-size: 15px;
    }

    .gp-features,
    .gp-stats,
    .gp-blog-grid,
    .gp-product-grid {
        grid-template-columns: 1fr;
    }

    .gp-product-list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .gp-section {
        padding-top: 62px;
        padding-bottom: 62px;
    }

    .gp-section__narrow {
        padding-right: var(--gutter);
        padding-left: var(--gutter);
    }

    .gp-section__head {
        margin-bottom: 30px;
    }

    .gp-section__head h2,
    .gp-section-bar h2 {
        font-size: 27px;
    }

    .gp-section-bar {
        align-items: flex-start;
        flex-direction: column;
    }

    .gp-cta {
        padding-bottom: 70px;
    }

    .gp-cta__inner {
        padding: 30px 24px;
    }

    .gp-cta__actions {
        width: 100%;
        flex-wrap: wrap;
    }

    .gp-cta__actions a {
        flex: 1;
    }

    .gp-footer__grid {
        grid-template-columns: 1fr 1fr;
        gap: 32px 22px;
    }

    .gp-footer__about {
        grid-column: 1 / -1;
    }

    .gp-footer__column:last-child {
        grid-column: auto;
    }

    .gp-auth {
        padding-top: 40px;
    }

    .gp-contact-grid {
        grid-template-columns: 1fr;
    }

    .gp-about,
    .gp-error-page {
        grid-template-columns: 1fr;
    }

    .gp-error-page {
        min-height: 0;
    }

    .gp-page-head h1,
    .caption h1,
    .gp-product-copy h1 {
        font-size: 30px;
    }

    .gp-contact-info {
        grid-row: auto;
    }

    .gp-panel,
    .gp-narrow,
    .gp-article,
    .gp-checkout-page {
        padding-right: var(--gutter);
        padding-left: var(--gutter);
    }

    /* Panel tables collapse into stacked cards on small screens. */
    .gp-table__head {
        display: none;
    }

    .gp-table__row {
        padding: 16px 18px;
        grid-template-columns: 1fr 1fr !important;
        gap: 12px;
    }

    .gp-table--orders .gp-table__cell:first-child,
    .gp-table--tickets .gp-table__cell:first-child,
    .gp-table--transactions .gp-table__cell:nth-child(2) {
        grid-column: 1 / -1;
    }

    .gp-table--transactions .gp-table__cell--index,
    .gp-table--gifts .gp-table__cell--index {
        display: none;
    }

    .gp-table--gifts .gp-table__cell:nth-child(3) {
        grid-column: 1 / -1;
    }

    .gp-panel__card-body {
        padding: 18px;
    }

    .gp-table__cell--action {
        align-items: flex-end;
    }

    .gp-code-list,
    .gp-thread,
    .gp-thread__composer,
    .gp-panel__card-head {
        padding-right: 18px;
        padding-left: 18px;
    }

    .gp-panel__card--pad {
        padding: 18px;
    }

    .gp-panel__card--pad .gp-panel__card-head {
        margin: -18px -18px 20px;
    }

    .gp-code-card__head {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .gp-code-card__tracking {
        text-align: right;
    }

    .gp-message__bubble {
        max-width: 100%;
    }

    .gp-field--actions .gp-submit {
        width: 100%;
        min-width: 0;
    }

    .gp-article__title {
        font-size: 27px;
    }

    /* Checkout on small screens */
    .gp-checkout__card-head,
    .gp-checkout__body,
    .gp-checkout__block,
    .gp-checkout__summary {
        padding-right: 16px;
        padding-left: 16px;
    }

    .gp-checkout__items {
        padding: 12px 14px;
    }

    #selected-product .selected-box {
        padding: 14px;
        align-items: flex-start;
        flex-wrap: wrap;
    }

    #selected-product .col-selected-img {
        width: 58px;
        height: 58px;
    }

    .selected-box__controls {
        width: 100%;
    }

    .remove-from-cart {
        top: 10px;
        left: 8px;
    }

    .gp-checkout__pay {
        width: calc(100% - 32px);
        margin: 0 16px;
    }

    .pay-box .gp-buy-note {
        padding: 0 16px 18px;
    }

    .gp-voucher__row {
        flex-wrap: wrap;
    }

    .gp-voucher__button {
        width: 100%;
    }

    .gp-gateway-grid {
        grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));
    }
}

@media (max-width: 480px) {
    /*
     * این قانون فقط برای حالت لوگوی تصویری است. وقتی مدیر لوگو آپلود
     * نکرده باشد، .gp-brand__copy تنها چیزی است که در هدر رندر می‌شود و
     * مخفی کردنش هدر را کاملا خالی می‌کرد.
     */
    .gp-brand--image .gp-brand__copy {
        display: none;
    }

    /* لوگو در موبایل کوچک‌تر تا فضای منو و سبد خرید باقی بماند */
    .gp-brand__image {
        height: 32px;
        max-width: 130px;
    }

    .gp-mobile-toggle {
        margin-right: 0;
    }

    .gp-header__actions {
        margin-right: auto;
    }

    .gp-hero h1 {
        font-size: 33px;
    }

    .gp-features {
        grid-template-columns: 1fr;
    }

    .gp-buy-panel {
        padding: 15px;
    }

    .gp-gift-card {
        min-height: 190px;
        padding: 18px;
    }

    .gp-product-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gp-buy-actions {
        grid-template-columns: 1fr;
    }

    .gp-total-price strong {
        font-size: 23px;
    }

    .gp-footer__grid {
        grid-template-columns: 1fr;
    }

    .gp-footer__about,
    .gp-footer__column:last-child {
        grid-column: auto;
    }

    .gp-certificates {
        flex-wrap: wrap;
    }
}

/* ------------------------------------------------------------------ *
 * اصلاحات موبایل
 * ------------------------------------------------------------------ */

@media (max-width: 920px) {
    /* هدر نباید در عرض کم بشکند یا اسکرول افقی بسازد */
    .gp-header__inner {
        gap: 12px;
        flex-wrap: nowrap;
    }

    .gp-brand {
        min-width: 0;
    }

    .gp-brand__copy {
        min-width: 0;
        overflow: hidden;
    }

    .gp-brand__copy strong,
    .gp-brand__copy small {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .gp-header__actions {
        margin-right: auto;
        flex: none;
    }

}

@media (max-width: 720px) {
    /*
     * تب‌های پنل کاربری در موبایل زیر هم چیده می‌شوند (همان حالت پیش‌فرض
     * ستونی). قبلا اینجا به ردیف افقی با اسکرول تبدیل می‌شدند؛ نتیجه‌اش
     * این بود که تب‌های انتهایی از دید خارج می‌شدند و کاربر باید نوار را
     * افقی می‌کشید تا آن‌ها را پیدا کند. تا ۹۲۰ پیکسل (تبلت) هنوز ردیفی
     * می‌مانند؛ فقط زیر ۷۲۰ ستونی می‌شوند.
     */
    .gp-panel__tabs {
        flex-direction: column;
        flex-wrap: nowrap;
        overflow-x: visible;
        gap: 4px;
    }

    .gp-panel__tabs a {
        flex: 1 1 auto;
        width: 100%;
        white-space: normal;
    }

    /* تب‌های صفحه شارژ در عرض کم سرریز می‌کردند */
    .gp-tabs {
        padding: 12px 16px 0;
    }

    .gp-tabs .nav-tabs {
        overflow-x: auto;
        flex-wrap: nowrap;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .gp-tabs .nav-tabs::-webkit-scrollbar {
        display: none;
    }

    .gp-tabs .nav-link {
        flex: 0 0 auto;
        padding: 10px 14px;
        white-space: nowrap;
    }

    .gp-charge__balance {
        padding: 18px 16px;
        flex-wrap: wrap;
        justify-content: center;
    }

    .gp-charge__balance strong {
        font-size: 25px;
    }

    .gp-charge__actions {
        padding: 0 16px 18px;
    }

    .gp-charge__actions .gp-submit {
        width: 100%;
    }

    /* مبلغ معادل دلار با float در موبایل روی هم می‌افتاد */
    .gp-charge__dollar {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 8px;
    }

    .gp-charge__dollar .title-box,
    .gp-charge__dollar .box {
        float: none;
    }

    /* فرم ورود و کد امنیتی */
    .gp-checkout__captcha-row {
        flex-wrap: wrap;
    }

    .gp-checkout__captcha-row input {
        flex: 1 1 140px;
    }

    /* جلوگیری از زوم خودکار سافاری روی فوکوس ورودی‌ها */
    input[type="text"],
    input[type="tel"],
    input[type="number"],
    input[type="email"],
    input[type="password"],
    select,
    textarea {
        font-size: 16px;
    }

    /* عنوان‌ها و کدهای طولانی نباید از قاب بیرون بزنند */
    .gp-code-row,
    .gp-code-card__head {
        overflow-wrap: anywhere;
    }
}

@media (max-width: 480px) {
    :root {
        --gutter: 12px;
    }

    .gp-header__inner {
        gap: 8px;
    }

    .gp-header__actions {
        gap: 6px;
    }

    .gp-mobile-panel {
        padding-right: var(--gutter);
        padding-left: var(--gutter);
    }

    .gp-qty-shortcuts {
        flex-wrap: wrap;
    }

    .gp-total-box {
        padding: 14px;
    }

    .gp-total-meta {
        align-items: flex-start;
        flex-direction: column;
        gap: 4px;
    }
}

/* ==========================================================================
   پنجره‌های تایید (SweetAlert2)
   --------------------------------------------------------------------------
   این کتابخانه فقط در پنل مدیریت لود می‌شد و در سمت کاربر تعریف‌نشده بود؛
   برای همین پنجره تایید «بستن تیکت» بدون هیچ استایلی به شکل متن ساده در
   انتهای صفحه رندر می‌شد. حالا در page_head/page_scripts لود می‌شود و
   استایل پیش‌فرضش (کادر سفید با دکمه‌های آبی) با تم سایت هماهنگ شده است.
   همه رنگ‌ها از متغیرهای خود سایت می‌آیند تا در تم روشن و تاریک درست بماند.
   ========================================================================== */
.swal2-container {
    padding: 16px;
    background: rgba(3, 5, 12, .68);
    backdrop-filter: blur(3px);
}

/*
 * نکته مهم: کتابخانه این مقادیر را به صورت inline style روی خود المان
 * می‌نویسد: width، padding و مهم‌تر از همه `background: rgb(255,255,255)`.
 * چون background یک shorthand است، background-image را هم به none برمی‌گرداند.
 * بنابراین برای تم تیره باید هر سه با important بازنویسی شوند، وگرنه
 * پنجره یا سفید می‌ماند یا کاملا بی‌رنگ (محتوای صفحه از پشتش دیده می‌شود).
 */
.swal2-modal,
.swal2-popup {
    width: min(460px, 100%) !important;
    max-width: 100%;
    padding: 26px 24px 22px !important;
    border: 1px solid var(--border2);
    border-radius: 20px;
    box-sizing: border-box;
    background-color: var(--bg) !important;
    background-image: var(--panel) !important;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .5);
    font-family: inherit;
}

.swal2-modal .swal2-title,
.swal2-popup .swal2-title {
    margin: 0 0 8px;
    color: var(--text);
    font-size: 19px;
    font-weight: 800;
    line-height: 1.5;
}

/* عنوان خالی نباید فضای اضافه بگیرد */
.swal2-modal .swal2-title:empty,
.swal2-popup .swal2-title:empty {
    display: none;
}

.swal2-modal #swal2-content,
.swal2-modal .swal2-content,
.swal2-popup .swal2-html-container {
    color: var(--text1);
    font-size: 14px;
    line-height: 2;
}

.swal2-modal #swal2-content a,
.swal2-popup .swal2-html-container a {
    color: var(--brandtext);
}

/* دکمه‌ها هم‌شکل دکمه‌های خود سایت */
.swal2-modal .swal2-styled,
.swal2-popup .swal2-styled {
    min-height: 44px;
    margin: 6px;
    padding: 11px 22px;
    border: 1px solid transparent;
    border-radius: 12px;
    box-shadow: none;
    font-family: inherit;
    font-size: 14px;
    font-weight: 700;
}

.swal2-modal .swal2-styled:focus,
.swal2-popup .swal2-styled:focus {
    outline: none;
    box-shadow: 0 0 0 3px var(--brandsoft);
}

.swal2-modal .swal2-confirm,
.swal2-popup .swal2-confirm {
    color: #fff;
    background: linear-gradient(135deg, #0070f3, #00a3ff) !important;
}

.swal2-modal .swal2-cancel,
.swal2-popup .swal2-cancel {
    border-color: var(--border2);
    color: var(--text2);
    background: var(--surface2) !important;
}

.swal2-modal .swal2-styled:hover,
.swal2-popup .swal2-styled:hover {
    filter: brightness(1.12);
}

/* دکمه بستن گوشه پنجره */
.swal2-modal .swal2-close,
.swal2-popup .swal2-close {
    color: var(--text3);
}

.swal2-modal .swal2-close:hover,
.swal2-popup .swal2-close:hover {
    color: var(--text);
}

@media (max-width: 480px) {
    .swal2-modal,
    .swal2-popup {
        padding: 22px 18px 18px;
        border-radius: 16px;
    }

    /* در موبایل دکمه‌ها زیر هم و تمام‌عرض */
    .swal2-modal .swal2-styled,
    .swal2-popup .swal2-styled {
        width: 100%;
        margin: 5px 0 0;
    }
}
