/* The existing Dal Menga palette, type and editorial rhythm remain authoritative. */
.route-hub { --route-gap: clamp(1.25rem, 3vw, 3rem); }
.route-hub h2 { max-width: 18ch; }
.route-filters, .event-filters { display: flex; flex-wrap: wrap; gap: 1rem; margin: 2rem 0 1rem; }
.route-filters label, .event-filters label { display: grid; gap: .45rem; flex: 1 1 12rem; font-weight: 500; }
.route-filters select, .event-filters select {
    width: 100%; min-height: 48px; padding: .7rem;
    background: var(--color-paper); color: var(--color-ink);
    border: 1px solid var(--color-rule); border-radius: 0; font: inherit;
}
.route-filters select:focus-visible, .event-filters select:focus-visible,
.route-card a:focus-visible, .route-technical a:focus-visible, .event-details summary:focus-visible {
    outline: 3px solid var(--color-accent); outline-offset: 4px;
}
.route-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--route-gap); }
.route-card { display: grid; align-content: start; gap: 1.3rem; min-width: 0; }
.route-card:only-child { grid-column: 1 / -1; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: center; gap: var(--route-gap); }
.route-card[hidden], .event-row[hidden] { display: none !important; }
.route-image { display: block; }
.route-image > a { display: block; overflow: hidden; aspect-ratio: 4/3; }
.route-photo-credit { font-size: .8rem; line-height: 1.5; margin: .5rem 0 0; max-width: 70ch; }
.route-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s; }
.route-image:hover img { transform: scale(1.025); }
.route-copy h3 { font-size: clamp(1.6rem, 2.6vw, 2.6rem); line-height: 1.1; margin: .4rem 0 1rem; }
.route-copy h3 a { text-decoration: none; color: inherit; }
.route-copy p { max-width: 58ch; }
.route-kind, .route-basis, .route-checked { font-size: .9rem; }
.route-facts { font-variant-numeric: tabular-nums; font-weight: 600; }
.route-count:empty { display: none; }
.route-note { margin-top: 3rem; max-width: 70ch; }
.route-intro h1 { max-width: 19ch; margin:0 0 1.25rem; font-size: clamp(2.4rem, 4.8vw, 4.75rem); line-height: 1.04; text-wrap:balance; }
.route-deck { max-width: 50ch; font-size: clamp(1.1rem, 1.7vw, 1.4rem); line-height:1.6; margin:0; }
/* Full width, right after the invitation. A wide screen moves it to the end of the intro grid. */
.route-hero { margin: 0 calc(50% - 50vw); }
.route-hero > .route-photo-credit { padding-inline: clamp(1rem, 5vw, 4rem); }
/* Keep landmarks and summits intact inside the existing, stable hero space. */
.route-cover { display: block; width: 100%; max-height: 70svh; object-fit: contain; }
.route-technical dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem 2rem; margin: 2rem 0; }
.route-technical dt { font-size: .9rem; }
.route-technical dd { margin: .35rem 0 0; font-size: 1.15rem; font-weight: 600; }
.route-technical .button { margin: 0 .5rem .5rem 0; min-height: 44px; }
.route-expert { padding: 1rem; background: var(--color-night); color: var(--color-paper); max-width: 70ch; }
.route-body.section { max-width:76rem; }
.route-body > h2,.route-body > .wp-block-post-content { max-width:46rem; margin-inline:auto; }
.route-body .wp-block-post-content p,.route-body .wp-block-post-content li { line-height:1.65; }
.route-body .wp-block-post-content h2 { margin-top:2.5rem; font-size:clamp(1.7rem,2.8vw,2.5rem); text-wrap:balance; }
.route-body .wp-block-post-content a { text-underline-offset:.2em; overflow-wrap:anywhere; }
.route-body img { max-width: 100%; height: auto; }
.event-details { margin-top: 1rem; }
.event-details summary { cursor: pointer; min-height: 44px; font-weight: 600; }
.event-details img { max-width: 100%; height: auto; }
.event-details .wp-block-image { margin: 1.5rem 0; max-width: 36rem; }
.event-details .wp-block-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.event-filters { align-items:end; }
.event-filter-actions { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; }
.event-filter-actions button, .event-filter-actions a { min-height:48px; display:inline-flex; align-items:center; }
.event-count { min-height:1.5em; font-variant-numeric:tabular-nums; scroll-margin-top:8rem; }
.event-featured-reference { max-width:65ch; font-size:.95rem; }
.event-empty[hidden] { display:none; }
.event-pagination { display:flex; flex-wrap:wrap; gap:.6rem; margin-top:2rem; }
.event-pagination a { display:grid; place-items:center; min-width:48px; min-height:48px; color:var(--color-ink); border:1px solid var(--color-rule); text-decoration:none; }
.event-pagination [aria-current=page] { color:var(--color-paper); background:var(--color-night); }
.event-calendar :focus-visible { outline:3px solid var(--color-accent); outline-offset:4px; }
.event-calendar .event-row { scroll-margin-top:8rem; }
/* A poster remains legible in full; photographs keep the established crop. */
.event-local.event-poster > .event-picture { height: auto; max-height: none; }
.event-local.event-poster > .event-picture img { width: 100%; height: auto; max-height: 40rem; aspect-ratio: var(--event-image-ratio); object-fit: contain; }
.event-local .dm-media-credit { color: inherit; }
/* A confirmed evening replaces the generic photograph in this two-column story. */
.dm-events-page .events-local-story:has(.event-local) { grid-template-columns: minmax(0, 1fr); }
.dm-events-page .events-local-story:has(.event-local) > img { display: none; }
.dm-events-page .events-local-story:has(.event-local) > .events-local-copy { grid-column: 1; grid-row: auto; }
.event-copy > .button, .event-copy > .text-link { margin: .5rem 1.25rem .5rem 0; }
.event-poster h3 { text-wrap: balance; }
.event-callout { grid-template-columns: minmax(0, 10rem) minmax(0, 1fr); }
.event-callout.event-local > .event-picture { grid-column: 1; grid-row: 1/3; height: auto; max-height: none; }
.event-callout > .event-date, .event-callout > .event-copy { grid-column: 2; margin: 0; }
.event-callout h3 { font-size: clamp(1.6rem, 3vw, 2.6rem); margin: 0 0 1rem; }
.dm-events-page .event-row.event-editorial.event-poster { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); }
.dm-events-page .event-row.event-editorial.event-poster > .event-picture { grid-column: 1; grid-row: 1/3; }
.dm-events-page .event-row.event-editorial.event-poster > .event-date,
.dm-events-page .event-row.event-editorial.event-poster > .event-copy { grid-column: 2; }
.dm-events-page .event-row.event-editorial.event-poster > .event-picture img { aspect-ratio: var(--event-image-ratio); }
@media (max-width: 900px) {
    .dm-events-page .events-private-story { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
    .route-list { grid-template-columns: 1fr; gap: 2.5rem; }
    .route-card:only-child { grid-template-columns: 1fr; }
    .route-filters, .event-filters { gap: .75rem; }
    .route-filters label, .event-filters label { flex-basis: 100%; }
    .route-technical dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .route-technical .button { width: 100%; text-align: center; }
    .event-details .wp-block-gallery { grid-template-columns: 1fr; }
    .event-callout { grid-template-columns: 96px minmax(0, 1fr); gap: 1rem; }
    .event-callout.event-local > .event-picture { grid-row: 1; }
    .event-callout > .event-copy { grid-column: 1/-1; }
    .dm-events-page .event-row.event-editorial.event-poster { grid-template-columns: minmax(0, 1fr); }
    .dm-events-page .event-row.event-editorial.event-poster > .event-picture,
    .dm-events-page .event-row.event-editorial.event-poster > .event-date,
    .dm-events-page .event-row.event-editorial.event-poster > .event-copy { grid-column: 1; grid-row: auto; }
}
@media (prefers-reduced-motion: reduce) {
    .route-image img { transition: none; }
    .route-image:hover img { transform: none; }
}

/* Mountain guide: one quiet catalogue, then optional places. */
.mountain-guide-opening { position:relative; isolation:isolate; display:flex; align-items:flex-end; min-height:min(52rem,92svh); background:var(--color-night); color:var(--color-paper); }
.mountain-guide-opening .mountain-opening-photo { position:absolute; inset:0; z-index:0; overflow:hidden; }
.mountain-guide-opening .mountain-opening-photo img { display:block; width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }
.mountain-guide-opening:after { content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(9,25,21,.8),rgba(9,25,21,.58) 62%,rgba(9,25,21,.14)); pointer-events:none; } /* taste-skill-ignore: neutral contrast scrim over the authentic photograph, the explicit photo exception. */
.mountain-guide-copy { position:relative; z-index:2; display:flex; flex-direction:column; align-items:flex-start; padding:9rem clamp(1.25rem,5vw,5rem) 4rem; max-width:58rem; }
.mountain-guide-copy h1 { order:-1; font-size:clamp(3.25rem,7.5vw,7rem); line-height:1.02; max-width:16ch; margin:0 0 1.5rem; color:var(--color-paper); }
.mountain-guide-copy p { max-width:44ch; }
.mountain-guide-copy .mountain-location { font-size:1rem; color:var(--color-paper); margin:0 0 .8rem; }
.mountain-guide-copy .wp-block-buttons { margin-top:1.6rem; }
.mountain-guide-copy .wp-block-button__link { background:var(--color-paper); color:var(--color-night); }
.mountain-guide-copy :focus-visible { outline:3px solid var(--color-paper); outline-offset:5px; }
.guide-film { margin-top:0; padding-block:clamp(2rem,5vw,4rem); }
.guide-film h2 { margin:0 0 1.5rem; }
.route-hub { scroll-margin-top:10rem; }
.route-hub-heading { display:grid; grid-template-columns:1fr 1fr; gap:2rem; align-items:end; }
.route-hub-heading h2 { margin:0; font-size:clamp(2.2rem,4vw,3.6rem); }
.route-hub-heading p { max-width:48ch; margin:0; }
.route-anchor { display:block; scroll-margin-top:10rem; }
.route-filters { align-items:end; padding:1.25rem; background:var(--color-light); border-radius:8px; }
.route-hub .route-filters select { border-color:var(--color-muted); border-radius:6px; min-height:52px; }
.route-filter-actions { display:flex; flex-wrap:wrap; gap:.5rem 1.5rem; align-items:center; flex-basis:100%; }
.route-filter-actions a { min-height:44px; display:inline-flex; align-items:center; }
.route-filters button { min-height:48px; }
.route-results { display:flex; justify-content:space-between; flex-wrap:wrap; gap:.25rem 1.5rem; margin:1.5rem 0; scroll-margin-top:10rem; }
.route-results p { margin:0; font-variant-numeric:tabular-nums; }
.route-range { color:var(--color-muted); }
.route-range:empty { display:none; }
.route-list { grid-template-columns:repeat(3,minmax(0,1fr)); gap:3rem 2rem; }
.route-card, .route-card:only-child { display:block; grid-column:auto; }
.route-image > a { aspect-ratio:16/10; }
.route-copy { padding-top:1rem; }
.route-copy h3 { font-size:clamp(1.6rem,2.1vw,2rem); line-height:1.12; margin:.4rem 0 1.1rem; }
.route-copy h3 a { display:flex; align-items:baseline; justify-content:space-between; gap:.75rem; min-height:48px; }
.route-copy h3 a:hover { text-decoration:underline; text-underline-offset:.15em; }
.route-open { font-family:system-ui,sans-serif; font-size:1.15rem; flex-shrink:0; }
.route-kind { margin:0; font-size:.83rem; }
.route-card-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem 1rem; margin:0 0 1rem; font-variant-numeric:tabular-nums; }
.route-card-facts > div:last-child { grid-column:1/-1; }
.route-card-facts dt { font-size:1rem; color:var(--color-muted); line-height:1.45; }
.route-card-facts dd { margin:.15rem 0 0; font-size:1.15rem; font-weight:600; }
.route-grade,.route-basis { font-size:1rem; line-height:1.5; margin:.6rem 0 0; }
.route-grade span { display:block; color:var(--color-muted); }
.route-basis { font-weight:500; }
.route-credit summary { cursor:pointer; min-height:44px; display:flex; align-items:center; font-size:.8rem; text-decoration:underline; text-underline-offset:.2em; }
.route-credit .route-photo-credit { margin:0; }
.route-hub .route-credit { border:0; }
.guide-beyond .guide-place,.guide-activities .guide-place { border:0; border-bottom:1px solid var(--color-rule); }
body:has(.mountain-guide-opening) :is(.mountain-practical,.dm-photo-credits,.footer-bottom,.footer-legal) { border:0; }
.route-pagination { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:2rem; }
.route-pagination a { display:grid; place-items:center; min-width:48px; min-height:48px; color:var(--color-ink); border:1px solid var(--color-rule); text-decoration:none; }
.route-pagination [aria-current=page] { color:var(--color-paper); background:var(--color-night); }
.route-empty { min-height:6rem; }
.route-intro.section { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(20rem,.85fr); gap:2rem 3rem; padding-bottom:2.5rem; }
.route-return { grid-column:1/-1; }
.route-return > [data-route-back] { display:inline-flex; align-items:center; min-height:44px; }
.route-heading { align-self:center; min-width:0; }
.route-stay { margin:1.25rem 0 0; }
.route-heading .actions { margin:.75rem 0 0; }
.route-essential { background:var(--color-light); padding:1.5rem; align-self:center; }
.route-essential .route-basis { margin:0 0 1.25rem; font-size:1.05rem; line-height:1.5; }
.route-essential dl { grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; gap:1rem 1.5rem; font-variant-numeric:tabular-nums; }
.route-essential dt { color:var(--color-muted); font-size:1rem; }
.route-essential dd { font-size:clamp(1.15rem,1.6vw,1.45rem); overflow-wrap:anywhere; }
.route-jump { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:.25rem 1.75rem; }
.route-jump a { display:inline-flex; align-items:center; min-height:44px; color:var(--color-ink); text-underline-offset:.25em; text-decoration-thickness:1px; }
.route-jump a:hover { text-decoration-thickness:2px; }
.route-intro :focus-visible,.route-body :focus-visible,.route-preparation :focus-visible { outline:3px solid var(--color-accent); outline-offset:5px; }
#dm-route-description,.route-preparation-part { scroll-margin-top:10rem; }
.route-preparation.section { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:3rem 4rem; padding-top:2rem; }
.route-preparation h2 { font-size:clamp(1.8rem,3vw,2.5rem); }
.route-preparation-part:last-child { grid-column:1/-1; }
.route-preparation dl { margin:1.5rem 0; }
.route-preparation dt { color:var(--color-muted); font-size:1rem; }
.route-preparation dd { margin:.25rem 0 1.25rem; font-weight:500; }
.route-preparation p { max-width:65ch; }
.route-sources { background:var(--color-light); padding:clamp(1.25rem,3vw,2rem); }
.route-sources h2 { margin-top:0; }
.route-sources a { display:inline-flex; align-items:center; min-height:44px; }
.route-sources p { margin-block:.5rem; }
.route-sources .route-checked { margin-top:1rem; }
.route-body.section { padding-block:clamp(2.5rem,6vw,5rem) 2rem; }
.route-body > h2 { margin-top:0; }
.route-archive-story { margin-top:2.5rem; }
.route-archive-story img { display:block; width:100%; height:auto; }
.route-archive-story .mountain-film { margin-block:2rem; }
.guide-beyond,.guide-activities { padding-bottom:1rem; }
.guide-beyond > h2,.guide-activities > h2,.guide-stay h2 { font-size:clamp(2.2rem,4vw,3.6rem); }
.guide-beyond > p,.guide-activities > p { max-width:56ch; margin-bottom:2rem; }
.guide-place { padding:0; margin-block:1rem; scroll-margin-top:9rem; }
.guide-place summary { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; min-height:80px; padding:.5rem 0; cursor:pointer; list-style:none; }
.guide-place summary:hover h3 { text-decoration:underline; text-underline-offset:.18em; }
.guide-place summary::-webkit-details-marker { display:none; }
.guide-place summary h3 { font-size:clamp(1.6rem,2.6vw,2.2rem); margin:1rem 0; }
.guide-toggle { width:24px; height:24px; position:relative; flex-shrink:0; }
.guide-toggle::before,.guide-toggle::after { content:''; position:absolute; background:currentColor; inset:11px 2px; }
.guide-toggle::after { transform:rotate(90deg); }
.guide-place[open] .guide-toggle::after { transform:none; }
.guide-place > :not(summary) { max-width:66ch; }
.guide-place > :is(p,ul) { line-height:1.65; }
.guide-place > h4 { margin-top:2rem; }
.guide-place > summary + * { margin-top:1.25rem; }
.guide-place > figure,.guide-place > .dm-photo { max-width:48rem; }
.guide-place img { display:block; width:100%; height:auto; max-height:28rem; object-fit:cover; }
.guide-place > :last-child { margin-bottom:2rem; }
.guide-stay { margin-top:2rem; background:var(--color-night); color:var(--color-paper); }
.guide-stay > p { max-width:54ch; }
.guide-stay .wp-block-button__link { background:var(--color-paper); color:var(--color-night); }
.route-hub a:focus-visible,.guide-place summary:focus-visible,.route-preparation a:focus-visible { outline:3px solid var(--color-accent); outline-offset:4px; }
/* The section spacing comes from the design settings: inherited above the cover, so it follows them. */
@media(min-width:1024px) {
 .page-main > .route-intro.section { padding-bottom:0; }
 .route-hero { grid-column:1/-1; grid-row:4; margin-top:-2rem; padding-top:inherit; }
}
@media(max-width:1023px) {
 .route-intro.section { grid-template-columns:minmax(0,1fr); gap:1.5rem; }
 .route-essential dl { grid-template-columns:repeat(4,minmax(0,1fr)); }
 .route-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .mountain-guide-opening { min-height:42rem; }
 .mountain-guide-copy { padding:9rem 2rem 3rem; }
 .route-hub-heading { grid-template-columns:1fr; gap:1rem; }
}
@media(max-width:639px) {
 .mountain-guide-opening { min-height:40rem; }
 .mountain-guide-opening:after { background:rgba(9,25,21,.64); }
 .mountain-guide-copy { padding:8rem 1.25rem 2rem; }
 .mountain-guide-copy h1 { font-size:3.05rem; }
 .route-list { grid-template-columns:1fr; gap:2.5rem; }
 .route-filters label { flex-basis:100%; }
 .route-filters { padding:1rem; }
 .route-filter-actions { align-items:stretch; flex-direction:column; gap:.25rem; }
 .route-filter-actions a { justify-content:center; min-height:48px; }
 .route-results { flex-direction:column; }
 .route-essential dl { grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
 .route-intro h1 { font-size:2.35rem; }
 .route-jump { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.25rem 1rem; }
 .route-jump a { min-height:48px; line-height:1.4; }
 .route-essential { padding:1.25rem; }
 .route-preparation.section { grid-template-columns:1fr; gap:2rem; }
 .route-preparation-part:last-child { grid-column:auto; }
 .guide-place summary { min-height:72px; }
}