.public-page {
    --public-ink: #1b211f;
    --public-muted: #56615c;
    --public-paper: #f7f7f2;
    --public-surface: #ffffff;
    --public-line: #e4e7df;
    --public-accent: #ffd72b;

    color: var(--public-ink);
    background: var(--public-paper);
    line-height: 1.65;
}

.public-page:not(.home-refresh) a:focus-visible,
.public-page:not(.home-refresh) button:focus-visible,
.public-page:not(.home-refresh) input:focus-visible,
.public-page:not(.home-refresh) select:focus-visible,
.public-page:not(.home-refresh) textarea:focus-visible {
    outline: 3px solid #8a6900;
    outline-offset: 3px;
}

.public-page header {
    background: rgba(255, 255, 255, 0.98);
    border-bottom: 1px solid var(--public-line);
    box-shadow: 0 4px 18px rgba(27, 33, 31, 0.06);
}

.public-page .logo img {
    height: 54px;
}

.public-page .nav-link {
    color: var(--public-ink);
    font-size: 0.94rem;
}

.public-page .nav-link:hover,
.public-page .nav-link.active {
    color: #725800;
}

.public-page .nav-link::after {
    height: 2px;
    background: #d6ad00;
}

.public-page .mobile-menu-btn {
    color: var(--public-ink);
}

.public-page .btn-primary {
    background: var(--public-accent);
    color: var(--public-ink);
    border-radius: 0.75rem;
    box-shadow: none;
    transition: background-color 180ms ease, transform 180ms ease;
}

.public-page .nav-menu .btn-primary {
    min-height: 48px;
    padding: 0.75rem 1.5rem;
    font-size: 0.95rem;
}

.public-page .btn-primary:hover {
    background: #f1c900;
    color: var(--public-ink);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(27, 33, 31, 0.12);
}

.public-page .btn-outline {
    border: 1px solid #7b817c;
    border-radius: 0.75rem;
}

.public-page .lang-option.active {
    color: #725800;
}

.public-page .hero-text h1 {
    color: var(--public-ink);
    font-size: clamp(2rem, 4.2vw, 3.6rem);
    font-weight: 800;
    letter-spacing: -0.045em;
    line-height: 1.08;
}

.public-page .hero-text p {
    color: var(--public-muted);
    line-height: 1.75;
}

@media (min-width: 769px) {
    .public-page .hero-screen {
        min-height: calc(100vh - var(--header-height));
        min-height: calc(100svh - var(--header-height));
        display: flex;
        align-items: center;
        padding: clamp(1.5rem, 4vh, 3rem) 0;
    }

    .public-page .hero-screen .hero-content {
        align-items: center;
    }

    .public-page .hero-screen .hero-image img {
        width: auto;
        height: auto;
        max-width: 100%;
        max-height: calc(100svh - var(--header-height) - 4rem);
        object-fit: contain;
        margin-inline: auto;
    }
}

.public-page:not(.home-refresh) .section-title {
    color: var(--public-ink);
    font-size: clamp(1.75rem, 3vw, 2.5rem);
    font-weight: 800;
    letter-spacing: -0.035em;
    line-height: 1.15;
}

.public-page:not(.home-refresh) .section-subtitle {
    color: var(--public-muted);
    line-height: 1.7;
}

.public-page:not(.home-refresh) .camping-directory {
    margin: 2rem 0 2.5rem;
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid var(--public-line);
    border-radius: 1rem;
    background: var(--public-surface);
    box-shadow: 0 8px 24px rgba(27, 33, 31, 0.06);
}

.public-page:not(.home-refresh) .camping-directory h3 {
    margin: 0;
    color: var(--public-ink);
    font-size: clamp(1.2rem, 2.5vw, 1.55rem);
}

.public-page:not(.home-refresh) .camping-directory > p {
    margin: 0.5rem 0 1.25rem;
    color: var(--public-muted);
}

.public-page:not(.home-refresh) .camping-directory-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.public-page:not(.home-refresh) .camping-directory-list a {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    padding: 0.55rem 0.9rem;
    border: 1px solid var(--public-line);
    border-radius: 999px;
    background: #fbfbf7;
    color: var(--public-ink);
    font-weight: 650;
    text-decoration: none;
}

.public-page:not(.home-refresh) .camping-directory-list a:hover {
    border-color: #d6ad00;
    background: #fff9dc;
}

.public-page:not(.home-refresh) .product-pricing-note {
    width: fit-content;
    max-width: 100%;
    margin: 1.25rem auto 0;
    padding: 0.75rem 1rem;
    border: 1px solid #e8d98b;
    border-radius: 0.75rem;
    background: #fff9dc;
    color: #514000;
    font-size: 0.95rem;
    font-weight: 600;
    text-align: center;
}

.public-page:not(.home-refresh) .pricing-card {
    position: relative;
    height: 100%;
    border: 1px solid var(--public-line);
    border-radius: 1rem;
    box-shadow: 0 8px 24px rgba(27, 33, 31, 0.06);
}

.public-page:not(.home-refresh) .pricing-card .product-info {
    display: flex;
    height: 100%;
    flex-direction: column;
    align-items: center;
    padding: 1.5rem;
}

