﻿/* ==========================================================================
   Base
   ========================================================================== */

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    min-height: 100%;
    scroll-behavior: smooth;
}

body {
    min-height: 100%;
    margin: 0;
    color: var(--dorsan-text);
    background: var(--dorsan-background);
    font-family: var(--dorsan-font);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

button,
input,
select,
textarea {
    font: inherit;
}

button {
    cursor: pointer;
}

a {
    color: var(--dorsan-primary-deep);
    text-decoration: none;
    transition: color var(--dorsan-transition), background-color var(--dorsan-transition), border-color var(--dorsan-transition), transform var(--dorsan-transition), opacity var(--dorsan-transition);
}

    a:hover {
        color: var(--dorsan-primary-dark);
    }

img,
svg {
    display: block;
}

img {
    max-width: 100%;
}

[hidden] {
    display: none !important;
}

::selection {
    color: var(--dorsan-heading);
    background: rgba(var(--dorsan-primary-rgb), .55);
}

:focus-visible {
    outline: 3px solid rgba(var(--dorsan-primary-rgb), .24);
    outline-offset: 3px;
}

.skip-link {
    position: fixed;
    top: 12px;
    right: 12px;
    z-index: 9999;
    padding: 9px 15px;
    color: var(--dorsan-heading);
    background: var(--dorsan-primary);
    border-radius: 10px;
    transform: translateY(-160%);
}

    .skip-link:focus {
        color: var(--dorsan-heading);
        transform: translateY(0);
    }

.ap-logout {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0 13px;
    color: var(--dorsan-accent-deep);
    background: #fff;
    border: 1px solid var(--dorsan-accent);
    border-radius: 11px;
    font-family: inherit;
    font-size: .75rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .18s, transform .18s;
}

    .ap-logout:hover {
        background: var(--dorsan-accent-soft);
        transform: translateY(-1px);
    }

@media (max-width: 575.98px) {
    .ap-logout span {
        display: none;
    }

    .ap-logout {
        width: 40px;
        min-height: 40px;
        padding: 0;
        justify-content: center;
    }
}

a.ap-logout {
    text-decoration: none;
}

/* ==========================================================================
   Layout: header, footer, shared components
   ========================================================================== */

.public-body {
    min-height: 100vh;
    overflow-x: hidden;
    background: var(--dorsan-background);
}

.public-shell {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.site-container {
    width: min(1320px, calc(100% - 48px));
    margin-inline: auto;
}

.site-main {
    min-height: 50vh;
    flex: 1;
    padding-top: 18px;
}

/* Header */

.site-header {
    position: sticky;
    top: 0;
    z-index: 1100;
    background: rgba(255, 255, 255, .98);
    border-bottom: 1px solid var(--dorsan-border);
    box-shadow: 0 8px 28px rgba(40, 100, 91, .055);
    backdrop-filter: blur(14px);
    transition: background-color .25s ease, box-shadow .25s ease;
}

    .site-header.is-scrolled {
        background: rgba(255, 255, 255, .99);
        box-shadow: 0 12px 34px rgba(40, 100, 91, .09);
    }

.site-header-inner {
    min-height: 82px;
    display: flex;
    align-items: center;
    gap: 26px;
    transition: min-height .25s ease;
}

.site-header.is-scrolled .site-header-inner {
    min-height: 72px;
}

/* Logo */

.site-brand {
    width: 170px;
    height: 58px;
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    flex: 0 0 auto;
    overflow: hidden;
}

    .site-brand img {
        width: 100%;
        height: 100%;
        object-fit: contain;
        transform: scale(1.5);
        transition: transform .22s ease;
    }

/* Navigation */

.site-nav {
    display: flex;
    align-items: center;
    flex: 1;
    gap: 3px;
}

.site-nav-link {
    position: relative;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    padding: 0 12px;
    color: var(--dorsan-text);
    border-radius: 9px 9px 0 0;
    font-size: .85rem;
    font-weight: 600;
    white-space: nowrap;
    transition: color .2s ease, background-color .2s ease;
}

    .site-nav-link::after {
        position: absolute;
        right: 0;
        bottom: 0;
        left: 0;
        height: 2px;
        content: "";
        background: var(--dorsan-accent);
        border-radius: 999px;
        transform: scaleX(0);
        transform-origin: right;
        transition: transform .22s ease;
    }

    .site-nav-link:hover,
    .site-nav-link.is-active {
        color: var(--dorsan-primary-deep);
        background: var(--dorsan-primary-soft);
    }

        .site-nav-link:hover::after,
        .site-nav-link.is-active::after {
            transform: scaleX(1);
        }

/* Header actions */

.site-header-actions {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    gap: 8px;
}

    .site-header-actions form,
    .site-mobile-actions form {
        margin: 0;
    }

.site-button {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 0 16px;
    color: var(--dorsan-text);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 11px;
    font-family: inherit;
    font-size: .82rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: color .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

    .site-button:hover {
        transform: translateY(-1px);
    }

.site-button-primary {
    color: #173f39;
    background: var(--dorsan-primary);
    border-color: var(--dorsan-primary);
    box-shadow: 0 8px 20px rgba(var(--dorsan-primary-rgb), .24);
}

    .site-button-primary:hover {
        color: #173f39;
        background: var(--dorsan-primary-hover);
        border-color: var(--dorsan-primary-hover);
        box-shadow: 0 10px 25px rgba(var(--dorsan-primary-rgb), .3);
    }

.site-button-secondary {
    color: var(--dorsan-text);
    background: #fff;
    border-color: var(--dorsan-border);
}

    .site-button-secondary:hover {
        color: var(--dorsan-primary-deep);
        background: var(--dorsan-primary-soft);
        border-color: var(--dorsan-primary);
    }

.site-button-block {
    width: 100%;
}

.site-button.is-disabled {
    opacity: .5;
    cursor: default;
    pointer-events: none;
    box-shadow: none;
}

/* Icons */

.site-button-icon,
.site-user-icon,
.site-footer-link-icon {
    width: 14px;
    height: 14px;
    flex: 0 0 14px;
}

/* User */
.site-user {
    min-height: 42px;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 0 11px;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .18);
    border-radius: 11px;
    font-size: .8rem;
    font-weight: 600;
    text-decoration: none;
    transition: color .18s ease, background-color .18s ease, border-color .18s ease, transform .18s ease;
}

    .site-user:hover {
        color: var(--dorsan-primary-dark);
        background: #ddf7f2;
        border-color: var(--dorsan-primary);
        transform: translateY(-1px);
    }

.site-user-icon {
    transition: color .18s ease;
}

/* Mobile toggle */

.site-menu-toggle {
    width: 43px;
    height: 43px;
    display: none;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 5px;
    padding: 0;
    background: #fff;
    border: 1px solid var(--dorsan-border);
    border-radius: 11px;
}

    .site-menu-toggle span {
        width: 18px;
        height: 2px;
        background: var(--dorsan-text);
        border-radius: 10px;
        transition: transform .22s ease, opacity .22s ease;
    }

    .site-menu-toggle.is-open span:nth-child(1) {
        transform: translateY(7px) rotate(45deg);
    }

    .site-menu-toggle.is-open span:nth-child(2) {
        opacity: 0;
    }

    .site-menu-toggle.is-open span:nth-child(3) {
        transform: translateY(-7px) rotate(-45deg);
    }

/* Mobile Menu */

.site-mobile-menu {
    display: none;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    background: var(--dorsan-surface);
    border-top: 1px solid transparent;
    transition: max-height .32s ease, opacity .24s ease, border-color .24s ease;
}

    .site-mobile-menu.is-open {
        max-height: 720px;
        opacity: 1;
        border-color: var(--dorsan-border);
    }

.site-mobile-menu-inner {
    width: min(100% - 36px, 720px);
    margin-inline: auto;
    padding: 18px 0 24px;
}

.site-mobile-nav {
    display: grid;
    gap: 4px;
}

    .site-mobile-nav a {
        min-height: 46px;
        display: flex;
        align-items: center;
        padding: 0 13px;
        color: var(--dorsan-text);
        border-radius: 10px;
        font-size: .83rem;
        font-weight: 600;
    }

        .site-mobile-nav a:hover,
        .site-mobile-nav a.is-active {
            padding-right: 17px;
            color: var(--dorsan-primary-deep);
            background: var(--dorsan-primary-soft);
        }

.site-mobile-actions {
    display: grid;
    gap: 9px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--dorsan-border);
}

.site-mobile-user {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 11px 13px;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .18);
    border-radius: 11px;
    font-size: .82rem;
    font-weight: 600;
    text-decoration: none;
}

    .site-mobile-user:hover {
        color: var(--dorsan-primary-dark);
        border-color: var(--dorsan-primary);
    }

/* Footer */

.site-footer {
    position: relative;
    overflow: hidden;
    margin-top: 36px;
    padding: 64px 0 0;
    color: rgba(255, 255, 255, .76);
    background: #173f39;
}

/* Footer geometry */

.site-footer-decoration {
    position: absolute;
    display: block;
    pointer-events: none;
}

.site-footer-decoration-one,
.site-footer-decoration-two,
.site-footer-decoration-three,
.site-footer-decoration-four {
    border: 1px solid rgba(var(--dorsan-primary-rgb), .15);
    border-radius: 50%;
}

.site-footer-decoration-one {
    top: -175px;
    left: -80px;
    width: 360px;
    height: 360px;
}

.site-footer-decoration-two {
    top: 35px;
    left: 75px;
    width: 170px;
    height: 170px;
}

.site-footer-decoration-three {
    right: 30%;
    bottom: -245px;
    width: 460px;
    height: 460px;
}

.site-footer-decoration-four {
    right: 37%;
    bottom: -100px;
    width: 215px;
    height: 215px;
}

