/* schon-home.css — the schon-design section system, scoped under
   .schon-home so it cannot affect the app's Tailwind pages.
   Generated from schon-design/assets/css/schon.css. */
.schon-home *, .schon-home *::before, .schon-home *::after{ box-sizing: border-box; }
.schon-home html{ -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
.schon-home body{
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.6;
  color: var(--text);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
}
.schon-home img{ max-width: 100%; display: block; }
.schon-home svg{ fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.schon-home a{ color: inherit; text-decoration: none; }
.schon-home button{ font: inherit; cursor: pointer; border: 0; background: none; }
.schon-home ul{ list-style: none; margin: 0; padding: 0; }
.schon-home ::selection{ background: var(--primary); color: #fff; }
.schon-home h1, .schon-home h2, .schon-home h3, .schon-home h4{
  margin: 0;
  color: var(--primary);
  font-weight: 600;
  line-height: 1.15;
}
.schon-home h1{ font-size: clamp(2rem, 4.2vw, 3.5rem); line-height: 1.11; }
.schon-home h2{ font-size: clamp(1.5rem, 3vw, 2.5rem); }
.schon-home h3{ font-size: 1.25rem; }
.schon-home h4{ font-size: 1rem; }
.schon-home p{ margin: 0 0 1rem; }
.schon-home p:last-child{ margin-bottom: 0; }
.schon-home .label, .schon-home .eyebrow{
  font-size: .875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .14em;
  line-height: 1.71;
}
.schon-home .eyebrow{ color: var(--primary); margin-bottom: .75rem; display: block; }
.schon-home .container{
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.schon-home .section{ padding: var(--sec-y) 0; }
.schon-home .section--tint{ background: var(--tertiary); }
.schon-home .section--dark{ background: var(--dark); }
.schon-home .section--dark h2, .schon-home .section--dark h3{ color: var(--white); }
.schon-home .section--dark, .schon-home .section--dark p{ color: rgba(255, 255, 255, .72); }
.schon-home .section--tight{ padding-top: 0; }
.schon-home .section-head{
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 40px;
}
.schon-home .section-head__text{ max-width: 640px; }
.schon-home .section-head--center{ flex-direction: column; align-items: center; text-align: center; }
.schon-home .section-head--center .section-head__text{ margin: 0 auto; }
.schon-home .section-head .arrows{ flex: 0 0 auto; margin-bottom: 4px; }
.schon-home .btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 26px;
  border-radius: var(--radius);
  font-size: .875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  line-height: 1;
  transition: all .3s var(--ease);
  white-space: nowrap;
}
.schon-home .btn--primary{ background: var(--primary); color: #fff; }
.schon-home .btn--primary:hover{ background: #00543A; transform: translateY(-2px); }
.schon-home .btn--accent{ background: var(--secondary); color: var(--deep); }
.schon-home .btn--accent:hover{ background: #8FBF4E; transform: translateY(-2px); }
.schon-home .btn--dark{ background: var(--deep); color: var(--white); }
.schon-home .btn--dark:hover{ background: #00301F; transform: translateY(-2px); }
.schon-home .btn--ghost{ border: 1px solid var(--border); color: var(--primary); }
.schon-home .btn--ghost:hover{ border-color: var(--primary); }
.schon-home .btn--on-dark{ background: var(--secondary); color: var(--deep); }
.schon-home .btn--block{ width: 100%; }
.schon-home .btn svg{ width: 16px; height: 16px; flex: 0 0 auto; }
.schon-home .link-arrow{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--primary);
  transition: color .3s var(--ease);
}
.schon-home .link-arrow:hover{ color: var(--accent); }
.schon-home .link-arrow svg{ width: 15px; height: 15px; transition: transform .3s var(--ease); }
.schon-home .link-arrow:hover svg{ transform: translateX(4px); }
.schon-home .arrows{ display: flex; gap: 10px; }
.schon-home .arrows button{
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--primary);
  transition: all .3s var(--ease);
}
.schon-home .arrows button svg{ width: 18px; height: 18px; }
.schon-home .arrows button:hover{
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
}
.schon-home .arrows button[disabled]{ opacity: .35; cursor: default; }
.schon-home .arrows button[disabled]:hover{ background: none; border-color: var(--border); color: var(--primary); }
.schon-home .rail{
  display: flex;
  gap: 24px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 4px;
  scrollbar-width: none;
}
.schon-home .rail::-webkit-scrollbar{ display: none; }
.schon-home .rail > *{ min-width: 0; scroll-snap-align: start; flex: 0 0 calc((100% - 72px) / 4); }
.schon-home .rail--3 > *{ flex: 0 0 calc((100% - 48px) / 3); }
.schon-home .marquee{ --marquee-h: 280px; overflow: hidden; user-select: none; }
.schon-home .marquee__track{ display: flex; flex-wrap: nowrap; transition: transform .7s var(--ease); }
/* The frame takes the image's OWN aspect ratio at a fixed height, so a 2:1
   panorama is wide and a 1:1 upload stays square. The strip used to force
   aspect-ratio: 1, which cropped every non-square image the admin added.
   min/max-width stop an extreme ratio from producing a sliver or a monster;
   object-fit only has any effect inside those bounds. */
.schon-home .marquee__item{ flex: 0 0 auto; padding: 0 8px; }
.schon-home .marquee__frame{
  position: relative; display: block;
  height: var(--marquee-h); width: fit-content;
  border-radius: var(--radius); overflow: hidden;
  background: linear-gradient(135deg, #DBEAD9, #BCD9C4);
  box-shadow: var(--shadow-card);
}
.schon-home .marquee__frame img{
  display: block; height: 100%; width: auto;
  min-width: 200px; max-width: 560px;
  object-fit: cover;
  transition: transform .5s var(--ease);
}
.schon-home .marquee__frame:hover img{ transform: scale(1.08); }

/* A poster frame with no admin link is a <button>, so it is keyboard-operable
   for free (Enter/Space) — but the UA chrome has to go. It inherits the frame's
   own background from the rule above; only border/padding/font/cursor differ. */
.schon-home button.marquee__frame{
  border: 0; padding: 0; font: inherit; color: inherit;
  -webkit-appearance: none; appearance: none; cursor: zoom-in;
}
.schon-home .marquee__frame:focus-visible{ outline: 2px solid var(--primary); outline-offset: 2px; }
.schon-home .marquee__zoom{
  position: absolute; right: 10px; bottom: 10px;
  display: grid; place-items: center;
  width: 32px; height: 32px; border-radius: var(--radius);
  color: #fff; background: rgba(1, 43, 28, .62);
  opacity: 0; transform: translateY(4px);
  transition: opacity .25s var(--ease), transform .25s var(--ease);
  pointer-events: none;
}
.schon-home .marquee__zoom svg{ width: 16px; height: 16px; }
.schon-home .marquee__frame:hover .marquee__zoom,
.schon-home .marquee__frame:focus-visible .marquee__zoom{ opacity: 1; transform: none; }

/* ---------- Poster lightbox ----------
   Full-size view of a strip poster. Rendered by sk_marquee() as a sibling of
   the strip and left `hidden` until a frame is activated. Class names are
   namespaced (lb__*) rather than scoped-only because nothing else in the app
   uses them. */
.schon-home .lb{
  position: fixed; inset: 0; z-index: 90;
  display: grid; place-items: center; padding: 24px;
  background: rgba(1, 20, 12, .9);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
.schon-home .lb[hidden]{ display: none; }
.schon-home .lb__figure{ margin: 0; display: grid; gap: 10px; justify-items: center; max-width: 100%; }
.schon-home .lb__img{
  display: block; width: auto; height: auto;
  max-width: min(90vw, 1100px); max-height: 82vh;
  object-fit: contain; border-radius: var(--radius);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .5);
}
.schon-home .lb__caption{ color: #EAF3EC; font-size: 14px; text-align: center; max-width: 70ch; }
.schon-home .lb__caption:empty{ display: none; }
.schon-home .lb__count{
  position: fixed; left: 0; right: 0; bottom: 18px; margin: 0;
  text-align: center; color: rgba(255, 255, 255, .75); font-size: 13px;
}
.schon-home .lb__count:empty{ display: none; }
.schon-home .lb__close,
.schon-home .lb__nav{
  position: fixed; z-index: 1; display: grid; place-items: center;
  width: 44px; height: 44px; border: 0; border-radius: var(--radius);
  color: #fff; background: rgba(255, 255, 255, .12); cursor: pointer;
  transition: background .2s var(--ease);
}
.schon-home .lb__close:hover, .schon-home .lb__nav:hover{ background: rgba(255, 255, 255, .24); }
.schon-home .lb__close:focus-visible, .schon-home .lb__nav:focus-visible{ outline: 2px solid #fff; outline-offset: 2px; }
.schon-home .lb__close{ top: 18px; right: 18px; font-size: 26px; line-height: 1; }
.schon-home .lb__nav{ top: 50%; transform: translateY(-50%); }
.schon-home .lb__nav svg{ width: 20px; height: 20px; }
.schon-home .lb__nav--prev{ left: 18px; }
.schon-home .lb__nav--next{ right: 18px; }
@media (max-width: 639px){
  .schon-home .lb{ padding: 12px; }
  .schon-home .lb__img{ max-height: 74vh; }
  .schon-home .lb__nav{ width: 38px; height: 38px; }
  .schon-home .lb__nav--prev{ left: 8px; }
  .schon-home .lb__nav--next{ right: 8px; }
  .schon-home .lb__close{ top: 10px; right: 10px; }
}
.schon-home .grid{ display: grid; gap: 24px; }
.schon-home .grid > *{ min-width: 0; }
.schon-home .grid--2{ grid-template-columns: repeat(2, 1fr); }
.schon-home .grid--3{ grid-template-columns: repeat(3, 1fr); }
.schon-home .grid--4{ grid-template-columns: repeat(4, 1fr); }
.schon-home .grid--6{ grid-template-columns: repeat(6, 1fr); }
.schon-home .card{
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.schon-home .card:hover{ transform: translateY(-4px); box-shadow: var(--shadow-lift); }
.schon-home .card__media{
  position: relative;
  aspect-ratio: 16 / 10;
  
  background: linear-gradient(135deg, #DBEAD9, #BCD9C4);
  overflow: hidden;
}
.schon-home .card__media img{
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .6s var(--ease);
}
.schon-home .card:hover .card__media img{ transform: scale(1.06); }
.schon-home .card__body{ padding: 20px; display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 0; }
.schon-home .card__title{
  min-width: 0;
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--primary);
  line-height: 1.35;
  /* Clamp long titles (up to 169 chars seeded) so one card can't drive
     the whole grid row's height. Full text stays in the DOM for SEO/a11y
     and is exposed via the title attribute as a hover tooltip. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  /* Reserve two lines so single-line titles align with two-line ones. */
  min-height: calc(2 * 1.35em);
}
.schon-home .card__title a{ transition: color .3s var(--ease); }
.schon-home .card__title a:hover{ color: var(--accent); }
.schon-home .meta{ display: flex; flex-wrap: wrap; gap: 16px; font-size: .875rem; color: var(--muted); min-width: 0; }
/* Cruise cards carry a 120-char region list as their "location" — clamp each
   meta item to one line so it can't stack into a wall of text. */
.schon-home .meta span{ display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.schon-home .meta svg{ width: 14px; height: 14px; stroke: var(--primary); flex: 0 0 auto; }
.schon-home .card__foot{
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.schon-home .price{ font-weight: 600; color: var(--primary); font-size: 1.05rem; }
.schon-home .price small{ display: block; font-size: .75rem; font-weight: 400; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; }
.schon-home .card--h{ flex-direction: row; }
.schon-home .card--h .card__media{ flex: 0 0 38%; aspect-ratio: auto; min-height: 104px; }
.schon-home .card--h .card__media img{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.schon-home .card--h .card__body{ padding: 14px; gap: 7px; }
.schon-home .card--h .card__title{ font-size: .95rem; line-height: 1.3; -webkit-line-clamp: 2; line-clamp: 2; min-height: calc(2 * 1.3em); }
.schon-home .card--h .meta{ gap: 10px; font-size: .75rem; }
.schon-home .card--h .card__foot{ padding-top: 10px; gap: 8px; }
.schon-home .card--h .price{ font-size: .9rem; }
.schon-home .card--h .price small{ font-size: .65rem; }
.schon-home .card--h .link-arrow{ font-size: .7rem; letter-spacing: .02em; }
.schon-home .card--h .badge{ top: 8px; left: 8px; font-size: .65rem; padding: 4px 7px; }
.schon-home .badge{
  position: absolute;
  top: 12px; left: 12px;
  background: var(--secondary);
  color: var(--deep);
  font-size: .75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding: 6px 10px;
  border-radius: var(--radius);
}
.schon-home .hero{
  position: relative;
  min-height: 620px;
  display: flex;
  align-items: center;
  color: var(--white);
  background: linear-gradient(115deg, #012B1C 0%, #006442 55%, #3E8E5A 100%);
  overflow: hidden;
}
.schon-home .hero__bg{ position: absolute; inset: 0; z-index: 0; }
.schon-home .hero__bg img{ width: 100%; height: 100%; object-fit: cover; }
.schon-home .hero__bg::after{
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(1, 43, 28, .82) 0%, rgba(1, 43, 28, .55) 55%, rgba(1, 43, 28, .35) 100%);
}
.schon-home .hero__inner{ position: relative; z-index: 1; padding: 120px 0 150px; max-width: 720px; }
.schon-home .hero h1{ color: var(--white); margin-bottom: 18px; }
.schon-home .hero p{ font-size: 1.125rem; color: rgba(255, 255, 255, .85); max-width: 540px; }
.schon-home .hero .eyebrow{ color: var(--secondary); }
.schon-home .search-wrap{
  position: relative;
  z-index: 3;
  margin-top: -64px;
}
.schon-home .search-bar{
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow-search);
  padding: 20px 20px 16px;
}
.schon-home .search-bar__grid{
  display: grid;
  grid-template-columns: repeat(4, 1fr) auto;
  gap: 12px;
  align-items: end;
}
.schon-home .field{ display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.schon-home .field__label{
  font-size: .75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--primary);
}
.schon-home .field__control{
  display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px 14px;
  background: var(--white);
  transition: border-color .3s var(--ease);
}
.schon-home .field__control:focus-within{ border-color: var(--primary); }
.schon-home .field__control svg{ width: 17px; height: 17px; stroke: var(--muted); flex: 0 0 auto; }
.schon-home .field__control input, .schon-home .field__control select{
  border: 0; outline: 0; background: none;
  font: inherit; font-size: .95rem;
  color: var(--primary);
  width: 100%; min-width: 0;
  appearance: none;
}
.schon-home .field__control select{ cursor: pointer; }
.schon-home .icon-box{ text-align: center; padding: 34px 22px; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow-card); }
.schon-home .icon-box__icon{
  width: 64px; height: 64px; margin: 0 auto 18px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--tertiary);
  color: var(--primary);
  transition: all .3s var(--ease);
}
.schon-home .icon-box:hover .icon-box__icon{ background: var(--secondary); color: var(--deep); }
.schon-home .icon-box__icon svg{ width: 28px; height: 28px; }
.schon-home .icon-box h3{ margin-bottom: 8px; font-size: 1.1rem; }
.schon-home .icon-box p{ font-size: .95rem; color: var(--text); }
.schon-home .tile{
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 3 / 4;
  background: linear-gradient(160deg, #D7E8D4, #B4D2BD);
  display: block;
}
.schon-home .tile img{ width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ease); }
.schon-home .tile:hover img{ transform: scale(1.07); }
.schon-home .tile::after{
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(1, 43, 28, 0) 40%, rgba(1, 43, 28, .78) 100%);
}
.schon-home .tile__label{
  position: absolute; left: 18px; bottom: 16px; right: 18px; z-index: 2;
  color: var(--white);
}
.schon-home .tile__label strong{ display: block; font-size: 1.15rem; font-weight: 600; }
.schon-home .tile__label span{ font-size: .8rem; opacity: .8; }
.schon-home .quote{
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card);
  padding: 30px;
  height: 100%;
  display: flex; flex-direction: column; gap: 16px;
}
/* The star glyph carries fill="currentColor" as a presentation ATTRIBUTE on the
   <path>, and an attribute beats any fill inherited from the <svg> rule — so the
   stars rendered in the surrounding text colour (black). `color` is what
   currentColor actually resolves against. The explicit path rule is belt-and-braces. */
.schon-home .quote__stars{ display: flex; gap: 3px; color: #FFB800; }
.schon-home .quote__stars svg{ width: 16px; height: 16px; stroke: none; }
.schon-home .quote__stars svg path{ fill: #FFB800; }
.schon-home .quote p{ font-size: 1rem; color: var(--text); }
.schon-home .quote__who{ margin-top: auto; display: flex; align-items: center; gap: 12px; padding-top: 8px; border-top: 1px solid var(--border); }
.schon-home .quote__who img{ width: 46px; height: 46px; border-radius: 50%; object-fit: cover; background: var(--tertiary); }
.schon-home .quote__who strong{ display: block; color: var(--primary); font-size: .95rem; }
.schon-home .quote__who span{ font-size: .8rem; color: var(--muted); }
.schon-home .tabs{ display: flex; justify-content: center; gap: 8px; flex-wrap: wrap; margin-bottom: 34px; }
.schon-home .tabs button{
  padding: 10px 22px;
  border-radius: var(--radius);
  font-size: .875rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--primary);
  border: 1px solid var(--border);
  transition: all .3s var(--ease);
}
.schon-home .tabs button:hover{ border-color: var(--primary); }
.schon-home .tabs button[aria-selected="true"]{ background: var(--primary); border-color: var(--primary); color: #fff; }
.schon-home .tabpanel[hidden]{ display: none; }
.schon-home .post{ display: flex; gap: 16px; align-items: flex-start; }
.schon-home .post__thumb{ flex: 0 0 96px; aspect-ratio: 1; border-radius: var(--radius); overflow: hidden; background: #123A2A; }
.schon-home .post__thumb img{ width: 100%; height: 100%; object-fit: cover; }
.schon-home .post__meta{ font-size: .75rem; text-transform: uppercase; letter-spacing: .08em; color: var(--secondary); margin-bottom: 4px; }
.schon-home .post h3{ color: var(--white); font-size: 1rem; line-height: 1.3; transition: color .3s var(--ease);
  display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.schon-home .post:hover h3{ color: var(--secondary); }
.schon-home .icon-chip{ display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: var(--tertiary); color: var(--primary); flex-shrink: 0; }
.schon-home .icon-chip svg{ width: 16px; height: 16px; }
.schon-home .btn--grad{
  display: inline-flex; align-items: center; gap: .5rem;
  background: linear-gradient(135deg, #004D33, #2F7D4B);
  color: #fff;
  padding: 10px 20px; border-radius: var(--radius);
  font-size: 14px; font-weight: 600;
  text-transform: none; letter-spacing: 0; white-space: nowrap;
  transition: filter .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease);
}
.schon-home .btn--grad:hover{ filter: brightness(1.08); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0, 60, 40, .28); }
.schon-home .btn--grad-outline{
  display: inline-flex; align-items: center; justify-content: center;
  border: 2px solid transparent;
  background:
    linear-gradient(var(--white), var(--white)) padding-box,
    linear-gradient(135deg, #004D33, var(--secondary)) border-box;
  color: var(--primary);
  padding: 8px 18px; border-radius: var(--radius);
  font-size: 14px; font-weight: 600;
  text-transform: none; letter-spacing: 0; white-space: nowrap;
  transition: transform .18s var(--ease), box-shadow .18s var(--ease);
}
.schon-home .btn--grad-outline:hover{ transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0, 60, 40, .22); }
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.schon-home .hd-glass{ background: var(--white); }}
.schon-home .navlink{
  position: relative; display: inline-flex; align-items: center; gap: .3rem;
  height: 46px; padding: 0 .35rem;
  font-size: 12px; font-weight: 800; letter-spacing: .01em;
  text-transform: uppercase; white-space: nowrap;
  color: var(--primary);
  transition: color .18s var(--ease);
}
.schon-home .navlink:hover, .schon-home .navlink.is-active{ color: var(--accent); }
.schon-home .navlink svg{ width: 12px; height: 12px; opacity: .6; }
.schon-home .navlink.is-active::after{
  content: ''; position: absolute; left: .35rem; right: .35rem; bottom: 0;
  height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, var(--primary), var(--secondary));
}
.schon-home .has-sub{ position: relative; height: 100%; }
.schon-home .dropdown{
  position: absolute; top: 100%; left: 0; min-width: 210px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 14px 40px -12px rgba(0, 60, 40, .22);
  padding: .4rem;
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity .18s var(--ease), transform .18s var(--ease), visibility .18s;
  z-index: 60;
}
.schon-home .has-sub:hover .dropdown, .schon-home .has-sub:focus-within .dropdown{ opacity: 1; visibility: visible; transform: translateY(0); }
.schon-home .dropdown-item{
  display: block; padding: .5rem .75rem;
  font-size: 13.5px; font-weight: 500;
  color: var(--text); border-radius: var(--radius);
  transition: background .15s var(--ease), color .15s var(--ease);
}
.schon-home .dropdown-item:hover{ background: var(--tertiary); color: var(--primary); }
.schon-home .dropdown-item.is-active{ background: var(--tertiary); color: var(--primary); font-weight: 600; }
@supports (height: 100dvh){.schon-home .hd-mobile__panel{ max-height: calc(100dvh - 68px); }}
.schon-home .burger{ display: inline-flex; align-items: center; justify-content: center; padding: 8px; color: var(--primary); border-radius: var(--radius); }
.schon-home .burger svg{ width: 26px; height: 26px; }
.schon-home .burger__open, .schon-home .burger__close{ display: flex; align-items: center; }
.schon-home .burger__close{ display: none; }
.schon-home .burger[aria-expanded="true"] .burger__open{ display: none; }
.schon-home .burger[aria-expanded="true"] .burger__close{ display: flex; }
.schon-home .socials{ display: flex; gap: 10px; margin-top: 20px; }
.schon-home .socials a{
  width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
  border-radius: var(--radius); background: rgba(255, 255, 255, .08);
  color: var(--white); transition: all .3s var(--ease);
}
.schon-home .socials a:hover{ background: var(--secondary); color: var(--deep); }
.schon-home .socials svg{ width: 17px; height: 17px; }
.js .schon-home .reveal{ opacity: 0; transform: translateY(22px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.js .schon-home .reveal.is-in{ opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce){.schon-home .reveal{ opacity: 1; transform: none; transition: none; }.schon-home html{ scroll-behavior: auto; }}
@media (max-width: 1279px){.schon-home .hd-contact{ gap: 16px; }.schon-home .hd-contact__item{ gap: 8px; }.schon-home .hd-contact .icon-chip{ width: 28px; height: 28px; }.schon-home .hd-contact .icon-chip svg{ width: 14px; height: 14px; }.schon-home .hd-contact__label{ display: none; }.schon-home .hd-contact__value{ font-size: .85rem; }.schon-home .hd-contact__sep{ height: 28px; }}
@media (max-width: 1279px){.schon-home .grid--4{ gap: 16px; }}
@media (max-width: 1279px){.schon-home .hd-glass__inner{ gap: .75rem; }.schon-home .navlink{ font-size: 11.5px; }}
@media (max-width: 1100px){.schon-home .rail > *{ flex: 0 0 calc((100% - 48px) / 3); }.schon-home .grid--6{ grid-template-columns: repeat(4, 1fr); }}
@media (max-width: 1023px){.schon-home .hd-top, .schon-home .hd-glass{ display: none; }.schon-home .hd-mobile{ display: block; }.schon-home .footer-grid{ grid-template-columns: repeat(2, 1fr); gap: 32px; }.schon-home .marquee{ --marquee-h: 230px; }}
@media (max-width: 900px){.schon-home :root{ --sec-y: 60px; }.schon-home .grid--4, .schon-home .grid--6{ grid-template-columns: repeat(2, 1fr); }.schon-home .grid--3{ grid-template-columns: repeat(2, 1fr); }.schon-home .rail > *, .schon-home .rail--3 > *{ flex: 0 0 calc((100% - 24px) / 2); }.schon-home .search-bar__grid{ grid-template-columns: repeat(2, 1fr); }.schon-home .search-bar__grid .btn{ grid-column: 1 / -1; }.schon-home .search-wrap{ margin-top: -40px; }.schon-home .hero__inner{ padding: 90px 0 110px; }}
@media (max-width: 640px){.schon-home :root{ --sec-y: 48px; --gutter: 16px; }.schon-home .brand__logo{ height: 38px; }.schon-home .brand--plate{ padding: 5px 10px; }.schon-home .brand--plate .brand__logo{ height: 28px; }.schon-home .grid--2, .schon-home .grid--3, .schon-home .grid--4, .schon-home .grid--6{ grid-template-columns: 1fr; }.schon-home .rail > *, .schon-home .rail--3 > *{ flex: 0 0 82%; }.schon-home .search-bar__grid{ grid-template-columns: 1fr; }.schon-home .section-head{ flex-direction: column; align-items: flex-start; }.schon-home .section-head .arrows{ align-self: flex-end; }.schon-home .footer-grid{ grid-template-columns: 1fr; gap: 28px; }.schon-home .footer-bottom{ flex-direction: column; text-align: center; }.schon-home .hero{ min-height: 520px; }}
@media (max-width: 639px){.schon-home .marquee{ --marquee-h: 180px; }}

/* ---------- Testimonials: refinements ----------
   4 cards in a 2x2 grid. The template's .quote__who img covers uploaded
   avatars; nothing styled the initials fallback, so with no avatar on any
   review the name badge rendered as loose text. */
.schon-home .quote { padding: 34px 30px 26px; position: relative; overflow: hidden; }
.schon-home .quote::before {
    content: '“';
    position: absolute; top: 2px; right: 20px;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 104px; line-height: 1;
    color: var(--primary); opacity: .10;
    pointer-events: none;
}
.schon-home .quote__stars { position: relative; z-index: 1; }
.schon-home .quote blockquote { position: relative; z-index: 1; }
.schon-home .quote blockquote p {
    font-size: 1.0625rem; line-height: 1.62; color: var(--text);
}
.schon-home .quote__who { position: relative; z-index: 1; }
.schon-home .quote__who .quote__avatar {
    width: 46px; height: 46px; flex: 0 0 46px;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: .88rem; font-weight: 700; letter-spacing: .03em;
}
.schon-home .quote__who > span { display: flex; flex-direction: column; gap: 3px; }
.schon-home .quote__who strong { font-size: 1rem; line-height: 1.2; }
/* keep the 2x2 grid honest when the reviews differ in length */
.schon-home .grid--2 > * { display: flex; }
.schon-home .grid--2 .quote { width: 100%; }

/* ---------- Cruise cards ----------
   The picked "media-ready" structure with the "line plate" as its fallback:
   real ship photography when featured_image is set, otherwise the brand plate.
   The line name is overlaid on the media in BOTH states, so it never prints
   twice. `location` (the line's region list, up to 123 chars) becomes pills. */
.schon-home .cruise-card {
    display: flex; flex-direction: column;
    background: var(--white); border: 1px solid var(--border);
    border-radius: var(--radius); overflow: hidden;
    box-shadow: var(--shadow-card);
    transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.schon-home .cruise-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); }

.schon-home .cruise-card__media {
    position: relative; aspect-ratio: 16 / 9; overflow: hidden;
    background: linear-gradient(135deg, #012B1C 0%, #014A31 55%, #006442 100%);
}
.schon-home .cruise-card__media img {
    position: absolute; inset: 0; width: 100%; height: 100%;
    object-fit: cover; transition: transform .6s var(--ease);
}
.schon-home .cruise-card:hover .cruise-card__media img { transform: scale(1.06); }
.schon-home .cruise-card__mark {
    position: absolute; top: 15px; right: 17px; width: 26px; height: 26px;
    color: rgba(162, 208, 100, .45);
}
.schon-home .cruise-card__mark svg { width: 100%; height: 100%; }
/* The scrim is the overlay background, so it doubles as the plate's shading and
   the photo's legibility wash. The wave rides on top of it, under the text. */
.schon-home .cruise-card__overlay {
    position: absolute; left: 0; right: 0; bottom: 0;
    padding: 16px 20px 18px;
    display: flex; flex-direction: column; gap: 3px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 40' preserveAspectRatio='none'%3E%3Cpath d='M0 22 C 60 6, 110 34, 170 20 S 290 4, 400 22 L400 40 L0 40 Z' fill='rgba(255,255,255,0.07)'/%3E%3C/svg%3E"),
                      linear-gradient(to top, rgba(1,20,12,.92) 0%, rgba(1,20,12,.55) 60%, rgba(1,20,12,0) 100%);
    background-repeat: no-repeat, no-repeat;
    background-position: bottom, 0 0;
    background-size: 100% 30px, auto;
}
.schon-home .cruise-card__eyebrow {
    font-size: .64rem; font-weight: 800; letter-spacing: .16em;
    text-transform: uppercase; color: var(--secondary);
}
.schon-home .cruise-card h3 {
    color: var(--white); font-size: 1.14rem; font-weight: 800;
    line-height: 1.22; letter-spacing: -.01em;
    display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2;
    -webkit-box-orient: vertical; overflow: hidden;
    min-height: calc(2 * 1.22em);
}
.schon-home .cruise-card__body {
    padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 12px;
    flex: 1; min-width: 0;
}
.schon-home .cruise-card__chips { display: flex; flex-wrap: wrap; gap: 6px; min-height: 26px; min-width: 0; }
.schon-home .cruise-card__chips span {
    background: var(--tertiary); color: #2F6B4C;
    font-size: .68rem; font-weight: 700; letter-spacing: .04em;
    padding: 4px 9px; border-radius: 999px; white-space: nowrap;
    max-width: 100%; min-width: 0; overflow: hidden; text-overflow: ellipsis;
}
.schon-home .cruise-card__chips .more {
    background: transparent; border: 1px dashed #B9CDBD; color: var(--muted);
}
.schon-home .cruise-card__desc {
    margin: 0; font-size: .88rem; color: var(--muted); flex: 1;
    display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2;
    -webkit-box-orient: vertical; overflow: hidden;
}
.schon-home .cruise-card__foot {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    border-top: 1px solid var(--border); padding-top: 13px; margin-top: auto;
    min-width: 0;
}
.schon-home .cruise-card__facts {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0;
}
.schon-home .cruise-card__nights {
    display: inline-block; background: var(--tertiary); color: var(--primary);
    font-size: .68rem; font-weight: 800; letter-spacing: .08em;
    text-transform: uppercase; padding: 4px 10px; border-radius: 999px;
    white-space: nowrap;
}
