/*
 * Accommodation and unit pages (redesign 2026-09, docs/migration/REDESIGN.md): templates/product/product.html.twig,
 * ski/ski-resort-accommodation*.html.twig and the price fragments of /product-prices and /product-unit-prices.
 * Tokens of assets/styles/app.css (navy, ski blue, ice, snow, promo red); every rule is scoped under
 * body.page-acc because this file is linked before the Bootstrap and app stylesheets.
 * Blue = interaction (links, "Voir l'offre"); red = real promotions only (.promo-tag, AA red behind white text).
 */

/* Head: type, stars, h1, location, rating */
.page-acc .acc-head { padding-bottom: 1.25rem; }
.page-acc .acc-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem 2rem; }
.page-acc .acc-title-main { min-width: 0; }
.page-acc .acc-eyebrow { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: 0 0 .45rem; }
.page-acc .acc-type { display: inline-flex; align-items: center; background: var(--ski-ice); color: var(--ski-navy); font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; border-radius: var(--radius-chip); padding: .22rem .6rem; }
.page-acc .acc-stars { display: inline-flex; gap: .1rem; color: var(--ski-gold); font-size: .9rem; }
.page-acc .acc-title { margin-bottom: .35rem; overflow-wrap: anywhere; }
.page-acc .acc-subtitle { margin: 0 0 .3rem; font-weight: 600; color: var(--ski-navy); }
.page-acc .acc-location { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 .35rem; margin: 0; color: var(--ski-muted); font-size: .98rem; }
.page-acc .acc-location > .bi { color: var(--ski-blue); align-self: center; }
.page-acc .acc-location a { font-weight: 700; }
.page-acc .acc-location-rest { margin-left: -.35rem; }
.page-acc .acc-rating { display: flex; align-items: center; gap: .65rem; flex-shrink: 0; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); padding: .55rem .85rem .55rem .55rem; box-shadow: var(--shadow-soft); }
.page-acc .acc-rating-score { display: inline-flex; align-items: center; justify-content: center; min-width: 2.75rem; height: 2.75rem; border-radius: 10px 10px 10px 3px; background: var(--ski-navy); color: #fff; font-weight: 800; font-size: 1.1rem; }
.page-acc .acc-rating-text { display: flex; flex-direction: column; line-height: 1.2; }
.page-acc .acc-rating-text strong { color: var(--ski-navy); font-size: .95rem; }
.page-acc .acc-rating-text span { color: var(--ski-muted); font-size: .8rem; }

/* Gallery (Swiper "gallery"; horizontal scroll-snap until Swiper runs) */
.page-acc .acc-page { padding-top: 1.5rem; }
.page-acc .acc-gallery { position: relative; margin: 0 0 1.75rem; }
.page-acc .acc-gallery-slider { padding: 0; margin: 0; border-radius: var(--card-radius); }
.page-acc .acc-gallery-slide { margin: 0; aspect-ratio: 4 / 3; border-radius: var(--card-radius); overflow: hidden; background: var(--ski-ice); }
.page-acc .acc-gallery-slider:not(.swiper-initialized) .acc-gallery-slide { width: 42%; }
.page-acc .acc-gallery-slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.page-acc .acc-gallery-nav { position: absolute; top: 50%; z-index: 3; transform: translateY(-50%); width: 2.75rem; height: 2.75rem; }
.page-acc .acc-gallery-nav.swiper-nav-prev { left: .75rem; }
.page-acc .acc-gallery-nav.swiper-nav-next { right: .75rem; }
.page-acc .acc-gallery-count { position: absolute; right: .75rem; bottom: .75rem; z-index: 3; display: inline-flex; align-items: center; background: rgba(6, 43, 89, .82); color: #fff; font-size: .8rem; font-weight: 600; border-radius: var(--radius-chip); padding: .3rem .6rem; pointer-events: none; }
.page-acc .acc-gallery-single { border-radius: var(--card-radius); overflow: hidden; background: var(--ski-ice); max-height: 26rem; }
.page-acc .acc-gallery-single img { display: block; width: 100%; height: 100%; max-height: 26rem; object-fit: cover; }
@media (max-width: 991.98px) {
    .page-acc .acc-gallery-slider:not(.swiper-initialized) .acc-gallery-slide { width: 62%; }
}
@media (max-width: 575.98px) {
    .page-acc .acc-page { padding-top: 1rem; }
    .page-acc .acc-gallery { margin-bottom: 1.25rem; }
    .page-acc .acc-gallery-slider:not(.swiper-initialized) .acc-gallery-slide { width: 88%; }
    .page-acc .acc-gallery-nav { width: 2.4rem; height: 2.4rem; }
}

/* Price box (sticky on desktop) */
.page-acc .acc-box { background: #fff; border: 1px solid var(--ski-line); border-radius: var(--radius-panel); box-shadow: var(--shadow-hover); padding: 1.35rem 1.35rem 1.25rem; }
@media (min-width: 992px) {
    .page-acc .acc-box { position: sticky; top: calc(var(--header-h) + 1.25rem); }
}
.page-acc .acc-box-flag { display: inline-flex; align-items: center; margin: 0 0 .6rem; color: var(--ski-promo-dark); font-size: .78rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.page-acc .acc-box-label { margin: 0 0 .1rem; color: var(--ski-muted); font-size: .8rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.page-acc .acc-box-saving { margin: .2rem 0 0; color: var(--ski-promo-dark); font-weight: 700; font-size: .9rem; }
.page-acc .acc-box-facts { display: grid; gap: .5rem; margin: 1rem 0 1.15rem; padding: 1rem 0 0; border-top: 1px solid var(--ski-line-soft); font-size: .92rem; color: var(--ski-text); }
.page-acc .acc-box-facts li { display: flex; align-items: flex-start; gap: .6rem; }
.page-acc .acc-box-facts .bi { color: var(--ski-blue); margin-top: .2rem; }
.page-acc .acc-box-cta { display: flex; align-items: center; justify-content: center; min-height: 3.1rem; font-size: 1.05rem; border-radius: var(--radius-control); }
.page-acc .acc-box-partner { display: flex; align-items: flex-start; gap: .45rem; margin: .7rem 0 0; font-size: .8rem; color: var(--ski-muted); }
.page-acc .acc-box-partner .bi { color: var(--ski-blue); margin-top: .15rem; }
.page-acc .acc-box-all { margin-top: .85rem; min-height: 2.6rem; display: flex; align-items: center; justify-content: center; font-weight: 600; border-radius: var(--radius-control); }
.page-acc .acc-box-empty { color: var(--ski-muted); margin: .25rem 0 1rem; }
.page-acc .btn-outline-primary { --bs-btn-color: var(--ski-blue); --bs-btn-border-color: #b9d3ee; --bs-btn-hover-bg: var(--ski-ice); --bs-btn-hover-color: var(--ski-blue-dark); --bs-btn-hover-border-color: var(--ski-blue); --bs-btn-active-bg: var(--ski-ice); --bs-btn-active-color: var(--ski-blue-dark); --bs-btn-active-border-color: var(--ski-blue); }

/* Prices (box, rows, best prices) */
.page-acc .acc-price { display: inline-flex; flex-wrap: wrap; align-items: baseline; justify-content: flex-end; gap: .1rem .35rem; }
.page-acc .acc-price-promo { display: inline-flex; align-items: center; gap: .35rem; }
.page-acc .acc-price-promo .promo-tag { font-size: .78rem; padding: .12rem .45rem; border-radius: 6px; }
.page-acc .acc-price-old { color: var(--ski-muted); font-size: .85rem; }
.page-acc .acc-price-amount { color: var(--ski-navy); font-weight: 800; font-size: 1.1rem; white-space: nowrap; }
.page-acc .acc-price-per { color: var(--ski-muted); font-size: .8rem; }
.page-acc .acc-price-lg { justify-content: flex-start; }
.page-acc .acc-price-lg .acc-price-promo { flex-basis: 100%; margin-bottom: .15rem; }
.page-acc .acc-price-lg .acc-price-amount { font-size: 2.1rem; line-height: 1.1; letter-spacing: -.02em; }
.page-acc .acc-price-lg .acc-price-per { font-size: .9rem; }

/* Main column sections */
.page-acc .acc-section { margin-top: 2.25rem; }
.page-acc .acc-section-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .25rem 1rem; margin-bottom: 1rem; }
.page-acc .acc-section-title { font-size: 1.35rem; font-weight: 800; color: var(--ski-navy); margin: 0 0 1rem; letter-spacing: -.01em; }
.page-acc .acc-section-head .acc-section-title { margin: 0; }
.page-acc .acc-section-meta { margin: 0; color: var(--ski-muted); font-size: .9rem; }
.page-acc .acc-muted { color: var(--ski-muted); }
.page-acc .acc-text { color: #33415c; line-height: 1.65; overflow-wrap: anywhere; }
.page-acc .acc-text > :last-child { margin-bottom: 0; }

/* Facts */
.page-acc .acc-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 12.5rem), 1fr)); gap: .75rem; margin: 0; }
.page-acc .acc-facts li { display: flex; align-items: center; gap: .7rem; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); padding: .75rem .85rem; min-width: 0; }
.page-acc .acc-fact-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 2.4rem; height: 2.4rem; border-radius: 50%; background: var(--ski-ice); color: var(--ski-blue); font-size: 1.05rem; }
.page-acc .acc-fact-text { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.page-acc .acc-fact-label { color: var(--ski-muted); font-size: .72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.page-acc .acc-fact-value { color: var(--ski-navy); font-weight: 700; font-size: .95rem; overflow-wrap: anywhere; }

/* Highlights (partner "usp") */
.page-acc .acc-usp { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0 0; }
.page-acc .acc-usp li { display: inline-flex; align-items: center; gap: .4rem; background: var(--ski-ice); color: var(--ski-navy); border-radius: var(--radius-chip); padding: .35rem .75rem; font-size: .88rem; font-weight: 600; }
.page-acc .acc-usp .bi { color: var(--ski-blue); }

/* Best price per formula */
.page-acc .acc-best-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: .75rem; margin: 0; }
.page-acc .acc-best-item { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); padding: .9rem 1rem; }
.page-acc .acc-best-formula { margin: 0 0 .2rem; color: var(--ski-blue); font-size: .75rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.page-acc .acc-best-unit { margin: 0; color: var(--ski-navy); font-weight: 700; overflow-wrap: anywhere; }
.page-acc .acc-best-date { display: flex; align-items: center; gap: .35rem; margin: .15rem 0 .75rem; color: var(--ski-muted); font-size: .85rem; }
.page-acc .acc-best-foot { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem; margin-top: auto; }
.page-acc .acc-best-foot .acc-price { justify-content: flex-start; }

/* Price form */
.page-acc .acc-price-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); align-items: end; gap: .75rem; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); box-shadow: var(--shadow-soft); padding: .9rem 1rem 1rem; margin-bottom: 1rem; }
.page-acc .acc-price-form .form-label { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--ski-navy); margin-bottom: .3rem; }
.page-acc .acc-price-form .form-select { min-height: 2.75rem; border-color: #d6e2ef; border-radius: var(--radius-control); background-color: var(--ski-snow); color: var(--ski-text); }
.page-acc .acc-price-form .form-select:focus { background-color: #fff; border-color: var(--ski-blue); box-shadow: var(--focus-ring); }
.page-acc .acc-price-form .btn { min-height: 2.75rem; border-radius: var(--radius-control); }
.page-acc .acc-prices-content[aria-busy="true"] { opacity: .55; transition: opacity .15s ease; }
.page-acc .acc-prices-empty { display: flex; align-items: center; background: #fff; border: 1px dashed #c9d8e8; border-radius: var(--card-radius); padding: 1.1rem 1.25rem; color: var(--ski-muted); margin: 0; }
.page-acc .acc-prices-empty .bi { color: var(--ski-blue); flex-shrink: 0; }

/* Units with their price rows */
.page-acc .acc-units { display: grid; gap: .75rem; }
.page-acc .acc-unit { background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); box-shadow: var(--shadow-soft); overflow: hidden; }
.page-acc .acc-unit-summary { display: flex; align-items: center; gap: .85rem; padding: .75rem 1rem; cursor: pointer; list-style: none; }
.page-acc .acc-unit-summary::-webkit-details-marker { display: none; }
.page-acc .acc-unit-summary:hover { background: var(--ski-snow); }
.page-acc .acc-unit-summary:focus-visible { outline: 3px solid var(--ski-blue); outline-offset: -3px; }
.page-acc .acc-unit-media { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 3.5rem; height: 2.75rem; border-radius: 8px; background: var(--ski-ice); color: var(--ski-blue); overflow: hidden; font-size: 1.2rem; }
.page-acc .acc-unit-media img { width: 100%; height: 100%; object-fit: cover; }
.page-acc .acc-unit-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.page-acc .acc-unit-name { color: var(--ski-navy); font-weight: 700; overflow-wrap: anywhere; }
.page-acc .acc-unit-meta { display: flex; flex-wrap: wrap; gap: .1rem .8rem; color: var(--ski-muted); font-size: .82rem; }
.page-acc .acc-unit-meta .bi { margin-right: .25rem; }
.page-acc .acc-unit-from { flex-shrink: 0; text-align: right; line-height: 1.15; }
.page-acc .acc-unit-from small { display: block; color: var(--ski-muted); font-size: .72rem; }
.page-acc .acc-unit-from strong { color: var(--ski-navy); font-weight: 800; font-size: 1.1rem; white-space: nowrap; }
.page-acc .acc-unit-chevron { flex-shrink: 0; color: var(--ski-blue); transition: transform .2s ease; }
.page-acc .acc-unit[open] .acc-unit-chevron { transform: rotate(180deg); }
.page-acc .acc-unit[open] .acc-unit-summary { border-bottom: 1px solid var(--ski-line-soft); }
.page-acc .acc-unit-desc { padding: .75rem 1rem 0; color: var(--ski-muted); font-size: .88rem; }
.page-acc .acc-unit-desc > :last-child { margin-bottom: 0; }

.page-acc .acc-rows { padding: .25rem .5rem .5rem; }
.page-acc-unit .acc-rows { background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); box-shadow: var(--shadow-soft); }
.page-acc .acc-price-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .9rem; }
.page-acc .acc-price-table th { padding: .55rem .5rem; color: var(--ski-muted); font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; border-bottom: 1px solid var(--ski-line-soft); }
.page-acc .acc-price-table td { padding: .6rem .5rem; border-bottom: 1px solid var(--ski-line-soft); vertical-align: middle; }
.page-acc .acc-price-table tbody tr:last-child td { border-bottom: 0; }
.page-acc .acc-price-table tbody tr:hover td { background: var(--ski-snow); }
.page-acc .acc-price-table tr.is-selected td { background: var(--ski-ice); }
.page-acc .acc-price-table tr.is-selected td:first-child { box-shadow: inset 3px 0 0 var(--ski-blue); }
.page-acc .acc-cell-dates strong { color: var(--ski-navy); }
.page-acc .acc-cell-dates, .page-acc .acc-cell-stay { white-space: nowrap; }
.page-acc .acc-cell-formula { color: var(--ski-text); }
.page-acc .acc-cell-price { text-align: right; }
.page-acc .acc-cell-cta { text-align: right; width: 1%; white-space: nowrap; }
.page-acc .acc-cell-cta .btn { border-radius: var(--radius-control); padding-inline: .85rem; }
.page-acc .acc-rows-more { display: flex; align-items: center; margin: .35rem auto 0; font-weight: 600; text-decoration: none; }
.page-acc .acc-rows-more:hover { text-decoration: underline; }
@media (max-width: 767.98px) {
    .page-acc .acc-price-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    .page-acc .acc-price-table, .page-acc .acc-price-table tbody { display: block; }
    .page-acc .acc-price-table tbody tr { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "dates price" "meta price" "formula cta"; gap: .1rem .75rem; padding: .7rem .5rem; border-bottom: 1px solid var(--ski-line-soft); }
    .page-acc .acc-price-table tbody tr:last-child { border-bottom: 0; }
    .page-acc .acc-price-table td { display: block; padding: 0; border: 0; }
    .page-acc .acc-price-table tbody tr:hover td { background: transparent; }
    .page-acc .acc-price-table tr.is-selected { background: var(--ski-ice); border-radius: 8px; }
    .page-acc .acc-price-table tr.is-selected td { background: transparent; }
    .page-acc .acc-price-table tr.is-selected td:first-child { box-shadow: none; }
    .page-acc .acc-cell-dates { grid-area: dates; white-space: normal; }
    .page-acc .acc-cell-stay { grid-area: meta; color: var(--ski-muted); font-size: .82rem; }
    .page-acc .acc-cell-formula { grid-area: formula; color: var(--ski-muted); font-size: .82rem; align-self: center; }
    .page-acc .acc-cell-price { grid-area: price; align-self: center; }
    .page-acc .acc-cell-cta { grid-area: cta; width: auto; }
    .page-acc .acc-unit-summary { padding: .7rem .8rem; gap: .65rem; }
    .page-acc .acc-unit-media { width: 2.75rem; height: 2.25rem; }
}