.site-footer-decoration-line-one,
.site-footer-decoration-line-two {
    height: 1px;
    background: rgba(var(--dorsan-primary-rgb), .12);
    transform: rotate(-10deg);
}

.site-footer-decoration-line-one {
    top: 110px;
    right: -4%;
    width: 34%;
}

.site-footer-decoration-line-two {
    right: 8%;
    bottom: 105px;
    width: 28%;
    transform: rotate(8deg);
}

/* Footer content */

.site-footer-main {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1.35fr .8fr .9fr .7fr;
    gap: 52px;
    padding-bottom: 50px;
}

.site-footer-brand {
    max-width: 330px;
}

.site-footer-logo {
    width: 122px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .site-footer-logo img {
        width: 100%;
        height: auto;
        object-fit: contain;
        filter: brightness(0) invert(1);
        opacity: .92;
    }

.site-footer-brand p {
    margin: 20px 0 0;
    color: rgba(255, 255, 255, .67);
    font-size: .84rem;
    line-height: 2;
}

.site-footer-column h2 {
    position: relative;
    margin: 8px 0 22px;
    padding-bottom: 11px;
    color: #fff;
    font-size: .92rem;
    font-weight: 700;
}

    .site-footer-column h2::after {
        position: absolute;
        right: 0;
        bottom: 0;
        width: 28px;
        height: 2px;
        content: "";
        background: var(--dorsan-accent);
        border-radius: 4px;
    }

.site-footer-links {
    display: grid;
    gap: 10px;
}

    .site-footer-links a {
        width: fit-content;
        color: rgba(255, 255, 255, .68);
        font-size: .82rem;
    }

        .site-footer-links a:hover {
            color: var(--dorsan-primary);
            transform: translateY(-3px);
        }

.site-footer-contact p {
    margin: 0 0 17px;
    color: rgba(255, 255, 255, .67);
    font-size: .82rem;
    line-height: 1.9;
}

.site-footer-contact-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--dorsan-primary);
    font-size: .82rem;
    font-weight: 600;
}

    .site-footer-contact-link:hover {
        color: var(--dorsan-primary-hover);
    }

        .site-footer-contact-link:hover .site-footer-link-icon {
            transform: translateX(-3px);
        }

.site-footer-link-icon {
    transition: transform .18s ease;
}

/* Social placeholders */

.site-footer-socials {
    display: flex;
    align-items: center;
    gap: 8px;
}

    .site-footer-socials span {
        width: 42px;
        height: 42px;
        border: 1px solid rgba(255, 255, 255, .14);
        border-radius: 10px;
        background: rgba(255, 255, 255, .035);
    }

        .site-footer-socials span i {
            margin-top: 3px;
        }

/* Copyright */

.site-footer-bottom {
    position: relative;
    z-index: 1;
    min-height: 64px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 4px 24px;
    padding: 15px 0;
    color: rgba(255, 255, 255, .48);
    border-top: 1px solid rgba(255, 255, 255, .09);
    font-size: .75rem;
    line-height: 1.9;
    text-align: center;
}

/* Responsive */

@media (max-width: 1199.98px) {
    .site-brand {
        width: 150px;
    }

    .site-header-inner {
        gap: 17px;
    }

    .site-nav-link {
        padding-inline: 8px;
        font-size: .78rem;
    }

    .site-footer-main {
        grid-template-columns: 1.3fr 1fr 1fr;
    }

}

@media (max-width: 991.98px) {
    .site-container {
        width: min(100% - 32px, 760px);
    }

    .site-main {
        padding-top: 13px;
    }

    .site-header > .site-container {
        width: 100%;
        max-width: none;
    }

    .site-header-inner {
        position: relative;
        min-height: 76px;
        padding: 0;
        background: var(--dorsan-primary);
        overflow: hidden;
    }

    .site-header.is-scrolled .site-header-inner {
        min-height: 70px;
    }

    .site-brand {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 8px 70px;
        background: var(--dorsan-primary);
    }

        .site-brand img {
            width: auto;
            height: 100%;
            max-height: 60px;
            object-fit: contain;
            transform: none;
        }

        .site-brand:hover img {
            transform: none;
        }

    .site-nav,
    .site-header-actions {
        display: none;
    }

    .site-menu-toggle {
        position: relative;
        z-index: 2;
        display: flex;
        margin-right: auto;
        margin-left: 16px;
        color: var(--dorsan-heading);
        background: rgba(255, 255, 255, .82);
        border-color: rgba(255, 255, 255, .65);
        backdrop-filter: blur(8px);
        box-shadow: 0 6px 18px rgba(23, 63, 57, .08);
    }

    .site-mobile-menu {
        display: block;
    }

    .site-footer {
        margin-top: 52px;
        padding-top: 50px;
    }

    .site-footer-main {
        grid-template-columns: 1fr 1fr;
        gap: 38px 46px;
    }

    .site-footer-brand {
        max-width: none;
    }
}

@media (max-width: 575.98px) {
    .site-container {
        width: calc(100% - 28px);
    }

    .site-main {
        padding-top: 10px;
    }

    .site-header-inner {
        min-height: 72px;
    }

    .site-header.is-scrolled .site-header-inner {
        min-height: 68px;
    }

    .site-brand {
        padding: 8px 62px;
    }

        .site-brand img {
            max-height: 56px;
        }

    .site-menu-toggle {
        width: 40px;
        height: 40px;
        margin-left: 14px;
    }

    .site-footer-main {
        grid-template-columns: 1fr;
        gap: 30px;
    }

    .site-footer-logo {
        width: 105px;
    }

    .site-footer-bottom {
        flex-direction: column;
        justify-content: center;
        gap: 2px;
        padding: 18px 0;
        text-align: center;
    }
}

.site-header-actions form .site-button-secondary:hover,
.site-mobile-actions form .site-button-secondary:hover {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
    border-color: var(--dorsan-accent);
    box-shadow: none;
    transform: translateY(-1px);
}

/* =========================================================
   About
   ========================================================= */

.about-page {
    padding: 56px 0 72px;
}

.about-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 220px;
    align-items: center;
    gap: 48px;
    margin-bottom: 40px;
}

.about-hero__content {
    max-width: 760px;
}

.about-hero__eyebrow {
    display: inline-block;
    margin-bottom: 10px;
    color: var(--dorsan-primary-deep);
    font-weight: 700;
}

.about-hero h1 {
    margin: 0 0 16px;
    color: var(--dorsan-heading);
    font-size: clamp(2rem, 4vw, 3rem);
}

.about-hero p {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: 1.05rem;
    line-height: 2;
}

