/* ============================================================
   Retreat detail page styles (Texas / Michigan)
   ============================================================ */

/* Sub-hero */
.rhero { position: relative; min-height: clamp(540px, 82vh, 820px); display: flex; align-items: flex-end; color: #fff; overflow: hidden; isolation: isolate; }
.rhero-bg { position: absolute; inset: 0; z-index: -2; background: var(--moss-deep); }
.rhero-bg img, .rhero-bg video { width: 100%; height: 100%; object-fit: cover; }
.rhero-bg img { transform: scale(1.05); animation: kenburns 18s ease-out forwards; }
.rhero::after { content:""; position:absolute; inset:0; z-index:-1;
  background: linear-gradient(to top, rgba(7,12,9,.9) 2%, rgba(7,12,9,.36) 46%, rgba(7,12,9,.2) 78%, rgba(7,12,9,.4) 100%); }
.rhero-inner { width:100%; max-width:1380px; margin-inline:auto; padding:0 var(--gut) clamp(44px,6vw,80px); }
.rhero .tag { margin-bottom: 18px; }
.rhero h1 { color:#fff; max-width: 15ch; text-shadow: 0 2px 30px rgba(0,0,0,.3); }
.rhero h1 em { font-family: var(--serif); font-weight: 400; font-style: italic; }
.rhero .tx em { color: var(--sun); }
.rhero .mi em { color: #8fcfe0; }
.rhero-where { display:flex; flex-wrap:wrap; gap:10px 22px; margin:20px 0 26px; font-size:1rem; color:rgba(255,255,255,.9); }
.rhero-where span { display:inline-flex; align-items:center; gap:8px; font-weight:550; }
.rhero-where svg { width:17px; height:17px; opacity:.85; }

/* Sticky booking strip */
.book-strip { position: sticky; top: var(--nav-h); z-index: 30;
  background: rgba(255,255,255,.86); backdrop-filter: saturate(180%) blur(18px);
  border-bottom: 1px solid var(--line); }
.book-strip-inner { max-width:1380px; margin-inline:auto; padding: 12px var(--gut);
  display:flex; align-items:center; justify-content:space-between; gap:18px; }
.book-strip .bs-info { display:flex; align-items:center; gap:18px; min-width:0; }
.book-strip .bs-price { font-weight:700; font-size:1.15rem; letter-spacing:-.02em; white-space:nowrap; }
.book-strip .bs-price small { font-weight:550; color:var(--text-3); font-size:.8rem; }
.book-strip .bs-meta { font-size:.85rem; color:var(--text-2); display:flex; gap:14px; }
.book-strip .bs-meta b { color:var(--ink); }
@media (max-width: 760px){ .book-strip .bs-meta{ display:none; } .book-strip-inner{ gap:12px; } .book-strip .btn{ padding:11px 18px; font-size:.9rem; } }

/* Section intro */
.sec-head { max-width: 60ch; margin-bottom: clamp(28px,4vw,48px); }
.sec-head.center { margin-inline: auto; text-align: center; }

/* Highlight cards */
.hl-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(16px,2vw,24px); }
@media (max-width:880px){ .hl-grid{ grid-template-columns:1fr; } }

/* Gallery */
.gallery { display:grid; grid-template-columns: repeat(4,1fr); gap: 12px; }
.gallery a, .gallery div { border-radius: 4px; overflow:hidden; position:relative; aspect-ratio:1; }
.gallery img { width:100%; height:100%; object-fit:cover; transition: transform .8s var(--ease); }
.gallery a:hover img, .gallery div:hover img { transform: scale(1.08); }
.gallery .g-span2 { grid-column: span 2; grid-row: span 2; aspect-ratio: 1; }
@media (max-width:680px){ .gallery{ grid-template-columns: repeat(2,1fr); } .gallery .g-span2{ grid-column: span 2; grid-row: span 1; aspect-ratio: 16/10; } }

/* Accommodations tiers */
.acc-tiers { display:grid; grid-template-columns: repeat(4,1fr); gap: clamp(14px,1.8vw,20px); }
/* `display:grid` above (and on .acc-grid) overrides the HTML `hidden` attribute, so the static
   fallback tiers showed alongside the live rooms. Restore `hidden` for these toggled blocks. */
.acc-tiers[hidden], .acc-grid[hidden], #bus-slot[hidden] { display:none; }
.tier { background:#fff; border:1px solid var(--line); border-radius: var(--radius); padding: 26px 22px; display:flex; flex-direction:column; transition: transform .5s var(--ease), box-shadow .5s var(--ease), border-color .3s; }
.tier:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.tier.featured { border-color: var(--moss); box-shadow: 0 0 0 1px var(--moss); }
.tier .badge { font-size:.7rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--moss); margin-bottom:14px; }
.tier h3 { font-size:1.2rem; margin-bottom:6px; }
.tier .ti-sub { font-size:.88rem; color:var(--text-3); margin-bottom:18px; min-height:2.4em; }
.tier .ti-price { font-size:1.6rem; font-weight:700; letter-spacing:-.03em; margin-bottom:2px; }
.tier .ti-price small { font-size:.8rem; font-weight:550; color:var(--text-3); }
.tier ul { list-style:none; padding:0; margin:18px 0 22px; display:grid; gap:9px; }
.tier li { font-size:.9rem; color:var(--text-2); display:flex; gap:9px; align-items:flex-start; }
.tier li svg { width:16px; height:16px; color:var(--leaf); flex:none; margin-top:3px; }
.tier .btn { margin-top:auto; }
@media (max-width:980px){ .acc-tiers{ grid-template-columns: repeat(2,1fr); } }
@media (max-width:560px){ .acc-tiers{ grid-template-columns: 1fr; } }

/* Live accommodations grid (rooms pulled from Stripe per edition) */
.acc-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(14px,1.8vw,22px); }
@media (max-width:980px){ .acc-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width:560px){ .acc-grid{ grid-template-columns: 1fr; } }
.room { background:#fff; border:1px solid var(--line); border-radius: var(--radius); overflow:hidden; display:flex; flex-direction:column; transition: transform .5s var(--ease), box-shadow .5s var(--ease), border-color .3s; }
.room:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.room-media { position:relative; aspect-ratio: 16/10; background:#e9e6df; overflow:hidden; }
.room-media img { width:100%; height:100%; object-fit:cover; transition: transform .8s var(--ease); }
.room:hover .room-media img { transform: scale(1.05); }
.room-flag { position:absolute; top:10px; left:10px; font-size:.66rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; background:rgba(10,14,12,.62); color:#fff; padding:5px 9px; border-radius:999px; backdrop-filter:blur(2px); }
.room-flag.low { background:var(--urgent); color:#fff; backdrop-filter:none; }
/* Plain remaining-count on women's dorms (see acc-render.js). Deliberately NOT the urgent
   red: at 12 or 20 beds left this is information, not scarcity, and firing the alarm colour
   on a half-empty room is the thing that makes the real "Only 2 left" stop landing. */
.room-flag.count { background:rgba(10,14,12,.62); color:#fff; font-weight:650; }
.room-flag.sold { background:#5b5b5b; color:#fff; backdrop-filter:none; }
.room-body { padding:18px 18px 20px; display:flex; flex-direction:column; flex:1; }
.room-body h3 { font-size:1.02rem; line-height:1.25; margin-bottom:8px; }
.room-desc { font-size:.86rem; color:var(--text-3); line-height:1.5; margin-bottom:16px; flex:1; }
.room-foot { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:auto; }
.room-price { font-size:1.25rem; font-weight:700; letter-spacing:-.02em; }
.room-price small { font-size:.72rem; font-weight:550; color:var(--text-3); }
.room-priceblock { display:flex; flex-direction:column; }
.room-mo { font-size:.72rem; font-weight:700; color:var(--save); margin-top:3px; white-space:nowrap; }
.room.is-sold { opacity:.72; }
.acc-loading, .acc-error { grid-column:1/-1; text-align:center; color:var(--text-3); padding:30px 0; font-size:.92rem; }

/* Room media is a button that opens the gallery */
.room-media { border:0; padding:0; width:100%; display:block; cursor:default; font:inherit; }
.room-media.has-gallery { cursor:zoom-in; }
.room-media[disabled] { cursor:default; }
.room-count { position:absolute; bottom:10px; right:10px; display:inline-flex; align-items:center; gap:5px; font-size:.72rem; font-weight:600; background:rgba(10,14,12,.62); color:#fff; padding:4px 8px; border-radius:999px; backdrop-filter:blur(2px); }
.room-count svg { width:13px; height:13px; }

/* Inline photo carousel: a sliding track of full-width images + hover-revealed arrows */
.room-track { display:flex; height:100%; transition: transform .45s var(--ease); }
.room-track img { flex:0 0 100%; }
.room-nav { position:absolute; top:50%; transform:translateY(-50%); z-index:2; display:flex; align-items:center; justify-content:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:rgba(10,14,12,.5); color:#fff; font-size:1.5rem; line-height:1; cursor:pointer; opacity:0; transition:opacity .25s var(--ease), background .2s; backdrop-filter:blur(2px); }
.room-media:hover .room-nav, .room-nav:focus-visible { opacity:1; }
.room-nav:hover { background:rgba(10,14,12,.82); }
.room-nav.prev { left:8px; }
.room-nav.next { right:8px; }
/* Touch devices have no hover state — keep the arrows visible so they're discoverable */
@media (hover:none){ .room-nav { opacity:1; background:rgba(10,14,12,.6); } }

/* Gallery lightbox */
.acc-lb { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; background:rgba(8,11,9,.92); padding:clamp(12px,4vw,48px); }
.acc-lb.open { display:flex; }
.acc-lb-stage { margin:0; max-width:min(1100px,92vw); max-height:88vh; display:flex; flex-direction:column; align-items:center; gap:12px; }
.acc-lb-stage img { max-width:100%; max-height:82vh; object-fit:contain; border-radius:6px; box-shadow:0 20px 60px rgba(0,0,0,.5); }
.acc-lb-count { color:rgba(255,255,255,.85); font-size:.85rem; letter-spacing:.04em; }
.acc-lb-close { position:absolute; top:16px; right:20px; width:44px; height:44px; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:#fff; font-size:1.7rem; line-height:1; cursor:pointer; transition:background .2s; }
.acc-lb-close:hover { background:rgba(255,255,255,.22); }
.acc-lb-nav { position:absolute; top:50%; transform:translateY(-50%); width:52px; height:52px; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:#fff; font-size:2rem; line-height:1; cursor:pointer; transition:background .2s; }
.acc-lb-nav:hover { background:rgba(255,255,255,.22); }
.acc-lb-nav.prev { left:max(12px,2vw); }
.acc-lb-nav.next { right:max(12px,2vw); }
@media (max-width:560px){ .acc-lb-nav{ width:44px; height:44px; font-size:1.6rem; } }

/* Shuttle banner (one per edition, below the room grid) */
#bus-slot { margin-top: clamp(20px,3vw,32px); }
.bus-card { display:grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); background:#fff; border:1px solid var(--line); border-radius: var(--radius); overflow:hidden; }
.bus-card-media { position:relative; min-height:220px; background:#e9e6df; }
.bus-card-media img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.bus-card-body { padding: clamp(22px,3vw,34px); display:flex; flex-direction:column; }
.bus-card-body h3 { font-size:1.35rem; line-height:1.2; margin:6px 0 12px; }
.bus-card-desc { font-size:.92rem; color:var(--text-2); line-height:1.55; margin-bottom:20px; flex:1; }
.bus-card-foot { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
@media (max-width:680px){ .bus-card{ grid-template-columns:1fr; } .bus-card-media{ min-height:180px; } }

/* Itinerary / day flow */
.day-flow { display:grid; gap:0; max-width: 760px; }
.day { display:grid; grid-template-columns: auto 1fr; gap: 22px; padding: 22px 0; border-top:1px solid var(--line); }
.day:first-child { border-top:0; }
.day .time { font-weight:700; font-size:.95rem; color:var(--moss); white-space:nowrap; padding-top:2px; min-width:96px; }
.day h4 { margin:0 0 4px; font-size:1.08rem; }
.day p { margin:0; color:var(--text-2); font-size:.94rem; }

/* Pricing / two col */
.price-grid { display:grid; grid-template-columns: repeat(2,1fr); gap: clamp(16px,2vw,24px); }
.price-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding: clamp(26px,3vw,38px); }
.price-card.dark { background: var(--moss-deep); color:#fff; }
.price-card .pc-amt { font-size: clamp(2.4rem,4vw,3.2rem); font-weight:700; letter-spacing:-.04em; line-height:1; }
.price-card .pc-amt small { font-size:1rem; font-weight:550; color:var(--text-3); letter-spacing:0; }
.price-card.dark .pc-amt small { color:var(--on-dark-2); }
.price-card ul { list-style:none; padding:0; margin:20px 0 26px; display:grid; gap:11px; }
.price-card li { display:flex; gap:10px; font-size:.95rem; color:var(--text-2); }
.price-card.dark li { color:var(--on-dark-2); }
.price-card li svg { width:18px; height:18px; color:var(--leaf); flex:none; }
@media (max-width:760px){ .price-grid{ grid-template-columns:1fr; } }

/* Confidence row */
.conf { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(16px,2vw,24px); }
.conf .feature { text-align:left; }
@media (max-width:880px){ .conf{ grid-template-columns:1fr; } }

/* Meet your chef — portrait + text feature */
.chef { display:grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(28px,4vw,64px); align-items:center; }
.chef-portrait { position:relative; aspect-ratio: 4/5; border-radius: var(--radius-lg); overflow:hidden; background: var(--cream-2); box-shadow: var(--shadow); }
.chef-portrait img { width:100%; height:100%; object-fit:cover; object-position: center 30%; display:block; }
/* Placeholder shown until a real photo is dropped in (sits behind the <img>; the img covers it once it loads) */
.chef-portrait .ph { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  color: var(--text-3); text-align:center; padding:24px; background: linear-gradient(160deg, var(--cream), var(--cream-2)); }
.chef-portrait .ph svg { width:46px; height:46px; opacity:.5; }
.chef-portrait .ph span { font-size:.85rem; letter-spacing:.02em; }
.chef-body h2 { margin-bottom: 8px; }
.chef-tag { font-style:italic; color: var(--moss); font-size: clamp(1.05rem,1.6vw,1.25rem); margin: 4px 0 18px; }
.chef-creds { display:flex; flex-wrap:wrap; gap:10px; margin: 22px 0 26px; }
.chef-creds li { list-style:none; font-size:.85rem; font-weight:600; color: var(--text-2);
  background:#fff; border:1px solid var(--line); border-radius: 999px; padding: 7px 14px; }
@media (max-width:880px){
  .chef { grid-template-columns: 1fr; gap: 28px; }
  .chef-portrait { max-width: 360px; margin-inline:auto; }
}

/* Chef teaser (home page) */
.chef-teaser { display:grid; grid-template-columns: auto 1fr auto; gap: clamp(18px,3vw,40px); align-items:center;
  background:#fff; border:1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  padding: clamp(20px,3vw,32px); }
.chef-teaser .avatar { width: clamp(74px,9vw,104px); aspect-ratio:1; border-radius:50%; overflow:hidden; flex:none;
  background: var(--cream-2); position:relative; }
.chef-teaser .avatar img { width:100%; height:100%; object-fit:cover; object-position: center 25%; display:block; }
.chef-teaser .avatar .ph { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--text-3); }
.chef-teaser .avatar .ph svg { width:34px; height:34px; opacity:.5; }
.chef-teaser h3 { margin:0 0 4px; }
.chef-teaser p { margin:0; color: var(--text-2); font-size:.97rem; }
@media (max-width:680px){
  .chef-teaser { grid-template-columns: auto 1fr; gap:16px; text-align:left; }
  .chef-teaser .btn { grid-column: 1 / -1; width:100%; }
}

/* Sample-menu-soon callout (home chef spotlight) */
.menu-soon { display:flex; align-items:flex-start; gap:12px; margin: 0 0 26px;
  background: var(--cream-2); border:1px dashed var(--moss); border-radius: var(--radius);
  padding: 14px 18px; }
.menu-soon-icon { font-size:1.3rem; line-height:1.3; flex:none; }
.menu-soon p { margin:0; font-size:.95rem; color: var(--text-2); }
.menu-soon b { color: var(--moss); }

/* Final CTA */
.rcta { position:relative; overflow:hidden; isolation:isolate; color:#fff; text-align:center;
  padding: clamp(56px,9vw,120px) var(--gut); border-radius: var(--radius-lg); }
.rcta img { position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; }
.rcta::after { content:""; position:absolute; inset:0; z-index:-1; background: linear-gradient(160deg, rgba(12,32,21,.92), rgba(12,32,21,.6)); }
.rcta h2 { color:#fff; max-width: 18ch; margin-inline:auto; }
.rcta p { color: rgba(255,255,255,.9); max-width: 48ch; margin: 18px auto 32px; font-size:1.1rem; }

/* ============================================================
   Registration journey (register.html) — GA → lodging → bus → review
   ============================================================ */
.reg-body { background: var(--cream); }

.reg-head { background:#fff; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:50; }
.reg-head-inner { max-width:1180px; margin-inline:auto; padding:14px var(--gut); display:flex; align-items:center; justify-content:space-between; gap:16px; }
.reg-secure { display:inline-flex; align-items:center; gap:8px; font-size:.85rem; font-weight:600; color:var(--moss); }
.reg-secure svg { width:18px; height:18px; }

/* step bar */
.reg-steps { padding: clamp(20px,3vw,32px) var(--gut) 0; }
.stepbar { display:flex; flex-wrap:wrap; gap:8px 22px; list-style:none; margin:0; padding:0; max-width:1180px; margin-inline:auto; }
.stepbar .step { display:inline-flex; align-items:center; gap:9px; font-size:.92rem; font-weight:600; color:var(--text-3); }
.stepbar .num { width:26px; height:26px; border-radius:50%; display:grid; place-items:center; font-size:.8rem;
  background:#fff; border:1px solid var(--line-strong); color:var(--text-3); }
.stepbar .step.is-active { color:var(--text); }
.stepbar .step.is-active .num { background:var(--moss); border-color:var(--moss); color:#fff; }
.stepbar .step.is-done .num { background:var(--leaf,#7fae8c); border-color:transparent; color:#fff; }
/* Add-ons mode toggles: the display rules on these elements outrank the hidden
   attribute, so hide explicitly (same pattern as .lightbox[hidden]). */
.stepbar .step[hidden], #bus-owned-q[hidden], #bus-card[hidden], #addon-seats-row[hidden],
.reg-step .btn[hidden] { display:none; }

/* layout */
.reg-main { padding: clamp(20px,3vw,34px) var(--gut) clamp(60px,8vw,100px); }
.reg-grid { display:grid; grid-template-columns: 1fr 360px; gap: clamp(24px,3vw,44px); align-items:start; max-width:1180px; margin-inline:auto; }
@media (max-width:900px){ .reg-grid{ grid-template-columns:1fr; } }

.reg-flow { min-width:0; }
.reg-panel, .reg-step { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding: clamp(22px,3vw,38px); box-shadow:var(--shadow-sm); }
.reg-panel { margin-bottom:20px; }
.reg-panel.is-chosen { display:none; }
.reg-sub { color:var(--text-2); max-width:60ch; margin:6px 0 22px; }
.reg-note { font-size:.9rem; color:var(--text-3); margin:14px 0 0; }
/* Guided-start empty state for the lodging picker — shown until a category tab is chosen. */
.lodge-prompt { text-align:center; color:var(--text-2); font-size:.98rem; line-height:1.5;
  padding:32px 16px; margin:0; border:1px dashed var(--line-strong); border-radius:var(--radius-lg); background:#fff; }
.reg-actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:26px; }
.linkish { background:none; border:none; color:var(--moss); font:inherit; font-weight:600; cursor:pointer; text-decoration:underline; padding:0; }

/* edition picker */
.edition-pick { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:560px){ .edition-pick{ grid-template-columns:1fr; } }
.edition-card { text-align:left; background:var(--cream); border:1.5px solid var(--line-strong); border-radius:var(--radius-lg);
  padding:20px; display:flex; flex-direction:column; gap:6px; cursor:pointer; transition:border-color .15s, box-shadow .15s, transform .15s; }
.edition-card:hover { border-color:var(--moss); transform:translateY(-2px); }
.edition-card[aria-pressed="true"] { border-color:var(--moss); box-shadow:0 0 0 1px var(--moss); }
.edition-card .ed-tag { font-size:.78rem; font-weight:700; color:var(--sun-deep); text-transform:uppercase; letter-spacing:.04em; }
.edition-card strong { font-size:1.2rem; }
.edition-card .ed-where { font-size:.9rem; color:var(--text-2); }

/* GA ticket rows */
.ticket-row { display:grid; grid-template-columns:1fr auto auto; gap:18px; align-items:center; padding:18px 0; border-top:1px solid var(--line); }
.ticket-row:first-of-type { border-top:none; }
.ticket-info h3 { margin:0 0 3px; font-size:1.1rem; }
.ticket-info p { margin:0; color:var(--text-2); font-size:.92rem; }
.ti-pill, .ti-sub { font-size:.72rem; font-weight:600; background:var(--cream-2); color:var(--text-2); padding:3px 8px; border-radius:999px; vertical-align:middle; }
.ticket-price { font-weight:700; font-size:1.15rem; white-space:nowrap; text-align:right; }
.ticket-price.ticket-free { color:var(--moss); }
.ticket-mo { display:block; font-size:.72rem; font-weight:700; color:var(--save); white-space:nowrap; margin-top:3px; }
.qty { display:inline-flex; align-items:center; border:1px solid var(--line-strong); border-radius:999px; overflow:hidden; }
.qbtn { width:38px; height:38px; background:#fff; border:none; font-size:1.3rem; line-height:1; cursor:pointer; color:var(--moss); }
.qbtn:hover:not(:disabled) { background:var(--cream); }
.qbtn:disabled { opacity:.35; cursor:not-allowed; }
.qval { width:40px; text-align:center; border:none; font:inherit; font-weight:700; background:transparent; }
@media (max-width:520px){ .ticket-row{ grid-template-columns:1fr auto; } .ticket-price{ grid-column:2; } .qty{ grid-column:2; } }

/* lodging catalog */
.lodge-filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
/* Venue-page (texas/michigan) accommodations filter tabs — injected by acc-render.js,
   centered above the room grid. Same chips as the checkout picker. */
.acc-filters { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin:0 auto 24px; }
.chip { background:#fff; border:1px solid var(--line-strong); border-radius:999px; padding:7px 14px; font-size:.85rem; font-weight:600; color:var(--text-2); cursor:pointer; }
.chip.is-on { background:var(--moss); border-color:var(--moss); color:#fff; }
/* Room count inside a lodging filter chip — subordinate to the label, never competing. */
.chip .chip-n { margin-left:6px; opacity:.5; font-weight:600; font-variant-numeric:tabular-nums; }
.chip.is-on .chip-n { opacity:.75; }
.lodge-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:14px; }
.lodge-card { text-align:left; background:#fff; border:1.5px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; cursor:pointer; padding:0; transition:border-color .15s, box-shadow .15s, transform .15s; }
.lodge-card:hover:not(:disabled) { transform:translateY(-3px); border-color:var(--moss); box-shadow:var(--shadow-sm); }
.lodge-card.is-selected { border-color:var(--moss); box-shadow:0 0 0 2px var(--moss); }
.lodge-card.is-sold { opacity:.55; cursor:not-allowed; }
.lodge-card.is-blocked { opacity:.5; cursor:not-allowed; }
.lc-blocked { background:rgba(20,32,26,.62); font-size:.8rem; line-height:1.3; text-align:center; padding:0 12px; }
.lc-img { display:block; aspect-ratio:4/3; background-size:cover; background-position:center; position:relative; }
.lc-sold { position:absolute; inset:0; display:grid; place-items:center; background:rgba(20,32,26,.55); color:#fff; font-weight:700; font-size:.85rem; letter-spacing:.04em; }
.lc-body { display:block; padding:12px 14px 14px; }
.lc-group { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3); }
.lc-name { display:block; font-size:.92rem; font-weight:600; margin:3px 0 6px; line-height:1.25; }
/* Full room description in the checkout picker — the same copy the venue page shows, so
   buyers can compare bed counts, bathrooms, and walk time without leaving the card or
   opening the photo gallery. Shown in full (not truncated) — that gap is what drove the
   "descriptions are cut off" complaints. */
.lc-desc { display:block; font-size:.8rem; line-height:1.45; color:var(--text-2); margin:0 0 8px; font-weight:400; }
.lc-price { font-weight:700; color:var(--moss); }
.lc-mo { display:block; font-size:.72rem; font-weight:700; color:var(--save); margin-top:2px; }
/* "Sleeps up to N" capacity badge — shown on private-room cards (see room-capacity.js).
   Shared by the retreat page (.room-body) and checkout (.lc-body). */
.sleeps-badge { display:inline-flex; align-items:center; gap:5px; font-size:.74rem; font-weight:600;
  color:var(--moss); background:rgba(47,93,64,.09); border-radius:999px; padding:3px 9px; line-height:1.2; }
.sleeps-badge svg { width:13px; height:13px; flex:none; }
.room-body .sleeps-badge { margin:0 0 12px; }
.lc-body .sleeps-badge { margin:1px 0 6px; }
/* Shared-dorm variant ("you book 1 bed") — same pill, warmer tint so a shared allotment
   reads as distinct from a private room's "Sleeps up to N" at a glance. */
.sleeps-badge.dorm-badge { color:#7a4b12; background:rgba(196,124,26,.11); }
/* Owner-confirmed bed/bath counts ("14 beds · 2 showers · 2 toilets · 2 sinks"), from
   room-facilities.js. Deliberately NOT a pill — it sits as quiet spec text under the
   badge so it reads as fact rather than competing with the badges for attention.
   Shared by the retreat page (.room-body) and checkout (.lc-body). */
.room-facilities { display:block; font-size:.78rem; font-weight:550; color:var(--text-2);
  line-height:1.4; letter-spacing:.01em; }
.room-body .room-facilities { margin:0 0 10px; }
.lc-body .room-facilities { margin:0 0 6px; }
/* Aggregate "Just N private rooms remaining" pill (lodging step). Reuses the global
   .chip-urgent scarcity chip; this makes its live dot pulse like the homepage .pill dot
   (the `pulse` keyframes live in styles.css). */
.reg-privleft { line-height:1; }
.chip-urgent .dot.live { box-shadow:0 0 0 0 rgba(192,80,58,.6); animation:pulse 2s infinite; }
/* quantity badge on a lodge card image — exact count, urgent (amber) when low */
.lc-qty { position:absolute; top:8px; left:8px; font-size:.66rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; background:rgba(10,14,12,.62); color:#fff; padding:4px 8px; border-radius:999px; backdrop-filter:blur(2px); }
.lc-qty.low { background:var(--sun); color:#3a2607; backdrop-filter:none; }
/* "view photos" badge on a lodge card image — opens the gallery without selecting the room */
.lc-view { position:absolute; bottom:8px; right:8px; display:inline-flex; align-items:center; gap:4px; font-size:.7rem; font-weight:600; background:rgba(10,14,12,.62); color:#fff; padding:3px 7px; border-radius:999px; cursor:zoom-in; backdrop-filter:blur(2px); }
.lc-view svg { width:12px; height:12px; }
.lc-view:hover { background:rgba(10,14,12,.82); }

/* "View property map" button on the lodging step (Texas only) */
.lodge-maprow { margin:6px 0 14px; }
.lodge-map-btn { display:inline-flex; align-items:center; gap:8px; font-size:.86rem; }
.lodge-map-btn svg { flex:none; }

/* Inline photo arrows on lodging cards (checkout step 2) — mirror the listing-page carousel */
.lc-nav { position:absolute; top:50%; transform:translateY(-50%); z-index:2; display:flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:50%; background:rgba(10,14,12,.5); color:#fff; font-size:1.3rem; line-height:1; cursor:pointer; opacity:0; user-select:none; transition:opacity .2s, background .2s; backdrop-filter:blur(2px); }
.lodge-card:hover .lc-nav { opacity:1; }
.lc-nav:hover { background:rgba(10,14,12,.82); }
.lc-nav.prev { left:8px; }
.lc-nav.next { right:8px; }
/* Touch devices have no hover — keep the arrows visible so they're discoverable */
@media (hover:none){ .lc-nav { opacity:1; background:rgba(10,14,12,.6); } }

/* Lodging gallery lightbox (register page) */
.lodge-lb { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; background:rgba(8,11,9,.92); padding:clamp(12px,4vw,48px); }
.lodge-lb.open { display:flex; }
.lodge-lb-stage { margin:0; max-width:min(1100px,92vw); max-height:88vh; display:flex; flex-direction:column; align-items:center; gap:12px; }
.lodge-lb-stage img { max-width:100%; max-height:82vh; object-fit:contain; border-radius:6px; box-shadow:0 20px 60px rgba(0,0,0,.5); }
.lodge-lb-stage figcaption { color:rgba(255,255,255,.85); font-size:.85rem; letter-spacing:.04em; }
.lodge-lb-close { position:absolute; top:16px; right:20px; width:44px; height:44px; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:#fff; font-size:1.7rem; line-height:1; cursor:pointer; }
.lodge-lb-close:hover { background:rgba(255,255,255,.22); }
.lodge-lb-nav { position:absolute; top:50%; transform:translateY(-50%); width:52px; height:52px; border:0; border-radius:50%; background:rgba(255,255,255,.12); color:#fff; font-size:2rem; line-height:1; cursor:pointer; }
.lodge-lb-nav:hover { background:rgba(255,255,255,.22); }
.lodge-lb-nav.prev { left:max(12px,2vw); }
.lodge-lb-nav.next { right:max(12px,2vw); }
@media (max-width:560px){ .lodge-lb-nav{ width:44px; height:44px; font-size:1.6rem; } }

/* cross-sell (bus) */
.crosssell { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:16px; background:var(--cream);
  border:1.5px solid var(--line-strong); border-radius:var(--radius-lg); padding:20px; cursor:pointer; }
.crosssell:has(:checked) { border-color:var(--moss); box-shadow:0 0 0 1px var(--moss); background:#fff; }
.crosssell input { position:absolute; opacity:0; pointer-events:none; }
.cs-check { width:24px; height:24px; border:2px solid var(--line-strong); border-radius:6px; display:grid; place-items:center; }
.crosssell:has(:checked) .cs-check { background:var(--moss); border-color:var(--moss); }
.crosssell:has(:checked) .cs-check::after { content:"✓"; color:#fff; font-size:15px; font-weight:700; }
.cs-body { display:flex; align-items:center; gap:14px; }
.cs-icon { width:54px; height:54px; flex:none; border-radius:10px; background:var(--cream-2); display:grid; place-items:center; color:var(--moss); overflow:hidden; }
.cs-icon svg { width:26px; height:26px; }
.cs-icon img { width:100%; height:100%; object-fit:cover; display:block; }
.cs-body strong { display:block; }
.cs-desc { font-size:.9rem; color:var(--text-2); }
.cs-price { font-weight:700; white-space:nowrap; }

/* Bus departure/return schedule */
.bus-schedule { margin-top:14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--cream); padding:14px 16px; }
.bus-leg { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 0; }
.bus-leg + .bus-leg { border-top:1px dashed var(--line); }
.bus-leg-label { display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--moss); font-size:.92rem; }
.bus-leg-label svg { width:18px; height:18px; }
.bus-leg-when { font-weight:600; color:var(--text); font-size:.92rem; text-align:right; }
.bus-schedule-note { margin:10px 0 0; font-size:.82rem; color:var(--text-3); }
@media (max-width:480px){ .bus-leg{ flex-direction:column; align-items:flex-start; gap:4px; } .bus-leg-when{ text-align:left; } }

/* guest details */
.guest-block { border:1px solid var(--line); border-radius:var(--radius-lg); padding:18px 20px; margin:0 0 16px; }
.guest-block.is-booker { border-color:var(--moss); }
.guest-block legend { font-weight:600; font-size:.95rem; padding:0 8px; color:var(--text); }
.booker-tag { display:inline-block; margin-left:8px; font-size:.7rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--moss); background:var(--cream-2); padding:2px 8px; border-radius:999px; vertical-align:middle; }
.field-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:14px; }
.field { display:flex; flex-direction:column; gap:6px; font-size:.85rem; font-weight:600; color:var(--text-2); }
.field i { color:var(--sun-deep); font-style:normal; }
.field input, .field select { font:inherit; font-weight:400; padding:10px 12px; border:1px solid var(--line-strong);
  border-radius:8px; background:#fff; color:var(--text); }
.field input:focus, .field select:focus { outline:none; border-color:var(--moss); box-shadow:0 0 0 1px var(--moss); }
.field input.is-invalid, .field select.is-invalid { border-color:var(--danger); box-shadow:0 0 0 1px var(--danger); background:var(--danger-soft); }
.field-hint { font-size:.72rem; font-weight:400; line-height:1.35; color:var(--text-2); opacity:.8; }
#guest-note { color:var(--danger); font-weight:600; }

/* review */
.review-list { border:1px solid var(--line); border-radius:var(--radius-lg); overflow:hidden; }
.rev-line { display:flex; justify-content:space-between; gap:16px; padding:14px 18px; border-top:1px solid var(--line); }
.rev-line:first-child { border-top:none; }
.rev-total { font-weight:700; font-size:1.1rem; background:var(--cream); }
.reg-fineprint { display:flex; align-items:center; gap:8px; font-size:.85rem; color:var(--text-3); margin-top:18px; }
.reg-fineprint svg { width:16px; height:16px; flex:none; }

/* pay-mode choice (review step) */
.paymode { margin-top:24px; }
.paymode-h { font-size:1rem; margin:0 0 12px; }
.pay-opt { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:14px;
  border:1.5px solid var(--line-strong); border-radius:var(--radius-lg); padding:16px 18px; margin-bottom:10px; cursor:pointer; }
.pay-opt:has(:checked) { border-color:var(--moss); box-shadow:0 0 0 1px var(--moss); }
.pay-opt input { position:absolute; opacity:0; pointer-events:none; }
.pay-radio { width:22px; height:22px; border:2px solid var(--line-strong); border-radius:50%; display:grid; place-items:center; }
.pay-opt:has(:checked) .pay-radio { border-color:var(--moss); }
.pay-opt:has(:checked) .pay-radio::after { content:""; width:11px; height:11px; border-radius:50%; background:var(--moss); }
.pay-body strong { display:block; }
.pay-desc { font-size:.88rem; color:var(--text-2); }
.pay-amt { font-weight:700; white-space:nowrap; }
.pay-opt.is-disabled { opacity:.5; cursor:not-allowed; }
.pay-opt.is-disabled:has(:checked) { box-shadow:none; border-color:var(--line-strong); }

/* pay-mode choice (standalone bus page) */
#bus-paymodes { display:grid; gap:10px; }
#bus-paymodes .paymode { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:14px; margin:0;
  border:1.5px solid var(--line-strong); border-radius:var(--radius-lg); padding:16px 18px; cursor:pointer; }
#bus-paymodes .paymode.is-on { border-color:var(--moss); box-shadow:0 0 0 1px var(--moss); }
#bus-paymodes .paymode input { width:20px; height:20px; accent-color:var(--moss); margin:0; }
#bus-paymodes .pm-body { display:flex; flex-direction:column; gap:3px; }
#bus-paymodes .pm-sub { font-size:.88rem; color:var(--text-2); font-weight:400; }
#bus-paymodes .pm-amt { font-weight:700; white-space:nowrap; }

/* sticky summary */
.reg-summary { position:sticky; top:84px; }
@media (max-width:900px){ .reg-summary{ position:static; } }
.summary-card { background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:24px; box-shadow:var(--shadow-sm); }
.summary-card h3 { margin:0 0 14px; }
.sum-edition { font-size:.88rem; font-weight:600; color:var(--moss); background:var(--cream); border-radius:8px; padding:8px 12px; margin-bottom:14px; }
.sum-lines { list-style:none; margin:0 0 14px; padding:0; }
.sum-lines li { display:flex; flex-wrap:wrap; justify-content:space-between; gap:4px 12px; padding:8px 0; border-top:1px dashed var(--line); font-size:.93rem; }
.sum-lines li:first-child { border-top:none; }
.sum-empty { color:var(--text-3); }
.sum-tax span:first-child { color:var(--text-3); font-size:.86rem; }
.sum-note { flex-basis:100%; color:var(--text-3); font-size:.78rem; font-weight:400; }
.sum-total { display:flex; justify-content:space-between; align-items:baseline; padding-top:14px; border-top:2px solid var(--line-strong); }
.sum-total strong { font-size:1.5rem; }
.sum-note { font-size:.8rem; color:var(--text-3); margin:12px 0 0; }

/* checkout footer */
.reg-foot { border-top:1px solid var(--line); padding:30px var(--gut); text-align:center; color:var(--text-2); font-size:.9rem; }
.reg-foot a { color:var(--moss); font-weight:600; }
.reg-foot-sm { font-size:.8rem; color:var(--text-3); margin-top:8px; }

/* ============================================================
   Video testimonials (home) — vertical, poster + click-to-play
   ============================================================ */
.vid-testimonials { display:flex; flex-wrap:wrap; justify-content:center; gap:clamp(16px,2.5vw,28px);
  margin-bottom:clamp(34px,5vw,52px); }
.vid-card { flex:0 0 auto; width:clamp(240px,26vw,320px); border-radius:var(--radius-lg); overflow:hidden;
  background:#000; box-shadow:var(--shadow); }
.vid-card video { display:block; width:100%; aspect-ratio:9/16; object-fit:cover; background:#000; }
@media (max-width:560px){ .vid-card{ width:min(78vw,320px); } }

/* Written testimonial grid — ported from the homepage's inline <style> so the texas/
   michigan pages (which use the same .tst markup but lack the CSS) render the cards as a
   proper grid instead of full-width stacked blocks. Keep in sync with index.html. */
.tst-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(6px,.7vw,10px); }
.tst { background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:22px;
  display:flex; flex-direction:column; gap:14px; transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.tst:hover { transform:translateY(-4px); box-shadow:var(--shadow); }
.tst .stars { color:var(--sun); letter-spacing:2px; font-size:.9rem; flex:none; }
.tst blockquote { margin:0; font-size:.94rem; line-height:1.5; letter-spacing:-.015em; color:var(--text); }
.tst .who { display:flex; align-items:center; gap:12px; margin-top:auto; flex:none; }
.tst .av { width:42px; height:42px; border-radius:50%; background:var(--sage-soft); color:var(--moss-deep);
  display:grid; place-items:center; font-weight:700; font-size:.95rem; flex:none; }
.tst .who b { display:block; font-size:.94rem; }
.tst .who span { font-size:.82rem; color:var(--text-3); }
@media (max-width:1100px){ .tst-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:600px){ .tst-grid{ grid-template-columns:1fr; } .tst.hide-sm{ display:none; } }

/* ============================================================
   Photo gallery — masonry wall + lightbox (home page)
   ============================================================ */
/* Marquee: 5 rows that auto-scroll horizontally (alternating direction).
   Each .ph-track holds its photos TWICE and animates -50% for a seamless loop. */
.photo-marquee { display:flex; flex-direction:column; gap:12px; overflow:hidden;
  --ph-dur: 120s;   /* base scroll duration — higher = slower */
  /* fade the left/right edges so photos slide in/out softly */
  -webkit-mask-image: linear-gradient(to right, transparent, #000 4%, #000 96%, transparent);
          mask-image: linear-gradient(to right, transparent, #000 4%, #000 96%, transparent); }
.ph-row { overflow:hidden; }
.ph-track { display:flex; gap:12px; width:max-content; will-change:transform;
  animation: ph-scroll var(--ph-dur, 60s) linear infinite;
  /* ease the speed change so hover slows it gently rather than snapping */
  transition: animation-duration .6s var(--ease); }
.ph-row[data-dir="rtl"] .ph-track { animation-name: ph-scroll-rtl; }
/* slow down (don't stop) the hovered row when the cursor is on it */
.ph-row:hover .ph-track { animation-duration: calc(var(--ph-dur, 60s) * 3.5); }
.ph-item { display:block; flex:0 0 auto; height: clamp(150px, 19vw, 230px); border-radius:var(--radius);
  overflow:hidden; position:relative; background:var(--cream-2); cursor:zoom-in; }
.ph-item img { height:100%; width:auto; display:block; transition:transform .5s var(--ease); }
.ph-item:hover img { transform:scale(1.06); }
.ph-item::after { content:""; position:absolute; inset:0; background:rgba(20,32,26,0); transition:background .3s; }
.ph-item:hover::after { background:rgba(20,32,26,.12); }

@keyframes ph-scroll     { from { transform: translateX(0); }    to { transform: translateX(-50%); } }
@keyframes ph-scroll-rtl { from { transform: translateX(-50%); } to { transform: translateX(0); } }

@media (max-width:760px){ .photo-marquee, .ph-track { gap:8px; } }
@media (prefers-reduced-motion: reduce){ .ph-track { animation:none; } .ph-row{ overflow-x:auto; } }

/* lightbox */
.lightbox { position:fixed; inset:0; z-index:200; background:rgba(8,12,9,.94); display:flex; align-items:center; justify-content:center;
  opacity:0; transition:opacity .25s; }
.lightbox.is-open { opacity:1; }
.lightbox[hidden] { display:none; }
.lb-img { max-width:92vw; max-height:88vh; object-fit:contain; border-radius:4px; box-shadow:0 30px 80px rgba(0,0,0,.5); }
.lb-close, .lb-nav { position:absolute; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); color:#fff;
  cursor:pointer; border-radius:50%; display:grid; place-items:center; transition:background .2s; backdrop-filter:blur(8px); }
.lb-close:hover, .lb-nav:hover { background:rgba(255,255,255,.25); }
.lb-close { top:20px; right:20px; width:46px; height:46px; font-size:1.8rem; line-height:1; }
.lb-nav { top:50%; transform:translateY(-50%); width:54px; height:54px; font-size:2rem; line-height:1; }
.lb-prev { left:18px; } .lb-next { right:18px; }
.lb-count { position:absolute; bottom:22px; left:50%; transform:translateX(-50%); color:rgba(255,255,255,.8);
  font-size:.85rem; font-weight:600; letter-spacing:.04em; background:rgba(0,0,0,.3); padding:6px 14px; border-radius:999px; }
@media (max-width:560px){ .lb-nav{ width:44px; height:44px; font-size:1.6rem; } .lb-prev{ left:8px; } .lb-next{ right:8px; } .lb-close{ top:12px; right:12px; } } /* Speaker Lineup (shared) */ .spk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,24px);} .spk-card{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);padding:clamp(24px,2.5vw,36px);display:flex;flex-direction:column;gap:14px;transition:background .3s;} .spk-card:hover{background:rgba(255,255,255,.11);} .spk-av{width:70px;height:70px;border-radius:50%;background:var(--moss);border:2px solid rgba(255,255,255,.2);color:#fff;display:grid;place-items:center;font-size:1.2rem;font-weight:700;letter-spacing:.04em;flex:none;} .spk-tags{display:flex;flex-wrap:wrap;gap:6px;} .spk-tag{font-size:.7rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;padding:4px 10px;border-radius:100px;border:1px solid rgba(255,255,255,.22);color:rgba(255,255,255,.75);} .spk-tag--gold{border-color:var(--sun);color:var(--sun);} .spk-name{font-size:clamp(1.1rem,1.8vw,1.4rem);font-weight:700;color:#fff;margin:2px 0 0;line-height:1.2;} .spk-topic{font-size:.88rem;font-weight:600;color:var(--sun);margin:2px 0 0;} .spk-bio{font-size:.9rem;color:rgba(255,255,255,.68);line-height:1.56;margin:2px 0 0;} .spk-card--tease{justify-content:center;align-items:center;text-align:center;background:rgba(255,255,255,.04);border-style:dashed;border-color:rgba(255,255,255,.2);} .spk-tease-icon{font-size:2.2rem;margin:0 0 14px;} .spk-card--tease h3{color:#fff;font-size:1.2rem;margin:0 0 10px;} .spk-card--tease p{color:rgba(255,255,255,.62);font-size:.9rem;line-height:1.56;margin:0;} .spk-evidence{display:flex;align-items:flex-start;gap:16px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.13);border-radius:var(--radius);padding:clamp(18px,2vw,26px) clamp(20px,2.5vw,32px);color:rgba(255,255,255,.8);font-size:.95rem;line-height:1.6;} .spk-evidence svg{color:#6fcf97;flex:none;margin-top:2px;} .spk-evidence strong{color:#fff;} @media (max-width:980px){.spk-grid{grid-template-columns:repeat(2,1fr);}} @media (max-width:600px){.spk-grid{grid-template-columns:1fr;}}

/* ===== On-the-property activities band (texas + michigan) ===== */
.acts-sec { padding: 0; }
.acts-band { position: relative; isolation: isolate; background: var(--acts-photo) center/cover no-repeat; background-color: var(--moss-deep); }
.acts-scrim { position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(15,28,18,.82), rgba(15,28,18,.66) 45%, rgba(11,21,14,.92)); }
.acts-inner { padding-block: clamp(64px, 9vw, 120px); color: #fff; }
.acts-head { max-width: 64ch; margin-inline: auto; text-align: center; margin-bottom: clamp(30px, 4vw, 48px); }
.acts-head .h1 { color: #fff; }
.acts-sub { margin: 14px auto 0; max-width: 54ch; color: rgba(255,255,255,.84); font-size: 1.02rem; line-height: 1.6; }
.acts-list { list-style: none; margin: 0 auto; padding: 0; max-width: 920px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px 44px; }
.acts-list li { display: flex; align-items: flex-start; gap: 12px; font-size: 1.05rem; font-weight: 600; line-height: 1.3; color: #fff; text-shadow: 0 1px 8px rgba(0,0,0,.4); }
.acts-list .tk { flex: none; width: 26px; height: 26px; border-radius: 50%; background: var(--sun); color: #3a2905; display: grid; place-items: center; margin-top: 1px; }
.acts-list .tk svg { width: 15px; height: 15px; }
.acts-both { max-width: 920px; margin: clamp(30px, 4vw, 44px) auto 0; padding-top: clamp(24px, 3vw, 32px); border-top: 1px solid rgba(255,255,255,.22); text-align: center; }
.acts-both-lbl { font-size: .74rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.72); margin: 0 0 14px; }
.acts-chips { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.acts-chip { font-size: .86rem; font-weight: 600; padding: 7px 14px; border-radius: 100px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.24); color: rgba(255,255,255,.92); }
@media (max-width: 620px) { .acts-list { grid-template-columns: 1fr; gap: 12px; } }

/* ============ Faculty head-wall (shared: sales pages + checkout) ============ */
.fac-wall { text-align: center; }
.fac-wall .fac-eyebrow { font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--sun); margin: 0 0 8px; }
.fac-wall .fac-head { font-size: clamp(1.3rem, 2.6vw, 1.9rem); font-weight: 700; line-height: 1.15; color: #fff; margin: 0 0 8px; text-wrap: balance; }
.fac-wall .fac-sub { font-size: .92rem; color: rgba(255,255,255,.72); line-height: 1.55; max-width: 54ch; margin: 0 auto 4px; }
.fac-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: clamp(14px,2vw,22px); margin-top: clamp(28px,3.5vw,40px); }
.fac { width: 96px; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; }
.fac .fac-av { width: 66px; height: 66px; border-radius: 50%; object-fit: cover; object-position: center 18%; border: 2px solid rgba(255,255,255,.22); display: block; background: var(--moss); }
.fac b { font-size: .75rem; font-weight: 700; line-height: 1.2; color: #fff; min-height: 1.2em; }
.fac span { font-size: .64rem; font-weight: 500; line-height: 1.25; color: rgba(255,255,255,.6); }
.fac--gold .fac-av { border-color: var(--sun); box-shadow: 0 0 0 3px rgba(227,163,77,.18); }
@media (max-width: 520px) { .fac { width: 78px; } .fac .fac-av { width: 56px; height: 56px; } }

/* Compact variant — checkout pay step (light ground, featherweight) */
.fac-wall--compact { text-align: center; }
.fac-wall--compact .fac-eyebrow { color: var(--sun); }
.fac-wall--compact .fac-head { font-size: 1.02rem; font-weight: 700; color: var(--ink, #1d2b22); margin: 0 0 2px; }
.fac-wall--compact .fac-grid { gap: 10px 14px; margin-top: 16px; }
.fac-wall--compact .fac { width: 62px; gap: 5px; }
.fac-wall--compact .fac .fac-av { width: 46px; height: 46px; border-color: rgba(0,0,0,.1); }
.fac-wall--compact .fac b { font-size: .62rem; color: var(--ink, #1d2b22); min-height: 0; }
.fac-wall--compact .fac span { display: none; }
.fac-wall--compact .fac--gold .fac-av { border-color: var(--sun); box-shadow: 0 0 0 2px rgba(227,163,77,.2); }
@media (max-width: 520px) { .fac-wall--compact .fac { width: 54px; } .fac-wall--compact .fac .fac-av { width: 42px; height: 42px; } }
/* Edition-swapped faculty hosts — register.js stamps data-ed on every .fac-ed-host */
.fac-ed-host .fac-ed { display: none; }
.fac-ed-host[data-ed="texas"] .fac-ed--texas { display: block; }
.fac-ed-host[data-ed="michigan"] .fac-ed--michigan { display: block; }
.reg-facstrip { margin: 1.1rem 0 .2rem; padding-top: 1rem; border-top: 1px solid rgba(0,0,0,.08); }

/* Persistent marquee in the order-summary panel — visible from step 1 through checkout */
.fac-summary { margin-top: .85rem; padding-top: .85rem; border-top: 1px solid rgba(0,0,0,.08); }
.fac-summary .fac-sum-head { display: flex; align-items: center; gap: .4rem; font-size: .72rem; font-weight: 700; letter-spacing: .02em; color: #4b5563; margin: 0 0 .6rem; }
.fac-summary .fac-sum-head svg { width: 14px; height: 14px; flex: none; stroke: #2f5d40; }
.fac-summary .fac-sum-row { display: flex; align-items: center; flex-wrap: wrap; row-gap: 6px; }
.fac-summary .fac-sum-row img { width: 38px; height: 38px; border-radius: 50%; object-fit: cover; object-position: center 18%; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(0,0,0,.1); background: #e5e5e5; margin-left: -8px; }
.fac-summary .fac-sum-row img:first-child { margin-left: 0; }
.fac-summary .fac-sum-row img.is-gold { box-shadow: 0 0 0 2px var(--sun); }
.fac-summary .fac-more { margin-left: 10px; font-size: .72rem; font-weight: 700; color: #2f5d40; background: #eef4ee; border: 1px solid #d9e7d9; border-radius: 999px; padding: .3rem .6rem; white-space: nowrap; }