.public-page:not(.home-refresh) .pricing-card .product-title {
    margin: 1rem 0 0.5rem;
    color: var(--public-ink);
    font-size: 1.2rem;
}

.public-page:not(.home-refresh) .pricing-card .product-info > p:not(.product-price-prompt) {
    margin: 0;
    color: var(--public-muted);
}

.public-page:not(.home-refresh) .product-dynamic-price {
    display: grid;
    width: 100%;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.35rem 0.75rem;
    align-items: baseline;
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--public-line);
    text-align: left;
}

.public-page:not(.home-refresh) .product-dynamic-price span {
    color: var(--public-muted);
    font-size: 0.9rem;
}

.public-page:not(.home-refresh) .product-dynamic-price strong {
    color: var(--public-ink);
    font-size: 1rem;
    text-align: right;
}

.public-page:not(.home-refresh) .product-price-prompt {
    margin: 1.25rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--public-line);
    color: var(--public-muted);
    font-size: 0.9rem;
}

.public-page:not(.home-refresh) .product-booking-link {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    margin-top: auto;
    padding: 0.75rem 0.25rem 0;
    color: #514000;
    font-weight: 700;
    text-align: center;
    text-decoration: underline;
    text-underline-offset: 0.2em;
}

.public-page:not(.home-refresh) .category-card,
.public-page:not(.home-refresh) .accordion-item,
.public-page:not(.home-refresh) .contact-item,
.public-page:not(.home-refresh) .rental-process-card {
    border: 1px solid var(--public-line);
    border-radius: 1rem;
    box-shadow: 0 8px 24px rgba(27, 33, 31, 0.06);
}

.public-page:not(.home-refresh) .rental-process {
    padding: clamp(3rem, 7vw, 5.5rem) 0;
    background: #fff;
    scroll-margin-top: 6.5rem;
}

.public-page:not(.home-refresh) .rental-process .section-title,
.public-page:not(.home-refresh) .rental-process .section-subtitle {
    text-align: center;
}

.public-page:not(.home-refresh) .rental-process-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 2rem;
}

.public-page:not(.home-refresh) .rental-process-card {
    padding: 1.5rem;
    background: var(--public-paper);
}

.public-page:not(.home-refresh) .rental-process-number {
    display: inline-block;
    margin-bottom: 1rem;
    color: #725800;
    font-size: 0.85rem;
    font-weight: 800;
    letter-spacing: 0.08em;
}

.public-page:not(.home-refresh) .rental-process-card h3 {
    margin: 0 0 0.65rem;
    color: var(--public-ink);
    font-size: 1.1rem;
}

.public-page:not(.home-refresh) .rental-process-card p {
    margin: 0;
    color: var(--public-muted);
    font-size: 0.95rem;
}

.public-page:not(.home-refresh) .rental-process-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    margin-top: 2rem;
}

.public-page:not(.home-refresh) .rental-process-map-link {
    color: #514000;
    font-weight: 700;
    text-underline-offset: 0.2em;
}

.public-page:not(.home-refresh) .category-card {
    background: var(--public-surface);
}

.public-page:not(.home-refresh) .accordion-item {
    overflow: hidden;
    background: var(--public-surface);
}

.public-page:not(.home-refresh) .accordion-header {
    gap: 1rem;
    color: var(--public-ink);
}

.public-page:not(.home-refresh) .accordion-question {
    color: var(--public-ink);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.45;
}

.public-page:not(.home-refresh) .accordion-icon {
    flex: 0 0 24px;
}

.public-page:not(.home-refresh) .faq-actions {
    justify-content: center;
    gap: 1rem;
    margin: 0 auto 3.5rem;
}

.public-page:not(.home-refresh) input:not([type="checkbox"]):not([type="radio"]),
.public-page:not(.home-refresh) select,
.public-page:not(.home-refresh) textarea {
    border-radius: 0.625rem;
}

.public-page:not(.home-refresh) footer {
    border-top: 1px solid rgba(255, 255, 255, 0.12);
}

@media (max-width: 1200px) and (min-width: 769px) {
    .public-page .nav-menu {
        gap: 0.9rem;
    }

    .public-page .nav-link {
        font-size: 0.86rem;
    }
}

@media (min-width: 1201px) {
    .public-page:not(.home-refresh) .rental-process-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 768px) {
    .public-page .hero-screen .hero-image img {
        width: auto;
        height: auto;
        max-width: 100%;
        max-height: none;
        object-fit: contain;
    }

    .public-page .nav-menu {
        background: #ffffff;
    }

    .public-page .nav-menu li a:not(.btn-primary) {
        color: var(--public-ink);
    }

    .public-page .nav-menu li a:not(.btn-primary):hover,
    .public-page .nav-menu li a:not(.btn-primary).active {
        color: #725800;
    }

    .public-page .hero-text h1 {
        font-size: clamp(1.8rem, 8vw, 2.5rem);
    }

    .public-page:not(.home-refresh) .section-title {
        font-size: clamp(1.55rem, 6vw, 2rem);
    }

    .public-page:not(.home-refresh) .rental-process-grid {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .public-page:not(.home-refresh) *,
    .public-page:not(.home-refresh) *::before,
    .public-page:not(.home-refresh) *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
