/*
 * Loo Review front-end design foundation.
 *
 * This file intentionally contains no page-specific layout rewrite. It provides
 * reusable tokens and consistent component foundations for the v0.9 series.
 */

:root {
    /* ------------------------------------------------------------------
     * Loo Review canonical UI tokens — 1.0.0-p.3.6.
     *
     * These are the source-of-truth values for the public UI. Components
     * should consume semantic tokens rather than declaring their own visual
     * values. A later Loo Review > Design admin screen can safely map onto
     * this layer without rewriting component CSS.
     * ------------------------------------------------------------------ */

    /* Typography family. */
    --loo-review-font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

    /* Brand / semantic colours. Exact brand tuning remains intentionally easy. */
    --loo-review-color-canvas: #fbfaf7;
    --loo-review-color-surface: #ffffff;
    --loo-review-color-band: #e1ea9e;
    --loo-review-color-band-muted: #b7c77f;
    --loo-review-color-ink: #202b27;
    --loo-review-color-ink-soft: #4f5c56;
    --loo-review-color-muted: #68736d;
    --loo-review-color-border: #202b27;
    --loo-review-color-primary: #fcee18;
    --loo-review-color-primary-hover: #ead900;
    --loo-review-color-secondary: #b77bd0;
    --loo-review-color-secondary-hover: #a568c0;
    --loo-review-color-positive: #3f725c;
    --loo-review-color-positive-soft: #e8f3ed;
    --loo-review-color-warning-soft: #fff7d1;
    --loo-review-color-danger: #a63a45;
    --loo-review-color-danger-soft: #fff0f1;
    --loo-review-color-focus: #63304f;

    /* Layout. Full-width bands should contain this centred content width. */
    --loo-review-layout-content: 70rem; /* 1120px */
    --loo-review-layout-reading: 47.5rem; /* 760px */
    --loo-review-layout-gutter: clamp(1rem, 3vw, 1.5rem);

    /* Spacing rhythm. Components should select from this scale. */
    --loo-review-space-xs: .25rem;
    --loo-review-space-sm: .5rem;
    --loo-review-space-md: 1rem;
    --loo-review-space-lg: 1.5rem;
    --loo-review-space-xl: 2.5rem;
    --loo-review-space-2xl: 4rem;

    /* Shape / border system. */
    --loo-review-radius-small: .375rem;
    --loo-review-radius-medium: .75rem;
    --loo-review-radius-large: 1rem;
    --loo-review-radius-pill: 999px;
    --loo-review-border-standard: 2px;
    --loo-review-border-strong: 3px;

    /* Type roles. Sizes are fluid where that materially helps responsiveness. */
    --loo-review-type-page-title: clamp(1.55rem, 2.2vw, 2.15rem);
    --loo-review-type-section-title: clamp(1.55rem, 2vw, 2rem);
    --loo-review-type-component-title: clamp(1rem, 1.3vw, 1.2rem);
    --loo-review-type-body: 1rem;
    --loo-review-type-label: .925rem;
    --loo-review-type-meta: .8rem;
    --loo-review-type-micro: .74rem;
    --loo-review-line-heading: 1.12;
    --loo-review-line-compact: 1.28;
    --loo-review-line-body: 1.5;

    /* Interaction. 44px minimum gives reliable touch targets. */
    --loo-review-control-min-height: 2.75rem;
    --loo-review-transition: 160ms ease;

    /* Shadows are intentionally quiet; the brand uses outlines for structure. */
    --loo-review-shadow-sm: 0 1px 2px rgba(32, 43, 39, .05);
    --loo-review-shadow-md: 0 8px 24px rgba(32, 43, 39, .08);

    /* ------------------------------------------------------------------
     * Compatibility aliases.
     * Existing components keep working while we migrate them to the new
     * semantic vocabulary progressively rather than via a brittle rewrite.
     * ------------------------------------------------------------------ */
    --loo-review-font-sans: var(--loo-review-font-family);

    --loo-review-colour-ink: var(--loo-review-color-ink);
    --loo-review-colour-ink-soft: var(--loo-review-color-ink-soft);
    --loo-review-colour-muted: var(--loo-review-color-muted);
    --loo-review-colour-surface: var(--loo-review-color-surface);
    --loo-review-colour-surface-soft: var(--loo-review-color-canvas);
    --loo-review-colour-border: #d5ddd8;
    --loo-review-colour-primary: #3f725c;
    --loo-review-colour-primary-strong: var(--loo-review-color-ink);
    --loo-review-colour-primary-soft: #eef4ef;
    --loo-review-colour-positive: var(--loo-review-color-positive);
    --loo-review-colour-positive-soft: var(--loo-review-color-positive-soft);
    --loo-review-colour-sun: var(--loo-review-color-primary);
    --loo-review-colour-sun-strong: #b59e00;
    --loo-review-colour-warning-soft: var(--loo-review-color-warning-soft);
    --loo-review-colour-danger: var(--loo-review-color-danger);
    --loo-review-colour-danger-soft: var(--loo-review-color-danger-soft);
    --loo-review-colour-focus: var(--loo-review-color-focus);

    --loo-review-space-1: var(--loo-review-space-xs);
    --loo-review-space-2: var(--loo-review-space-sm);
    --loo-review-space-3: .75rem;
    --loo-review-space-4: var(--loo-review-space-md);
    --loo-review-space-5: 1.25rem;
    --loo-review-space-6: var(--loo-review-space-lg);
    --loo-review-space-8: 2rem;
    --loo-review-space-10: var(--loo-review-space-xl);
    --loo-review-space-12: 3rem;

    --loo-review-radius-sm: var(--loo-review-radius-small);
    --loo-review-radius-md: var(--loo-review-radius-medium);
    --loo-review-radius-lg: var(--loo-review-radius-large);
    --loo-review-radius-xl: 1.25rem;

    --loo-review-text-xs: var(--loo-review-type-meta);
    --loo-review-text-sm: var(--loo-review-type-label);
    --loo-review-text-base: var(--loo-review-type-body);
    --loo-review-text-lg: var(--loo-review-type-component-title);
    --loo-review-text-xl: clamp(1.3rem, 1.8vw, 1.6rem);
    --loo-review-text-2xl: var(--loo-review-type-section-title);
    --loo-review-text-score: clamp(2.4rem, 6vw, 4rem);

    --loo-review-control-height: var(--loo-review-control-min-height);
    --loo-review-content-width: var(--loo-review-layout-content);
}


/* Shared typography and rendering scope. */
:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-campsite-placeholder,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-gallery-dialog
) {
    color: var(--loo-review-colour-ink);
    font-family: var(--loo-review-font-sans);
    line-height: 1.55;
}

:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) *,
:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) *::before,
:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) *::after {
    box-sizing: border-box;
}

:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) h2 {
    color: var(--loo-review-colour-ink);
    font-size: var(--loo-review-text-2xl);
    font-weight: 750;
    letter-spacing: -.025em;
    line-height: 1.15;
}

:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) h3 {
    color: var(--loo-review-colour-ink);
    font-size: var(--loo-review-text-lg);
    font-weight: 700;
    line-height: 1.3;
}

:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) a {
    color: var(--loo-review-colour-primary-strong);
    text-decoration-thickness: .08em;
    text-underline-offset: .16em;
    transition:
        color var(--loo-review-transition),
        background-color var(--loo-review-transition),
        border-color var(--loo-review-transition),
        box-shadow var(--loo-review-transition),
        transform var(--loo-review-transition);
}

:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) a:hover {
    color: var(--loo-review-colour-primary);
}

/* Strong, consistent keyboard focus without relying on colour alone. */
:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-result-card,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-gallery-dialog
) :focus-visible {
    outline: 3px solid color-mix(in srgb, var(--loo-review-colour-focus) 75%, white);
    outline-offset: 3px;
}

/* Shared surfaces. */
:where(
    .loo-review-campsite-details,
    .loo-review-campsite-card,
    .loo-review-discovery,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) {
    background: var(--loo-review-colour-surface);
    border-color: var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-lg);
    box-shadow: var(--loo-review-shadow-sm);
}

.loo-review-campsite-card,
.loo-review-photo-slot,
.loo-review-rating-breakdown > div,
.loo-review-result-card__metric,
.loo-review-community-guidelines,
.loo-review-conduct-agreement,
.loo-review-report-message {
    border-color: var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-md);
}

/* Eyebrows, metadata and supporting information. */
.loo-review-rating-summary__eyebrow,
.loo-review-campsite-details__eyebrow,
.loo-review-campsite-card__meta {
    color: var(--loo-review-colour-primary);
    font-size: var(--loo-review-text-xs);
    font-weight: 750;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.loo-review-campsite-card__meta,
.loo-review-rating-summary__signals,
.loo-review-result-card__signals,
.loo-review-rating-summary__ranking,
.loo-review-archive-rating__confidence,
.loo-review-review-form .description {
    color: var(--loo-review-colour-muted);
}

/* Shared controls. */
:where(
    .loo-review-discovery,
    .loo-review-review-form,
    .loo-review-review-report
) :is(
    input[type="text"],
    input[type="email"],
    input[type="date"],
    input[type="search"],
    input[type="url"],
    input[type="file"],
    select,
    textarea
) {
    background: var(--loo-review-colour-surface);
    border: 1px solid var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-sm);
    color: var(--loo-review-colour-ink);
    font: inherit;
    min-height: var(--loo-review-control-height);
    padding: .68rem .8rem;
    transition:
        border-color var(--loo-review-transition),
        box-shadow var(--loo-review-transition);
}

:where(
    .loo-review-discovery,
    .loo-review-review-form,
    .loo-review-review-report
) :is(
    input[type="text"],
    input[type="email"],
    input[type="date"],
    input[type="search"],
    input[type="url"],
    input[type="file"],
    select,
    textarea
):hover {
    border-color: #a9c3cf;
}

:where(
    .loo-review-discovery,
    .loo-review-review-form,
    .loo-review-review-report
) :is(
    input[type="text"],
    input[type="email"],
    input[type="date"],
    input[type="search"],
    input[type="url"],
    input[type="file"],
    select,
    textarea
):focus {
    border-color: var(--loo-review-colour-primary);
    box-shadow: 0 0 0 3px var(--loo-review-colour-primary-soft);
    outline: 0;
}

:where(
    .loo-review-discovery,
    .loo-review-review-form,
    .loo-review-review-report
) :is(input[type="checkbox"], input[type="radio"]) {
    accent-color: var(--loo-review-colour-primary);
}

/* Shared primary and secondary actions, including existing WordPress button classes. */
:where(
    .loo-review-discovery,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) :is(
    button[type="submit"],
    .button,
    .loo-review-button,
    .loo-review-rating-summary__review-cta
),
.loo-review-result-card__cta {
    align-items: center;
    background: var(--loo-review-colour-primary);
    border: 1px solid var(--loo-review-colour-primary);
    border-radius: var(--loo-review-radius-pill);
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    font-family: var(--loo-review-font-sans);
    font-size: var(--loo-review-text-sm);
    font-weight: 750;
    justify-content: center;
    line-height: 1.2;
    min-height: var(--loo-review-control-height);
    padding: .72rem 1.15rem;
    text-decoration: none;
}

:where(
    .loo-review-discovery,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form
) :is(
    button[type="submit"],
    .button,
    .loo-review-button,
    .loo-review-rating-summary__review-cta
):hover,
.loo-review-result-card__cta:hover {
    background: var(--loo-review-colour-primary-strong);
    border-color: var(--loo-review-colour-primary-strong);
    color: #fff;
    transform: translateY(-1px);
}

.loo-review-rating-summary__actions a:first-child,
.loo-review-result-card__cta--secondary,
.loo-review-review-form .button-small {
    background: var(--loo-review-colour-surface);
    border-color: var(--loo-review-colour-border);
    color: var(--loo-review-colour-primary-strong);
}

.loo-review-rating-summary__actions a:first-child:hover,
.loo-review-result-card__cta--secondary:hover,
.loo-review-review-form .button-small:hover {
    background: var(--loo-review-colour-primary-soft);
    border-color: var(--loo-review-colour-primary);
    color: var(--loo-review-colour-primary-strong);
}

:where(
    .loo-review-discovery,
    .loo-review-review-form
) button:disabled {
    cursor: not-allowed;
    opacity: .55;
    transform: none;
}

/* Lozenges and filter chips. */
.loo-review-term-list li,
.loo-review-discovery__chips a,
.loo-review-rating-summary__signals p,
.loo-review-result-card__signals p,
.loo-review-archive-rating__confidence span {
    border-radius: var(--loo-review-radius-pill);
}

.loo-review-term-list li,
.loo-review-discovery__chips a {
    background: var(--loo-review-colour-surface-soft);
    border-color: var(--loo-review-colour-border);
    color: var(--loo-review-colour-ink-soft);
}

.loo-review-discovery__chips a:hover {
    background: var(--loo-review-colour-primary-soft);
    border-color: var(--loo-review-colour-primary);
}

/* Score foundation. Final visual language remains intentionally provisional. */
.loo-review-rating-summary__score strong {
    color: var(--loo-review-colour-primary-strong);
    font-size: var(--loo-review-text-score);
    font-variant-numeric: tabular-nums;
    letter-spacing: -.06em;
}

.loo-review-result-card__score strong,
.loo-review-archive-rating__headline strong,
.loo-review-rating-breakdown dd,
.loo-review-result-card__metric dd {
    color: var(--loo-review-colour-primary-strong);
    font-variant-numeric: tabular-nums;
}

.loo-review-rating-breakdown > div,
.loo-review-result-card__metric {
    background: var(--loo-review-colour-surface-soft);
}

.loo-review-rating-breakdown dt,
.loo-review-result-card__metric dt {
    color: var(--loo-review-colour-ink-soft);
    font-size: var(--loo-review-text-sm);
}