.about-hero__logo {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

    .about-hero__logo img {
        display: block;
        width: 100%;
        max-width: 180px;
        height: auto;
        object-fit: contain;
    }

.about-content {
    padding: 32px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: 20px;
}

.about-content__text {
    color: var(--dorsan-text);
    line-height: 2.2;
    white-space: pre-line;
}


/* =========================================================
   Contact
   ========================================================= */

.contact-header {
    max-width: 680px;
    margin-bottom: 36px;
}

    .contact-header > span {
        display: inline-block;
        margin-bottom: 10px;
        color: var(--dorsan-primary-deep);
        font-weight: 700;
    }

    .contact-header h1 {
        margin: 0 0 14px;
        color: var(--dorsan-heading);
        font-size: clamp(2rem, 4vw, 3rem);
    }

    .contact-header p {
        margin: 0;
        color: var(--dorsan-muted);
        line-height: 2;
    }

.contact-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

.contact-card {
    padding: 24px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: 18px;
}

.contact-card__label {
    display: block;
    margin-bottom: 10px;
    color: var(--dorsan-muted);
    font-size: .82rem;
    font-weight: 600;
}

.contact-card p {
    margin: 0;
    line-height: 2;
}

.contact-card a:not(.ui-btn) {
    color: var(--dorsan-primary-deep);
    font-weight: 600;
    text-decoration: none;
}

    .contact-card a:not(.ui-btn):hover {
        color: var(--dorsan-primary-dark);
    }

.contact-empty {
    padding: 32px;
    color: var(--dorsan-muted);
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: 18px;
    text-align: center;
}


/* =========================================================
   Public Responsive
   ========================================================= */

@media (max-width: 768px) {
    .about-page,
    .contact-page {
        padding: 36px 0 48px;
    }

    .about-hero {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .about-hero__logo {
        display: none;
    }

    .about-content {
        padding: 22px;
    }

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

.fa-15x {
    font-size: 1.5em;
}

.fa-25x {
    font-size: 2.5em;
}

/* ==========================================================================
   Home
   ========================================================================== */

/* =========================================================
   Home Page
   حال‌وهوای کلی: آرام، امن و دعوت‌کننده
   ========================================================= */

/* ── Slider ─────────────────────────────────────────────── */
.site-slider {
    margin-bottom: 8px;
}

.dorsan-swiper {
    position: relative;
    overflow: hidden;
    background: var(--dorsan-primary-soft);
    border-radius: 26px;
    box-shadow: var(--dorsan-shadow-sm);
    /* متغیرهای Swiper */
    --swiper-navigation-size: 46px;
    --swiper-navigation-sides-offset: 20px;
    --swiper-navigation-color: var(--dorsan-primary);
    --swiper-pagination-color: var(--dorsan-primary);
}

.slider-slide__link {
    display: block;
}

.slider-slide__image {
    display: block;
    width: 100%;
    height: auto;
}

/* دکمه‌های کناری: دایره‌ی دارای border به رنگ اصلی */
.dorsan-swiper .swiper-button-next,
.dorsan-swiper .swiper-button-prev {
    width: 46px;
    height: 46px;
    color: var(--dorsan-primary);
    background: rgba(255, 255, 255, .94);
    border: 2px solid var(--dorsan-primary);
    border-radius: 50%;
    box-shadow: 0 8px 22px rgba(40, 100, 91, .16);
    transition: background-color .22s ease, color .22s ease, transform .22s ease, box-shadow .22s ease;
}

    .dorsan-swiper .swiper-button-next:hover,
    .dorsan-swiper .swiper-button-prev:hover {
        color: var(--dorsan-heading);
        background: var(--dorsan-primary);
        box-shadow: 0 10px 26px rgba(var(--dorsan-primary-rgb), .5);
        transform: scale(1.06);
    }

    .dorsan-swiper .swiper-button-next .swiper-navigation-icon,
    .dorsan-swiper .swiper-button-prev .swiper-navigation-icon {
        width: auto;
        height: 18px;
    }

/* نقطه‌های پایین اسلاید: رنگ اصلی، و نقطه‌ی فعال ۳٫۵ برابر عریض‌تر */
.dorsan-swiper .swiper-pagination {
    right: 0;
    bottom: 16px;
    left: 0;
    width: fit-content;
    margin-inline: auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: rgba(255, 255, 255, .78);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.dorsan-swiper .swiper-pagination-bullet,
.home-carousel-pagination .swiper-pagination-bullet {
    width: 8px;
    height: 8px;
    margin: 0;
    background: var(--dorsan-primary);
    border-radius: 999px;
    opacity: .4;
    transition: width .35s ease, opacity .35s ease;
}

.dorsan-swiper .swiper-pagination-bullet-active,
.home-carousel-pagination .swiper-pagination-bullet-active {
    width: 28px;
    background: var(--dorsan-primary);
    opacity: 1;
}

/* ── Intro ──────────────────────────────────────────────── */
.home-intro {
    position: relative;
    margin-top: 40px;
    padding: 64px 0;
    overflow: hidden;
    background: linear-gradient(135deg, var(--dorsan-primary-soft) 0%, #f7fdfc 60%, #ffffff 100%);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .3);
    border-radius: 32px;
}

    .home-intro::before,
    .home-intro::after {
        position: absolute;
        content: "";
        border-radius: 50%;
        pointer-events: none;
    }

    .home-intro::before {
        top: -120px;
        left: -80px;
        width: 320px;
        height: 320px;
        background: radial-gradient(circle, rgba(var(--dorsan-primary-rgb), .28), transparent 70%);
    }

    .home-intro::after {
        right: -60px;
        bottom: -140px;
        width: 300px;
        height: 300px;
        background: radial-gradient(circle, rgba(223, 121, 95, .12), transparent 70%);
    }

.home-intro__inner {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 170px 1fr;
    gap: 52px;
    align-items: center;
}

.home-intro__logo {
    display: flex;
    align-items: center;
    justify-content: center;
}

    .home-intro__logo img {
        width: 140px;
        height: 140px;
        object-fit: contain;
        background: #fff;
        border: 6px solid #fff;
        border-radius: 50%;
        box-shadow: 0 0 0 2px rgba(var(--dorsan-primary-rgb), .55), 0 16px 40px rgba(var(--dorsan-primary-rgb), .3);
    }

.home-intro__eyebrow {
    display: inline-block;
    margin-bottom: 10px;
    padding: 4px 14px;
    color: var(--dorsan-primary-dark);
    background: rgba(255, 255, 255, .8);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .35);
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 700;
}

.home-intro__content h2 {
    margin: 0 0 14px;
    color: var(--dorsan-heading);
    font-size: clamp(1.6rem, 3vw, 2.2rem);
}

.home-intro__content p {
    max-width: 780px;
    margin: 0 0 24px;
    color: var(--dorsan-muted);
    font-size: .96rem;
    line-height: 2.05;
}

/* ── Sections ────────────────────────────────────────────── */
.home-section {
    padding: 36px 0;
}

/* پس‌زمینه‌ی تمام‌عرض حتی وقتی صفحه داخل کانتینر قرار دارد */
.home-section--tint {
    background: #f1faf8;
    box-shadow: 0 0 0 100vmax #f1faf8;
    clip-path: inset(0 -100vmax);
}

.home-section-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 30px;
}

.home-section-header__text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
}

.home-section-header__title {
    position: relative;
    margin: 0;
    padding-bottom: 14px;
    color: var(--dorsan-heading);
    font-size: clamp(1.2rem, 2.2vw, 1.6rem);
}

    .home-section-header__title::after {
        position: absolute;
        bottom: 0;
        inset-inline-start: 0;
        width: 46px;
        height: 3px;
        content: "";
        background: var(--dorsan-primary);
        border-radius: 999px;
    }

.home-section-header__subtitle {
    max-width: 560px;
    margin: -2px 0 0;
    color: var(--dorsan-muted);
    font-size: .88rem;
    line-height: 1.9;
}

.home-section-header__link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 7px 16px;
    color: var(--dorsan-primary-deep);
    background: #fff;
    border: 1px solid var(--dorsan-border);
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 700;
    white-space: nowrap;
    transition: color .18s ease, background-color .18s ease, border-color .18s ease;
}

    .home-section-header__link:hover {
        color: var(--dorsan-heading);
        background: var(--dorsan-primary-soft);
        border-color: var(--dorsan-primary);
    }

.home-section-header__badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 4px 13px;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
}

.home-section-header__badge--green {
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .4);
}

.home-section-header__badge--blue {
    color: #2f6f8f;
    background: #e9f4f9;
    border: 1px solid rgba(47, 111, 143, .22);
}

.home-section-header__badge--warm {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
    border: 1px solid rgba(223, 121, 95, .3);
}

.home-section-header__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
    animation: pulse-dot 1.8s ease infinite;
}

@keyframes pulse-dot {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: .5; transform: scale(.75); }
}

/* ── Workshop Grid ───────────────────────────────────────── */
.home-workshop-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 22px;
}

/* ── Workshop Card (فقط اطلاعات خود کارگاه) ─────────────── */
.home-workshop-card {
    --wc-from: #d3f3ed;
    --wc-to: #f0fbf9;
    --wc-ink: var(--dorsan-primary-dark);
    --wc-shadow: 132, 220, 206;
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease;
}

    .home-workshop-card:hover {
        border-color: rgba(var(--wc-shadow), .9);
        box-shadow: 0 18px 40px rgba(var(--wc-shadow), .26);
        transform: translateY(-4px);
        color: inherit;
    }

.home-workshop-card--v1 {
    --wc-from: #ffe0d6;
    --wc-to: #fff4f0;
    --wc-ink: var(--dorsan-accent-deep);
    --wc-shadow: 223, 121, 95;
}

.home-workshop-card--v2 {
    --wc-from: #d6e9f4;
    --wc-to: #f0f7fc;
    --wc-ink: #2f6f8f;
    --wc-shadow: 96, 160, 196;
}

.home-workshop-card--v3 {
    --wc-from: #dcefd1;
    --wc-to: #f3f9ee;
    --wc-ink: #4b7a37;
    --wc-shadow: 140, 190, 110;
}

.home-workshop-card__visual {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 118px;
    overflow: hidden;
    background: linear-gradient(135deg, var(--wc-from), var(--wc-to));
}

    .home-workshop-card__visual::before,
    .home-workshop-card__visual::after {
        position: absolute;
        content: "";
        background: rgba(255, 255, 255, .5);
        border-radius: 50%;
    }

    .home-workshop-card__visual::before {
        top: -64px;
        inset-inline-end: -36px;
        width: 160px;
        height: 160px;
    }

    .home-workshop-card__visual::after {
        bottom: -46px;
        inset-inline-start: -24px;
        width: 100px;
        height: 100px;
    }

.home-workshop-card__icon {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 62px;
    height: 62px;
    color: var(--wc-ink);
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 10px 24px rgba(var(--wc-shadow), .3);
    font-size: 1.55rem;
    transition: transform .3s ease;
}

.home-workshop-card:hover .home-workshop-card__icon {
    transform: scale(1.08) rotate(-4deg);
}

.home-workshop-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 8px;
    padding: 22px 22px 8px;
}

.home-workshop-card__title {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: 1.04rem;
    font-weight: 750;
    line-height: 1.7;
}

.home-workshop-card__summary {
    display: -webkit-box;
    flex: 1;
    margin: 0;
    overflow: hidden;
    color: var(--dorsan-muted);
    font-size: .85rem;
    line-height: 1.95;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}

.home-workshop-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 22px 18px;
    color: var(--dorsan-primary-deep);
    font-size: .8rem;
    font-weight: 700;
}

.home-workshop-card__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border-radius: 50%;
    transition: background-color .22s ease, color .22s ease, transform .22s ease;
}

.home-workshop-card:hover .home-workshop-card__arrow {
    color: var(--dorsan-heading);
    background: var(--dorsan-primary);
    transform: translateX(-4px);
}

/* ── Course Grid / Card (دوره‌های به‌زودی) ──────────────── */
.home-course-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
}

.home-course-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease;
}

    .home-course-card:hover {
        border-color: rgba(223, 121, 95, .55);
        box-shadow: 0 18px 40px rgba(223, 121, 95, .18);
        transform: translateY(-4px);
        color: inherit;
    }

.home-course-card__media {
    position: relative;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: linear-gradient(135deg, #ffe0d6, #fff4f0);
}

    .home-course-card__media img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .6s ease;
    }

.home-course-card:hover .home-course-card__media img {
    transform: scale(1.06);
}

.home-course-card__placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: var(--dorsan-accent-deep);
    font-size: 2.4rem;
    opacity: .7;
}

.home-course-card__badge {
    position: absolute;
    top: 12px;
    inset-inline-start: 12px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    color: var(--dorsan-accent-deep);
    background: rgba(255, 255, 255, .92);
    border-radius: 999px;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .1);
    font-size: .72rem;
    font-weight: 700;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.home-course-card__dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    animation: pulse-dot 1.8s ease infinite;
}

