:root { color-scheme: dark; }
* { box-sizing: border-box; }
[hidden] { display: none !important; }
.resort-map-page {
  /* Hilton palette from lounge-card.css and the extension's Hilton provider card. */
  --resort-accent: #643459;
  --resort-accent-rgb: 100, 52, 89;
  --resort-accent-highlight: #c07cb0;
  --resort-accent-label: #c98fbd;
  --resort-accent-chip: #dcb3d3;
  --resort-accent-hover: #502a47;
  --resort-accent-wash: #f7f0f5;
  --resort-accent-border: #e5dbe3;
  --resort-accent-ink: #352431;
  --resort-accent-muted: #756371;
  margin: 0;
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: #0d1117;
  color: #e6edf3;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
.resort-map-page .hx-site-header { flex: 0 0 auto; }
.resort-map-page .hx-site-nav { max-width: none; }
.resort-map-page a { text-underline-offset: 3px; }
.resort-map-page button { font: inherit; cursor: pointer; }
.resort-map-main :focus-visible { outline: none; }
.resort-map-main { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.resort-map-heading { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 23px 28px; }
.resort-map-eyebrow { margin: 0 0 7px; color: var(--resort-accent-label); font-size: 11px; letter-spacing: 0.14em; font-weight: 650; text-transform: uppercase; }
.resort-map-heading h1 { margin: 0; font-size: clamp(20px, 2.2vw, 28px); font-weight: 650; letter-spacing: -0.035em; line-height: 1.2; }
.resort-map-intro { color: #a7b0bc; font-size: 13px; line-height: 1.5; margin: 9px 0 0; }
.resort-map-footer { flex: 0 0 auto; padding: 8px max(16px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); border-top: 1px solid #2a2f3a; color: #8b949e; font-size: 11px; line-height: 1.5; text-align: center; }
.resort-map-footer-links { white-space: nowrap; margin-left: 6px; }
.resort-map-footer a { color: #8b949e; }
.resort-map-stage { position: relative; flex: 1; min-height: 0; isolation: isolate; background: #111d2a; border-top: 1px solid #2a2f3a; }
#resort-map { width: 100%; height: 100%; }
.resort-map-status { position: absolute; z-index: 4; inset: 50% auto auto 50%; transform: translate(-50%, -50%); width: min(360px, calc(100% - 40px)); padding: 28px 24px; border: 1px solid #473541; border-radius: 16px; background: #241b25f5; text-align: center; box-shadow: 0 12px 48px #0004; }
.resort-map-status h2 { margin: 12px 0 8px; font-size: 19px; line-height: 1.3; }
.resort-map-status p { color: #b3bcc8; font-size: 14px; line-height: 1.5; }
.resort-map-status a { display: inline-block; padding-block: 10px; color: var(--resort-accent-chip); font-size: 13px; }
#resort-map-retry { display: block; margin: 10px auto 0; min-height: 44px; padding: 8px 20px; border: 1px solid var(--resort-accent-highlight); border-radius: 8px; background: var(--resort-accent); color: #fff; }
.resort-map-spinner { display: inline-block; width: 24px; height: 24px; border: 2px solid var(--resort-accent); border-top-color: var(--resort-accent-chip); border-radius: 50%; animation: resort-map-spin 1s linear infinite; }
.resort-inline-loader { display: inline-block; width: 14px; height: 14px; vertical-align: middle; border: 2px solid var(--resort-accent-border); border-top-color: var(--resort-accent); border-right-color: var(--resort-accent); border-radius: 50%; animation: resort-map-spin .9s linear infinite; }
@keyframes resort-map-spin { to { transform: rotate(360deg); } }
.resort-map-page .mapboxgl-ctrl-top-right { top: 6px; right: 6px; }
.resort-map-page .mapboxgl-ctrl-bottom-left,
.resort-map-page .mapboxgl-ctrl-bottom-right { bottom: env(safe-area-inset-bottom); }
.resort-map-page .mapboxgl-ctrl-group { overflow: hidden; border-radius: 10px; }
.resort-map-page .mapboxgl-ctrl-group button { width: 44px; height: 44px; }
.resort-map-page .mapboxgl-popup { z-index: 3; }
.resort-map-page .mapboxgl-popup-content { padding: 0; background: #fff; color: var(--resort-accent-ink); border-radius: 14px; box-shadow: 0 8px 36px #29112433; }
.resort-map-page .mapboxgl-popup-content { max-height: var(--resort-card-max-height, 70dvh); overflow-y: auto; overscroll-behavior: contain; color-scheme: light; }
.resort-map-details { position: relative; padding: 22px; font-size: 14px; line-height: 1.5; color: var(--resort-accent-ink); }
.resort-map-details h2 { font-size: 19px; line-height: 1.3; letter-spacing: -0.025em; margin: 7px 26px 8px 0; }
.resort-map-details p { margin: 0 0 14px; color: var(--resort-accent-muted); }
.resort-map-details .resort-map-detail-label { margin: 0; color: var(--resort-accent); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 700; }
.resort-map-close { position: absolute; top: 5px; right: 5px; width: 44px; height: 44px; border: 0; border-radius: 10px; background: transparent; color: var(--resort-accent-muted); font-size: 24px !important; }
.resort-map-close:hover { background: var(--resort-accent-wash); }
.resort-map-hotel-link { display: inline-flex; align-items: center; justify-content: center; gap: 16px; min-height: 44px; padding: 10px 15px; border-radius: 8px; background: var(--resort-accent); color: #fff; font-weight: 600; text-decoration: none; }
.resort-map-hotel-link:hover { background: var(--resort-accent-hover); }
.resort-map-choices { list-style: none; padding: 0; margin: 12px 0 0; max-height: 230px; overflow-y: auto; overscroll-behavior: contain; }
.resort-map-choices li + li { border-top: 1px solid var(--resort-accent-border); }
.resort-map-choices button { width: 100%; min-height: 48px; padding: 12px 4px; border: 0; text-align: left; background: transparent; color: var(--resort-accent); line-height: 1.4; }
.resort-map-choices button:hover { background: var(--resort-accent-wash); }
.resort-map-back { display: block; min-height: 44px; border: 0; padding: 0; margin: -6px 0 5px; background: transparent; color: var(--resort-accent); font-size: 12px !important; }
.resort-map-mobile-details { position: absolute; left: max(12px, env(safe-area-inset-left)); right: max(12px, env(safe-area-inset-right)); bottom: 36px; z-index: 3; background: #fff; border-radius: 16px; box-shadow: 0 8px 36px #29112433; max-height: min(45dvh, 350px); overflow-y: auto; overscroll-behavior: contain; }
.resort-map-noscript { position: absolute; inset: 0; z-index: 5; display: grid; align-content: center; text-align: center; padding: 30px; background: #111d2a; line-height: 1.8; }
.resort-map-noscript a { color: var(--resort-accent-chip); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 640px) {
  .resort-map-heading { display: block; padding: 8px 12px; }
  .resort-map-eyebrow { font-size: 9px; line-height: 1.2; margin-bottom: 3px; }
  .resort-map-heading h1 { font-size: 17px; max-width: none; }
  .resort-map-intro { display: none; }
  .resort-map-page .mapboxgl-ctrl-top-right { top: 2px; right: 2px; }
  .resort-map-details { padding: 18px; }
  .resort-map-details h2 { font-size: 18px; }
}
@media (max-height: 500px) {
  .resort-map-heading { padding: 6px 12px; display: flex; }
  .resort-map-heading h1 { font-size: 17px; }
  .resort-map-eyebrow, .resort-map-intro { display: none; }
  .resort-map-mobile-details { max-height: calc(100% - 48px); bottom: 36px; left: 65px; right: 65px; }
}
@media (prefers-reduced-motion: reduce) {
  .resort-map-spinner, .resort-inline-loader { animation: none; }
}

/* The production price card uses only the mock's compact light treatment. */
.resort-rate-card { width: min(390px, calc(100vw - 24px)); color-scheme: light; background: #fff; color: var(--resort-accent-ink); font-size: 12px; line-height: 1.4; }
.resort-rate-card :where(p, h2, h3) { margin: 0; }
.resort-rate-card button { color: inherit; }
.resort-rate-card button:disabled { cursor: default; }
.resort-rate-header { position: sticky; top: 0; z-index: 1; background: #fff; padding: 14px 14px 8px; }
.resort-rate-eyebrow { display: flex; align-items: center; gap: 6px; padding-right: 28px; margin-bottom: 4px; color: var(--resort-accent); font-size: 13px; font-weight: 550; }
.resort-rate-header h2 { padding-right: 28px; font-size: 18px; font-weight: 650; line-height: 1.25; letter-spacing: -.035em; overflow-wrap: anywhere; }
.resort-rate-location { margin-top: 3px; color: var(--resort-accent-muted); font-size: 12px; }
.resort-rate-summary { margin: 0 14px 10px; padding: 8px 10px; border-radius: 7px; background: var(--resort-accent-wash); font-size: 12px; line-height: 1.5; }
.resort-rate-summary > span, .resort-rate-summary > strong { display: block; }
.resort-rate-summary > span { color: var(--resort-accent-muted); }
.resort-rate-summary > strong { margin-top: 2px; font-weight: 600; }
.resort-rate-summary button { border: 0; background: transparent; color: var(--resort-accent); min-height: 28px; padding: 0; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.resort-rate-summary button:disabled { text-decoration: none; }
.resort-rate-summary-placeholder { display: flex; align-items: center; min-height: 28px; }
.resort-rate-shimmer { display: inline-block; width: 64px; max-width: 100%; height: 12px; border-radius: 4px; background: linear-gradient(100deg, #eee8ed 20%, #faf8fa 45%, #eee8ed 70%); background-size: 200% 100%; animation: resort-rate-shimmer 1.4s ease-in-out infinite; }
.resort-rate-summary-placeholder .resort-rate-shimmer { width: 75%; }
.resort-rate-freshness .resort-rate-shimmer { width: 160px; height: 11px; vertical-align: middle; }
.resort-rate-day .resort-rate-shimmer { width: 25px; height: 10px; }
@keyframes resort-rate-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) { .resort-rate-shimmer { animation: none; } }
.resort-rate-calendar { border-top: 1px solid #eee8ed; padding: 10px 14px; }
.resort-rate-month-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.resort-rate-month { min-width: 0; min-height: 54px; padding: 7px 8px; border: 1px solid #e9e0e7; border-radius: 6px; background: #fff; text-align: left; }
.resort-rate-month > span { display: flex; justify-content: space-between; align-items: baseline; gap: 4px; color: var(--resort-accent-muted); font-size: 12px; }
.resort-rate-month small { font-size: 10px; font-weight: 450; color: var(--resort-accent-muted); }
.resort-rate-month strong { display: flex; align-items: baseline; gap: 3px; min-height: 21px; margin-top: 3px; font-size: 15px; font-weight: 650; letter-spacing: -.02em; white-space: nowrap; }
.resort-rate-month:hover { border-color: var(--resort-accent); background: var(--resort-accent-wash); }
.resort-rate-month.is-empty { border-style: dashed; background: #faf9fa; }
.resort-rate-month.is-empty strong { font-size: 11px; font-weight: 450; letter-spacing: 0; white-space: normal; }
.resort-rate-calendar-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.resort-rate-calendar-toolbar svg { flex-shrink: 0; width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.resort-rate-card .resort-rate-back { display: inline-flex; align-items: center; gap: 5px; min-height: 44px; padding: 6px 4px; border: 0; border-radius: 6px; background: transparent; color: var(--resort-accent); font-size: 12px; font-weight: 500; white-space: nowrap; }
.resort-rate-back svg { width: 16px; height: 16px; }
.resort-rate-navigation { display: grid; flex: 0 0 auto; margin-left: auto; grid-template-columns: 44px auto 44px; align-items: center; gap: 2px; }
.resort-rate-navigation h3 { font-size: 13px; font-weight: 600; text-align: center; white-space: nowrap; }
.resort-rate-navigation button { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--resort-accent); }
.resort-rate-navigation button:not(:disabled):hover, .resort-rate-card .resort-rate-back:hover { background: var(--resort-accent-wash); }
.resort-rate-navigation button:disabled { opacity: .3; }
.resort-rate-weekdays, .resort-rate-day-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.resort-rate-weekdays span { text-align: center; color: var(--resort-accent-muted); padding-bottom: 5px; font-size: 12px; font-weight: 450; }
.resort-rate-day { min-width: 0; min-height: 44px; padding: 4px 0; border: 1px solid transparent; border-radius: 5px; background: #faf8fa; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
.resort-rate-day > span { font-size: 10px; color: var(--resort-accent-muted); }
.resort-rate-day strong { max-width: 100%; font-size: 11px; font-weight: 650; letter-spacing: -.02em; overflow-wrap: anywhere; }
@media (hover: hover) {
  .resort-rate-day:not(:disabled):hover { border-color: var(--resort-accent); }
}
.resort-rate-card .resort-rate-day.is-selected { background: var(--resort-accent); color: #fff; }
.resort-rate-day.is-selected > span { color: #ead8e5; }
.resort-rate-card .resort-rate-day:disabled { background: #fcfbfc; color: #968792; }
.resort-rate-day:disabled > span { color: #968792; }
.resort-rate-day.is-past { opacity: .5; }
.resort-rate-legend { display: flex; flex-wrap: wrap; gap: 3px 12px; margin-top: 6px; color: var(--resort-accent-muted); font-size: 11px; }
.resort-rate-empty { display: grid; align-content: center; justify-items: center; min-height: 130px; padding: 16px; border: 1px dashed #ded2da; border-radius: 9px; background: #faf8fa; text-align: center; }
.resort-rate-empty h3 { font-size: 14px; font-weight: 600; margin-bottom: 7px; }
.resort-rate-empty p { max-width: 270px; color: var(--resort-accent-muted); font-size: 12px; }
.resort-rate-card .resort-rate-retry { min-height: 44px; margin-top: 8px; padding: 6px 15px; border: 1px solid var(--resort-accent-border); border-radius: 7px; background: #fff; color: var(--resort-accent); }
.resort-rate-footer { border-top: 1px solid #eee8ed; padding: 6px 14px; }
.resort-rate-freshness { min-width: 0; color: var(--resort-accent-muted); font-size: 11px; }
.resort-rate-hilton { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 44px; margin: 6px 0; padding: 9px 12px; border: 1px solid var(--resort-accent); border-radius: 7px; background: var(--resort-accent); color: #fff; text-decoration: none; font-size: 13px; font-weight: 600; }
.resort-rate-hilton:hover { background: var(--resort-accent-hover); }
.resort-rate-hilton span { font-size: 16px; }
.resort-rate-disclaimer { margin-top: 0; }
.resort-rate-disclaimer summary { display: block; min-height: 24px; padding: 4px 0; color: var(--resort-accent-muted); font-size: 11px; cursor: pointer; list-style: none; }
.resort-rate-disclaimer summary::-webkit-details-marker { display: none; }
.resort-rate-disclaimer-label { white-space: nowrap; }
.resort-rate-disclaimer-label::after {
  content: ''; display: inline-block; width: 5px; height: 5px; margin-left: 6px;
  border-right: 1px solid var(--resort-accent); border-bottom: 1px solid var(--resort-accent);
  vertical-align: middle; transform: rotate(-45deg);
}
.resort-rate-disclaimer[open] .resort-rate-disclaimer-label::after { transform: translateY(-2px) rotate(45deg); }
.resort-rate-note { margin-top: 4px; color: var(--resort-accent-muted); font-size: 11px; line-height: 1.4; }
.resort-rate-card .resort-rate-location-back { min-height: 36px; margin-bottom: 4px; padding: 0; border: 0; background: transparent; color: var(--resort-accent); font-size: 11px; }
.resort-map-choice-price { display: block; margin-top: 3px; font-size: 12px; color: var(--resort-accent-muted); }
.resort-map-rate-notice { position: static; max-width: 100%; margin-top: 8px; padding: 8px 12px; border-radius: 8px; background: #fff; color: var(--resort-accent-ink); font-size: 12px; box-shadow: 0 3px 15px #29112420; }
.resort-map-rate-notice button { display: block; min-height: 36px; padding: 0; border: 0; background: transparent; color: var(--resort-accent); text-decoration: underline; }

@media (max-width: 640px), (max-height: 500px) {
  .resort-map-page .mapboxgl-ctrl-top-right { display: none; }
  .resort-map-mobile-details { left: max(8px, env(safe-area-inset-left)); right: max(8px, env(safe-area-inset-right)); bottom: max(8px, env(safe-area-inset-bottom)); max-height: calc(100% - var(--resort-map-content-top, 0px) - 56px - max(8px, env(safe-area-inset-bottom))); width: auto; max-width: 440px; margin-inline: auto; color-scheme: light; }
  .resort-rate-card { width: 100%; }
  .resort-rate-header, .resort-rate-calendar, .resort-rate-footer { padding-inline: 12px; }
  .resort-rate-month { padding-inline: 7px; }
}
@media (max-width: 350px) {
  .resort-rate-summary { font-size: 12px; }
  .resort-rate-month-grid { gap: 4px; }
  .resort-rate-month { padding-inline: 6px; }
  .resort-rate-day-grid { gap: 2px; }
}

/* Filters float over the map; measured bounds reserve room for open calendars. */
.resort-map-filters { position: absolute; top: 16px; left: 16px; z-index: 3; width: max-content; max-width: min(560px, calc(100% - 96px)); color: var(--resort-accent-ink); color-scheme: light; }
.resort-filter-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.resort-filter-buttons button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 44px; max-width: 100%; padding: 10px 14px; border: 1px solid #dfd8dd; border-radius: 24px; background: #fff; color: var(--resort-accent-ink); font-size: 13px; font-weight: 550; box-shadow: 0 3px 10px #0002; }
.resort-filter-value { min-width: 0; }
.resort-filter-buttons svg, .resort-filter-dialog svg { width: 18px; height: 18px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.resort-filter-buttons svg { width: 17px; height: 17px; color: var(--resort-accent); }
.resort-filter-buttons .resort-filter-chevron { width: 15px; height: 15px; margin-left: 3px; color: var(--resort-accent-muted); }
.resort-filter-buttons button:hover:not(:disabled) { border-color: #b186a4; background: #faf6f9; }
.resort-filter-buttons button.is-active { background: #f9f1f7; border-color: #cbaec3; color: var(--resort-accent); }
.resort-filter-buttons [aria-expanded="true"] .resort-filter-chevron { transform: rotate(180deg); }
.resort-filter-buttons button:disabled { opacity: .65; cursor: default; }
.resort-filter-buttons [data-filter="clear"] { padding-inline: 12px; font-size: 12px; color: var(--resort-accent); }
.resort-filter-status, .resort-filter-notice { margin: 8px 0 0; padding: 8px 12px; border: 1px solid var(--resort-accent-border); border-radius: 10px; background: #fffffff5; color: var(--resort-accent-muted); font-size: 12px; line-height: 1.4; }
.resort-filter-notice { color: #805021; }
.resort-map-filters .resort-map-rate-notice { padding: 8px 12px; border: 1px solid var(--resort-accent-border); border-radius: 10px; background: #fffffff5; }
.resort-filter-dialog { width: min(660px, calc(100vw - 32px)); max-height: calc(100dvh - 40px); margin: auto; padding: 0; border: 1px solid var(--resort-accent-border); border-radius: 17px; background: #fff; color: var(--resort-accent-ink); color-scheme: light; box-shadow: 0 20px 80px #0006; overflow-y: auto; overscroll-behavior: contain; }
.resort-filter-dialog::backdrop { background: #0d111780; }
.resort-filter-dialog header, .resort-filter-dialog footer { display: flex; justify-content: space-between; gap: 12px; background: #fff; position: sticky; z-index: 2; }
.resort-filter-dialog header { align-items: flex-start; top: 0; padding: 22px 23px 0; }
.resort-filter-dialog footer { align-items: center; bottom: 0; padding: 14px 23px; border-top: 1px solid #eee7ec; }
.resort-filter-dialog h2 { margin: 0; font-size: 19px; font-weight: 650; letter-spacing: -.035em; line-height: 1.25; }
.resort-filter-help { margin: 6px 0 0; color: var(--resort-accent-muted); font-size: 12px; line-height: 1.6; }
.resort-filter-dialog button { min-height: 44px; padding: 10px 14px; border: 1px solid var(--resort-accent-border); border-radius: 9px; background: #fff; color: var(--resort-accent); font-size: 13px; }
.resort-filter-dialog button:hover:not(:disabled) { background: var(--resort-accent-wash); }
.resort-filter-dialog button:disabled { opacity: .4; cursor: default; }
.resort-filter-dialog [data-filter-action="close"] { display: grid; place-items: center; flex-shrink: 0; border: 0; border-radius: 50%; padding: 0; width: 44px; margin: -9px -10px 0 0; color: var(--resort-accent-muted); }
.resort-filter-dialog [data-filter-action="clear"] { border-color: var(--resort-accent); min-width: 110px; font-weight: 600; }
.resort-filter-dialog [data-filter-action="apply"] { background: var(--resort-accent); border-color: var(--resort-accent); color: #fff; min-width: 100px; font-weight: 600; }
.resort-filter-dialog [data-filter-action="apply"]:hover:not(:disabled) { background: var(--resort-accent-hover); }
.resort-filter-body { padding: 21px 23px 19px; }
.resort-date-fields { display: grid; grid-template-columns: minmax(0, 1fr) 25px minmax(0, 1fr); align-items: center; }
.resort-date-fields label { display: block; border: 1px solid var(--resort-accent-border); border-radius: 9px; padding: 9px 12px; background: #fff; }
.resort-date-fields label.is-active { border-color: var(--resort-accent); }
.resort-date-fields label > span { display: block; font-size: 10px; color: var(--resort-accent-muted); margin-bottom: 5px; }
.resort-date-fields input { width: 100%; min-width: 0; border: 0; background: none; color: var(--resort-accent-ink); font: inherit; font-size: 13px; font-weight: 550; line-height: 20px; padding: 0; min-height: 20px; }
.resort-date-fields input::placeholder { color: #a48c9b; font-size: 13px; font-weight: 400; }
.resort-filter-dialog input:focus { outline: none; }
.resort-date-fields input[aria-invalid="true"] { color: #a13844; }
.resort-date-arrow { text-align: center; color: #a08c9a; font-size: 14px; }
.resort-picker { position: relative; margin-top: 24px; }
.resort-picker-nav { position: absolute; top: -10px; left: -7px; right: -7px; display: flex; justify-content: space-between; pointer-events: none; }
.resort-picker-nav button { pointer-events: auto; display: grid; place-items: center; width: 40px; min-height: 40px; padding: 0; border: 0; border-radius: 50%; }
.resort-picker-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.resort-picker-month h3 { margin: 0 30px 17px; text-align: center; font-size: 12px; line-height: 20px; font-weight: 600; }
.resort-picker-weekdays, .resort-picker-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.resort-picker-weekdays span { text-align: center; font-size: 10px; color: var(--resort-accent-muted); padding-bottom: 9px; }
.resort-picker-days { row-gap: 4px; }
.resort-picker-days button { position: relative; padding: 4px 0; min-width: 0; min-height: 32px; border: 0; border-radius: 50%; background: transparent; color: var(--resort-accent-ink); font-size: 11px; }
.resort-picker-days button > span { display: grid; place-items: center; position: relative; width: 30px; height: 30px; margin: -3px auto; border-radius: 50%; }
.resort-picker-days button:hover:not(:disabled) { background: transparent; }
@media (hover: hover) {
  .resort-picker-days button:not(.is-endpoint):hover:not(:disabled) > span { background: var(--resort-accent-border); }
}
.resort-picker-days button.is-in-range { border-radius: 0; color: var(--resort-accent); }
.resort-picker-days button.is-in-range, .resort-picker-days button.is-in-range:hover { background: var(--resort-accent-wash); }
.resort-picker-days button.is-start { border-radius: 50% 0 0 50%; }
.resort-picker-days button.is-end { border-radius: 0 50% 50% 0; }
.resort-picker-days button.is-start.is-end { border-radius: 50%; }
.resort-picker-days button.is-endpoint > span { background: var(--resort-accent); color: #fff; }
.resort-picker-days button.is-today:not(.is-endpoint) > span::after { content: ''; position: absolute; bottom: 2px; left: calc(50% - 1.5px); width: 3px; height: 3px; background: var(--resort-accent); border-radius: 50%; }
.resort-date-hint { margin: 14px 0 0; font-size: 11px; line-height: 1.5; color: var(--resort-accent-muted); }
.resort-date-hint.is-invalid, .resort-price-error { color: #a13844; }
.resort-filter-dialog[data-filter-kind="price"] { width: min(420px, calc(100vw - 32px)); }
.resort-filter-dialog[data-filter-kind="price"] header { padding: 16px 18px 0; }
.resort-filter-dialog[data-filter-kind="price"] h2 { font-size: 18px; }
.resort-filter-dialog[data-filter-kind="price"] .resort-filter-help { margin-top: 4px; }
.resort-filter-dialog[data-filter-kind="price"] .resort-filter-body { padding: 12px 18px 14px; }
.resort-filter-dialog[data-filter-kind="price"] footer { padding: 10px 18px; }
.resort-price-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; border: 1px solid var(--resort-accent-border); border-radius: 10px; }
.resort-price-amount { display: flex; align-items: baseline; gap: 3px; min-width: 0; padding: 12px; cursor: text; }
.resort-price-unit { flex-shrink: 0; align-self: center; margin-left: auto; color: var(--resort-accent-muted); font-size: 12px; white-space: nowrap; }
.resort-price-prefix { flex-shrink: 0; font-size: 24px; font-weight: 600; line-height: 32px; letter-spacing: -.035em; color: var(--resort-accent); }
.resort-price-amount input { flex: 0 1 auto; width: 2ch; min-width: 1ch; height: 32px; border: 0; margin: 0; padding: 0; color: var(--resort-accent); background: none; font: inherit; font-size: 24px; font-weight: 600; letter-spacing: -.035em; line-height: 32px; font-variant-numeric: tabular-nums; appearance: textfield; }
.resort-price-amount input::-webkit-inner-spin-button, .resort-price-amount input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.resort-price-field:has(input[aria-invalid="true"]) { border-color: #a13844; }
.resort-filter-dialog .resort-price-200 { align-self: stretch; min-width: 96px; padding: 12px 14px; border: 0; border-left: 1px solid var(--resort-accent-border); border-radius: 0 9px 9px 0; background: var(--resort-accent-wash); font-size: 12px; font-weight: 600; white-space: nowrap; }
.resort-filter-dialog .resort-price-200:hover:not(:disabled),
.resort-filter-dialog .resort-price-200[aria-pressed="true"] { background: #efe2eb; }
@media (max-width: 360px) {
  .resort-price-amount { padding-inline: 10px; }
  .resort-filter-dialog .resort-price-200 { min-width: 80px; padding-inline: 10px; }
}
.resort-price-error { margin: 8px 0 0; font-size: 11px; line-height: 1.5; }
.resort-rate-card .is-outside { background: #fff; color: var(--resort-accent-muted); }
.resort-rate-month.is-outside { border-style: dashed; }
.resort-rate-card .resort-rate-month.is-no-match,
.resort-rate-card .resort-rate-day.is-no-match:not(.is-selected) { background: #f3f3f3; border-color: #e0e0e0; color: #707070; }
.resort-rate-month.is-no-match > span, .resort-rate-month.is-no-match small,
.resort-rate-day.is-no-match:not(.is-selected) > span { color: inherit; }
.resort-rate-card .resort-rate-month.is-no-match:hover { border-color: #a8a8a8; }
.resort-rate-day.is-no-match:not(.is-selected) strong { font-weight: 450; }
.resort-rate-card .resort-rate-day.is-selected { background: var(--resort-accent); color: #fff; border-color: var(--resort-accent); }
.resort-day-lowest { font-size: 8px; font-weight: 500; line-height: 1; }
.resort-selected-notes { margin: 5px 0; color: var(--resort-accent-muted); font-size: 11px; line-height: 1.4; }
@media (max-width: 640px), (max-height: 500px) {
  .resort-map-filters { top: 8px; left: max(8px, env(safe-area-inset-left)); max-width: min(560px, calc(100% - max(8px, env(safe-area-inset-left)) - max(8px, env(safe-area-inset-right)))); }
  .resort-filter-buttons { gap: 6px; }
  .resort-filter-buttons button { min-height: 36px; gap: 6px; padding: 7px 10px; font-size: 11px; line-height: 16px; }
  .resort-filter-buttons [data-filter="clear"] { padding-inline: 10px; font-size: 11px; }
  .resort-filter-buttons svg { width: 15px; height: 15px; }
  .resort-filter-buttons .resort-filter-chevron { width: 12px; height: 12px; margin-left: 0; }
  .resort-filter-status, .resort-filter-notice { font-size: 11px; margin-top: 5px; }
  .resort-filter-dialog { width: min(420px, calc(100vw - 24px)); max-height: calc(100dvh - 12px); }
  .resort-filter-dialog header { padding: 14px 16px 0; }
  .resort-filter-dialog h2 { font-size: 18px; }
  .resort-filter-help { margin-top: 4px; line-height: 1.4; }
  .resort-filter-body { padding: 12px 16px; }
  .resort-filter-dialog footer { padding: 10px 16px; }
  .resort-date-fields { grid-template-columns: minmax(0, 1fr) 16px minmax(0, 1fr); }
  .resort-date-fields label { min-height: 48px; padding: 6px 8px; }
  .resort-date-fields label > span { line-height: 12px; margin-bottom: 2px; }
  .resort-picker { margin-top: 18px; }
  .resort-picker-months { grid-template-columns: minmax(0, 1fr); }
  .resort-picker-month h3 { font-size: 13px; margin-bottom: 12px; }
  .resort-picker-weekdays span { line-height: 14px; padding-bottom: 5px; }
  .resort-picker-days { row-gap: 2px; }
  .resort-picker-days button { min-height: 36px; padding: 2px 0; font-size: 12px; }
  .resort-picker-days button > span { margin: 0 auto; }
  .resort-date-hint { margin-top: 10px; }
}
@media (max-width: 640px) {
  .resort-filter-dialog, .resort-filter-dialog[data-filter-kind="price"] { width: 100%; max-width: none; margin: auto 0 0; border-radius: 19px 19px 0 0; padding-bottom: env(safe-area-inset-bottom); }
  .resort-rate-summary { margin-inline: 12px; }
}
@media (max-width: 640px) and (max-height: 650px), (max-height: 500px) {
  .resort-rate-header { padding-top: 10px; padding-bottom: 6px; }
  .resort-rate-header h2 { font-size: 16px; line-height: 1.2; }
  .resort-rate-eyebrow { font-size: 11px; margin-bottom: 2px; }
  .resort-rate-location { font-size: 10px; }
  .resort-rate-summary { padding: 6px 8px; font-size: 11px; line-height: 1.35; margin-bottom: 8px; }
}