/* Imagery. */
.loo-review-campsite-card,
.loo-review-campsite-card__image,
.loo-review-rating-summary__gallery img,
.loo-review-gallery-trigger img,
.loo-review-photo-preview img,
.loo-review-campsite-placeholder {
    border-radius: var(--loo-review-radius-md);
}

.loo-review-campsite-card {
    overflow: hidden;
}

.loo-review-campsite-card__image {
    transition: transform 260ms ease;
}

.loo-review-campsite-card > a:hover .loo-review-campsite-card__image {
    transform: scale(1.018);
}

/* Messages and status states. */
.loo-review-form-message {
    background: var(--loo-review-colour-primary-soft);
    border-left-color: var(--loo-review-colour-primary);
    border-radius: var(--loo-review-radius-sm);
    color: var(--loo-review-colour-ink);
}

.loo-review-form-message--success {
    background: var(--loo-review-colour-positive-soft);
    border-left-color: var(--loo-review-colour-positive);
}

.loo-review-form-message--validation,
.loo-review-form-message--conduct,
.loo-review-form-message--duplicate,
.loo-review-form-message--cooldown,
.loo-review-form-message--hourly {
    background: var(--loo-review-colour-warning-soft);
    border-left-color: var(--loo-review-colour-sun-strong);
}

.loo-review-form-message--invalid,
.loo-review-form-message--error {
    background: var(--loo-review-colour-danger-soft);
    border-left-color: var(--loo-review-colour-danger);
}

.loo-review-community-guidelines,
.loo-review-conduct-agreement {
    background: var(--loo-review-colour-surface-soft);
}

/* Details and accordions use native disclosure behaviour. */
:where(
    .loo-review-discovery__more,
    .loo-review-community-guidelines__details,
    .loo-review-review-report
) summary {
    border-radius: var(--loo-review-radius-sm);
    color: var(--loo-review-colour-primary-strong);
    padding: .25rem;
}

:where(
    .loo-review-discovery__more,
    .loo-review-community-guidelines__details,
    .loo-review-review-report
) summary:hover {
    background: var(--loo-review-colour-primary-soft);
}

/* Gentle density and mobile foundations. */
@media (max-width: 700px) {
    :root {
        --loo-review-space-8: 1.5rem;
        --loo-review-space-10: 2rem;
        --loo-review-text-score: clamp(2.4rem, 15vw, 3.5rem);
    }

    :where(
        .loo-review-campsite-details,
        .loo-review-discovery,
        .loo-review-rating-summary,
        .loo-review-public-reviews,
        .loo-review-review-form
    ) {
        border-radius: var(--loo-review-radius-md);
        padding: var(--loo-review-space-4);
    }

    :where(
        .loo-review-discovery,
        .loo-review-rating-summary,
        .loo-review-review-form
    ) :is(button[type="submit"], .button, .loo-review-button) {
        min-height: 3rem;
    }

    .loo-review-rating-summary__actions,
    .loo-review-result-card__actions {
        align-items: stretch;
        flex-direction: column;
    }

    .loo-review-rating-summary__actions a,
    .loo-review-result-card__actions a {
        justify-content: center;
        text-align: center;
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    :where(
        .loo-review-campsite-details,
        .loo-review-campsite-card,
        .loo-review-discovery,
        .loo-review-result-card,
        .loo-review-rating-summary,
        .loo-review-public-reviews,
        .loo-review-review-form
    ) *,
    :where(
        .loo-review-campsite-details,
        .loo-review-campsite-card,
        .loo-review-discovery,
        .loo-review-result-card,
        .loo-review-rating-summary,
        .loo-review-public-reviews,
        .loo-review-review-form
    ) *::before,
    :where(
        .loo-review-campsite-details,
        .loo-review-campsite-card,
        .loo-review-discovery,
        .loo-review-result-card,
        .loo-review-rating-summary,
        .loo-review-public-reviews,
        .loo-review-review-form
    ) *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
    }
}


/* v0.9.0a.1 — focused image-radius, crop and mobile-overflow fixes. */

.loo-review-rating-summary__gallery,
.loo-review-rating-summary__gallery a,
.loo-review-gallery-trigger,
.loo-review-photo-preview,
.loo-review-photo-preview a {
    border-radius: var(--loo-review-radius-md);
    overflow: hidden;
}

.loo-review-rating-summary__gallery img,
.loo-review-gallery-trigger img,
.loo-review-photo-preview img {
    border-radius: inherit;
    display: block;
    height: 100%;
    width: 100%;
}

.loo-review-campsite-card__media,
.loo-review-result-card__media,
.loo-review-campsite-card > a:first-child,
.loo-review-result-card > a:first-child {
    border-radius: var(--loo-review-radius-md);
    display: block;
    overflow: hidden;
}

.loo-review-campsite-card__image,
.loo-review-result-card__image,
.loo-review-campsite-card img,
.loo-review-result-card img {
    border-radius: inherit;
    display: block;
    max-width: 100%;
}

.loo-review-review-form,
.loo-review-review-form form,
.loo-review-review-form fieldset,
.loo-review-review-form label,
.loo-review-review-form__field {
    min-width: 0;
    max-width: 100%;
}

.loo-review-review-form input[type="date"] {
    box-sizing: border-box;
    display: block;
    inline-size: 100%;
    max-inline-size: 100%;
    min-inline-size: 0;
    width: 100%;
    max-width: 100%;
}

.loo-review-campsite-details__featured,
.loo-review-campsite-details__hero-image,
.loo-review-campsite-details__media,
.loo-review-campsite-details figure:has(> img:first-child) {
    border-radius: var(--loo-review-radius-lg);
    overflow: hidden;
}

.loo-review-campsite-details__featured img,
.loo-review-campsite-details__hero-image img,
.loo-review-campsite-details__media img,
.loo-review-campsite-details > img:first-of-type,
.loo-review-campsite-details figure:has(> img:first-child) > img:first-child {
    aspect-ratio: 16 / 9;
    border-radius: inherit;
    display: block;
    height: auto;
    max-width: 100%;
    object-fit: cover;
    object-position: center;
    width: 100%;
}

@media (max-width: 700px) {
    .loo-review-campsite-details__featured img,
    .loo-review-campsite-details__hero-image img,
    .loo-review-campsite-details__media img,
    .loo-review-campsite-details > img:first-of-type,
    .loo-review-campsite-details figure:has(> img:first-child) > img:first-child {
        aspect-ratio: 4 / 3;
    }
}


/* v0.9.0a.2 — universal campsite-image clipping and hard mobile date fix. */

/*
 * One class is now added by PHP to manual featured images, preferred review
 * images and automatic first-review fallbacks. This avoids relying on a
 * theme-specific wrapper or on where the image originated.
 */
.loo-review-campsite-image {
    border-radius: var(--loo-review-radius-md) !important;
    display: block;
    max-width: 100%;
}

a:has(> .loo-review-campsite-image),
figure:has(> .loo-review-campsite-image),
.wp-post-image:has(.loo-review-campsite-image) {
    border-radius: var(--loo-review-radius-md);
    overflow: hidden;
}