.home-course-card__body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 12px;
    padding: 18px 18px 16px;
}

.home-course-card__title {
    display: -webkit-box;
    margin: 0;
    overflow: hidden;
    color: var(--dorsan-heading);
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.7;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.home-course-card__meta {
    display: flex;
    flex-direction: column;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
}

    .home-course-card__meta li {
        display: flex;
        align-items: flex-start;
        gap: 8px;
        color: var(--dorsan-muted);
        font-size: .8rem;
        line-height: 1.7;
    }

    .home-course-card__meta i {
        flex: 0 0 16px;
        margin-top: 4px;
        color: var(--dorsan-primary-deep);
        text-align: center;
    }

.home-course-card__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-top: auto;
    padding-top: 14px;
    border-top: 1px dashed var(--dorsan-border);
}

.home-course-card__price {
    color: var(--dorsan-heading);
    font-size: 1rem;
    font-weight: 800;
}

    .home-course-card__price small {
        color: var(--dorsan-muted);
        font-size: .72rem;
        font-weight: 600;
    }

.home-course-card__more {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--dorsan-primary-deep);
    font-size: .78rem;
    font-weight: 700;
    transition: gap .2s ease;
}

.home-course-card:hover .home-course-card__more {
    gap: 8px;
}

/* ── Carousel ────────────────────────────────────────────── */
.home-carousel-wrapper {
    position: relative;
}

/* padding و margin منفی: سایه و بالا آمدن کارت هنگام hover بریده نشود */
.home-carousel {
    margin: -12px -8px -16px;
    padding: 12px 8px 16px;
}

    .home-carousel .swiper-slide {
        display: flex;
        height: auto;
    }

        .home-carousel .swiper-slide .home-workshop-card {
            width: 100%;
        }

/* نقطه‌ها بیرون از swiper و زیر کارت‌ها هستند، نه روی آن‌ها */
.home-carousel-wrapper .home-carousel-pagination.swiper-pagination {
    position: relative;
    inset: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    height: 8px;
    margin-top: 28px;
    transform: none;
}

.home-carousel-btn {
    position: absolute;
    top: calc(50% - 18px);
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    color: var(--dorsan-primary);
    background: rgba(255, 255, 255, .96);
    border: 2px solid var(--dorsan-primary);
    border-radius: 50%;
    box-shadow: 0 8px 22px rgba(40, 100, 91, .14);
    font-size: 1.15rem;
    cursor: pointer;
    transform: translateY(-50%);
    transition: background-color .2s ease, color .2s ease, box-shadow .2s ease;
}

    .home-carousel-btn:hover {
        color: var(--dorsan-heading);
        background: var(--dorsan-primary);
        box-shadow: 0 10px 26px rgba(var(--dorsan-primary-rgb), .5);
    }

    .home-carousel-btn.swiper-button-disabled,
    .home-carousel-btn:disabled {
        opacity: .4;
        cursor: default;
        pointer-events: none;
    }

.home-carousel-btn--prev { right: -22px; }
.home-carousel-btn--next { left: -22px; }

/* ── People Section ──────────────────────────────────────── */
.home-people-section {
    background: var(--dorsan-background);
}

.home-people-row {
    display: grid;
    grid-template-columns: 6fr 4fr;
    gap: 28px;
    align-items: stretch;
}

.home-people-row--single {
    grid-template-columns: 1fr;
}

