:root {
    --background: 0 0% 100%;
    --foreground: 142 35% 20%;
    --card: 0 0% 100%;
    --card-foreground: 142 35% 20%;
    --popover: 0 0% 100%;
    --popover-foreground: 142 35% 20%;
    --primary: 142 65% 35%;
    --primary-foreground: 0 0% 100%;
    --primary-light: 142 55% 45%;
    --primary-dark: 142 70% 25%;
    --secondary: 45 95% 58%;
    --secondary-foreground: 142 35% 20%;
    --secondary-light: 45 90% 68%;
    --muted: 142 25% 96%;
    --muted-foreground: 142 20% 40%;
    --accent: 195 75% 92%;
    --accent-foreground: 142 65% 35%;
    --destructive: 0 84.2% 60.2%;
    --destructive-foreground: 0 0% 100%;
    --border: 142 20% 88%;
    --input: 142 20% 88%;
    --ring: 142 65% 35%;
    --radius: .75rem;
    --gradient-hero: linear-gradient(135deg, hsl(142 65% 35%), hsl(142 55% 45%));
    --gradient-warm: linear-gradient(135deg, hsl(45 95% 58%), hsl(45 90% 68%));
    --gradient-subtle: linear-gradient(180deg, hsl(0 0% 100%), hsl(142 25% 98%));
    --shadow-soft: 0 2px 8px hsl(142 35% 20% / .08);
    --shadow-medium: 0 4px 16px hsl(142 35% 20% / .12);
    --shadow-large: 0 8px 32px hsl(142 35% 20% / .16);
    --transition-base: all .3s cubic-bezier(.4, 0, .2, 1);
    --transition-fast: all .15s cubic-bezier(.4, 0, .2, 1);
    --tw-gradient-from-position: ;
    --tw-gradient-via-position: ;
    --tw-gradient-to-position: ;
    --page-content-max: 62.5rem;
}

.max-w-4xl {
    max-width: var(--page-content-max) !important;
}

/* Keep public inner-page content aligned to the rounded 62.5rem width. */
.about-hero > .container,
.about-mission > .container,
.about-story > .container,
.about-audience > .container,
.about-process > .container,
.about-values > .container,
.about-team > .container,
.about-facility > .container,
.about-commitment__inner,
.booking-hero > .container,
.booking-info > .container,
.booking-info__grid,
.booking-form-section > .container,
.booking-map-section > .container,
.booking-map,
.service-detail__hero > .container,
.service-detail__overview > .container,
.service-detail__process > .container,
.service-detail__duration > .container,
.service-detail__faq > .container,
.service-detail__cta > .container,
.service-detail__hero-title,
.service-detail__hero-desc,
.service-detail__overview-text,
.service-detail__process-list,
.service-detail__duration-grid,
.service-detail__faq-list,
.page-hero--sm > .container,
.news-list-section > .container,
.article-section > .container,
.section_container > .container,
.happy-family-container,
.happy-family-container-inner,
.page-single__content {
    max-width: var(--page-content-max);
}

/* Hub listing pages stay on the full site container width. */
.content-hub__hero > .container,
.content-hub__section > .container,
.content-hub__cta > .container,
.content-hub--exercises .exercise-section > .container {
    max-width: var(--container);
}

.via-primary {
    --tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);
    --tw-gradient-stops: var(--tw-gradient-from), hsl(var(--primary)) var(--tw-gradient-via-position), var(--tw-gradient-to);
}

.bg-gradient-to-br {
    background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
}

/* ========================================
   PAGE SINGLE (Policy / Terms)
   ======================================== */