/* Archive/card images are clipped even when the theme supplies no media wrapper. */
.loo-review-campsite-card > a:has(> .loo-review-campsite-image),
.loo-review-result-card > a:has(> .loo-review-campsite-image) {
    border-radius: var(--loo-review-radius-md) !important;
    overflow: hidden !important;
}

.loo-review-campsite-card .loo-review-campsite-image,
.loo-review-result-card .loo-review-campsite-image {
    border-radius: inherit !important;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

/* Single-page featured/fallback image: same crop regardless of image source. */
body.single-lr_campsite .loo-review-campsite-image,
.single-lr_campsite .loo-review-campsite-image {
    aspect-ratio: 16 / 9;
    border-radius: var(--loo-review-radius-lg) !important;
    object-fit: cover;
    object-position: center;
    overflow: hidden;
    width: 100%;
}

/*
 * Some mobile browsers assign date controls a stubborn intrinsic inline size.
 * Target the exact row and control, override theme widths and remove native
 * minimum sizing while preserving the browser date picker.
 */
.loo-review-review-form__visit-date {
    box-sizing: border-box;
    inline-size: 100%;
    max-inline-size: 100%;
    min-inline-size: 0;
    overflow: hidden;
    width: 100%;
}

.loo-review-review-form__visit-date label {
    display: block;
    max-width: 100%;
}

.loo-review-review-form__visit-date #visit_date {
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box !important;
    display: block !important;
    inline-size: 100% !important;
    max-inline-size: 100% !important;
    min-inline-size: 0 !important;
    min-width: 0 !important;
    width: 100% !important;
}

@media (max-width: 700px) {
    body.single-lr_campsite .loo-review-campsite-image,
    .single-lr_campsite .loo-review-campsite-image {
        aspect-ratio: 4 / 3;
    }

    .loo-review-review-form {
        max-inline-size: 100%;
        overflow-x: clip;
    }

    .loo-review-review-form__visit-date #visit_date {
        /*
         * The calc is a fallback for browsers that ignore 100% on date fields.
         * It remains smaller than the padded form viewport.
         */
        max-width: calc(100vw - 3.5rem) !important;
    }
}


/* v0.9.0b — ecommerce-style campsite archive and review-led cards. */

.loo-review-discovery {
    margin-inline: auto;
    max-width: var(--loo-review-content-width);
}

.loo-review-discovery__primary {
    background:
        linear-gradient(135deg, var(--loo-review-colour-primary-soft), transparent 72%),
        var(--loo-review-colour-surface);
    border-color: color-mix(in srgb, var(--loo-review-colour-primary) 34%, var(--loo-review-colour-border));
    border-radius: var(--loo-review-radius-xl);
    gap: var(--loo-review-space-4);
    padding: var(--loo-review-space-5);
}

.loo-review-discovery__section-heading h2 {
    font-size: var(--loo-review-text-xl);
}

.loo-review-discovery__section-heading p,
.loo-review-discovery__ranking-note,
.loo-review-discovery__more-intro {
    color: var(--loo-review-colour-ink-soft);
}

.loo-review-discovery__more {
    border-color: var(--loo-review-colour-border);
}

.loo-review-discovery__more > summary {
    align-items: center;
    display: inline-flex;
    gap: var(--loo-review-space-2);
    padding: .55rem .75rem;
}

.loo-review-discovery__more > summary::marker {
    color: var(--loo-review-colour-primary);
}

.loo-review-discovery__choices,
.loo-review-discovery__match {
    background: var(--loo-review-colour-surface-soft);
    border-color: var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-md);
}

.loo-review-discovery__choice-list label,
.loo-review-discovery__match label {
    border-radius: var(--loo-review-radius-sm);
    padding: .35rem .45rem;
}

.loo-review-discovery__choice-list label:hover,
.loo-review-discovery__match label:hover {
    background: var(--loo-review-colour-primary-soft);
}

.loo-review-discovery__results-bar {
    align-items: center;
    border-top: 1px solid var(--loo-review-colour-border);
    display: flex;
    gap: var(--loo-review-space-4);
    justify-content: space-between;
    margin-top: var(--loo-review-space-5);
    padding-top: var(--loo-review-space-4);
}

.loo-review-discovery__count {
    color: var(--loo-review-colour-ink);
    margin: 0;
}

.loo-review-view-switcher {
    align-items: center;
    display: inline-flex;
    gap: var(--loo-review-space-1);
}

.loo-review-view-switcher__label {
    color: var(--loo-review-colour-muted);
    font-size: var(--loo-review-text-sm);
    margin-right: var(--loo-review-space-1);
}

.loo-review-view-switcher__option {
    align-items: center;
    border: 1px solid var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-pill);
    color: var(--loo-review-colour-ink-soft);
    display: inline-flex;
    font-size: var(--loo-review-text-sm);
    font-weight: 700;
    gap: .35rem;
    min-height: 2.35rem;
    padding: .45rem .72rem;
    text-decoration: none;
}

.loo-review-view-switcher__option:hover,
.loo-review-view-switcher__option.is-active {
    background: var(--loo-review-colour-primary);
    border-color: var(--loo-review-colour-primary);
    color: #fff;
}

.loo-review-archive-results {
    align-items: stretch;
    display: grid;
    gap: var(--loo-review-space-6);
    margin-block: var(--loo-review-space-6);
    width: 100%;
}

.loo-review-archive-results--grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.loo-review-archive-results--list {
    grid-template-columns: minmax(0, 1fr);
}

.loo-review-archive-item {
    background: var(--loo-review-colour-surface);
    border: 1px solid var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-xl);
    box-shadow: var(--loo-review-shadow-sm);
    display: flex;
    flex-direction: column;
    margin: 0 !important;
    min-width: 0;
    overflow: hidden;
    padding: 0;
    transition:
        border-color var(--loo-review-transition),
        box-shadow var(--loo-review-transition),
        transform var(--loo-review-transition);
}

.loo-review-archive-item:hover {
    border-color: color-mix(in srgb, var(--loo-review-colour-primary) 38%, var(--loo-review-colour-border));
    box-shadow: var(--loo-review-shadow-md);
    transform: translateY(-2px);
}

.loo-review-archive-item > :where(
    .entry-header,
    .entry-content,
    .entry-summary,
    .wp-block-post-title,
    .wp-block-post-excerpt
) {
    padding-inline: var(--loo-review-space-5);
}

.loo-review-archive-item > .entry-header,
.loo-review-archive-item > .wp-block-post-title {
    padding-top: var(--loo-review-space-5);
}

.loo-review-archive-item :where(h2, .entry-title, .wp-block-post-title) {
    font-size: var(--loo-review-text-xl);
    line-height: 1.2;
    margin-block: 0 var(--loo-review-space-2);
}

.loo-review-archive-item :where(.post-thumbnail, .wp-block-post-featured-image, figure) {
    margin: 0;
    overflow: hidden;
}