.home-people-block {
    --pb-from: #def6f1;
    --pb-border: rgba(var(--dorsan-primary-rgb), .35);
    --pb-glow: rgba(var(--dorsan-primary-rgb), .3);
    position: relative;
    padding: 34px;
    overflow: hidden;
    background: linear-gradient(160deg, var(--pb-from) 0%, #f7fcfb 52%, #ffffff 100%);
    border: 1px solid var(--pb-border);
    border-radius: 32px;
}

    .home-people-block::before {
        position: absolute;
        top: -110px;
        inset-inline-end: -90px;
        width: 300px;
        height: 300px;
        content: "";
        background: radial-gradient(circle, var(--pb-glow), transparent 70%);
        border-radius: 50%;
        pointer-events: none;
    }

.home-people-block--teachers {
    --pb-from: #ffeae3;
    --pb-border: rgba(223, 121, 95, .28);
    --pb-glow: rgba(223, 121, 95, .22);
    background: linear-gradient(160deg, var(--pb-from) 0%, #fff9f7 52%, #ffffff 100%);
}

.home-people-block__header {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 28px;
}

.home-people-block__icon {
    display: flex;
    flex: 0 0 54px;
    align-items: center;
    justify-content: center;
    width: 54px;
    height: 54px;
    color: var(--dorsan-primary-dark);
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 10px 26px rgba(var(--dorsan-primary-rgb), .35);
    font-size: 1.35rem;
}

.home-people-block--teachers .home-people-block__icon {
    color: var(--dorsan-accent-deep);
    box-shadow: 0 10px 26px rgba(223, 121, 95, .26);
}

.home-people-block__text {
    flex: 1;
    min-width: 0;
}

.home-people-block__title {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: clamp(1.15rem, 2vw, 1.45rem);
}

.home-people-block__subtitle {
    margin: 3px 0 0;
    color: var(--dorsan-muted);
    font-size: .82rem;
    line-height: 1.8;
}

.home-people-block--teachers .home-section-header__link:hover {
    background: var(--dorsan-accent-soft);
    border-color: rgba(223, 121, 95, .5);
}

/* ── Person Grid ─────────────────────────────────────────── */
.home-person-grid {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 16px;
}

.home-person-grid--therapists {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.home-person-grid--teachers {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.home-people-row--single .home-person-grid--therapists {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.home-people-row--single .home-person-grid--teachers {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* ── Person Card ─────────────────────────────────────────── */
.home-person-card {
    --pc-from: #c9ece6;
    --pc-to: #e9f8f5;
    --pc-ring: var(--dorsan-primary);
    --pc-soft: var(--dorsan-primary-soft);
    --pc-ink: var(--dorsan-primary-dark);
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0 14px 18px;
    overflow: hidden;
    color: inherit;
    text-align: center;
    text-decoration: none;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: 22px;
    transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease;
}

    .home-person-card:hover {
        border-color: var(--pc-ring);
        box-shadow: 0 18px 36px rgba(40, 100, 91, .14);
        transform: translateY(-5px);
        color: inherit;
    }

.home-person-card--teacher {
    --pc-from: #ffd8cb;
    --pc-to: #fff0eb;
    --pc-ring: #eda08c;
    --pc-soft: var(--dorsan-accent-soft);
    --pc-ink: var(--dorsan-accent-deep);
}

.home-person-card__cover {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    height: 66px;
    background: linear-gradient(135deg, var(--pc-from), var(--pc-to));
}

    .home-person-card__cover::after {
        position: absolute;
        top: -34px;
        inset-inline-end: -20px;
        width: 96px;
        height: 96px;
        content: "";
        background: rgba(255, 255, 255, .45);
        border-radius: 50%;
    }

.home-person-card__avatar {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 88px;
    height: 88px;
    margin-top: 22px;
    overflow: hidden;
    background: var(--pc-soft);
    border: 4px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--pc-ring), 0 12px 26px rgba(40, 100, 91, .16);
}

    .home-person-card__avatar img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .5s ease;
    }

.home-person-card:hover .home-person-card__avatar img {
    transform: scale(1.08);
}

.home-person-card__avatar-placeholder {
    color: var(--pc-ink);
    font-size: 1.7rem;
    opacity: .75;
}

.home-person-card__info {
    min-width: 0;
    margin-top: 14px;
}

    .home-person-card__info strong {
        display: block;
        color: var(--dorsan-heading);
        font-size: .93rem;
        font-weight: 750;
        line-height: 1.65;
    }

.home-person-card__education {
    display: block;
    margin-top: 2px;
    color: var(--dorsan-muted);
    font-size: .76rem;
}

.home-person-card__role {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    padding: 4px 13px;
    color: var(--pc-ink);
    background: var(--pc-soft);
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

/* ── Reveal on scroll ────────────────────────────────────── */
.js-reveal [data-reveal] {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity .7s ease, transform .7s cubic-bezier(.2, .7, .2, 1);
}

    .js-reveal [data-reveal].is-visible {
        opacity: 1;
        transform: none;
    }

@media (prefers-reduced-motion: reduce) {
    .js-reveal [data-reveal] {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .home-section-header__dot,
    .home-course-card__dot {
        animation: none;
    }
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 1399.98px) {
    .home-carousel-btn--prev { right: -12px; }
    .home-carousel-btn--next { left: -12px; }
}

@media (max-width: 1199.98px) {
    .home-course-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .home-people-row {
        grid-template-columns: 1fr;
    }

    .home-person-grid--therapists,
    .home-person-grid--teachers,
    .home-people-row--single .home-person-grid--therapists,
    .home-people-row--single .home-person-grid--teachers {
        grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    }
}

@media (max-width: 991.98px) {
    .home-intro { padding: 56px 0; }

    .home-intro__inner {
        grid-template-columns: 1fr;
        gap: 24px;
        text-align: center;
    }

    .home-intro__content p { margin-inline: auto; }

    .home-intro__logo {
        display: none;
    }

    .home-workshop-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .home-carousel-btn--prev { right: -8px; }
    .home-carousel-btn--next { left: -8px; }
}

@media (max-width: 767.98px) {
    .dorsan-swiper {
        border-radius: 18px;
        --swiper-navigation-size: 36px;
    }

        .dorsan-swiper .swiper-button-next,
        .dorsan-swiper .swiper-button-prev {
            width: 36px;
            height: 36px;
        }

            .dorsan-swiper .swiper-button-next .swiper-navigation-icon,
            .dorsan-swiper .swiper-button-prev .swiper-navigation-icon {
                height: 14px;
            }

        .dorsan-swiper .swiper-pagination {
            bottom: 10px;
            gap: 6px;
            padding: 6px 11px;
        }
}

@media (max-width: 575.98px) {
    .home-intro { padding: 40px 0; margin-top: 28px; }
    .home-section { padding: 38px 0; }
    .home-people-section { padding: 44px 0 52px; }

    .home-section-header {
        align-items: flex-start;
        flex-direction: column;
        gap: 12px;
        margin-bottom: 22px;
    }

    .home-workshop-grid,
    .home-course-grid {
        grid-template-columns: 1fr;
    }

    .home-people-block {
        padding: 24px 18px;
        border-radius: 26px;
    }

    .home-people-block__header {
        flex-wrap: wrap;
        margin-bottom: 20px;
    }

    .home-person-grid--therapists,
    .home-person-grid--teachers,
    .home-people-row--single .home-person-grid--therapists,
    .home-people-row--single .home-person-grid--teachers {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .home-carousel-btn { display: none; }
}

/* ── تصویر کارگاه در کارت صفحه‌ی اصلی ── */
.home-workshop-card__visual--image {
    height: 150px;
    background: var(--dorsan-primary-soft);
}

    .home-workshop-card__visual--image::before,
    .home-workshop-card__visual--image::after {
        display: none;
    }

.home-workshop-card__img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: transform .35s ease;
}

.home-workshop-card:hover .home-workshop-card__img {
    transform: scale(1.05);
}

/* ==========================================================================
   Contact
   ========================================================================== */

/* =========================================================
                   Contact Page
   ========================================================= */

.contact-page {
    padding: 56px 0 80px;
}

/* Page Header */
.contact-page-header {
    max-width: 620px;
    margin-bottom: 52px;
    margin-top: 45px;
}

.contact-page-eyebrow {
    display: inline-block;
    margin-bottom: 10px;
    color: var(--dorsan-primary-deep);
    font-size: .78rem;
    font-weight: 700;
}

.contact-page-header h1 {
    margin: 0 0 14px;
    color: var(--dorsan-heading);
    font-size: clamp(2rem, 4vw, 2.8rem);
    font-weight: 800;
    line-height: 1.35;
}

.contact-page-header p,
.contact-page-description {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: .95rem;
    line-height: 2;
}

    .contact-page-description p {
        margin: 0 0 .5rem;
    }

    .contact-page-description > :last-child {
        margin-bottom: 0;
    }

/* Layout */
.contact-layout {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 48px;
    align-items: start;
}

/* Contact Form */
.contact-form-card {
    padding: 36px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    box-shadow: var(--dorsan-shadow-sm);
}

.contact-form-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 28px;
    color: var(--dorsan-heading);
    font-size: 1.05rem;
    font-weight: 750;
}

.contact-form-title-icon {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border-radius: 10px;
    flex: 0 0 36px;
}

    .contact-form-title-icon svg {
        width: 17px;
        height: 17px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

/* Form rows */
.contact-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.contact-form-group {
    display: grid;
    gap: 7px;
    margin-bottom: 16px;
}


.contact-form-label {
    color: var(--dorsan-heading);
    font-size: .8rem;
    font-weight: 700;
    max-height: 20.47px;
}

    .contact-form-label .contact-required {
        color: var(--dorsan-danger);
        margin-right: 2px;
    }

.contact-form-input,
.contact-form-textarea {
    height: 48px;
    padding: .65rem .85rem;
    color: var(--dorsan-text);
    background: #fcfefd;
    border: 1px solid var(--dorsan-border);
    border-radius: 12px;
    font-family: inherit;
    font-size: .88rem;
    outline: 0;
    transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}

    .contact-form-input:hover,
    .contact-form-textarea:hover {
        border-color: rgba(132, 220, 206, .5);
    }

    .contact-form-input:focus,
    .contact-form-textarea:focus {
        background: #fff;
        border-color: var(--dorsan-primary);
        box-shadow: 0 0 0 4px var(--dorsan-primary-ring);
    }

    .contact-form-input::placeholder,
    .contact-form-textarea::placeholder {
        color: #a4b4b1;
    }

.contact-form-textarea {
    min-height: 130px;
    resize: vertical;
    line-height: 2;
}

/* Submit */
.contact-submit-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 24px;
    flex-wrap: wrap;
}

.contact-submit-note {
    color: var(--dorsan-muted);
    font-size: .76rem;
    line-height: 1.9;
}

.contact-submit-btn {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 24px;
    color: #173f39;
    background: var(--dorsan-primary);
    border: 1px solid var(--dorsan-primary);
    border-radius: 13px;
    font-family: inherit;
    font-size: .88rem;
    font-weight: 750;
    cursor: pointer;
    box-shadow: 0 10px 26px rgba(132, 220, 206, .3);
    transition: all .2s ease;
    white-space: nowrap;
}

    .contact-submit-btn:hover {
        background: var(--dorsan-primary-hover);
        border-color: var(--dorsan-primary-hover);
        box-shadow: 0 13px 30px rgba(132, 220, 206, .38);
        transform: translateY(-1px);
    }

    .contact-submit-btn svg {
        width: 17px;
        height: 17px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2.5;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

/* Success message */
.contact-success {
    display: none;
    text-align: center;
    padding: 32px 0;
}

    .contact-success.is-visible {
        display: block;
    }

.contact-success-icon {
    width: 60px;
    height: 60px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
    border: 2px solid rgba(132, 220, 206, .4);
    border-radius: 50%;
    margin-bottom: 16px;
}

    .contact-success-icon svg {
        width: 28px;
        height: 28px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2.5;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

.contact-success h3 {
    margin: 0 0 8px;
    color: var(--dorsan-heading);
    font-size: 1.1rem;
    font-weight: 750;
}

.contact-success p {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: .85rem;
    line-height: 1.9;
}

/* Sidebar */
.contact-sidebar {
    display: grid;
    gap: 14px;
}

.contact-info-card {
    padding: 22px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius);
    display: flex;
    gap: 14px;
    align-items: flex-start;
    transition: border-color .18s ease, box-shadow .18s ease;
}

    .contact-info-card:hover {
        border-color: var(--dorsan-primary);
        box-shadow: var(--dorsan-shadow-sm);
    }

.contact-info-icon {
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    border-radius: 12px;
}

    .contact-info-icon svg {
        width: 20px;
        height: 20px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2;
        stroke-linecap: round;
        stroke-linejoin: round;
    }

.contact-info-icon--phone {
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
}

.contact-info-icon--email {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
}

.contact-info-icon--address {
    color: #5c3d99;
    background: #f0ebfc;
}

.contact-info-icon--hours {
    color: var(--dorsan-warning);
    background: #fff8e9;
}

.contact-info-content {
}

.contact-info-label {
    display: block;
    margin-bottom: 4px;
    color: var(--dorsan-muted);
    font-size: .72rem;
    font-weight: 700;
}

.contact-info-value {
    display: block;
    color: var(--dorsan-text);
    font-size: .88rem;
    font-weight: 600;
    line-height: 1.7;
}

    .contact-info-value a {
        color: var(--dorsan-text);
        text-decoration: none;
        transition: color .18s ease;
    }

        .contact-info-value a:hover {
            color: var(--dorsan-primary-deep);
        }

    .contact-info-value .contact-map-link {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        margin-top: 8px;
        padding: 6px 14px;
        color: var(--dorsan-primary-deep);
        background: var(--dorsan-primary-soft);
        border: 1px solid rgba(var(--dorsan-primary-rgb), .45);
        border-radius: 999px;
        font-size: .78rem;
        font-weight: 700;
        line-height: 1.6;
    }

        .contact-info-value .contact-map-link:hover {
            color: var(--dorsan-heading);
            background: var(--dorsan-primary);
            border-color: var(--dorsan-primary);
        }

/* Responsive */
@media (max-width: 991.98px) {
    .contact-layout {
        grid-template-columns: 1fr;
    }

    .contact-sidebar {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575.98px) {
    .contact-page {
        padding: 32px 0 56px;
    }

    .contact-form-card {
        padding: 22px;
    }

    .contact-form-row {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .contact-submit-row {
        flex-direction: column;
        align-items: flex-start;
    }

    .contact-submit-btn {
        width: 100%;
        justify-content: center;
    }

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

/* ── کپچا ── */
.contact-captcha-row {
    display: flex;
    gap: .75rem;
    align-items: stretch;
}

.contact-captcha-box {
    display: flex;
    align-items: center;
    gap: .5rem;
    background: var(--color-surface-alt, #f4f6f8);
    border: 1.5px solid var(--color-border, #d1d5db);
    border-radius: .5rem;
    padding: .55rem 1rem;
    font-weight: 700;
    font-size: 1.05rem;
    letter-spacing: .05em;
    white-space: nowrap;
    color: var(--color-text, #1f2937);
    user-select: none;
}

.contact-captcha-icon {
    color: var(--color-primary, #4f46e5);
    font-size: 1.1rem;
}

.contact-captcha-question {
    direction: ltr;
}

.contact-captcha-input {
    flex: 1;
    min-width: 0;
}

@media (max-width: 480px) {
    .contact-captcha-row {
        flex-direction: column;
    }
}

/* ── پیام نتیجه ارسال (خطا) ── */
.contact-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 18px;
    padding: 14px 16px;
    border-radius: 12px;
    font-size: .85rem;
    line-height: 1.9;
}

    .contact-alert:focus {
        outline: none;
    }

    .contact-alert > i {
        margin-top: 4px;
        font-size: 1.1rem;
    }

    .contact-alert strong {
        display: block;
        font-weight: 750;
    }

    .contact-alert p {
        margin: 0;
    }

.contact-alert--error {
    color: var(--dorsan-danger, #c0392b);
    background: rgba(192, 57, 43, .08);
    border: 1px solid rgba(192, 57, 43, .3);
}

.contact-alert-list ul {
    margin: 0;
    padding: 0 18px 0 0;
}

.contact-success:focus {
    outline: none;
}

/* ==========================================================================
   Content pages (rules / about)
   ========================================================================== */

/* =========================================================
   Content Page (Rules, About, etc.)
   ========================================================= */

.content-page {
    padding: 48px 0 80px;
}

.content-page-hero {
    max-width: 700px;
    margin-bottom: 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid var(--dorsan-border);
}

.content-page-hero__eyebrow {
    display: inline-block;
    margin-bottom: 8px;
    color: var(--dorsan-primary-deep);
    font-size: .8rem;
    font-weight: 700;
}

.content-page-hero h1 {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: clamp(1.8rem, 4vw, 2.6rem);
}

.content-page-body {
    max-width: 820px;
    color: var(--dorsan-text);
    font-size: .95rem;
    line-height: 2.1;
}

    .content-page-body h2,
    .content-page-body h3 {
        color: var(--dorsan-heading);
        margin-top: 32px;
        margin-bottom: 12px;
    }

    .content-page-body p {
        margin-bottom: 16px;
    }

    .content-page-body ul,
    .content-page-body ol {
        padding-right: 24px;
        margin-bottom: 16px;
    }

    .content-page-body li {
        margin-bottom: 8px;
    }

    .content-page-body strong {
        color: var(--dorsan-heading);
        font-weight: 700;
    }

@media (max-width: 575.98px) {
    .content-page { padding: 28px 0 56px; }
    .content-page-hero { margin-bottom: 24px; }
}

/* ==========================================================================
   Therapists & instructors
   ========================================================================== */

/* =========================================================
   People Pages (Therapists & Instructors)
   ========================================================= */

.people-page {
    padding: 20px 0 80px;
}

.people-hero {
    max-width: 700px;
    margin-bottom: 40px;
}

.people-hero__eyebrow {
    display: inline-block;
    margin-bottom: 8px;
    color: var(--dorsan-primary-deep);
    font-size: .8rem;
    font-weight: 700;
}

.people-hero h1 {
    margin: 0 0 12px;
    color: var(--dorsan-heading);
    font-size: clamp(1.8rem, 4vw, 2.6rem);
}

.people-hero p {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: .95rem;
    line-height: 2;
}

.people-empty {
    padding: 60px 16px;
    color: var(--dorsan-muted);
    background: var(--dorsan-surface);
    border: 1px dashed var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    text-align: center;
}

/* ── People Grid ─────────────────────────────────────────── */
.people-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 20px;
}

/* ── Person Card ─────────────────────────────────────────── */
.person-card {
    display: flex;
    flex-direction: column;
    color: inherit;
    text-decoration: none;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    overflow: hidden;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

    .person-card:hover {
        border-color: var(--dorsan-primary);
        box-shadow: var(--dorsan-shadow-sm);
        transform: translateY(-3px);
        color: inherit;
    }

.person-card__avatar {
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    background: var(--dorsan-primary-soft);
    display: flex;
    align-items: center;
    justify-content: center;
}

    .person-card__avatar img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        transition: transform .3s ease;
    }

    .person-card:hover .person-card__avatar img {
        transform: scale(1.04);
    }

.person-card__avatar-placeholder {
    color: var(--dorsan-primary-deep);
    font-size: 2.5rem;
    opacity: .5;
}

.person-card__body {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.person-card__name {
    color: var(--dorsan-heading);
    font-size: .95rem;
    font-weight: 700;
}

.person-card__edu {
    color: var(--dorsan-muted);
    font-size: .78rem;
}

.person-card__roles {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 4px;
}

.person-card__role {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: .7rem;
    font-weight: 700;
}

.person-card__role--therapist {
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
    border: 1px solid rgba(var(--dorsan-primary-rgb), .3);
}

.person-card__role--teacher {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
    border: 1px solid rgba(223, 121, 95, .25);
}

/* ── Detail Page ─────────────────────────────────────────── */
.person-detail-page {
    padding: 20px 0 80px;
}

.person-detail-layout {
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}

.person-detail-sidebar {
    position: sticky;
    top: 100px;
}

.person-detail-avatar-card {
    padding: 28px 20px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    box-shadow: var(--dorsan-shadow-sm);
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.person-detail-avatar {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--dorsan-primary-soft);
}

.person-detail-avatar--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--dorsan-primary-soft);
    color: var(--dorsan-primary-deep);
    font-size: 3rem;
}

.person-detail-name {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: 1.1rem;
    font-weight: 750;
}

.person-detail-roles {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
}

.person-detail-info-row {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--dorsan-muted);
    font-size: .82rem;
    margin-top: 4px;
}

    .person-detail-info-row i {
        color: var(--dorsan-primary-deep);
        width: 16px;
        text-align: center;
    }

.person-detail-bio {
    /* inherits workshop styles */
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 991.98px) {
    .people-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .person-detail-layout {
        grid-template-columns: 1fr;
    }

    .person-detail-sidebar {
        position: static;
    }
}

@media (max-width: 575.98px) {
    .people-page { padding: 28px 0 56px; }
    .person-detail-page { padding: 24px 0 56px; }

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

@media (max-width: 399px) {
    .people-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================================================
   Workshops & courses
   ========================================================================== */

/* =========================================================
   Workshops & Courses – public pages
   ========================================================= */

/* =========================================================
           Workshop Detail Page
           ========================================================= */

.workshop-detail-page {
    padding: 40px 0 80px;
}


/* Breadcrumb: عمداً استایل اختصاصی ندارد تا دقیقاً مثل برد کرامب صفحه‌ی مدرس/درمانگر (people.css) نمایش داده شود */


/* Layout grid */
.workshop-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 32px;
    align-items: start;
}


/* Left: main content */
.workshop-main {
}


/* Hero image */
.workshop-hero-image {
    width: 100%;
    aspect-ratio: 16/7;
    object-fit: cover;
    border-radius: var(--dorsan-radius-lg);
    display: block;
    background: var(--dorsan-primary-soft);
}


/* Status badge */
.workshop-status-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 22px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}


.workshop-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: .73rem;
    font-weight: 700;
}


.workshop-badge--active {
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
    border: 1px solid rgba(132, 220, 206, .4);
}


.workshop-badge--soon {
    color: var(--dorsan-warning);
    background: #fff8e9;
    border: 1px solid rgba(185, 135, 50, .3);
}


.workshop-badge--category {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
    border: 1px solid rgba(223, 121, 95, .25);
}


.workshop-badge-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    flex: 0 0 6px;
}


/* Title */
.workshop-title {
    margin: 0 0 8px;
    color: var(--dorsan-heading);
    font-size: clamp(1.5rem, 3vw, 2.1rem);
    font-weight: 800;
    line-height: 1.45;
}


.workshop-subtitle {
    margin: 0 0 24px;
    color: var(--dorsan-muted);
    font-size: .95rem;
    line-height: 1.9;
}


/* Instructors */
.workshop-section {
    margin-top: 32px;
}


.workshop-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 16px;
    color: var(--dorsan-heading);
    font-size: 1rem;
    font-weight: 750;
    padding-bottom: 12px;
    border-bottom: 1.5px solid var(--dorsan-border);
}


.workshop-section-title-icon {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border-radius: 9px;
    flex: 0 0 32px;
}


    .workshop-section-title-icon svg {
        width: 16px;
        height: 16px;
    }


/* Instructor cards */
.workshop-instructors {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}


.workshop-instructor-card {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 14px 18px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: 14px;
    text-decoration: none;
    color: inherit;
    transition: border-color .18s ease, box-shadow .18s ease;
}


    .workshop-instructor-card:hover {
        border-color: var(--dorsan-primary);
        box-shadow: var(--dorsan-shadow-sm);
    }


.workshop-instructor-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--dorsan-primary-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 52px;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--dorsan-primary-dark);
    overflow: hidden;
}


.workshop-instructor-info strong {
    display: block;
    color: var(--dorsan-heading);
    font-size: .88rem;
    font-weight: 700;
}


.workshop-instructor-info span {
    color: var(--dorsan-muted);
    font-size: .76rem;
}


/* Description */
.workshop-description {
    color: var(--dorsan-text);
    font-size: .93rem;
    line-height: 2.2;
}


    .workshop-description p {
        margin-bottom: 14px;
    }


/* Right: sidebar */
.workshop-sidebar {
    position: sticky;
    top: 100px;
    display: grid;
    gap: 16px;
}


/* Info card */
.workshop-info-card {
    padding: 24px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    box-shadow: var(--dorsan-shadow-sm);
}


.workshop-price-block {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--dorsan-border);
}


.workshop-price-value {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--dorsan-heading);
    line-height: 1;
}


.workshop-price-currency {
    font-size: .85rem;
    color: var(--dorsan-muted);
    font-weight: 600;
}


.workshop-price-free {
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--dorsan-primary-dark);
}


.workshop-info-list {
    display: grid;
    gap: 14px;
    margin-bottom: 20px;
}


.workshop-info-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}


.workshop-info-row-icon {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 32px;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border-radius: 9px;
}


    .workshop-info-row-icon svg {
        width: 15px;
        height: 15px;
        fill: none;
        stroke: currentColor;
        stroke-width: 2;
        stroke-linecap: round;
        stroke-linejoin: round;
    }


.workshop-info-row-content {
    min-width: 0;
    flex: 1;
}


.workshop-info-row-label {
    display: block;
    color: var(--dorsan-muted);
    font-size: .72rem;
    font-weight: 600;
    margin-bottom: 1px;
}


.workshop-info-row-value {
    display: block;
    color: var(--dorsan-text);
    font-size: .84rem;
    font-weight: 600;
}


/* ── Workshops list page ─────────────────────────────────── */
.workshops-page {
    padding: 40px 0 80px;
}

.workshops-hero {
    margin-bottom: 32px;
}

.workshops-hero h1 {
    margin: 0 0 8px;
    color: var(--dorsan-heading);
    font-size: clamp(1.5rem, 3vw, 2.1rem);
    font-weight: 800;
}

.workshops-hero p {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: .95rem;
    line-height: 1.9;
}

.workshop-card-grid,
.course-card-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

.workshop-card,
.course-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.workshop-card:hover,
.course-card:hover {
    border-color: var(--dorsan-primary);
    box-shadow: var(--dorsan-shadow-sm);
    transform: translateY(-2px);
    color: inherit;
}

.workshop-card {
    padding: 22px;
    gap: 10px;
}

.workshop-card h2 {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: 1.05rem;
    font-weight: 750;
    line-height: 1.7;
}

.workshop-card p {
    margin: 0;
    flex: 1;
    color: var(--dorsan-muted);
    font-size: .86rem;
    line-height: 1.9;
}

.workshop-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 12px;
    border-top: 1px solid var(--dorsan-border);
    color: var(--dorsan-primary-deep);
    font-size: .8rem;
    font-weight: 700;
}

