/* Color Palette */
:root {
    --primary-color: #802178;
    --secondary-color: #ff88c0;
    --text-color: #333;
    --background-color: #fff;
    --nav-background-color: var(--primary-color);
    --nav-text-color: #fff;
    --nav-hover-color: var(--secondary-color);
    /* Button glow variables */
    --btn-glow: rgba(128, 33, 120, 0.09);
    --btn-glow-strong: rgba(128, 33, 120, 0.14);
}

body {
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    color: var(--text-color);
    /* fall back to a plain background color for very old browsers */
    background-color: var(--background-color);
    /* top -> bottom purple to white gradient for page background */
    background: linear-gradient(
        180deg,
        rgba(128, 33, 120, 0.18) 50%,
        rgba(128, 33, 120, 0.1) 60%,
        rgba(255, 255, 255, 0.98) 72%,
        #ffffff 100%
    );
    margin: 0;
    padding: 0;
    /* Make page a column so footer can be pushed to bottom */
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* Make box-sizing consistent across the app to avoid inputs/padding making elements overflow */
*,
*::before,
*::after {
    box-sizing: border-box;
}

nav {
    background-color: var(--nav-background-color);
    padding: 1em 2em;
}

/* New topbar style to match provided design */
.topbar {
    background: transparent;
    padding: 1rem 1rem;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
}

.topbar-inner {
    background: #fff;
    border-radius: 40px;
    padding: 0.5rem 1rem;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    box-shadow: 0 6px 18px rgba(16, 24, 40, 0.08);
}

.brand-link {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    text-decoration: none;
}
.brand-link img.brand-image {
    width: 40px;
    height: 40px;
    object-fit: contain;
    margin-left: 0.5rem;
    display: inline-block;
}
.logo {
    color: var(--primary-color);
    font-weight: 800;
    letter-spacing: 1px;
    margin-left: 0.1rem;
}

.nav-links {
    display: flex;
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
    flex: 1;
    justify-content: center;
}

/* Desktop nav link style + animated underline (grow from center) */
.nav-links li a {
    color: #222;
    text-decoration: none;
    font-weight: 600;
    padding: 0.6rem 0.4rem;
    display: inline-block;
    line-height: 1;
    transition: color 0.18s ease;
    position: relative;
}
.nav-links li a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -8px;
    height: 4px;
    background: #5a0f3d;
    transform: scaleX(0);
    transform-origin: center center;
    transition: transform 260ms cubic-bezier(0.2, 0.9, 0.2, 1);
    border-radius: 3px;
}
.nav-links li a:hover {
    color: #5a0f3d;
}
.nav-links li a:hover::after,
.nav-links li.active a::after {
    transform: scaleX(1);
}
.nav-links li.active a {
    color: #5a0f3d;
}

.nav-actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

/* Contact card used on the Contact page - two-column layout */
.contact-card {
    width: 100%;
}
.contact-card-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
    align-items: start;
}
.contact-card-left,
.contact-card-right {
    padding: 0.25rem;
}
.contact-card-left h3 {
    margin-top: 0;
}
.contact-card .map-frame.small-map {
    height: 280px;
    border-radius: 8px;
    overflow: hidden;
}
.contact-card .map-frame.small-map iframe {
    height: 100%;
    width: 100%;
    display: block;
}

.contact-details p {
    margin: 0.5rem 0;
}
.contact-details a {
    color: var(--primary-color);
    text-decoration: underline;
}

@media (max-width: 900px) {
    .contact-card-inner {
        grid-template-columns: 1fr;
        padding: 0.75rem;
    }
    .contact-card .map-frame.small-map {
        height: 220px;
    }
}

/* Contact info in navbar */
.contact-info {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    margin-left: 0.5rem;
    text-align: right;
}
.contact-info a {
    color: #222;
    text-decoration: none;
    font-size: 0.85rem;
}
.contact-info a:hover {
    color: var(--primary-color);
}

@media (max-width: 900px) {
    .contact-info {
        display: none;
    }
}

.icon-group {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    color: #6b6b72;
    text-decoration: none;
    position: relative;
}
.icon-btn svg {
    display: block;
}
.icon-btn:hover {
    background: rgba(128, 33, 120, 0.06);
    color: var(--primary-color);
}
/* badge removed (cart/wishlist removed) */

/* User menu dropdown */
.user-wrapper {
    position: relative;
}
.user-menu {
    position: absolute;
    right: 0;
    top: calc(100% + 8px);
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(16, 24, 40, 0.12);
    padding: 0.5rem 0;
    min-width: 180px;
    z-index: 60;
}
.user-menu[hidden] {
    display: none;
}
.user-menu-item {
    display: block;
    padding: 0.6rem 1rem;
    color: #222;
    text-decoration: none;
    font-weight: 600;
}
.user-menu-item:hover {
    background: #f6f6f8;
    color: var(--primary-color);
}
.user-menu-logout {
    background: transparent;
    border: none;
    width: 100%;
    text-align: left;
    padding: 0;
    font: inherit;
    cursor: pointer;
}