.loo-review-archive-item :where(.post-thumbnail, .wp-block-post-featured-image, figure) a {
    display: block;
    overflow: hidden;
}

.loo-review-archive-item .loo-review-campsite-image,
.loo-review-archive-item :where(.post-thumbnail img, .wp-block-post-featured-image img) {
    aspect-ratio: 4 / 3;
    border-radius: 0 !important;
    height: auto;
    object-fit: cover;
    transition: transform 260ms ease;
    width: 100%;
}

.loo-review-archive-item:hover .loo-review-campsite-image,
.loo-review-archive-item:hover :where(.post-thumbnail img, .wp-block-post-featured-image img) {
    transform: scale(1.025);
}

.loo-review-result-card {
    border-top: 0;
    display: flex;
    flex: 1;
    flex-direction: column;
    margin-top: 0;
    padding: var(--loo-review-space-5);
}

.loo-review-result-card__top {
    align-items: flex-start;
    gap: var(--loo-review-space-3);
}

.loo-review-result-card__score {
    align-items: flex-end;
    background: var(--loo-review-colour-primary-soft);
    border-radius: var(--loo-review-radius-md);
    display: inline-flex;
    padding: .65rem .8rem;
}

.loo-review-result-card__score strong {
    font-size: clamp(2rem, 5vw, 2.75rem);
    letter-spacing: -.06em;
}

.loo-review-result-card__score span {
    color: var(--loo-review-colour-ink-soft);
    font-size: var(--loo-review-text-xs);
    line-height: 1.25;
    max-width: 5.5rem;
}

.loo-review-result-card__volume {
    color: var(--loo-review-colour-muted);
    font-size: var(--loo-review-text-sm);
    padding-top: .4rem;
}

.loo-review-result-card__breakdown {
    gap: var(--loo-review-space-2);
}

.loo-review-result-card__metric {
    min-width: 0;
    padding: .65rem;
}

.loo-review-result-card__metric dd {
    font-size: var(--loo-review-text-lg);
    font-weight: 800;
}

.loo-review-result-card__signals {
    color: var(--loo-review-colour-muted);
    font-size: var(--loo-review-text-sm);
}

.loo-review-result-card__signals span:first-child {
    background: var(--loo-review-colour-positive-soft);
    border-radius: var(--loo-review-radius-pill);
    color: var(--loo-review-colour-positive);
    padding: .3rem .58rem;
}

.loo-review-result-card__ranking {
    font-size: var(--loo-review-text-xs);
}

.loo-review-result-card__actions {
    margin-top: auto;
    padding-top: var(--loo-review-space-4);
}

.loo-review-result-card__actions a {
    flex: 1 1 10rem;
}

.loo-review-result-card__empty {
    display: flex;
    flex: 1;
    flex-direction: column;
}

.loo-review-result-card__empty strong {
    font-size: var(--loo-review-text-lg);
}

.loo-review-result-card__empty p {
    color: var(--loo-review-colour-ink-soft);
}

.loo-review-result-card__empty .loo-review-result-card__cta {
    margin-top: auto;
}

.loo-review-archive-results--list .loo-review-archive-item {
    display: grid;
    grid-template-columns: minmax(13rem, 30%) minmax(0, 1fr);
}

.loo-review-archive-results--list .loo-review-archive-item :where(
    .post-thumbnail,
    .wp-block-post-featured-image,
    figure:has(.loo-review-campsite-image)
) {
    grid-row: 1 / span 8;
    height: 100%;
}

.loo-review-archive-results--list .loo-review-archive-item :where(
    .post-thumbnail img,
    .wp-block-post-featured-image img,
    .loo-review-campsite-image
) {
    aspect-ratio: auto;
    height: 100%;
    min-height: 100%;
}

.loo-review-archive-results--list .loo-review-result-card {
    padding-top: var(--loo-review-space-3);
}