.course-card-image {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    display: block;
    background: var(--dorsan-primary-soft);
}

.course-card-body {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 10px;
    padding: 18px;
}

.course-card-title {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.7;
}

.course-card-meta {
    display: grid;
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--dorsan-muted);
    font-size: .8rem;
}

.course-card-meta i {
    width: 18px;
    margin-inline-end: 4px;
    color: var(--dorsan-primary-deep);
    text-align: center;
}

.course-card-price {
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px solid var(--dorsan-border);
    color: var(--dorsan-heading);
    font-size: .95rem;
    font-weight: 800;
}

.course-card-price small {
    color: var(--dorsan-muted);
    font-weight: 600;
}

.workshop-badge--upcoming {
    color: #1f6fb2;
    background: #e6f1fb;
    border: 1px solid rgba(31, 111, 178, .2);
}

.workshop-badge--closed {
    color: var(--dorsan-muted);
    background: #eef2f3;
    border: 1px solid var(--dorsan-border);
}

.workshop-empty {
    padding: 48px 16px;
    color: var(--dorsan-muted);
    text-align: center;
    background: var(--dorsan-surface);
    border: 1px dashed var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
}

.workshop-info-row-icon i {
    font-size: .85rem;
}

.workshop-instructor-card {
    cursor: default;
}