/* Responsive adjustments */
@media (max-width: 900px) {
    .nav-links {
        display: none;
    }
    .menu-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: transparent;
        border: none;
        color: #6b6b72;
        cursor: pointer;
        width: 44px;
        height: 44px;
        border-radius: 8px;
    }
    .mobile-menu {
        display: block;
        position: absolute;
        left: 0;
        right: 0;
        top: calc(100% + 8px);
        margin: 0 auto;
        background: #fff;
        border-radius: 12px;
        box-shadow: 0 10px 30px rgba(16, 24, 40, 0.08);
        padding: 0.5rem 1rem;
        z-index: 50;
        max-width: 95%;
        /* start hidden state for animation */
        opacity: 0;
        transform: translateY(-6px);
        transition: opacity 220ms ease, transform 220ms ease;
    }
    .mobile-menu[hidden] {
        display: none;
    }
    .mobile-menu:not([hidden]) {
        opacity: 1;
        transform: translateY(0);
    }
    .mobile-menu ul {
        list-style: none;
        margin: 0;
        padding: 0.5rem 0;
        display: flex;
        flex-direction: column;
        gap: 0.35rem;
    }
    .mobile-menu ul li a {
        padding: 0.6rem 0.5rem;
        display: block;
        color: #222;
        text-decoration: none;
        font-weight: 600;
        opacity: 0;
        transform: translateY(6px);
    }

    /* staggered fade-up animation for mobile links when menu opens */
    @keyframes mobileSlideUp {
        from {
            opacity: 0;
            transform: translateY(6px);
        }
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }
    .mobile-menu:not([hidden]) ul li:nth-child(1) a {
        animation: mobileSlideUp 300ms ease 40ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(2) a {
        animation: mobileSlideUp 300ms ease 80ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(3) a {
        animation: mobileSlideUp 300ms ease 120ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(4) a {
        animation: mobileSlideUp 300ms ease 160ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(5) a {
        animation: mobileSlideUp 300ms ease 200ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(6) a {
        animation: mobileSlideUp 300ms ease 240ms forwards;
    }
    .mobile-menu:not([hidden]) ul li:nth-child(7) a {
        animation: mobileSlideUp 300ms ease 280ms forwards;
    }
    .topbar-inner {
        position: relative;
    }
}

/* small screens: hide menu-toggle on wide screens */
.menu-toggle {
    display: none;
}

nav ul {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    align-items: center;
}

nav ul li {
    margin-right: 2em;
}

nav ul li:last-child {
    margin-right: 0;
}

nav ul li a {
    color: var(--nav-text-color);
    text-decoration: none;
    font-weight: 600;
    font-size: 1rem;
    transition: color 0.3s ease;
}

nav ul li a:hover,
nav ul li a:focus {
    color: var(--nav-hover-color);
}

.logo {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--nav-text-color);
    margin-right: 3em;
    text-transform: uppercase;
    letter-spacing: 2px;
    user-select: none;
}

.contact-info {
    display: none;
}
.map-frame {
    width: 100%;
    height: 420px;
    overflow: hidden;
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
}
.map-frame iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

/* Contact details on contact page */
.contact-details p {
    margin: 0.35rem 0;
}

@media (max-width: 900px) {
    .map-frame {
        height: 260px;
    }
}
.map-actions {
    margin-top: 0.5rem;
}
.map-actions a {
    color: var(--primary-color);
    text-decoration: none;
}
.map-actions a:hover {
    text-decoration: underline;
}

/* General responsive images */
img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Hero utilities */
.hero-banner {
    padding: 2rem 0;
    background: linear-gradient(180deg, #f3e5f5 0%, #ffffff 100%);
    border-radius: 8px;
    margin-bottom: 2rem;
}
.hero-banner p:first-child {
    color: #a85ab8;
    font-size: clamp(0.65rem, 1vw, 0.875rem);
    font-weight: 600;
    letter-spacing: 0.3em;
    margin-bottom: 1.5rem;
    text-transform: uppercase;
}
.hero-banner h1 {
    color: #7a1b79;
    font-size: clamp(2.5rem, 8vw, 3.5rem);
    font-weight: 900;
    line-height: 1.2;
    margin: 0 0 1rem 0;
    filter: drop-shadow(0 2px 4px rgba(122, 27, 121, 0.15));
}
.hero-banner h1 span {
    color: #a85ab8;
    font-size: clamp(2rem, 6vw, 2.8rem);
    display: block;
}
.hero-banner > p:last-child {
    color: #6d3e7b;
    font-size: clamp(0.875rem, 1.2vw, 1.125rem);
    max-width: 36rem;
    margin: 2rem auto;
    line-height: 1.6;
}

/* Orders controls: remove inline styles usage and use class */
.orders-controls {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

/* Muted text utility */
.muted {
    color: #666;
}
/* Inline smaller muted text utility */
.muted-small {
    color: #666;
    font-size: 0.95rem;
}

/* Label inline utility */
.inline-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
}

/* Inline form helper */
.inline-form {
    display: inline;
}

/* Orders mobile card helpers */
.order-card .card-row {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.order-card .meta {
    flex: 1;
}
.order-card .card-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}
.order-card .card-actions {
    display: flex;
    gap: 0.5rem;
    justify-content: flex-end;
    margin-top: 0.6rem;
}

/* Card title and status helpers */
.card-title {
    font-weight: 700;
}
.card-status {
    font-size: 0.9rem;
    color: #777;
}
.card-name {
    color: #555;
    margin-top: 0.35rem;
}
.card-datetime {
    color: #999;
    margin-top: 0.2rem;
    font-size: 0.9rem;
}

/* Make sure ordering table header has consistent style without inline styles */
.orders-table thead th {
    text-align: left;
    border-bottom: 1px solid #eee;
}

/* Ensure main content grows so footer stays at page bottom when content is short */
/* Page container: restore to original container class to keep the layout consistent */
.container {
    flex: 1 0 auto;
    max-width: 1200px;
    margin: 0 auto;
    padding-left: 1rem;
    padding-right: 1rem;
}

main.container {
    flex: 1 0 auto;
    padding-top: 120px; /* Account for fixed navbar */
}

/* Utility classes */

.text-center {
    text-align: center;
}

/* Footer styles */
.site-footer {
    background: #f6f7f8;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    color: #222;
    padding: 2rem 0 1rem;
    position: relative;
    overflow: hidden;
}
.site-footer::before {
    /* decorative faint paw prints using multiple radial gradients */
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(
            circle at 8% 20%,
            rgba(0, 0, 0, 0.03) 0 8px,
            transparent 9px
        ),
        radial-gradient(
            circle at 28% 35%,
            rgba(0, 0, 0, 0.02) 0 10px,
            transparent 11px
        ),
        radial-gradient(
            circle at 55% 12%,
            rgba(0, 0, 0, 0.02) 0 7px,
            transparent 8px
        ),
        radial-gradient(
            circle at 78% 40%,
            rgba(0, 0, 0, 0.015) 0 9px,
            transparent 10px
        ),
        radial-gradient(
            circle at 60% 70%,
            rgba(0, 0, 0, 0.02) 0 8px,
            transparent 9px
        );
    background-repeat: no-repeat;
    opacity: 0.12;
    pointer-events: none;
}
.site-footer .footer-inner {
    position: relative;
    z-index: 2;
    display: flex;
    gap: 2rem;
    align-items: flex-start;
    justify-content: space-between;
    padding: 0.5rem 0 1.25rem;
}
.site-footer .footer-left {
    flex: 1 1 60%;
}
.footer-brand {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.footer-logo {
    width: 44px;
    height: 44px;
    object-fit: contain;
}
.footer-title {
    font-weight: 800;
    color: #111;
    margin-left: 0.25rem;
}
.footer-desc {
    color: #333;
    max-width: 520px;
    line-height: 1.5;
    margin: 0.6rem 0 1rem;
}
.social-icons {
    display: flex;
    gap: 0.6rem;
}
.social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 6px 18px rgba(16, 24, 40, 0.06);
    color: #222;
    text-decoration: none;
}

.site-footer .footer-right {
    width: 280px;
    text-align: right;
}
.footer-heading {
    margin: 0 0 0.6rem 0;
    font-size: 1rem;
    font-weight: 700;
}
.footer-address {
    font-style: normal;
    color: #222;
    line-height: 1.4;
}

.footer-bottom {
    position: relative;
    z-index: 2;
    border-top: 1px solid rgba(0, 0, 0, 0.04);
    padding-top: 0.75rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.9rem;
    color: #8b8b8b;
}
.footer-bottom a {
    color: #8b8b8b;
    text-decoration: none;
}
.footer-bottom a:hover {
    color: var(--primary-color);
}

@media (max-width: 900px) {
    .site-footer .footer-inner {
        margin: 2rem 0;
        flex-direction: column;
        gap: 1rem;
    }
    .site-footer .footer-right {
        width: 100%;
        text-align: left;
    }
    .footer-bottom {
        flex-direction: column;
        gap: 0.5rem;
        align-items: flex-start;
    }
}

/* Optional white card utility: add to a page wrapper when you want content on a card */
.page-card {
    background: rgba(255, 255, 255, 0.98);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    box-shadow: 0 10px 30px rgba(16, 24, 40, 0.06);
    margin-top: 4rem; /* Add extra space between navbar and page content */
    margin-bottom: 2rem; /* Add space below the card to prevent touching the footer */
}
.page-card {
    overflow-x: hidden;
}

@media (max-width: 900px) {
    .page-card {
        padding: 1rem;
        border-radius: 10px;
    }
}

/* Framed purple panel behind specific page cards (e.g. hero) */
/* .page-frame removed to revert to previous non-gradient layout */

/* Improved focus outlines for keyboard users */
a:focus,
.icon-btn:focus,
.menu-toggle:focus,
.user-toggle:focus,
.nav-links li a:focus {
    outline: 3px solid rgba(128, 33, 120, 0.12);
    outline-offset: 3px;
    border-radius: 6px;
}

.mt-2 {
    margin-top: 0.5rem;
}

.mt-4 {
    margin-top: 1rem;
}

.btn-primary {
    background-color: var(--primary-color);
    color: #fff;
    padding: 0.75em 1.5em;
    border: none;
    border-radius: 4px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.3s ease;
    text-decoration: none;
    display: inline-block;
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--secondary-color);
    outline: none;
}

/* About page layout */
.about-content {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    margin-top: 1rem;
}

.about-image {
    width: 200px;
    height: 200px;
    object-fit: contain;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.about-text {
    flex: 1;
}

.about-text p {
    margin-bottom: 1rem;
    line-height: 1.6;
}

@media (max-width: 900px) {
    .about-content {
        flex-direction: column;
        align-items: center;
        gap: 1rem;
    }

    .about-image {
        width: 150px;
        height: 150px;
    }
}

/* Section header */
.services-hero {
    text-align: center;
    padding: 1.6rem 2rem 2rem;
    display: none; /* Hide old services-hero; content moved to hero-banner */
}

/* Reservation button that follows the width of the page-card and is centered */
.page-card .btn-primary.btn-reserv {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box; /* respects padding if any */
    text-align: center;
    margin: 1rem 0;
}

@media (min-width: 901px) {
    /* Keep a sensible max width so the button doesn't become huge on very wide pages. */
    .page-card .btn-primary.btn-reserv {
        max-width: 960px; /* matches the page container max width */
        margin-left: auto;
        margin-right: auto;
    }

    /* Subtle shadow + hover/press animation for the reservation button */
    .page-card .btn-primary.btn-reserv {
        box-shadow: 0 6px 14px rgba(128, 33, 120, 0.08);
        transition: transform 220ms cubic-bezier(0.2, 0.9, 0.2, 1),
            box-shadow 220ms ease;
    }
    .page-card .btn-primary.btn-reserv:hover,
    .page-card .btn-primary.btn-reserv:focus {
        transform: translateY(-3px);
        /* deeper shadow + subtle purple glow */
        box-shadow: 0 10px 30px var(--btn-glow-strong), 0 0 20px var(--btn-glow);
    }
    .page-card .btn-primary.btn-reserv:active {
        transform: translateY(-1px);
        box-shadow: 0 8px 22px rgba(128, 33, 120, 0.12);
    }

    /* Respect user's reduced-motion preference */
    @media (prefers-reduced-motion: reduce) {
        .page-card .btn-primary.btn-reserv,
        .page-card .btn-primary.btn-reserv:hover,
        .page-card .btn-primary.btn-reserv:focus,
        .page-card .btn-primary.btn-reserv:active {
            transform: none;
            transition: none;
            /* limit glow for reduced-motion users */
            box-shadow: 0 6px 14px rgba(128, 33, 120, 0.06);
        }
    }
}

.services-title {
    font-size: 2.4rem;
    font-weight: 700;
    color: #000;
}

.section-title {
    font-size: 2rem;
    font-weight: 700;
    color: var(--primary-color);
}
.section-sub {
    color: #666;
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
}
.testimonial-cta {
    margin-top: 1.2rem;
    font-size: 1.15rem;
    color: #111;
    font-weight: 700;
}
.testimonial-cta-button {
    margin-top: 1rem;
}

.review-provider {
    margin-top: 1.25rem;
}
.provider-google {
    display: inline-block;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #03a9f4;
    color: #fff;
    line-height: 44px;
    text-align: center;
    text-decoration: none;
    font-weight: 700;
}

.services-subtitle {
    font-size: 1.05rem;
    max-width: 700px;
    margin: 0.6rem auto;
    color: #333;
}

.services-desc {
    max-width: 850px;
    margin: 0.7rem auto;
    font-size: 1rem;
    color: #555;
    line-height: 1.6;
}

/* Grid layout - Services Section (Homepage) */
.services-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 2rem;
    padding: 2rem 1rem;
    max-width: 1400px;
    margin: 0 auto;
}

.service-card {
    display: block;
    text-decoration: none;
    color: inherit;
    background: #fff;
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.service-card:hover {
    box-shadow: 0 12px 24px rgba(128, 33, 120, 0.15);
    transform: translateY(-4px);
}

.service-card-image {
    position: relative;
    height: 280px;
    overflow: hidden;
    border-radius: 12px 12px 0 0;
}

.service-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.service-card:hover .service-card-image img {
    transform: scale(1.05);
}

.service-card-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(
        to bottom,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0.3) 100%
    );
    border-radius: 12px 12px 0 0;
}

.service-card-label {
    position: absolute;
    bottom: 20px;
    left: 20px;
    right: 20px;
    color: #fff;
    z-index: 2;
}

.service-card-label h3 {
    font-size: 1.4rem;
    font-weight: 700;
    margin: 0 0 0.5rem 0;
    color: #fff;
    line-height: 1.3;
}

.service-card-label p {
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.9);
    margin: 0;
    line-height: 1.5;
}

.service-card-footer {
    padding: 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-top: 1px solid #f0f0f0;
}

.service-card-action {
    font-weight: 600;
    color: #802178;
    font-size: 0.95rem;
}

.service-card-price {
    color: #666;
    font-size: 0.9rem;
    font-weight: 500;
}

/* Reservation service selection (compact service-card variant) */
.service-select-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
    margin-top: 1.5rem;
}
.service-select {
    background: #fff;
    border-radius: 12px;
    padding: 1.25rem;
    text-align: center;
    box-shadow: 0px 6px 16px rgba(16, 24, 40, 0.06);
    cursor: pointer;
    font-weight: 700;
    border: 2px solid transparent;
    transition: transform 180ms ease, border-color 180ms ease,
        box-shadow 180ms ease;
}
.service-select:hover,
.service-select:focus {
    transform: translateY(-3px);
}
.service-select[aria-pressed="true"] {
    border-color: var(--primary-color);
    box-shadow: 0 10px 30px rgba(128, 33, 120, 0.06);
}
.service-select[aria-disabled="true"] {
    opacity: 0.7;
    background: #fafafa;
    border-color: #eee;
}