/* Description, facilities, location */
.page-acc .acc-feature + .acc-feature { margin-top: 1.25rem; }
.page-acc .acc-feature-title { font-size: 1rem; font-weight: 700; color: var(--ski-navy); margin-bottom: .6rem; }
.page-acc .acc-feature-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); gap: .4rem 1.25rem; }
.page-acc .acc-feature-list li { display: flex; gap: .5rem; align-items: flex-start; }
.page-acc .acc-feature-list .bi { color: var(--ski-blue); margin-top: .25rem; }
.page-acc .acc-feature-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: .6rem; margin: 0; }
.page-acc .acc-feature-grid > div { background: #fff; border: 1px solid var(--ski-line); border-radius: 10px; padding: .6rem .8rem; min-width: 0; }
.page-acc .acc-feature-grid dt { color: var(--ski-navy); font-weight: 700; font-size: .9rem; }
.page-acc .acc-feature-grid dd { margin: 0; color: var(--ski-muted); font-size: .86rem; overflow-wrap: anywhere; }
.page-acc .acc-location-card { display: flex; align-items: center; flex-wrap: wrap; gap: .85rem 1rem; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); padding: 1rem 1.1rem; }
.page-acc .acc-location-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--ski-ice); color: var(--ski-blue); font-size: 1.2rem; flex-shrink: 0; }
.page-acc .acc-location-text { flex: 1 1 12rem; min-width: 0; }
.page-acc .acc-location-name { margin: 0; color: var(--ski-navy); font-weight: 700; }
.page-acc .acc-location-links { display: flex; flex-wrap: wrap; gap: .5rem; }
.page-acc .acc-location-links .btn { display: inline-flex; align-items: center; border-radius: var(--radius-control); font-weight: 600; }
.page-acc .acc-seo .acc-section-title { font-size: 1.1rem; }
.page-acc .acc-seo .acc-text { font-size: .92rem; color: var(--ski-muted); }