.page-single {
    padding-top: 76px;
    background: #fff;
}
.page-single__hero {
    background: var(--color-primary);
    color: #fff;
    padding: 64px 0;
}
.page-single__back {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: rgba(255,255,255,.82);
    margin-bottom: 24px;
    font-size: 1rem;
    font-weight: 600;
    transition: color var(--transition-fast);
}
.page-single__back:hover { color: #fff; }
.page-single__hero h1 {
    font-family: var(--font-playfair);
    font-size: 3rem;
    line-height: 1;
    font-weight: 800;
    color: #fff;
    margin: 0 0 16px;
}
.page-single__hero p {
    font-size: 1.125rem;
    color: rgba(255,255,255,.9);
    font-weight: 500;
    margin: 0;
}
.page-single__body {
    padding: 48px 0;
}
.page-single__content {
    margin: 0 auto;
}
.page-single__content > section {
    margin-bottom: 32px;
}
.page-single__content h2 {
    font-family: var(--font-playfair);
    font-size: 1.5rem;
    line-height: 1.35;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 16px;
}
.page-single__content h3 {
    font-family: var(--font-playfair);
    font-size: 1rem;
    line-height: 1.35;
    font-weight: 700;
    color: var(--color-text);
    margin: 0 0 12px;
}
.page-single__content p,
.page-single__content li {
    color: var(--color-text-light);
    font-size: 1rem;
    line-height: 1.5;
}
.page-single__content strong {
    color: var(--color-text);
    font-weight: 700;
}
.page-single__content a {
    color: var(--color-primary);
    font-weight: 700;
}
.page-single__content a:hover { text-decoration: underline; }
.page-card,
.page-contact-card {
    background: #fff;
    border: 1px solid rgba(31,147,74,.18);
    border-radius: 14px;
    padding: 32px;
}
.page-card--intro {
    padding: 32px;
}
.page-intro {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.page-intro p {
    margin: 0;
}
.page-icon {
    color: var(--color-primary);
    flex: 0 0 auto;
}
.page-intro > .page-icon {
    font-size: 2rem;
    margin-top: 4px;
}
.page-grid,
.page-hours-grid {
    display: grid;
    gap: 16px;
}
.page-grid--2,
.page-hours-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.page-grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.page-grid .page-card .page-icon,
.page-hours-card .page-icon {
    display: block;
    font-size: 1.5rem;
    margin-bottom: 12px;
}
.page-card p:last-child,
.page-muted p:last-child,
.page-alert p:last-child,
.page-contact-card p:last-child {
    margin-bottom: 0;
}
.page-card--small p,
.page-card--small li {
    font-size: .875rem;
}
.page-hours-card p {
    color: var(--color-primary);
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.2;
    margin: 0;
}
.page-muted {
    background: rgba(245,158,11,.08);
    border-radius: 14px;
    padding: 24px;
}
.page-muted--green {
    background: rgba(31,147,74,.05);
    border: 1px solid rgba(31,147,74,.16);
}
.page-block-list {
    display: grid;
    gap: 14px;
}
.page-term {
    border-left: 4px solid var(--color-primary);
    padding-left: 22px;
}
.page-term h3 {
    font-family: var(--font-body);
    font-size: 1.1rem;
    margin-bottom: 8px;
}
.page-bullets {
    display: grid;
    gap: 12px;
    padding: 0;
    margin: 0;
    list-style: none;
}
.page-bullets li {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.page-bullets li::before {
    content: '';
    width: 9px;
    height: 9px;
    border-radius: 999px;
    background: var(--color-primary);
    margin-top: .65em;
    flex: 0 0 auto;
}
.page-bullets--small {
    gap: 8px;
}
.page-bullets--small li {
    font-size: 1rem;
    gap: 12px;
}
.page-bullets--small li::before {
    width: 7px;
    height: 7px;
}
.page-icon-list {
    display: grid;
    gap: 12px;
    padding: 0;
    margin: 0;
    list-style: none;
}
.page-icon-list li {
    display: flex;
    align-items: flex-start;
    gap: 16px;
}
.page-icon-list .page-icon {
    font-size: 1.1rem;
    margin-top: .35em;
}
.page-separator {
    border-top: 1px solid rgba(31,147,74,.18);
    padding-top: 18px;
    margin-top: 18px;
}
.page-alert,
.page-info,
.page-warning {
    border-radius: 14px;
    padding: 16px 20px;
    margin-top: 16px;
}
.page-info {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
}
.page-info p {
    color: #1e40af;
    font-size: .875rem;
}
.page-alert {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
}
.page-alert p {
    color: #166534;
    font-size: .875rem;
}
.page-warning {
    background: #fffbea;
    border: 1px solid #facc15;
}
.page-warning p,
.page-warning li {
    color: #92400e;
}
.page-warning .page-icon {
    color: #ca8a04;
}
.page-warning__head {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 14px;
}
.page-warning__head .page-icon {
    font-size: 1.4rem;
    margin-top: 2px;
}
.page-warning h3 {
    font-family: var(--font-body);
    color: #7c2d12;
    font-size: 1.1rem;
    margin-bottom: 8px;
}
.page-law-box {
    display: flex;
    align-items: flex-start;
    gap: 18px;
}
.page-law-box .page-icon {
    font-size: 1.5rem;
    margin-top: 6px;
}
.page-contact-card {
    background: rgba(31,147,74,.05);
    border-color: rgba(31,147,74,.2);
    padding: 32px;
}
.page-contact-card h2 {
    margin-bottom: 18px;
}
.page-contact-card__simple {
    display: grid;
    gap: 12px;
}
.page-contact-card__simple p {
    margin: 0;
}
.page-contact-card__simple strong {
    color: var(--color-text-light);
    font-weight: 700;
}
.page-contact-card__simple a {
    font-weight: 500;
}
.page-contact-card__intro {
    margin-bottom: 24px;
}
.page-contact-list {
    display: grid;
    gap: 14px;
}
.page-contact-item {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.page-contact-item .page-icon {
    font-size: 1.2rem;
    margin-top: 7px;
}
.page-contact-item span {
    display: block;
    color: var(--color-text-light);
    font-size: .95rem;
    margin-bottom: 2px;
}
.page-contact-item p {
    color: var(--color-text);
    margin: 0;
}
.page-contact-item__primary {
    display: inline-block;
    font-size: 1.125rem;
}
.page-effective-note {
    background: rgba(245,158,11,.08);
    border-radius: 14px;
    padding: 24px;
    text-align: center;
}
.page-effective-note p {
    font-size: .875rem;
}

@media (max-width: 900px) {
    .page-single__hero {
        padding: 56px 0;
    }
    .page-single__hero h1 {
        font-size: 2.5rem;
    }
    .page-grid--2,
    .page-grid--3,
    .page-hours-grid {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 640px) {
    .page-single {
        padding-top: 70px;
    }
    .page-single__hero {
        padding: 44px 0;
    }
    .page-single__back {
        font-size: 1rem;
        margin-bottom: 20px;
    }
    .page-single__hero h1 {
        font-size: 2.25rem;
    }
    .page-single__hero p,
    .page-single__content p,
    .page-single__content li {
        font-size: 1rem;
    }
    .page-single__body {
        padding: 40px 0;
    }
    .page-single__content > section {
        margin-bottom: 30px;
    }
    .page-card,
    .page-card--intro,
    .page-contact-card,
    .page-muted {
        padding: 24px;
    }
    .page-intro {
        gap: 18px;
    }
    .page-single__content h2 {
        font-size: 1.5rem;
    }
}

/* ========================================
   BOOKING FORM VALIDATION
   ======================================== */
.booking-form__input-wrap {
    position: relative;
}

.booking-form__error-icon,
.booking-form__success-icon {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    display: none;
    pointer-events: none;
}
.booking-form__textarea ~ .booking-form__error-icon,
.booking-form__textarea ~ .booking-form__success-icon {
    top: 16px;
    transform: none;
}

.booking-form__error-icon { color: #dc2626; }
.booking-form__success-icon { color: #16a34a; }

.booking-form__error-msg {
    display: none;
    font-size: .8125rem;
    line-height: 1.4;
    color: #dc2626;
    padding-left: 2px;
    animation: fieldErrorSlide .3s ease;
}

/* Field states applied by JS */
.booking-form__group.has-error .booking-form__control {
    border-color: #fca5a5;
    box-shadow: 0 0 0 3px rgba(220, 38, 38, .1);
}
.booking-form__group.has-error .booking-form__error-icon { display: flex; }
.booking-form__group.has-error .booking-form__error-msg { display: block; }

.booking-form__group.has-success .booking-form__control {
    border-color: #86efac;
    box-shadow: 0 0 0 3px rgba(22, 163, 74, .08);
}
.booking-form__group.has-success .booking-form__success-icon { display: flex; }

@keyframes fieldErrorSlide {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes fieldShake {
    0%, 100% { transform: translateX(0); }
    20%      { transform: translateX(-6px); }
    40%      { transform: translateX(6px); }
    60%      { transform: translateX(-4px); }
    80%      { transform: translateX(4px); }
}
.booking-form__group.shake .booking-form__control {
    animation: fieldShake .45s ease;
}

/* Toast notification */
.booking-toast {
    position: fixed;
    top: 24px;
    right: 24px;
    z-index: 10000;
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 300px;
    max-width: 420px;
    padding: 16px 20px;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);
    transform: translateX(calc(100% + 32px));
    transition: transform .45s cubic-bezier(.34, 1.56, .64, 1);
    pointer-events: none;
}
.booking-toast.is-visible {
    transform: translateX(0);
    pointer-events: auto;
}

.booking-toast__icon {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.booking-toast--success .booking-toast__icon {
    background: #dcfce7;
    color: #16a34a;
}
.booking-toast--error .booking-toast__icon {
    background: #fee2e2;
    color: #dc2626;
}

.booking-toast__body {
    flex: 1;
    min-width: 0;
}
.booking-toast__title {
    font-weight: 700;
    font-size: .875rem;
    line-height: 1.3;
    margin: 0 0 2px;
}
.booking-toast--success .booking-toast__title { color: #166534; }
.booking-toast--error .booking-toast__title { color: #991b1b; }

.booking-toast__msg {
    font-size: .8125rem;
    line-height: 1.45;
    margin: 0;
}
.booking-toast--success .booking-toast__msg { color: #15803d; }
.booking-toast--error .booking-toast__msg { color: #b91c1c; }

.booking-toast__close {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    color: #9ca3af;
    font-size: 1.15rem;
    cursor: pointer;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .15s, color .15s;
}
.booking-toast__close:hover {
    background: #f3f4f6;
    color: #374151;
}

.booking-toast__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 3px;
    border-radius: 0 0 14px 14px;
    animation: toastProgress 4.5s linear forwards;
}
.booking-toast--success .booking-toast__progress { background: #16a34a; }
.booking-toast--error .booking-toast__progress { background: #dc2626; }

@keyframes toastProgress {
    from { width: 100%; }
    to   { width: 0; }
}

@media (max-width: 480px) {
    .booking-toast {
        top: 12px;
        right: 12px;
        left: 12px;
        min-width: auto;
        max-width: none;
    }
}

/* Dots loader */
.booking-dots-loader {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-right: 8px;
    vertical-align: middle;
}
.booking-dots-loader span {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .9);
    animation: dotBounce 1.2s ease-in-out infinite;
}
.booking-dots-loader span:nth-child(2) { animation-delay: .15s; }
.booking-dots-loader span:nth-child(3) { animation-delay: .3s; }
@keyframes dotBounce {
    0%, 80%, 100% { transform: scale(.6); opacity: .5; }
    40% { transform: scale(1); opacity: 1; }
}

.booking-form__submit.is-loading {
    pointer-events: none;
    opacity: .85;
    background: var(--color-primary-dark);
}