.reservation-details {
    margin-top: 1.5rem;
    background: #fff;
    border-radius: 12px;
    padding: 1rem;
    box-shadow: 0 8px 20px rgba(16, 24, 40, 0.06);
}
.reservation-details .form-row {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    margin-bottom: 0.8rem;
}
.reservation-details label {
    font-weight: 600;
    color: #333;
}
.reservation-details input,
.reservation-details textarea {
    padding: 0.6rem;
    border-radius: 6px;
    border: 1px solid #ddd;
}

/* Location / Home Visit handling */
/* location row rules removed (feature reverted) */
.form-actions {
    display: flex;
    gap: 0.6rem;
    align-items: center;
}
.btn-secondary {
    background: #f6f6f8;
    border: 1px solid #eaeaea;
    padding: 0.6rem 0.9rem;
    border-radius: 6px;
}

@media (max-width: 1200px) {
    .services-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1.5rem;
    }
}

@media (max-width: 1000px) {
    .services-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .service-select-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    .services-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
        padding: 1.5rem 1rem;
    }
    .service-select-grid {
        grid-template-columns: 1fr;
    }
    .service-card-footer {
        flex-direction: column;
        gap: 0.5rem;
        align-items: flex-start;
    }
}

/* Testimonials */
.testimonials-section {
    padding: 2.5rem 1rem;
}
.testimonials-carousel {
    overflow: hidden;
}
.testimonials-carousel .testimonials-track {
    display: flex;
    gap: 1rem;
    margin-top: 1rem;
    align-items: stretch;
    transition: transform 520ms ease;
}
.testimonials-carousel .testimonial-card {
    flex: 0 0 calc((100% / 3) - 0.66rem);
}
.testimonial-card {
    background: #fff;
    border-radius: 8px;
    padding: 1rem;
    text-align: left;
    box-shadow: 0 6px 18px rgba(16, 24, 40, 0.06);
}
.testimonial-header {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 0.6rem;
}
.avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    overflow: hidden;
    background: #eee;
    flex: 0 0 42px;
}
.avatar-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.testimonial-card .name {
    font-weight: 700;
    color: #333;
}
.testimonial-card .time {
    font-size: 0.85rem;
    color: #888;
}
.testimonial-card .stars {
    color: #f5a623;
    margin-bottom: 0.6rem;
}
.testimonial-text {
    color: #555;
    font-size: 0.95rem;
}