@media (max-width: 991.98px) {
    .workshop-layout {
        grid-template-columns: 1fr;
    }

    .workshop-sidebar {
        position: static;
    }

    .workshop-card-grid,
    .course-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .workshop-detail-page,
    .workshops-page {
        padding: 24px 0 56px;
    }

    .workshop-title {
        font-size: 1.4rem;
    }

    .workshop-info-card {
        padding: 18px;
    }

    .workshop-card-grid,
    .course-card-grid {
        grid-template-columns: 1fr;
    }
}

/* ── درخواست حامی در کارت کناری جزئیات دوره ─────────────── */
.workshop-sponsor-box {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--dorsan-border);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
}

.workshop-sponsor-box__title {
    margin: 0;
    color: var(--dorsan-heading);
    font-size: .92rem;
    font-weight: 700;
}

.workshop-sponsor-box p {
    margin: 0;
    color: var(--dorsan-muted);
    font-size: .8rem;
}

/* ── تصویر کارگاه ── */
.workshop-card__image {
    display: flex;
    align-items: center;
    justify-content: center;
    width: calc(100% + 44px);
    object-fit: cover;
    background: var(--dorsan-primary-soft);
}

.workshop-card__image--empty {
    color: var(--dorsan-primary-deep);
    font-size: 2rem;
}

.workshop-hero-image--detail {
    max-height: 380px;
    margin-bottom: 22px;
}

/* ==========================================================================
   User panel
   ========================================================================== */

/* =========================================================
   User Panel
   ========================================================= */

.up-page {
    padding: 40px 0 80px;
    min-height: 60vh;
}

/* ── Layout ──────────────────────────────────────────────── */
.up-layout {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 28px;
    align-items: start;
}

/* ── Sidebar ─────────────────────────────────────────────── */
.up-sidebar {
    position: sticky;
    top: 96px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    box-shadow: var(--dorsan-shadow-sm);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.up-sidebar__user {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 20px 16px;
    background: var(--dorsan-primary-soft);
    border-bottom: 1px solid rgba(var(--dorsan-primary-rgb), .18);
}

.up-sidebar__avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--dorsan-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 1.1rem;
    flex: 0 0 44px;
}

.up-sidebar__user-info {
    min-width: 0;
}

    .up-sidebar__user-info strong {
        display: block;
        color: var(--dorsan-heading);
        font-size: .88rem;
        font-weight: 700;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .up-sidebar__user-info span {
        display: block;
        color: var(--dorsan-muted);
        font-size: .72rem;
        margin-top: 2px;
    }

/* ── Nav ─────────────────────────────────────────────────── */
.up-nav {
    display: flex;
    flex-direction: column;
    padding: 8px 0;
    flex: 1;
}

.up-nav__link {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 11px 18px;
    color: var(--dorsan-text);
    font-size: .88rem;
    text-decoration: none;
    border-right: 3px solid transparent;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

    .up-nav__link i {
        width: 18px;
        text-align: center;
        color: var(--dorsan-muted);
        transition: color .15s ease;
    }

    .up-nav__link:hover,
    .up-nav__link.is-active {
        background: var(--dorsan-primary-soft);
        color: var(--dorsan-primary-deep);
        border-right-color: var(--dorsan-primary);
        text-decoration: none;
    }

    .up-nav__link:hover i,
    .up-nav__link.is-active i {
        color: var(--dorsan-primary-deep);
    }

    .up-nav__link.is-active {
        font-weight: 700;
    }

/* ── Sidebar Footer ──────────────────────────────────────── */
.up-sidebar__footer {
    padding: 10px 8px;
    border-top: 1px solid var(--dorsan-border);
}

.up-logout-btn {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    padding: 10px 12px;
    color: var(--dorsan-danger);
    font-size: .84rem;
    background: none;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color .15s ease;
    text-align: right;
}

    .up-logout-btn:hover {
        background: rgba(var(--dorsan-danger-rgb, 198, 40, 40), .08);
    }

    .up-logout-btn i {
        width: 16px;
        text-align: center;
    }

/* ── Main Content ────────────────────────────────────────── */
.up-main {
    min-width: 0;
}

.up-page-header {
    margin-bottom: 20px;
}

    .up-page-header h1,
    .up-page-header h2 {
        margin: 0;
        color: var(--dorsan-heading);
        font-size: clamp(1.2rem, 2vw, 1.6rem);
    }

/* ── Card ────────────────────────────────────────────────── */
.up-card {
    padding: 24px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    box-shadow: var(--dorsan-shadow-sm);
}

.up-card--narrow {
    max-width: 480px;
}

.up-card__desc {
    margin-bottom: 20px;
    color: var(--dorsan-muted);
    font-size: .88rem;
    line-height: 1.9;
}

/* ── Alert ───────────────────────────────────────────────── */
.up-alert {
    display: flex;
    align-items: center;
    padding: 12px 16px;
    border-radius: var(--dorsan-radius);
    font-size: .88rem;
    margin-bottom: 16px;
}

.up-alert--success {
    color: #1a6635;
    background: #d8f3e3;
    border: 1px solid #a8ddb8;
}

/* ── Empty State ─────────────────────────────────────────── */
.up-empty {
    padding: 56px 16px;
    text-align: center;
    color: var(--dorsan-muted);
    background: var(--dorsan-surface);
    border: 1px dashed var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
}

.up-empty__sub {
    font-size: .82rem;
    margin-top: 6px;
}

/* ── Profile ─────────────────────────────────────────────── */
.up-profile-avatar {
    display: flex;
    align-items: center;
    gap: 16px;
    padding-bottom: 20px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--dorsan-border);
}

.up-profile-avatar__circle {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: var(--dorsan-primary-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-primary-deep);
    font-size: 1.5rem;
    flex: 0 0 60px;
    border: 2px solid rgba(var(--dorsan-primary-rgb), .3);
}

.up-profile-avatar__name {
    display: block;
    color: var(--dorsan-heading);
    font-size: 1rem;
    font-weight: 700;
}

.up-profile-avatar__sub {
    display: block;
    color: var(--dorsan-muted);
    font-size: .78rem;
    margin-top: 3px;
}

.up-info-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.up-info-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--dorsan-border);
}

    .up-info-row:last-child {
        border-bottom: none;
    }

.up-info-row__label {
    color: var(--dorsan-muted);
    font-size: .85rem;
    display: flex;
    align-items: center;
}

    .up-info-row__label i {
        color: var(--dorsan-primary-deep);
    }

.up-info-row__value {
    color: var(--dorsan-heading);
    font-size: .88rem;
    font-weight: 600;
}

/* ── Completed Courses ───────────────────────────────────── */
.up-course-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.up-course-item {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
    transition: border-color .15s ease;
}

    .up-course-item:hover {
        border-color: var(--dorsan-primary);
    }

.up-course-item__img {
    width: 72px;
    height: 72px;
    border-radius: 12px;
    object-fit: cover;
    flex: 0 0 72px;
}

.up-course-item__img--placeholder {
    background: var(--dorsan-primary-soft);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-muted);
    font-size: 1.4rem;
}

.up-course-item__body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.up-course-item__title {
    color: var(--dorsan-heading);
    font-size: .92rem;
    font-weight: 700;
}

.up-course-item__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    color: var(--dorsan-muted);
    font-size: .78rem;
}

.up-course-item__instructors {
    color: var(--dorsan-muted);
    font-size: .78rem;
}