/* Similar accommodations */
.page-acc .acc-similar { padding-top: 3rem; }

/* Phones and tablets: fixed price bar */
.page-acc .acc-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1020; display: flex; align-items: center; justify-content: space-between; gap: .75rem; background: #fff; border-top: 1px solid var(--ski-line); box-shadow: 0 -6px 18px rgba(6, 43, 89, .1); padding: .6rem 1rem calc(.6rem + env(safe-area-inset-bottom)); }
.page-acc .acc-bar-price { display: flex; flex-direction: column; min-width: 0; line-height: 1.2; }
.page-acc .acc-bar-label { color: var(--ski-muted); font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.page-acc .acc-bar .acc-price { justify-content: flex-start; }
.page-acc .acc-bar .acc-price-amount { font-size: 1.25rem; }
.page-acc .acc-bar-cta { flex-shrink: 0; min-height: 2.9rem; padding-inline: 1.25rem; display: inline-flex; align-items: center; border-radius: var(--radius-control); }
@media (max-width: 991.98px) {
    body.page-acc:has(.acc-bar) { padding-bottom: 4.75rem; }
    .page-acc .acc-title-row { flex-direction: column; gap: .75rem; }
}
@media (max-width: 575.98px) {
    .page-acc .acc-section { margin-top: 1.75rem; }
    .page-acc .acc-section-title { font-size: 1.2rem; }
    .page-acc .acc-box { padding: 1.1rem; }
    .page-acc .acc-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
    .page-acc .acc-facts li { padding: .6rem .65rem; gap: .5rem; }
    .page-acc .acc-fact-icon { width: 2rem; height: 2rem; font-size: .9rem; }
    .page-acc .acc-fact-value { font-size: .88rem; }
}

@media (prefers-reduced-motion: reduce) {
    .page-acc .acc-unit-chevron, .page-acc .acc-prices-content[aria-busy="true"] { transition: none; }
}
.page-acc .acc-best-foot .btn { margin-left: auto; }

/*
 * Price calendar (register R80; product/_price_calendar.html.twig, assets/controllers/price-calendar.js).
 * Navy type, ski blue for interaction and the selected day, ice for the month's best price,
 * dark promo red only behind the small white discount badges (real discounts).
 */
.page-acc .acc-view-switch { display: inline-flex; gap: .25rem; padding: .25rem; margin-bottom: .75rem; background: #fff; border: 1px solid var(--ski-line); border-radius: 999px; box-shadow: var(--shadow-soft); }
.page-acc .acc-view-switch[hidden], .page-acc .acc-calendar[hidden], .page-acc .acc-prices-content[hidden], .page-acc .acc-cal-panel[hidden], .page-acc .acc-cal-months[hidden], .page-acc .acc-cal-day[hidden], .page-acc .acc-calendar .acc-prices-empty[hidden], .page-acc .acc-cal-legend-item[hidden] { display: none !important; }
.page-acc .acc-view-btn { display: inline-flex; align-items: center; border: 0; background: transparent; color: var(--ski-navy); font-weight: 700; font-size: .9rem; padding: .45rem 1.1rem; border-radius: 999px; min-height: 2.5rem; }
.page-acc .acc-view-btn:hover { background: var(--ski-ice); }
.page-acc .acc-view-btn[aria-pressed="true"] { background: var(--ski-navy); color: #fff; }
.page-acc .acc-price-form.is-calendar [data-price-list-only] { display: none !important; }
.page-acc .acc-calendar { background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); box-shadow: var(--shadow-soft); padding: 1rem 1.1rem 1.1rem; }
.page-acc .acc-calendar[aria-busy="true"] { opacity: .55; }
.page-acc .acc-calendar > .acc-prices-empty { border: 0; padding: .25rem 0; }
.page-acc .acc-cal-months { position: relative; display: flex; flex-wrap: wrap; align-items: flex-end; gap: .6rem 1rem; margin-bottom: 1rem; }
.page-acc .acc-cal-year-group { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.page-acc .acc-cal-year { flex-basis: 100%; font-weight: 800; font-size: 1.05rem; color: var(--ski-navy); line-height: 1.2; }
.page-acc .acc-cal-tab { min-width: 4.25rem; min-height: 2.5rem; padding: .35rem .8rem; border: 1px solid var(--ski-line); border-radius: var(--radius-control); background: #fff; color: var(--ski-navy); font-weight: 600; font-size: .9rem; }
.page-acc .acc-cal-tab:hover { border-color: var(--ski-blue); background: var(--ski-ice); }
.page-acc .acc-cal-tab[aria-selected="true"] { background: var(--ski-navy); border-color: var(--ski-navy); color: #fff; font-weight: 700; }
.page-acc .acc-cal-summary { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; margin-bottom: .75rem; }
.page-acc .acc-cal-summary:empty { display: none; }
.page-acc .acc-cal-jump { display: inline-flex; align-items: center; gap: .5rem; border: 1px solid #cfe3f5; background: var(--ski-ice); color: var(--ski-navy); border-radius: var(--radius-control); padding: .45rem .8rem; font-size: .9rem; text-align: left; }
.page-acc .acc-cal-jump:hover { border-color: var(--ski-blue); }
.page-acc .acc-cal-undated { font-size: .88rem; padding: 0; }
.page-acc .acc-cal-weekbar { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .6rem; }
.page-acc .acc-cal-weeklabel { margin: 0; font-weight: 700; color: var(--ski-navy); font-size: .95rem; text-align: center; }
.page-acc .acc-cal-nav { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; flex: 0 0 auto; border: 1px solid var(--ski-line); border-radius: 50%; background: #fff; color: var(--ski-blue); }
.page-acc .acc-cal-nav:hover:not(:disabled) { border-color: var(--ski-blue); background: var(--ski-ice); }
.page-acc .acc-cal-nav:disabled { color: #a9b8c8; background: var(--ski-snow); cursor: default; }
.page-acc .acc-cal-strip { position: relative; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .45rem; }
.page-acc .acc-cal-col { display: flex; flex-direction: column; gap: .4rem; min-width: 0; padding: .45rem .35rem .4rem; border-radius: var(--radius-control); background: var(--ski-snow); border: 1px solid var(--ski-line-soft); }
.page-acc .acc-cal-col.is-other-month .acc-cal-head { opacity: .7; }
.page-acc .acc-cal-head { margin: 0; display: flex; flex-direction: column; align-items: center; line-height: 1.25; }
.page-acc .acc-cal-weekday { font-size: .74rem; color: var(--ski-muted); text-transform: capitalize; }
.page-acc .acc-cal-date { font-weight: 800; color: var(--ski-navy); font-size: .9rem; white-space: nowrap; }
.page-acc .acc-cal-price { position: relative; display: flex; flex-direction: column; align-items: center; gap: .05rem; width: 100%; padding: .5rem .25rem .45rem; background: #fff; border: 1px solid var(--ski-line); border-radius: 8px; color: var(--ski-navy); line-height: 1.2; text-align: center; }
.page-acc .acc-cal-price:hover { border-color: var(--ski-blue); box-shadow: 0 2px 8px rgba(8, 102, 217, .14); }
.page-acc .acc-cal-price[aria-pressed="true"] { background: var(--ski-blue); border-color: var(--ski-blue); color: #fff; box-shadow: 0 4px 12px rgba(8, 102, 217, .28); }
.page-acc .acc-cal-from { font-size: .7rem; color: var(--ski-muted); }
.page-acc .acc-cal-amount { font-weight: 800; font-size: 1rem; white-space: nowrap; }
.page-acc .acc-cal-count { font-size: .72rem; color: var(--ski-muted); white-space: nowrap; }
.page-acc .acc-cal-price[aria-pressed="true"] .acc-cal-from, .page-acc .acc-cal-price[aria-pressed="true"] .acc-cal-count { color: #dcebfb; }
.page-acc .acc-cal-promo { position: absolute; top: -.5rem; right: -.25rem; background: var(--ski-promo-dark); color: #fff; font-weight: 800; font-size: .66rem; border-radius: 6px; padding: .05rem .3rem; line-height: 1.3; }
.page-acc .acc-cal-price.is-best:not([aria-pressed="true"]) { border: 2px solid var(--ski-blue-2); padding-top: calc(.5rem - 1px); background: var(--ski-ice); }
.page-acc .acc-cal-best { margin-top: .2rem; font-size: .64rem; font-weight: 700; color: var(--ski-navy); background: #fff; border: 1px solid #cfe3f5; border-radius: 999px; padding: 0 .4rem; white-space: nowrap; }
.page-acc .acc-cal-none { margin: auto 0; text-align: center; color: #9aabbd; font-size: 1.1rem; padding: .85rem 0; }
.page-acc .acc-cal-legend { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; margin: .8rem 0 0; font-size: .8rem; }
.page-acc .acc-cal-legend-item { display: inline-flex; align-items: center; gap: .35rem; font-weight: 600; color: var(--ski-navy); }
.page-acc .acc-cal-dot { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; flex: 0 0 auto; }
.page-acc .acc-cal-dot-promo { background: var(--ski-promo); }
.page-acc .acc-cal-dot-best { background: var(--ski-ice); box-shadow: 0 0 0 2px var(--ski-blue-2); }

/* Selected day: its logements */
.page-acc .acc-cal-day { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--ski-line-soft); }
.page-acc .acc-cal-day-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .2rem 1rem; margin-bottom: .75rem; }
.page-acc .acc-cal-day-title { margin: 0; font-size: 1.05rem; font-weight: 800; color: var(--ski-navy); }
.page-acc .acc-cal-day-title::first-letter { text-transform: uppercase; }
.page-acc .acc-cal-day-meta { margin: 0; color: var(--ski-muted); font-size: .88rem; }
.page-acc .acc-cal-units { display: grid; gap: .65rem; margin: 0; }
.page-acc .acc-cal-unit { border: 1px solid var(--ski-line); border-radius: var(--card-radius); overflow: hidden; }
.page-acc .acc-cal-unit-head { display: flex; align-items: center; gap: .75rem; padding: .6rem .85rem; background: var(--ski-snow); border-bottom: 1px solid var(--ski-line-soft); }
.page-acc .acc-cal-unit-media { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 3rem; height: 2.4rem; border-radius: 8px; background: var(--ski-ice); color: var(--ski-blue); overflow: hidden; font-size: 1.1rem; }
.page-acc .acc-cal-unit-media img { width: 100%; height: 100%; object-fit: cover; }
.page-acc .acc-cal-unit-text { display: flex; flex-direction: column; min-width: 0; }
.page-acc .acc-cal-unit-name { color: var(--ski-navy); font-weight: 700; overflow-wrap: anywhere; }
.page-acc .acc-cal-unit-meta { display: flex; flex-wrap: wrap; gap: .1rem .8rem; color: var(--ski-muted); font-size: .82rem; }
.page-acc .acc-cal-unit-meta .bi { margin-right: .25rem; }
.page-acc .acc-cal-rows { margin: 0; }
.page-acc .acc-cal-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: .35rem 1rem; padding: .6rem .85rem; }
.page-acc .acc-cal-row + .acc-cal-row { border-top: 1px solid var(--ski-line-soft); }
.page-acc .acc-cal-row.is-selected { background: var(--ski-ice); box-shadow: inset 3px 0 0 var(--ski-blue); }
.page-acc .acc-cal-row-info { display: flex; flex-direction: column; min-width: 0; font-size: .9rem; }
.page-acc .acc-cal-row-formula { color: var(--ski-text); font-weight: 600; }
.page-acc .acc-cal-row-formula .bi { color: var(--ski-blue); margin-right: .35rem; }
.page-acc .acc-cal-row-stay { color: var(--ski-muted); font-size: .82rem; }
.page-acc .acc-cal-cta { border-radius: var(--radius-control); padding-inline: .85rem; white-space: nowrap; }
@media (max-width: 991.98px) {
    /* Tablets and phones: the week scrolls sideways (about 3.5 days visible at 390 px), the months too. */
    .page-acc .acc-cal-strip { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(5.6rem, 1fr); overflow-x: auto; scroll-snap-type: x mandatory; padding: .5rem .1rem .35rem; overscroll-behavior-x: contain; }
    .page-acc .acc-cal-col { scroll-snap-align: center; }
    .page-acc .acc-cal-months { flex-wrap: nowrap; overflow-x: auto; padding: .1rem .1rem .4rem; scrollbar-width: thin; }
    .page-acc .acc-cal-year-group { flex-wrap: nowrap; }
    .page-acc .acc-cal-year { flex-basis: auto; font-size: .95rem; margin-right: .1rem; }
    .page-acc .acc-cal-tab { flex: 0 0 auto; }
}
@media (max-width: 575.98px) {
    .page-acc .acc-calendar { padding: .85rem .7rem; }
    .page-acc .acc-view-switch { display: flex; width: 100%; }
    .page-acc .acc-view-btn { flex: 1 1 0; justify-content: center; }
    .page-acc .acc-cal-weeklabel { font-size: .86rem; }
    .page-acc .acc-cal-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "info info" "price cta"; gap: .4rem .75rem; padding: .6rem .7rem; }
    .page-acc .acc-cal-row-info { grid-area: info; }
    .page-acc .acc-cal-row-price { grid-area: price; justify-content: flex-start; min-width: 0; }
    .page-acc .acc-cal-cta { grid-area: cta; justify-self: end; }
    .page-acc .acc-cal-unit-head { padding: .55rem .7rem; }
}
@media (prefers-reduced-motion: no-preference) {
    .page-acc .acc-cal-strip, .page-acc .acc-cal-months { scroll-behavior: smooth; }
    .page-acc .acc-cal-price, .page-acc .acc-cal-tab, .page-acc .acc-cal-nav { transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease; }
}

/*
 * Register R81: loading and error states of the prices loaded through the guarded endpoints
 * (assets/controllers/product-prices.js, price-calendar.js, price-request.js). The skeletons keep roughly the
 * height of the content that replaces them, so the page does not jump; hidden without JavaScript
 * (product/_price_noscript_style.html.twig).
 */
.page-acc .acc-best-from { color: var(--ski-muted); font-size: .85rem; margin-right: -.25rem; }
.page-acc .acc-price-skeleton, .page-acc .acc-cal-skeleton { display: grid; gap: .75rem; }
.page-acc .acc-price-skeleton[hidden], .page-acc .acc-cal-skeleton[hidden], .page-acc .acc-cal-status[hidden] { display: none !important; }
.page-acc .acc-skel-row { display: flex; align-items: center; gap: 1rem; background: #fff; border: 1px solid var(--ski-line); border-radius: var(--card-radius); padding: .9rem 1rem; min-height: 5.5rem; }
.page-acc .acc-skel-media { flex: 0 0 96px; height: 72px; border-radius: 8px; }
.page-acc .acc-skel-text { flex: 1 1 auto; display: grid; gap: .5rem; }
.page-acc .acc-skel-text span { display: block; height: .8rem; border-radius: 4px; }
.page-acc .acc-skel-text span:last-child { width: 45%; }
.page-acc .acc-skel-price { flex: 0 0 5rem; height: 1.4rem; border-radius: 4px; }
.page-acc .acc-cal-skel-tabs { display: flex; gap: .5rem; }
.page-acc .acc-cal-skel-tabs span { width: 4.2rem; height: 2.2rem; border-radius: 999px; }
.page-acc .acc-cal-skel-strip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .4rem; }
.page-acc .acc-cal-skel-strip span { height: 6.5rem; border-radius: 10px; }
.page-acc .acc-skel-media, .page-acc .acc-skel-text span, .page-acc .acc-skel-price, .page-acc .acc-cal-skel-tabs span, .page-acc .acc-cal-skel-strip span {
    background: linear-gradient(90deg, var(--ski-line-soft) 25%, #f4f8fc 50%, var(--ski-line-soft) 75%);
    background-size: 200% 100%;
    animation: acc-skel 1.2s ease-in-out infinite;
}
@keyframes acc-skel { from { background-position: 200% 0; } to { background-position: -200% 0; } }
.page-acc .acc-price-status { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; background: #fff; border: 1px dashed #c9d8e8; border-radius: var(--card-radius); padding: 1rem 1.25rem; margin-bottom: .75rem; }
.page-acc .acc-price-status-text { margin: 0; color: var(--ski-navy); font-weight: 600; }
.page-acc .acc-price-status-btn { display: inline-flex; align-items: center; }
.page-acc .acc-calendar > .acc-cal-status .acc-price-status { border: 0; padding: .25rem 0; }
@media (max-width: 575.98px) {
    .page-acc .acc-cal-skel-strip span { height: 5rem; }
    .page-acc .acc-skel-media { flex-basis: 64px; height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
    .page-acc .acc-skel-media, .page-acc .acc-skel-text span, .page-acc .acc-skel-price, .page-acc .acc-cal-skel-tabs span, .page-acc .acc-cal-skel-strip span { animation: none; }
}