/* Read-more / collapse toggle styles for testimonial texts */
.testimonial-text .short,
.testimonial-text .full {
    display: inline;
}
.testimonial-text .full[hidden] {
    display: none;
}
.testimonial-card .avatar {
    background: #ddd;
    border-radius: 50%;
    width: 42px;
    height: 42px;
    display: inline-block;
    vertical-align: middle;
}
.testimonial-card .avatar-img {
    width: 42px;
    height: 42px;
    object-fit: cover;
    border-radius: 50%;
}
.testimonial-text a.read-more {
    margin-left: 6px;
    color: var(--primary-color, #0b7bcc);
    text-decoration: underline;
    cursor: pointer;
}

@media (max-width: 1000px) {
    .testimonials-carousel .testimonial-card {
        flex: 0 0 calc((100% / 2) - 0.5rem);
    }
}
@media (max-width: 900px) {
    .testimonials-carousel .testimonial-card {
        flex: 0 0 100%;
    }
}

/* Highlight card (warna pastel) */
.highlight-card {
    background: #ff88c0;
    color: #fff;
}

.highlight-card h3 {
    color: #fff !important;
}

.highlight-card p {
    color: #fefefe;
}

/* Responsive */
@media (max-width: 1000px) {
    .services-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    /* add a focused keyboard-visible ring for the reservation button */
    .page-card .btn-primary.btn-reserv:focus-visible {
        outline: 3px solid rgba(128, 33, 120, 0.18);
        outline-offset: 3px;
        border-radius: 6px;
    }
    .services-grid {
        grid-template-columns: 1fr;
        padding: 1rem;
    }
}

/* Mobile: make the lift small and the glow subtle */
@media (max-width: 900px) {
    .page-card .btn-primary.btn-reserv:hover,
    .page-card .btn-primary.btn-reserv:focus {
        transform: translateY(-1.2px);
        box-shadow: 0 6px 16px rgba(128, 33, 120, 0.09),
            0 0 10px rgba(128, 33, 120, 0.06);
    }
}

/* Auth card helpers (used by login/register) */
.auth-card {
    max-width: 560px;
    margin: 2rem auto;
    width: calc(100% - 3rem);
    box-sizing: border-box;
    padding: 1.25rem;
}
.auth-card h1 {
    margin-top: 0;
}
.auth-muted {
    color: #666;
    margin-top: 0.25rem;
    margin-bottom: 0.75rem;
}
.auth-card .form-row {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 0.75rem;
}
.auth-card .form-row,
.auth-form .form-row {
    min-width: 0;
}
.auth-card .form-actions {
    min-width: 0;
}
.auth-form .form-row label {
    font-weight: 600;
    font-size: 0.95rem;
    color: #333;
}

/* Nice rounded input boxes for auth forms */
.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"],
.auth-form input[type="tel"],
.auth-form textarea {
    width: 100%;
    padding: 0.85rem 1rem;
    border-radius: 12px;
    border: 1px solid #e9e9ee;
    background: #fff;
    box-shadow: inset 0 1px 0 rgba(16, 24, 40, 0.02);
    font-size: 0.98rem;
    transition: border-color 160ms ease, box-shadow 160ms ease,
        transform 160ms ease;
}
.auth-form .form-input {
    box-sizing: border-box;
    max-width: 100%;
}
.auth-form input::placeholder,
.auth-form textarea::placeholder {
    color: #bdbdbf;
}

.auth-form input:focus,
.auth-form textarea:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 10px 30px rgba(128, 33, 120, 0.08);
    transform: translateY(-1px);
}