.up-course-item__badge {
    color: #1a6635;
    font-size: .76rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

/* ── Sponsor Requests ────────────────────────────────────── */
.up-sponsor-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.up-sponsor-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px;
    background: var(--dorsan-surface);
    border: 1px solid var(--dorsan-border);
    border-radius: var(--dorsan-radius-lg);
}

.up-sponsor-item__info {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

    .up-sponsor-item__info strong {
        color: var(--dorsan-heading);
        font-size: .9rem;
        font-weight: 700;
    }

    .up-sponsor-item__info span {
        color: var(--dorsan-muted);
        font-size: .78rem;
    }

.up-sponsor-item__status {
    padding: 4px 12px;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
    white-space: nowrap;
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 767.98px) {
    .up-layout {
        grid-template-columns: 1fr;
    }

    .up-sidebar {
        position: static;
    }

    .up-nav {
        flex-direction: row;
        overflow-x: auto;
        padding: 0;
        scrollbar-width: none;
    }

        .up-nav::-webkit-scrollbar { display: none; }

    .up-nav__link {
        flex-direction: column;
        gap: 5px;
        padding: 12px 16px;
        font-size: .74rem;
        border-right: none;
        border-bottom: 3px solid transparent;
        white-space: nowrap;
    }

        .up-nav__link:hover,
        .up-nav__link.is-active {
            border-right-color: transparent;
            border-bottom-color: var(--dorsan-primary);
        }

    .up-sidebar__footer {
        display: none;
    }

    .up-card--narrow {
        max-width: 100%;
    }

    .up-course-item__img {
        display: none;
    }
}

@media (max-width: 479px) {
    .up-page { padding: 24px 0 56px; }

    .up-sponsor-item {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* ── جدول دوره‌ها و نشان وضعیت درخواست حامی ─────────────── */
.up-table-wrap {
    overflow-x: auto;
}

.up-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .82rem;
}

    .up-table th {
        padding: 10px 12px;
        color: var(--dorsan-muted);
        border-bottom: 1px solid var(--dorsan-border);
        font-size: .76rem;
        font-weight: 700;
        text-align: right;
        white-space: nowrap;
    }

    .up-table td {
        padding: 12px;
        color: var(--dorsan-text);
        border-bottom: 1px solid var(--dorsan-border);
        vertical-align: middle;
    }

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

    .up-table strong {
        color: var(--dorsan-heading);
        font-weight: 700;
    }

.up-table__sub {
    display: block;
    margin-top: 2px;
    color: var(--dorsan-muted);
    font-size: .74rem;
}

.up-status {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 700;
    white-space: nowrap;
}

.up-status--pending {
    color: var(--dorsan-warning);
    background: rgba(185, 135, 50, .12);
}

.up-status--approved {
    color: var(--dorsan-primary-dark);
    background: var(--dorsan-primary-soft);
}

.up-status--rejected {
    color: var(--dorsan-danger);
    background: rgba(220, 53, 69, .1);
}

/* ───── اصلاحات UI/UX (فاز ۱) ───── */

/* لینک «رفتن به محتوا» برای کیبورد و صفحه‌خوان */
.site-skip-link {
    position: absolute;
    top: -60px;
    right: 16px;
    z-index: 2000;
    padding: 10px 16px;
    color: #173f39;
    background: var(--dorsan-primary);
    border-radius: 0 0 10px 10px;
    font-size: .82rem;
    font-weight: 700;
    transition: top .2s ease;
}

    .site-skip-link:focus {
        top: 0;
    }

.site-main:focus {
    outline: none;
}

/* حلقه‌ی فوکوس واضح برای کار با کیبورد */
.site-nav-link:focus-visible,
.site-button:focus-visible,
.site-user:focus-visible,
.site-user-panel__link:focus-visible,
.site-menu-toggle:focus-visible,
.site-mobile-nav a:focus-visible {
    outline: 2px solid var(--dorsan-accent);
    outline-offset: 2px;
}

/* منوی کشویی کاربر */
.site-user-menu {
    position: relative;
}

button.site-user {
    font-family: inherit;
    cursor: pointer;
}

.site-user__name {
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.site-user__caret {
    font-size: .8rem;
    transition: transform .2s ease;
}

.site-user-menu.is-open .site-user__caret {
    transform: rotate(180deg);
}

.site-user-panel {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    z-index: 1200;
    min-width: 220px;
    padding: 8px;
    background: #fff;
    border: 1px solid var(--dorsan-border);
    border-radius: 14px;
    box-shadow: 0 18px 40px rgba(40, 100, 91, .16);
}

    .site-user-panel[hidden] {
        display: none;
    }

    .site-user-panel form {
        margin: 0;
    }

.site-user-panel__head {
    padding: 8px 12px 10px;
    margin-bottom: 4px;
    color: var(--dorsan-muted);
    border-bottom: 1px solid var(--dorsan-border);
    font-size: .76rem;
    font-weight: 600;
}

.site-user-panel__link {
    width: 100%;
    min-height: 42px;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 12px;
    color: var(--dorsan-text);
    background: transparent;
    border: 0;
    border-radius: 10px;
    font-family: inherit;
    font-size: .82rem;
    font-weight: 600;
    text-align: right;
    cursor: pointer;
    transition: color .18s ease, background-color .18s ease;
}

    .site-user-panel__link:hover {
        color: var(--dorsan-primary-deep);
        background: var(--dorsan-primary-soft);
    }

.site-user-panel__link--danger:hover {
    color: var(--dorsan-accent-deep);
    background: var(--dorsan-accent-soft);
}

/* فوتر: بدون شبکه‌های اجتماعی ۳ ستون */
.site-footer-main--no-social {
    grid-template-columns: 1.35fr .8fr .9fr;
}

/* فوتر: آیکن شبکه‌های اجتماعی در تبلت و موبایل هم دیده شود */
@media (max-width: 1199.98px) {
    .site-footer-social-column {
        display: block;
        grid-column: 1 / -1;
    }

    .site-footer-main--no-social {
        grid-template-columns: 1.3fr 1fr 1fr;
    }
}

@media (max-width: 991.98px) {
    .site-footer-main--no-social {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 575.98px) {
    .site-footer-main--no-social {
        grid-template-columns: 1fr;
    }
}

/* Home: وقتی بخش معرفی بین بخش‌ها قرار دارد، فاصله‌ی بالا و پایین یکسان باشد */
.home-intro {
    margin-block: 24px;
}

/* پایین فوتر: کپی‌رایت، «ساخته شده با ❤️»، شعار */
.site-footer-bottom__made {
    color: rgba(255, 255, 255, .62);
}

@media (max-width: 991.98px) {
    .site-footer-bottom {
        justify-content: center;
        text-align: center;
    }
}

/* ───── اصلاحات UI/UX (فاز ۲): کارگاه‌ها، دوره‌ها، درمانگران و مدرسان ───── */

/* تصویر کارت کارگاه تا لبه‌های کارت کشیده می‌شود (padding کارت ۲۲px است) */
.workshop-card__image {
    width: calc(100% + 44px);
    max-width: none;
    margin: -22px -22px 4px;
    aspect-ratio: 16 / 9;
    height: auto;
}

.workshop-card p {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.course-card-image--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--dorsan-primary-deep);
    font-size: 2rem;
}

.workshop-card-footer i {
    margin-inline-start: 0;
}

.workshop-card:focus-visible,
.course-card:focus-visible,
.person-card:focus-visible {
    outline: 2px solid var(--dorsan-accent);
    outline-offset: 3px;
}

/* دوره‌های پایان‌یافته‌ی یک کارگاه: جمع‌شونده */
.workshop-finished {
    margin-top: 28px;
}

    .workshop-finished > summary {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 18px;
        margin-bottom: 18px;
        color: var(--dorsan-heading);
        background: var(--dorsan-surface);
        border: 1px solid var(--dorsan-border);
        border-radius: var(--dorsan-radius-lg);
        font-size: .92rem;
        font-weight: 700;
        cursor: pointer;
        list-style: none;
    }

        .workshop-finished > summary::-webkit-details-marker {
            display: none;
        }

        .workshop-finished > summary:hover {
            border-color: var(--dorsan-primary);
        }

.workshop-finished__count {
    min-width: 26px;
    padding: 2px 8px;
    color: var(--dorsan-primary-deep);
    background: var(--dorsan-primary-soft);
    border-radius: 999px;
    font-size: .75rem;
    text-align: center;
}

.workshop-finished__caret {
    margin-inline-start: auto;
    transition: transform .2s ease;
}

.workshop-finished[open] .workshop-finished__caret {
    transform: rotate(180deg);
}

/* اطلاعات کلیدی دوره زیر عنوان */
.workshop-quick-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 10px;
    margin: 0 0 22px;
    padding: 0;
    list-style: none;
}

    .workshop-quick-meta li {
        display: inline-flex;
        align-items: center;
        gap: 7px;
        padding: 7px 13px;
        color: var(--dorsan-text);
        background: var(--dorsan-primary-soft);
        border: 1px solid rgba(var(--dorsan-primary-rgb), .3);
        border-radius: 999px;
        font-size: .8rem;
        font-weight: 600;
    }

    .workshop-quick-meta i {
        color: var(--dorsan-primary-deep);
    }

@media (max-width: 575.98px) {
    .workshop-quick-meta li {
        width: 100%;
        border-radius: 12px;
    }

    .workshop-finished > summary {
        padding: 12px 14px;
    }
}

/* ───── اصلاحات UI/UX (فاز ۳) ───── */
.contact-success-link {
    display: inline-flex;
    margin-top: 14px;
    color: var(--dorsan-primary-deep);
    font-size: .85rem;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 4px;
}

    .contact-success-link:hover {
        color: var(--dorsan-heading);
    }
