/* ---------- maps: state outline, explore, route ---------- */
.lc-mapgrid { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 1024px) { .lc-mapgrid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); } }
.lc-mapgrid .lc-ledger { max-width: none; }
.lc-mapgrid .lc-ledger li.is-lit { background: var(--wp--preset--color--mist); }
.lc-map__canvas { position: relative; width: 100%; }
.lc-map__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.lc-map__outline { fill: var(--wp--preset--color--mist); stroke: var(--wp--preset--color--saltbush); stroke-opacity: 0.35; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.lc-map--region .lc-map__canvas { background: var(--wp--preset--color--mist); box-shadow: inset 0 0 0 1px var(--lc-hair); }
.lc-map__road { fill: none; stroke: var(--wp--preset--color--saltbush); stroke-width: 1.5; stroke-opacity: 0.25; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset var(--lc-t3) var(--lc-ease), stroke-opacity var(--lc-t1) var(--lc-ease), stroke-width var(--lc-t1) var(--lc-ease); }
.lc-map.is-drawn .lc-map__road { stroke-dashoffset: 0; }
.lc-map__road.is-on { stroke-opacity: 1; stroke-width: 2.5; stroke: var(--lc-state); }
.lc-map__dot { fill: var(--lc-state); stroke: var(--wp--preset--color--saltbush); stroke-width: 1.5; vector-effect: non-scaling-stroke; transition: r var(--lc-t1) var(--lc-ease); }
.lc-map__dot.is-hollow { fill: var(--wp--preset--color--eggshell); stroke: var(--lc-state); stroke-width: 2.5; }
.lc-map__dot.is-lit, .lc-map__dot.is-picked { r: 13; }
.lc-map__hub { fill: var(--wp--preset--color--saltbush); }
.lc-map__stop circle { fill: var(--wp--preset--color--saltbush); }
.lc-map__stop text { fill: #fff; font: 500 18px var(--wp--preset--font-family--body); }
.lc-map__scale path { stroke: var(--wp--preset--color--saltbush); stroke-width: 2; vector-effect: non-scaling-stroke; }
.lc-map__scale text { fill: var(--wp--preset--color--grey); font: 400 18px var(--wp--preset--font-family--body); }
.lc-map__label, .lc-map__hublabel, .lc-map__stoplabel {
  position: absolute; transform: translate(14px, -50%); white-space: nowrap;
  font: 500 13px/1 var(--wp--preset--font-family--body); color: var(--wp--preset--color--saltbush);
}
.lc-map__label { min-height: var(--lc-target); min-width: var(--lc-target); padding: 0 8px; border: 0; background: transparent; cursor: pointer; display: inline-flex; align-items: center; border-radius: 999px; transform: translate(2px, -50%); }
.lc-map__label:hover, .lc-map__label.is-lit, .lc-map__label[aria-pressed="true"] { background: rgb(255 255 255 / 0.85); }
.lc-map__label[aria-pressed="true"] { box-shadow: 0 0 0 1px var(--lc-hair); }
.lc-map__label.is-hollow { color: var(--wp--preset--color--grey); }
.lc-map__hublabel { font-weight: 500; text-transform: uppercase; letter-spacing: 0.2em; font-size: 10px; transform: translate(14px, -50%); }
.lc-map__stoplabel { transform: translate(22px, -50%); }
.lc-map__info { min-height: 3rem; margin-top: 1rem; font-size: 15px; }
.lc-map__info strong { font-family: var(--lc-display); font-weight: 400; font-size: 20px; color: var(--wp--preset--color--saltbush); margin-right: 0.5rem; }
.lc-map__legend { display: flex; gap: 0.5rem 1rem; align-items: center; flex-wrap: wrap; font-size: 13px; margin: 0.75rem 0 0; }
.lc-map__legend .lc-mark { display: inline-block; }
@media (max-width: 639px) { .lc-map__label { font-size: 12px; } }

/* ---------- season dial ---------- */
.lc-dial { position: relative; }
@media (min-width: 1024px) {
  .lc-dial { height: calc(var(--n) * 75dvh + 100dvh); }
  .lc-dial__sticky { position: sticky; top: calc(var(--lc-header-h) + var(--lc-bar-h) + 1rem); height: calc(100dvh - var(--lc-header-h) - var(--lc-bar-h) - 2rem); display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 4vw, 4rem); align-items: center; }
  .lc-dial__chips { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }
  .lc-dial__chips:focus-within { position: static; width: auto; height: auto; clip: auto; }
}
.lc-dial__photo { aspect-ratio: 4 / 5; max-height: 100%; width: 100%; }
@media (max-width: 1023px) { .lc-dial__photo { aspect-ratio: 3 / 2; margin-bottom: 1.5rem; } .lc-dial__arc { display: none; } }
.lc-dial__photo img { transition: opacity var(--lc-t2) var(--lc-ease); }
.lc-dial__arc { width: 100%; max-width: 30rem; overflow: visible; }
.lc-dial__seg { fill: none; stroke: var(--wp--preset--color--saltbush); stroke-opacity: 0.18; stroke-width: 10; stroke-linecap: round; transition: stroke-opacity var(--lc-t1) var(--lc-ease), stroke var(--lc-t1) var(--lc-ease); }
.lc-dial__seg.is-on { stroke: var(--lc-state, var(--wp--preset--color--state-vic)); stroke-opacity: 1; }
.lc-dial__name { font: 500 13px var(--wp--preset--font-family--body); letter-spacing: 0.2em; text-transform: uppercase; fill: var(--wp--preset--color--grey); }
.lc-dial__name.is-on { fill: var(--wp--preset--color--saltbush); }
.lc-dial__needle { transform-box: view-box; transform-origin: 220px 220px; transition: transform var(--lc-t2) var(--lc-ease); }
.lc-dial__needle line { stroke: var(--wp--preset--color--saltbush); stroke-width: 1.5; }
.lc-dial__needle circle { fill: var(--lc-state, var(--wp--preset--color--state-vic)); stroke: var(--wp--preset--color--saltbush); stroke-width: 1.5; }
.lc-dial__hub { fill: var(--wp--preset--color--saltbush); }
.lc-dial__chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 1.5rem; }
.lc-dial__chips [aria-selected="true"] { background: var(--wp--preset--color--saltbush); color: #fff; border-color: transparent; }
.lc-dial__panel h3 { font-size: var(--lc-fs-h3); margin: 0.6rem 0; }
.lc-dial__panel { max-width: 32rem; min-height: 12rem; }

/* ---------- card pile ---------- */
.lc-pile { position: relative; height: calc(var(--n) * 55dvh + 100dvh); }
.lc-pile__sticky { position: sticky; top: calc(var(--lc-header-h) + 1rem); height: calc(100dvh - var(--lc-header-h) - 2rem); display: grid; grid-template-rows: 1fr auto auto; gap: 1rem; justify-items: center; }
.lc-pile__stack { position: relative; width: min(100%, 22rem); height: 100%; max-height: 32rem; }
.lc-pile__card {
  --t: 0;
  position: absolute; inset: 0; background: #fff; box-shadow: 0 18px 50px rgb(27 48 30 / 0.16), 0 0 0 1px var(--lc-hair);
  display: grid; grid-template-rows: 1fr auto; z-index: calc(10 + var(--k));
  transform: translate3d(calc(var(--k) * 6px), calc((1 - var(--t)) * 110dvh + var(--k) * -6px), 0) rotate(calc(var(--r) * (0.4 + (1 - var(--t)) * 2)));
  opacity: clamp(0, calc(var(--t) * 3), 1);
  transition: box-shadow var(--lc-t1) var(--lc-ease);
}
.lc-pile__card.is-front { z-index: 60; transform: translate3d(0, -14px, 0) rotate(0deg); opacity: 1; transition: transform var(--lc-t1) var(--lc-ease); }
.lc-pile__img { position: relative; }
.lc-pile__body { padding: 1rem 1.25rem 1.25rem; }
.lc-pile__body h3 { margin: 0.4rem 0 0; font-size: 24px; }
.lc-pile__tabs { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.lc-pile__tabs [aria-selected="true"] { background: var(--wp--preset--color--saltbush); color: #fff; border-color: transparent; }
.lc-pile.is-still { height: auto; }
.lc-pile.is-still .lc-pile__sticky { position: static; height: auto; }
.lc-pile.is-still .lc-pile__stack { width: 100%; height: auto; max-height: none; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.lc-pile.is-still .lc-pile__card { position: relative; transform: none; opacity: 1; aspect-ratio: 3 / 4; }

/* ---------- the thread ---------- */
.lc-thread { --draw: 0; display: grid; justify-items: center; gap: 1rem; padding-top: clamp(3rem, 8vw, 5rem); color: var(--wp--preset--color--saltbush); }
.lc-thread__line { width: 2px; height: clamp(6rem, 18vh, 11rem); overflow: visible; }
.lc-thread__line path { stroke: var(--wp--preset--color--saltbush); stroke-width: 1.2; vector-effect: non-scaling-stroke; fill: none; stroke-dasharray: 1; stroke-dashoffset: calc(1 - var(--draw)); }
.lc-thread__mark { opacity: 0; transform: translateY(8px); transition: opacity var(--lc-t2) var(--lc-ease), transform var(--lc-t2) var(--lc-ease); }
.lc-thread__mark .lc-logo { font-size: clamp(30px, 5vw, 44px); }
.lc-thread.is-done .lc-thread__mark { opacity: 1; transform: none; }
.lc-thread + .lc-intro { padding-top: 2rem; }

/* ---------- by destination: pinned state blocks with progress marks ---------- */
@media (min-width: 1024px) {
  #destinations.is-pinned .lc-stateblock { position: sticky; top: 0; min-height: 100dvh; }
}
.lc-marks { list-style: none; display: flex; gap: 8px; padding: 0; margin: 2rem 0 0; }
.lc-marks li { width: 28px; height: 2px; background: rgb(27 48 30 / 0.3); }
.lc-marks li.is-on { background: var(--wp--preset--color--saltbush); }

/* ---------- itinerary: the photograph pins and follows the stop ---------- */
.lc-dayscroll { display: grid; gap: 2rem; align-items: start; max-width: 70rem; margin: 0 auto; }
.lc-dayscroll .lc-daylist { max-width: none; margin: 0; }
.lc-dayscroll__photo { position: sticky; top: calc(var(--lc-header-h) + var(--lc-bar-h) + 1rem); aspect-ratio: 4 / 5; z-index: 1; }
.lc-dayscroll__photo::after { content: attr(data-day); position: absolute; left: 1rem; bottom: 1rem; padding: 0.4em 0.9em; border-radius: 999px; background: rgb(255 255 255 / 0.9); font: 500 11px var(--wp--preset--font-family--body); letter-spacing: 0.28em; text-transform: uppercase; color: var(--wp--preset--color--saltbush); }
.lc-dayscroll__photo img { animation: lc-fade var(--lc-t2) var(--lc-ease); }
@keyframes lc-fade { from { opacity: 0; } to { opacity: 1; } }
.lc-daylist li { transition: opacity var(--lc-t1) var(--lc-ease); }
.lc-dayscroll .lc-daylist li:not(.is-current) { opacity: 0.45; }
.lc-dayscroll .lc-daylist li.is-current { border-top-color: var(--lc-state, var(--wp--preset--color--state-vic)); border-top-width: 2px; }
@media (min-width: 1024px) { .lc-dayscroll { grid-template-columns: 1fr 1fr; } .lc-dayscroll .lc-daylist li { min-height: 60dvh; } }
@media (max-width: 1023px) { .lc-dayscroll__photo { top: calc(var(--lc-header-h) + var(--lc-bar-h)); aspect-ratio: 16 / 10; } }

/* ---------- reviews one at a time ---------- */
.lc-quotes.is-single .lc-quote[hidden] { display: none; }
.lc-quotes.is-single .lc-quote:not([hidden]) { animation: lc-fade var(--lc-t2) var(--lc-ease); }
.lc-quotes__dots { display: flex; gap: 6px; justify-content: center; margin-top: 1.5rem; }
.lc-quotes__dots button { width: var(--lc-target); height: var(--lc-target); border: 0; background: none; cursor: pointer; position: relative; }
.lc-quotes__dots button::after { content: ""; position: absolute; inset: 50% auto auto 50%; width: 8px; height: 8px; margin: -4px 0 0 -4px; border-radius: 50%; background: rgb(27 48 30 / 0.25); }
.lc-quotes__dots button[aria-pressed="true"]::after { background: var(--wp--preset--color--saltbush); }

/* ---------- Lenis ---------- */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .lc-map__road { stroke-dashoffset: 0; transition: none; }
  .lc-thread__line path { stroke-dashoffset: 0; }
  .lc-thread__mark { opacity: 1; transform: none; }
}

/* State scale: places near the capital crowd together, so only the picked or pointed-at name shows. */
.lc-map--state .lc-map__label { opacity: 0; transition: opacity var(--lc-t1) var(--lc-ease); }
.lc-map--state .lc-map__label:is(:hover, :focus-visible, .is-lit, [aria-pressed="true"]) { opacity: 1; z-index: 2; }
.lc-mapgrid .lc-ledger li[style*="pointer"]:hover { background: var(--wp--preset--color--mist); }