/* Small helper to visually group the username + password boxes like the example image */
.auth-fields {
    display: grid;
    gap: 0.5rem;
}
.auth-fields .form-row:first-child input {
    border-bottom-left-radius: 12px;
    border-bottom-right-radius: 12px;
}

/* Small responsiveness */
@media (max-width: 900px) {
    .auth-card {
        margin: 1.25rem;
    }
}
.form-row-inline {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.auth-card .form-actions {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
.auth-card .form-actions {
    flex-wrap: wrap;
}
.auth-form .auth-forgot {
    margin-left: auto;
}
.auth-card .btn-secondary {
    padding: 0.5rem 0.9rem;
    border-radius: 6px;
}

/* Utility hidden class to replace inline display:none */
.u-hidden {
    display: none !important;
}

/* Fixed reservation toast styles */
.fixed-reservation-toast {
    position: fixed;
    left: 50%;
    transform: translateX(-50%) translateY(-6px);
    z-index: 9999;
    max-width: min(920px, 92%);
    box-sizing: border-box;
    pointer-events: auto;
    display: none;
    opacity: 0;
    transition: transform 260ms ease, opacity 260ms ease;
}
.fixed-reservation-toast.open {
    transform: translateX(-50%) translateY(0);
    opacity: 1;
    display: block;
}
.fixed-reservation-toast .toast-inner {
    margin: 0;
    padding: 0.9rem 1.2rem;
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
}
.fixed-reservation-toast .toast-close {
    background: transparent;
    border: none;
    color: inherit;
    cursor: pointer;
    font-weight: 600;
}

.reservation-result {
    display: none;
    margin-top: 1rem;
}

/* Toast inner layout helpers */
.fixed-reservation-toast .toast-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.fixed-reservation-toast .toast-msg {
    flex: 1;
}
.fixed-reservation-toast .toast-list {
    margin: 0;
    padding-left: 1.1rem;
}
.fixed-reservation-toast .toast-right {
    text-align: right;
    margin-top: 0.5rem;
}
.fixed-reservation-toast .toast-title {
    font-weight: 600;
}

.fixed-reservation-toast .toast-inner.alert-danger {
    max-height: 60vh;
    overflow: auto;
}

/* Orders table styling */
.orders-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 1rem;
}
.orders-table thead th {
    text-align: left;
    border-bottom: 1px solid #eee;
    padding: 0.55rem 0.5rem;
    color: #222;
}
.orders-table tbody td {
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid #f2f2f2;
}
.orders-table thead th:first-child,
.orders-table tbody td:first-child {
    width: 44px;
    padding-left: 0.6rem;
}
.orders-controls {
    gap: 0.75rem;
}
.orders-row:hover {
    background: linear-gradient(
        90deg,
        rgba(128, 33, 120, 0.02),
        rgba(128, 33, 120, 0.01)
    );
}
.orders-table a.btn-primary {
    display: inline-block;
    padding: 0.35rem 0.6rem;
    border-radius: 6px;
    text-decoration: none;
}

/* Make tables responsive: allow horizontal scroll inside the card so the table doesn't overflow it */
.table-responsive {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.table-responsive .orders-table {
    min-width: 720px;
    max-width: 100%;
}
.orders-table th,
.orders-table td {
    white-space: normal; /* allow wrapping inside table cells so content won't push outside */
    word-break: break-word;
}
.orders-table thead th:first-child,
.orders-table tbody td:first-child {
    white-space: nowrap;
}
.orders-table td.note-cell {
    max-width: 300px;
    white-space: normal;
    word-break: break-word;
}

/* Mobile stacked cards: hide table and show cards on narrow screens */
.orders-list {
    display: none;
}
@media (max-width: 900px) {
    .table-responsive {
        display: none;
    }
    .orders-list {
        display: block;
    }
    .order-card {
        background: #fff;
        border-radius: 10px;
        padding: 0.9rem;
        margin-bottom: 0.8rem;
        box-shadow: 0 6px 18px rgba(16, 24, 40, 0.06);
    }
    .order-card .btn-primary {
        padding: 0.4rem 0.65rem;
    }
}

/* COMPREHENSIVE RESPONSIVE DESIGN - BREAKPOINTS */

/* ========================================
   TABLET & MEDIUM SCREENS (901px - 1200px)
   ======================================== */
@media (max-width: 1200px) {
    .container {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }

    main.container {
        padding-top: 100px;
    }

    .hero-banner h1 {
        font-size: clamp(2rem, 6vw, 3rem);
    }

    .hero-banner h1 span {
        font-size: clamp(1.5rem, 5vw, 2.5rem);
    }

    .section-title {
        font-size: 1.75rem;
    }

    .services-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1.5rem;
        padding: 1.5rem 1rem;
    }

    .service-card-image {
        height: 240px;
    }

    .service-select-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
    }

    .testimonials-carousel .testimonial-card {
        flex: 0 0 calc(50% - 0.5rem);
    }

    .contact-card-inner {
        grid-template-columns: 1fr;
    }

    .map-frame {
        height: 300px;
    }
}