@media (max-width: 1050px) {
    .loo-review-archive-results--grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .loo-review-discovery__primary {
        padding: var(--loo-review-space-4);
    }

    .loo-review-discovery__results-bar {
        align-items: flex-start;
        flex-direction: column;
    }

    .loo-review-view-switcher {
        width: 100%;
    }

    .loo-review-view-switcher__option {
        flex: 1;
        justify-content: center;
    }

    .loo-review-archive-results--grid,
    .loo-review-archive-results--list {
        grid-template-columns: minmax(0, 1fr);
    }

    .loo-review-archive-results--list .loo-review-archive-item {
        display: flex;
    }

    .loo-review-archive-results--list .loo-review-archive-item :where(
        .post-thumbnail,
        .wp-block-post-featured-image,
        figure:has(.loo-review-campsite-image)
    ) {
        height: auto;
    }

    .loo-review-archive-results--list .loo-review-archive-item :where(
        .post-thumbnail img,
        .wp-block-post-featured-image img,
        .loo-review-campsite-image
    ) {
        aspect-ratio: 4 / 3;
        height: auto;
        min-height: 0;
    }

    .loo-review-result-card__breakdown {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .loo-review-result-card__metric {
        padding: .55rem .4rem;
        text-align: center;
    }

    .loo-review-result-card__metric dt {
        font-size: .72rem;
    }

    .loo-review-result-card__metric dd {
        font-size: var(--loo-review-text-base);
    }
}

@media (max-width: 410px) {
    .loo-review-result-card__breakdown {
        grid-template-columns: minmax(0, 1fr);
    }
}


/* v0.9.0b.1 — stricter card structure and readable score breakdowns. */

.loo-review-archive-results--grid .loo-review-archive-item {
    display: grid;
    grid-template-rows: auto auto 1fr;
    height: 100%;
}

.loo-review-archive-item :where(.entry-summary, .wp-block-post-excerpt) {
    display: none !important;
}

.loo-review-result-card {
    display: grid;
    gap: var(--loo-review-space-4);
    grid-template-rows: auto auto auto auto 1fr auto;
    min-height: 100%;
}

.loo-review-result-card__top {
    align-items: stretch;
    display: grid;
    gap: var(--loo-review-space-3);
    grid-template-columns: minmax(8.5rem, auto) minmax(0, 1fr);
}

.loo-review-result-card__score {
    align-items: center;
    display: grid;
    gap: .1rem .45rem;
    grid-template-columns: auto minmax(0, 1fr);
    min-width: 0;
    padding: .7rem .8rem;
}

.loo-review-result-card__score strong {
    font-size: clamp(2rem, 4vw, 2.65rem);
    line-height: .95;
    white-space: nowrap;
}

.loo-review-result-card__score span {
    font-size: .76rem;
    line-height: 1.15;
    max-width: 6.5rem;
}

.loo-review-result-card__volume {
    align-self: center;
    line-height: 1.4;
    margin: 0;
    min-width: 0;
    padding: 0;
}

.loo-review-result-card__breakdown {
    display: grid;
    gap: var(--loo-review-space-2);
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0;
}

.loo-review-result-card__metric {
    align-content: start;
    display: grid;
    gap: .25rem;
    min-width: 0;
    padding: .7rem .6rem;
}

.loo-review-result-card__metric dt {
    font-size: clamp(.72rem, 1.3vw, .84rem);
    font-weight: 700;
    hyphens: auto;
    line-height: 1.15;
    min-width: 0;
    overflow-wrap: anywhere;
}

.loo-review-result-card__metric dd {
    font-size: clamp(1rem, 2.1vw, 1.25rem);
    line-height: 1;
    margin: 0;
    white-space: nowrap;
}

.loo-review-result-card__signals {
    align-items: flex-start;
    display: flex;
    flex-wrap: wrap;
    gap: var(--loo-review-space-2);
    margin: 0;
}

.loo-review-result-card__signals p,
.loo-review-result-card__ranking {
    margin: 0;
}

.loo-review-result-card__actions {
    align-self: end;
    display: grid;
    gap: var(--loo-review-space-2);
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 0;
    padding-top: 0;
}

.loo-review-result-card__actions a {
    min-width: 0;
    padding-inline: .85rem;
    text-align: center;
}

.loo-review-result-card__empty {
    display: grid;
    gap: var(--loo-review-space-3);
    grid-template-rows: auto auto 1fr auto;
    min-height: 100%;
}

.loo-review-result-card__empty .loo-review-result-card__cta {
    align-self: end;
    margin-top: 0;
}

@media (max-width: 1050px) {
    .loo-review-result-card__top {
        grid-template-columns: minmax(0, 1fr);
    }

    .loo-review-result-card__score {
        width: fit-content;
    }
}

@media (max-width: 700px) {
    .loo-review-result-card {
        gap: var(--loo-review-space-3);
    }

    .loo-review-result-card__breakdown {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .loo-review-result-card__metric {
        padding: .55rem .35rem;
    }

    .loo-review-result-card__metric dt {
        font-size: .7rem;
    }

    .loo-review-result-card__metric dd {
        font-size: .95rem;
    }

    .loo-review-result-card__actions {
        grid-template-columns: minmax(0, 1fr);
    }

    .loo-review-result-card__actions a,
    .loo-review-result-card__cta {
        min-height: 2.6rem !important;
        padding-block: .58rem !important;
        width: 100%;
    }
}

@media (max-width: 380px) {
    .loo-review-result-card__breakdown {
        grid-template-columns: minmax(0, 1fr);
    }

    .loo-review-result-card__metric {
        align-items: center;
        grid-template-columns: minmax(0, 1fr) auto;
        text-align: left;
    }
}


/* v0.9.0b.3 — defensive archive excerpt suppression. */
body.post-type-archive-lr_campsite .loo-review-archive-item :where(
    .entry-summary,
    .wp-block-post-excerpt
) {
    display: none !important;
}


/* v0.9.0b.4 — square archive imagery and full-width vertical score breakdown. */

/* Standardise archive image zones for portrait and landscape uploads. */
.loo-review-archive-results--grid .loo-review-archive-item :where(
    .post-thumbnail,
    .wp-block-post-featured-image,
    figure:has(.loo-review-campsite-image)
) {
    aspect-ratio: 1 / 1;
    height: auto;
    overflow: hidden;
}

.loo-review-archive-results--grid .loo-review-archive-item :where(
    .post-thumbnail img,
    .wp-block-post-featured-image img,
    .loo-review-campsite-image
) {
    aspect-ratio: 1 / 1;
    height: 100%;
    object-fit: cover;
    object-position: center;
    width: 100%;
}

/* Keep each grid card on a predictable internal rhythm. */
.loo-review-archive-results--grid .loo-review-archive-item {
    grid-template-rows: auto auto minmax(0, 1fr);
}

.loo-review-archive-results--grid .loo-review-result-card {
    align-content: start;
    grid-template-rows:
        auto
        auto
        auto
        auto
        1fr
        auto;
}

/* The score breakdown now spans the card width as three stacked rows. */
.loo-review-result-card__breakdown {
    background: var(--loo-review-colour-surface-soft);
    border: 1px solid var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-md);
    display: flex;
    flex-direction: column;
    gap: 0;
    overflow: hidden;
    width: 100%;
}

.loo-review-result-card__metric {
    align-items: center;
    background: transparent;
    border: 0;
    border-radius: 0;
    display: grid;
    gap: var(--loo-review-space-3);
    grid-template-columns: minmax(0, 1fr) auto;
    min-width: 0;
    padding: .72rem .85rem;
    width: 100%;
}

.loo-review-result-card__metric + .loo-review-result-card__metric {
    border-top: 1px solid var(--loo-review-colour-border);
}

.loo-review-result-card__metric dt {
    font-size: var(--loo-review-text-sm);
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: normal;
}

.loo-review-result-card__metric dd {
    font-size: var(--loo-review-text-lg);
    font-weight: 800;
    line-height: 1;
    margin: 0;
    white-space: nowrap;
}

/* Give recommendation/confidence content more breathing room. */
.loo-review-result-card__signals {
    gap: var(--loo-review-space-3);
}

.loo-review-result-card__signals p {
    line-height: 1.35;
}

.loo-review-result-card__ranking {
    color: var(--loo-review-colour-muted);
    line-height: 1.35;
}

/* Keep list view image-led without forcing a square crop on wide cards. */
.loo-review-archive-results--list .loo-review-archive-item :where(
    .post-thumbnail,
    .wp-block-post-featured-image,
    figure:has(.loo-review-campsite-image)
) {
    aspect-ratio: auto;
}

.loo-review-archive-results--list .loo-review-archive-item :where(
    .post-thumbnail img,
    .wp-block-post-featured-image img,
    .loo-review-campsite-image
) {
    aspect-ratio: auto;
}

/* Mobile remains stacked but keeps the cleaner score rows. */
@media (max-width: 700px) {
    .loo-review-archive-results--grid .loo-review-archive-item :where(
        .post-thumbnail,
        .wp-block-post-featured-image,
        figure:has(.loo-review-campsite-image),
        .post-thumbnail img,
        .wp-block-post-featured-image img,
        .loo-review-campsite-image
    ) {
        aspect-ratio: 1 / 1;
    }

    .loo-review-result-card__metric {
        padding: .68rem .75rem;
    }

    .loo-review-result-card__metric dt {
        font-size: .82rem;
    }

    .loo-review-result-card__metric dd {
        font-size: 1rem;
    }
}


/* v0.9.0g.1 — consolidation stage 1: theme/responsive guardrails.
 *
 * These rules deliberately avoid resetting theme typography. They only protect
 * Loo Review-owned components from common theme width, box-model and media
 * overrides so the site shell can change without breaking product UI.
 */
:where(
    .loo-review-discovery,
    .loo-review-archive-results,
    .loo-review-result-card,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-campsite-lookup,
    .loo-review-gallery-dialog
),
:where(
    .loo-review-discovery,
    .loo-review-archive-results,
    .loo-review-result-card,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-campsite-lookup,
    .loo-review-gallery-dialog
) * {
    box-sizing: border-box;
}

:where(
    .loo-review-discovery,
    .loo-review-archive-results,
    .loo-review-result-card,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-campsite-lookup
) {
    min-width: 0;
    max-width: 100%;
}

:where(
    .loo-review-result-card,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-campsite-lookup
) :where(
    img,
    video,
    iframe,
    svg
) {
    max-width: 100%;
}

:where(
    .loo-review-review-form,
    .loo-review-campsite-lookup,
    .loo-review-review-report
) :where(
    input,
    select,
    textarea,
    button
) {
    max-width: 100%;
}

:where(
    .loo-review-result-card,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-review,
    .loo-review-review-form
) :where(
    p,
    dd,
    dt,
    li,
    a,
    span
) {
    overflow-wrap: break-word;
}

/* Horizontal components should scroll internally instead of widening the page. */
.loo-review-discovery__scroller,
.loo-review-public-review__gallery,
.loo-review-rating-summary__gallery {
    max-width: 100%;
    min-width: 0;
    overscroll-behavior-inline: contain;
}

/* Prevent narrow theme content columns from crushing archive/list layouts. */
@media (max-width: 860px) {
    .loo-review-archive-results--list .loo-review-archive-item {
        grid-template-columns: minmax(10rem, 34%) minmax(0, 1fr);
    }
}

@media (max-width: 700px) {
    :where(
        .loo-review-discovery,
        .loo-review-archive-results,
        .loo-review-campsite-details,
        .loo-review-rating-summary,
        .loo-review-public-reviews,
        .loo-review-review-form
    ) {
        inline-size: 100%;
        max-inline-size: 100%;
    }

    .loo-review-archive-results--list .loo-review-archive-item {
        grid-template-columns: minmax(0, 1fr);
    }

    .loo-review-discovery__scroller {
        scroll-padding-inline: .25rem;
        -webkit-overflow-scrolling: touch;
    }
}

/* Very narrow devices: keep action labels inside their own controls. */
@media (max-width: 360px) {
    :where(
        .loo-review-result-card__actions,
        .loo-review-rating-summary__actions,
        .loo-review-review-form__steps-nav
    ) :where(
        a,
        button
    ) {
        white-space: normal;
    }
}


/* v0.9.0g.2 — consolidation Stage 2: keyboard/focus visibility.
 * Use :focus-visible so mouse/touch users do not get persistent focus rings.
 */
:where(
    .loo-review-discovery,
    .loo-review-archive-results,
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-campsite-lookup,
    .loo-review-gallery-dialog
) :where(
    a,
    button,
    input,
    select,
    textarea,
    summary
):focus-visible {
    outline: 3px solid var(--loo-review-colour-primary);
    outline-offset: 3px;
}

.loo-review-campsite-lookup__result.is-active {
    background: var(--loo-review-colour-primary-soft);
}


/* v0.9.0g.3 — consolidation Stage 3: visual consistency.
 *
 * This pass strengthens the shared Loo Review visual language without locking
 * in a final brand palette or changing the provisional rating presentation.
 */

/* Consistent section rhythm. */
:where(
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-public-reviews,
    .loo-review-review-form,
    .loo-review-discovery
) {
    margin-block: clamp(1rem, 2vw, 1.5rem);
}

:where(
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-review-form
) > :first-child {
    margin-top: 0;
}

:where(
    .loo-review-campsite-details,
    .loo-review-rating-summary,
    .loo-review-review-form
) > :last-child {
    margin-bottom: 0;
}

/* Make small supporting labels feel like one family. */
:where(
    .loo-review-rating-summary__eyebrow,
    .loo-review-campsite-details__eyebrow,
    .loo-review-discovery__heading .loo-review-rating-summary__eyebrow,
    .loo-review-review-form__progress-topline
) {
    letter-spacing: .045em;
}

/* Consistent compact secondary actions. */
:where(
    .loo-review-review-form__today,
    .loo-review-campsite-lookup__change,
    .loo-review-campsite-lookup__suggest-button
) {
    font-family: var(--loo-review-font-sans);
    font-weight: 750;
}

/* Keep form support copy quieter than primary labels. */
.loo-review-review-form :where(
    .description,
    .loo-review-review-form__step-heading p,
    .loo-review-community-guidelines--review p
) {
    color: var(--loo-review-colour-muted);
}

/* Harmonise card borders/shadows across archive, reviews and carousels. */
:where(
    .loo-review-archive-item,
    .loo-review-public-review,
    .loo-review-discovery-card,
    .loo-review-review-form__step
) {
    border-color: var(--loo-review-colour-border);
    box-shadow: var(--loo-review-shadow-sm);
}

/* Keep content links visually distinct from primary CTA buttons. */
:where(
    .loo-review-discovery-card__link,
    .loo-review-campsite-lookup__change,
    .loo-review-campsite-lookup__suggest-button
) {
    text-underline-offset: .18em;
    text-decoration-thickness: .08em;
}

/* More consistent compact metadata line-height. */
:where(
    .loo-review-discovery-card__location,
    .loo-review-result-card__signals,
    .loo-review-public-review__meta,
    .loo-review-rating-summary__signals
) {
    line-height: 1.35;
}

/* Stronger but still restrained surface hierarchy. */
.loo-review-review-form__step,
.loo-review-public-review,
.loo-review-discovery-card {
    background: var(--loo-review-colour-surface);
}

.loo-review-review-form__lookup,
.loo-review-community-guidelines--review,
.loo-review-result-card__breakdown {
    background: var(--loo-review-colour-surface-soft);
}

/* Avoid mixed control radii from theme or legacy CSS. */
.loo-review-review-form :where(
    input[type="text"],
    input[type="email"],
    input[type="date"],
    input[type="url"],
    select,
    textarea
),
.loo-review-campsite-lookup :where(
    input[type="text"],
    input[type="search"],
    input[type="url"]
) {
    border-radius: var(--loo-review-radius-md);
}

/* Preserve comfortable touch targets without making desktop controls bulky. */
@media (max-width: 700px) {
    :where(
        .loo-review-review-form,
        .loo-review-campsite-lookup
    ) :where(
        button,
        input,
        select,
        textarea
    ) {
        min-height: 2.75rem;
    }
}


/* v0.9.0g.4 — consolidation Stage 4: Loo Review score language.
 *
 * Numeric scores remain the clearest source of truth. The visual meter adds a
 * recognisable Loo Review treatment without copying a five-star convention.
 */
.loo-review-score-badge {
    background:
        linear-gradient(145deg, var(--loo-review-colour-primary-soft), var(--loo-review-colour-surface));
    border: 1px solid color-mix(in srgb, var(--loo-review-colour-primary) 30%, var(--loo-review-colour-border));
    border-radius: var(--loo-review-radius-lg);
    display: grid;
    gap: .28rem;
    min-width: 9.5rem;
    padding: .75rem .85rem;
}

.loo-review-score-badge__label {
    color: var(--loo-review-colour-primary-strong);
    font-size: .66rem;
    font-weight: 850;
    letter-spacing: .09em;
    line-height: 1;
    text-transform: uppercase;
}

.loo-review-score-badge__value {
    align-items: baseline;
    display: flex;
    gap: .28rem;
    margin: 0;
}

.loo-review-score-badge__value strong {
    color: var(--loo-review-colour-primary-strong);
    font-size: clamp(2.35rem, 5vw, 3.25rem);
    font-variant-numeric: tabular-nums;
    letter-spacing: -.065em;
    line-height: .95;
}

.loo-review-score-badge__value span {
    color: var(--loo-review-colour-muted);
    font-size: .78rem;
    font-weight: 750;
}

.loo-review-score-meter {
    background: var(--loo-review-colour-border);
    border-radius: var(--loo-review-radius-pill);
    display: block;
    height: .38rem;
    overflow: hidden;
    width: 100%;
}

.loo-review-score-meter > span {
    background:
        linear-gradient(
            90deg,
            var(--loo-review-colour-primary),
            color-mix(in srgb, var(--loo-review-colour-primary) 65%, var(--loo-review-colour-positive))
        );
    border-radius: inherit;
    display: block;
    height: 100%;
    width: var(--loo-review-score-pct, 0%);
}

.loo-review-score-meter--compact {
    grid-column: 1 / -1;
    height: .22rem;
    margin-top: .2rem;
}

.loo-review-score-badge--compact {
    border-radius: var(--loo-review-radius-md);
    min-width: 8.5rem;
    padding: .6rem .7rem;
}

.loo-review-score-badge--compact .loo-review-score-badge__value strong {
    font-size: clamp(1.9rem, 4vw, 2.45rem);
}

.loo-review-rating-breakdown--single > div,
.loo-review-result-card__metric {
    grid-template-columns: minmax(0, 1fr) auto;
}

.loo-review-rating-breakdown--single > div .loo-review-score-meter,
.loo-review-result-card__metric .loo-review-score-meter {
    grid-column: 1 / -1;
}

/* Ranking is supporting context, not a second competing headline score. */
.loo-review-rating-summary__ranking,
.loo-review-result-card__ranking {
    color: var(--loo-review-colour-muted);
    font-size: var(--loo-review-text-xs);
    font-weight: 650;
}

/* Individual review scores are compact comparable metrics instead of one long sentence. */
.loo-review-public-review__ratings {
    display: grid !important;
    gap: .35rem !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.loo-review-public-review__ratings > div {
    align-items: center;
    display: flex;
    gap: .3rem;
    justify-content: space-between;
    min-width: 0;
}

.loo-review-public-review__ratings dt {
    font-weight: 650;
    min-width: 0;
}

.loo-review-public-review__ratings dd {
    color: var(--loo-review-colour-primary-strong);
    font-variant-numeric: tabular-nums;
    font-weight: 850;
    margin: 0;
    white-space: nowrap;
}

@media (max-width: 430px) {
    .loo-review-public-review__ratings {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* v0.9.0g.4.1 — public score simplification.
 * Confidence-adjusted ranking remains an internal discovery/ranking engine.
 * Ordinary campsite pages/cards present one clear public Loo score.
 */


/* -------------------------------------------------------------------------
 * 1.0.0-p.3.5 compatibility aliases.
 * Canonical values now live in the opening 1.0.0-p.3.6 token block.
 * ---------------------------------------------------------------------- */
:root {
    --loo-review-brand-ink: var(--loo-review-color-ink);
    --loo-review-brand-leaf: var(--loo-review-color-band-muted);
    --loo-review-brand-leaf-soft: var(--loo-review-color-band);
    --loo-review-brand-yellow: var(--loo-review-color-primary);
    --loo-review-brand-plum: #63304f;
    --loo-review-brand-pink: #ddb2c6;
    --loo-review-brand-cream: #e9e4dc;
    --loo-review-brand-paper: var(--loo-review-color-canvas);
    --loo-review-card-radius: var(--loo-review-radius-large);
    --loo-review-control-radius: var(--loo-review-radius-pill);
    --loo-review-text-note: var(--loo-review-type-micro);
    --loo-review-text-label: var(--loo-review-type-label);
    --loo-review-text-card-title: var(--loo-review-type-component-title);
    --loo-review-text-step-title: var(--loo-review-type-section-title);
}



/* -------------------------------------------------------------------------
 * 1.0.0-p.3.6 — global layout/component primitives.
 * These classes are intentionally opt-in so old templates can be migrated
 * safely one component at a time.
 * ---------------------------------------------------------------------- */
.loo-review-container {
    margin-inline: auto;
    max-width: var(--loo-review-layout-content);
    padding-inline: var(--loo-review-layout-gutter);
    width: 100%;
}

.loo-review-reading-width {
    max-width: var(--loo-review-layout-reading);
}

.loo-review-section {
    padding-block: clamp(var(--loo-review-space-xl), 6vw, var(--loo-review-space-2xl));
}

.loo-review-section--canvas {
    background: var(--loo-review-color-canvas);
}

.loo-review-section--band {
    background: var(--loo-review-color-band);
}

.loo-review-card {
    background: var(--loo-review-color-surface);
    border: var(--loo-review-border-standard) solid var(--loo-review-color-border);
    border-radius: var(--loo-review-radius-large);
    overflow: hidden;
}

.loo-review-section-title {
    color: var(--loo-review-color-ink);
    font-family: var(--loo-review-font-family);
    font-size: var(--loo-review-type-section-title);
    font-weight: 800;
    letter-spacing: -.025em;
    line-height: var(--loo-review-line-heading);
    margin-block: 0 var(--loo-review-space-md);
}

.loo-review-meta {
    color: var(--loo-review-color-muted);
    font-size: var(--loo-review-type-meta);
    line-height: var(--loo-review-line-compact);
}

.loo-review-action {
    align-items: center;
    border: var(--loo-review-border-standard) solid var(--loo-review-color-border);
    border-radius: var(--loo-review-radius-pill);
    cursor: pointer;
    display: inline-flex;
    font-family: var(--loo-review-font-family);
    font-size: var(--loo-review-type-label);
    font-weight: 800;
    justify-content: center;
    line-height: 1.1;
    min-height: var(--loo-review-control-min-height);
    padding: .65rem 1.1rem;
    text-decoration: none;
    transition: background-color var(--loo-review-transition), border-color var(--loo-review-transition), color var(--loo-review-transition), transform var(--loo-review-transition);
}

.loo-review-action--primary {
    background: var(--loo-review-color-primary);
    color: var(--loo-review-color-ink);
}

.loo-review-action--secondary {
    background: var(--loo-review-color-secondary);
    color: var(--loo-review-color-ink);
}

.loo-review-action--neutral {
    background: var(--loo-review-color-surface);
    color: var(--loo-review-color-ink);
}

.loo-review-action--primary:hover { background: var(--loo-review-color-primary-hover); }
.loo-review-action--secondary:hover { background: var(--loo-review-color-secondary-hover); }

@media (max-width: 420px) {
    .loo-review-container {
        padding-inline: max(.875rem, env(safe-area-inset-left));
    }
}