/* ========================================
   SMALL TABLETS & LANDSCAPE PHONES (641px - 900px)
   ======================================== */
@media (max-width: 900px) {
    body {
        font-size: 15px;
    }

    .container {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    main.container {
        padding-top: 90px;
    }

    .topbar-inner {
        padding: 0.4rem 0.75rem;
        gap: 1rem;
        border-radius: 30px;
    }

    .brand-link img.brand-image {
        width: 35px;
        height: 35px;
    }

    .hero-banner {
        padding: 1.5rem 0;
        margin-bottom: 1.5rem;
    }

    .hero-banner h1 {
        font-size: clamp(1.75rem, 5vw, 2.5rem);
    }

    .hero-banner h1 span {
        font-size: clamp(1.25rem, 4vw, 1.75rem);
    }

    .hero-banner > p:last-child {
        font-size: clamp(0.75rem, 1vw, 0.95rem);
    }

    .section-title {
        font-size: 1.5rem;
    }

    .services-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 1rem;
        padding: 1rem;
    }

    .service-card {
        border-radius: 10px;
    }

    .service-card-image {
        height: 180px;
    }

    .service-card-label h3 {
        font-size: 1.1rem;
    }

    .service-card-label p {
        font-size: 0.8rem;
    }

    .service-card-footer {
        padding: 1rem;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }

    .service-select-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 0.75rem;
        margin-top: 1rem;
    }

    .service-select {
        padding: 1rem;
        font-size: 0.9rem;
        border-radius: 10px;
    }

    .reservation-details {
        padding: 0.8rem;
        margin-top: 1rem;
    }

    .reservation-details .form-row {
        margin-bottom: 0.6rem;
    }

    .reservation-details input,
    .reservation-details textarea {
        padding: 0.5rem;
        font-size: 16px; /* Prevent zoom on mobile */
    }

    .testimonials-carousel {
        overflow: hidden;
    }

    .testimonials-carousel .testimonial-card {
        flex: 0 0 100%;
    }

    .testimonial-card {
        padding: 0.8rem;
        border-radius: 8px;
    }

    .testimonial-header {
        gap: 0.5rem;
        margin-bottom: 0.5rem;
    }

    .avatar {
        width: 38px;
        height: 38px;
        flex: 0 0 38px;
    }

    .testimonial-text {
        font-size: 0.9rem;
    }

    .contact-card {
        padding: 1rem;
    }

    .contact-card-inner {
        grid-template-columns: 1fr;
        padding: 0.5rem;
    }

    .map-frame {
        height: 250px;
    }

    .map-frame.small-map {
        height: 200px;
    }

    .btn-primary {
        padding: 0.65rem 1.25rem;
        font-size: 0.95rem;
    }

    .page-card {
        padding: 1rem;
        border-radius: 10px;
    }

    .auth-card {
        padding: 1.5rem;
        border-radius: 10px;
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
    }

    h1 {
        font-size: 1.75rem;
    }

    h2 {
        font-size: 1.5rem;
    }

    h3 {
        font-size: 1.2rem;
    }
}

/* ========================================
   PHONES & SMALL SCREENS (≤ 640px)
   ======================================== */
@media (max-width: 640px) {
    body {
        font-size: 14px;
    }

    .container {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    main.container {
        padding-top: 80px;
    }

    .topbar {
        padding: 0.75rem 0.5rem;
    }

    .topbar-inner {
        padding: 0.35rem 0.5rem;
        gap: 0.75rem;
        border-radius: 25px;
    }

    .brand-link img.brand-image {
        width: 32px;
        height: 32px;
        margin-left: 0.2rem;
    }

    .menu-toggle {
        width: 40px;
        height: 40px;
    }

    .menu-toggle svg {
        width: 18px;
        height: 18px;
    }

    .hero-banner {
        padding: 1rem 0;
        margin-bottom: 1rem;
    }

    .hero-banner p:first-child {
        font-size: 0.65rem;
        margin-bottom: 1rem;
    }

    .hero-banner h1 {
        font-size: clamp(1.5rem, 4vw, 2rem);
        margin: 0 0 0.75rem 0;
    }

    .hero-banner h1 span {
        font-size: clamp(1rem, 3vw, 1.5rem);
        display: block;
    }

    .hero-banner > p:last-child {
        font-size: 0.8rem;
        max-width: 100%;
        margin: 1rem auto;
        line-height: 1.5;
    }

    .section-title {
        font-size: 1.25rem;
        margin-bottom: 0.5rem;
    }

    .section-sub {
        font-size: 0.85rem;
    }

    .services-grid {
        grid-template-columns: 1fr;
        gap: 1rem;
        padding: 1rem 0.5rem;
    }

    .service-card {
        border-radius: 10px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    }

    .service-card:hover {
        box-shadow: 0 4px 12px rgba(128, 33, 120, 0.12);
        transform: translateY(-2px);
    }

    .service-card-image {
        height: 200px;
    }

    .service-card-label {
        bottom: 15px;
        left: 15px;
        right: 15px;
    }

    .service-card-label h3 {
        font-size: 1rem;
        margin: 0 0 0.3rem 0;
    }

    .service-card-label p {
        font-size: 0.75rem;
        line-height: 1.4;
    }

    .service-card-footer {
        padding: 0.8rem;
        flex-direction: column;
        gap: 0.4rem;
    }

    .service-card-action,
    .service-card-price {
        font-size: 0.85rem;
    }

    .service-select-grid {
        grid-template-columns: 1fr;
        gap: 0.75rem;
        margin-top: 0.75rem;
    }

    .service-select {
        padding: 0.9rem;
        font-size: 0.9rem;
        border-radius: 8px;
    }

    .reservation-details {
        padding: 0.75rem;
        margin-top: 0.75rem;
        border-radius: 8px;
    }

    .reservation-details .form-row {
        margin-bottom: 0.5rem;
    }

    .reservation-details label {
        font-size: 0.9rem;
        margin-bottom: 0.3rem;
    }

    .reservation-details input,
    .reservation-details textarea {
        padding: 0.5rem;
        border-radius: 6px;
        font-size: 16px; /* Prevent zoom */
        width: 100%;
        box-sizing: border-box;
    }

    .reservation-details textarea {
        min-height: 100px;
        resize: vertical;
    }

    .form-actions {
        gap: 0.5rem;
        margin-top: 1rem;
        flex-wrap: wrap;
    }

    .btn-primary {
        padding: 0.6rem 1.2rem;
        font-size: 0.9rem;
        border-radius: 6px;
        width: 100%;
        max-width: 100%;
    }

    .btn-secondary {
        padding: 0.5rem 0.8rem;
        font-size: 0.85rem;
    }

    .testimonials-section {
        padding: 1.5rem 0.5rem;
    }

    .testimonials-carousel .testimonial-card {
        flex: 0 0 100%;
    }

    .testimonial-card {
        padding: 0.75rem;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    }

    .testimonial-header {
        gap: 0.5rem;
        margin-bottom: 0.5rem;
    }

    .avatar {
        width: 36px;
        height: 36px;
        flex: 0 0 36px;
    }

    .testimonial-card .name {
        font-size: 0.9rem;
    }

    .testimonial-card .time {
        font-size: 0.75rem;
    }

    .testimonial-card .stars {
        font-size: 0.85rem;
        margin-bottom: 0.4rem;
    }

    .testimonial-text {
        font-size: 0.8rem;
        line-height: 1.5;
    }

    .testimonial-cta {
        font-size: 1rem;
        margin-top: 1rem;
    }

    .page-card {
        padding: 0.75rem;
        border-radius: 8px;
    }

    .contact-card {
        padding: 0.75rem;
        border-radius: 8px;
    }

    .contact-card-inner {
        grid-template-columns: 1fr;
        padding: 0;
    }

    .contact-card-left,
    .contact-card-right {
        padding: 0.5rem 0;
    }

    .contact-details p {
        margin: 0.4rem 0;
        font-size: 0.9rem;
    }

    .map-wrapper {
        margin-top: 1rem;
    }

    .map-frame {
        height: 220px;
        border-radius: 8px;
    }

    .map-frame.small-map {
        height: 180px;
    }

    .map-actions {
        margin-top: 0.75rem;
    }

    .map-actions a {
        font-size: 0.9rem;
        display: inline-block;
        padding: 0.5rem 1rem;
    }

    .auth-card {
        padding: 1.25rem;
        border-radius: 8px;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    }

    .auth-card h2 {
        font-size: 1.3rem;
        margin-bottom: 0.75rem;
    }

    .auth-form {
        display: flex;
        flex-direction: column;
    }

    .auth-form .form-row {
        margin-bottom: 0.75rem;
    }

    .auth-form input {
        padding: 0.6rem;
        font-size: 16px; /* Prevent zoom */
        border-radius: 6px;
        width: 100%;
        box-sizing: border-box;
    }

    .auth-form .btn-primary {
        margin-top: 0.5rem;
        padding: 0.6rem 1rem;
    }

    .auth-card .form-row {
        display: flex;
        flex-direction: column;
        gap: 0.3rem;
    }

    .auth-card .form-row label {
        font-size: 0.9rem;
        font-weight: 600;
    }

    .about-content {
        flex-direction: column;
        align-items: center;
        gap: 1rem;
    }

    .about-image {
        width: 120px;
        height: 120px;
    }

    .about-text {
        text-align: center;
    }

    .about-text p {
        font-size: 0.9rem;
        line-height: 1.5;
        margin-bottom: 0.75rem;
    }

    h1 {
        font-size: 1.5rem;
        margin-bottom: 0.75rem;
    }

    h2 {
        font-size: 1.25rem;
        margin-bottom: 0.5rem;
    }

    h3 {
        font-size: 1rem;
        margin-bottom: 0.4rem;
    }

    p {
        margin-bottom: 0.75rem;
        line-height: 1.5;
    }

    .site-footer {
        padding: 1.5rem 1rem 1rem;
    }

    .footer-inner {
        flex-direction: column;
        gap: 1.5rem;
    }

    .footer-left,
    .footer-right {
        text-align: center;
    }

    .footer-logo {
        width: 40px;
        height: 40px;
    }

    .footer-title {
        font-size: 1.1rem;
    }

    .footer-desc {
        font-size: 0.9rem;
    }

    .footer-heading {
        font-size: 1rem;
    }

    .footer-address {
        font-size: 0.85rem;
        line-height: 1.4;
    }

    .social-icons {
        gap: 0.75rem;
    }

    .social-link svg {
        width: 14px;
        height: 14px;
    }
}

/* ========================================
   EXTRA SMALL SCREENS (≤ 380px)
   ======================================== */
@media (max-width: 380px) {
    .topbar-inner {
        padding: 0.3rem 0.4rem;
        gap: 0.5rem;
    }

    .hero-banner h1 {
        font-size: 1.3rem;
        line-height: 1.1;
    }

    .hero-banner h1 span {
        font-size: 1rem;
    }

    .services-grid {
        gap: 0.75rem;
        padding: 0.75rem;
    }

    .service-card-image {
        height: 150px;
    }

    .service-select-grid {
        gap: 0.5rem;
    }

    .btn-primary {
        font-size: 0.85rem;
        padding: 0.5rem 1rem;
    }

    h1 {
        font-size: 1.25rem;
    }

    h2 {
        font-size: 1.1rem;
    }

    .section-title {
        font-size: 1.1rem;
    }
}

/* PROMO SLIDER – basic fix supaya kartu selalu center */
.promoSwiper {
    width: 100%;
}

/* pastikan wrapper & slide Swiper tidak memaksa lebar lain */
.promoSwiper .swiper-wrapper {
    align-items: stretch;
}

.promoSwiper .swiper-slide {
    width: auto;
}

/* sembunyikan panah default Swiper (kalau ada) */
.promoSwiper .swiper-button-next,
.promoSwiper .swiper-button-prev {
    display: none !important;
}