.frc-carousel-section{background:transparent;padding:72px 0;box-sizing:border-box}.frc-carousel-section *{box-sizing:border-box}.frc-carousel-shell{width:min(1440px,100%);margin:0 auto;padding:0 52px}.frc-carousel-heading{text-align:center;margin:0 auto 44px;max-width:850px}.frc-eyebrow{color:var(--frc-eyebrow);font-weight:800;letter-spacing:.05em;font-size:16px;text-transform:uppercase;margin-bottom:10px}.frc-carousel-heading h2{color:var(--frc-title);font-size:clamp(32px,4vw,50px);line-height:1.08;margin:0 0 16px;font-weight:800}.frc-carousel-heading p{color:var(--frc-intro);font-size:18px;line-height:1.5;margin:0}.frc-stage{position:relative}.frc-viewport{overflow:hidden;padding:3px;touch-action:pan-y;overscroll-behavior-x:contain}.frc-track{display:flex;gap:var(--frc-card-gap);transition:transform .15s cubic-bezier(.22,.61,.36,1);will-change:transform}.frc-card{flex:0 0 var(--frc-desktop-card-width,calc((100% - (var(--frc-card-gap) * 3))/4));background:var(--frc-card-bg);border:1px solid var(--frc-card-border);border-radius:var(--frc-card-radius);overflow:hidden;display:flex;flex-direction:column;min-width:0;box-shadow:0 10px 24px rgba(21,22,30,.10)}.frc-image-wrap{height:var(--frc-image-height);position:relative;overflow:hidden;background:#edf0ef}.frc-image-wrap img{width:100%;height:100%;object-fit:cover;display:block}.frc-image-placeholder{height:100%;display:flex;align-items:center;justify-content:center;color:#6c7279;background:#edf0ef}.frc-price-badge{position:absolute;right:14px;top:14px;background:var(--frc-badge-bg);color:var(--frc-badge-color);min-width:106px;padding:11px 12px 10px;border-radius:16px;text-align:center;line-height:1.08;box-shadow:0 5px 12px rgba(0,0,0,.11)}.frc-price-badge span{font-size:12px;font-weight:800;letter-spacing:.03em;display:block}.frc-price-badge strong{font-size:24px;font-weight:800;display:block;margin-top:3px}.frc-card-content{padding:24px 24px 22px;display:flex;flex-direction:column;flex:1}.frc-place h3{font-size:30px;line-height:1.05;margin:0 0 8px;color:var(--frc-destination);font-weight:800}.frc-country{display:flex;align-items:center;gap:7px;font-size:18px;color:var(--frc-country);line-height:1.2}.frc-flag{display:inline-block;width:26px;height:18px;flex:0 0 26px;border-radius:2px;overflow:hidden;box-shadow:0 0 0 1px rgba(0,0,0,.10)}.frc-divider{height:1px;background:var(--frc-card-border);margin:22px 0 22px}.frc-features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:28px}.frc-feature{font-size:15px;line-height:1.35;color:var(--frc-feature);text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.frc-feature-icon{color:var(--frc-feature-icon);height:30px;display:flex;align-items:center}.frc-button{height:var(--frc-button-height);border:1px solid var(--frc-button-border);border-radius:var(--frc-button-radius);background:var(--frc-button-bg);color:var(--frc-button-color)!important;text-decoration:none!important;font-weight:700;font-size:16px;display:flex;align-items:center;justify-content:center;gap:16px;margin-top:auto;transition:background .18s ease,transform .18s ease}.frc-button:hover{background:var(--frc-button-hover);transform:translateY(-1px)}.frc-button-arrow{color:var(--frc-button-icon);font-size:26px;line-height:1}.frc-arrow{width:62px;height:62px;border-radius:50%;background:var(--frc-arrow-bg);color:var(--frc-arrow-color);border:1px solid var(--frc-arrow-border);box-shadow:0 8px 19px rgba(0,0,0,.10);font-size:40px;line-height:1;position:absolute;top:42%;z-index:2;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .18s ease}.frc-arrow:hover{transform:scale(1.06)}.frc-arrow-prev{left:-44px}.frc-arrow-next{right:-44px}.frc-arrow[disabled]{opacity:.4;pointer-events:none}.frc-dots{display:flex;justify-content:center;gap:16px;margin-top:34px;min-height:14px}.frc-dot{width:14px;height:14px;border:0;border-radius:50%;padding:0;background:var(--frc-dot);cursor:pointer}.frc-dot.is-active{background:var(--frc-dot-active)}
@media(max-width:1100px){.frc-card{flex-basis:calc((100% - var(--frc-card-gap))/2)}.frc-image-wrap{height:var(--frc-image-height-tablet)}}
@media(max-width:921px){.frc-carousel-section{padding:56px 0}.frc-carousel-shell{padding:0 var(--frc-mobile-outer-margin,8px)}.frc-carousel-heading{margin-bottom:30px}.frc-carousel-heading p{font-size:16px}.frc-stage{overflow:hidden}.frc-viewport{overflow:visible;padding:3px 0}.frc-track{gap:12px}.frc-card{flex:0 0 clamp(260px,var(--frc-mobile-card-width,72vw),var(--frc-mobile-card-max-width,320px))}.frc-image-wrap{height:var(--frc-image-height-mobile)}.frc-card-content{padding:22px 20px 20px}.frc-place h3{font-size:26px}.frc-arrow{display:none!important}.frc-dots{margin-top:26px;gap:12px}.frc-dot{width:12px;height:12px}}
@media(max-width:420px){.frc-carousel-shell{padding-left:var(--frc-mobile-outer-margin,8px);padding-right:var(--frc-mobile-outer-margin,8px)}.frc-card-content{padding:20px 16px 18px}.frc-features{gap:3px}.frc-feature{font-size:13px}.frc-price-badge{min-width:96px}.frc-price-badge strong{font-size:22px}}

.frc-track.frc-is-dragging{cursor:grabbing;user-select:none}
.frc-track.frc-is-dragging *{user-select:none}

/* Horizontal touch gestures temporarily own the interaction, preventing accidental page movement. */
.frc-viewport.frc-scroll-locked{overscroll-behavior:contain}

/* One visible destination is intentionally static. */
.frc-carousel-section.frc-single-card .frc-track{justify-content:center}
.frc-carousel-section.frc-single-card .frc-viewport{overflow:visible}
.frc-carousel-section.frc-single-card .frc-card{margin-left:auto;margin-right:auto}
.frc-carousel-section.frc-single-card .frc-dots,.frc-carousel-section.frc-single-card .frc-arrow{display:none!important}

/* v0.4.3 – give the three feature columns actual visible separation.
   The feature row may use a little of the card's side padding, so the
   extra column gap does not simply make each text column narrower. */
.frc-features{
  width:calc(100% + 24px);
  margin-left:-12px;
  column-gap:20px;
  row-gap:12px;
}
.frc-feature{
  min-width:0;
  max-width:112px;
  justify-self:center;
  gap:12px;
  line-height:1.42;
}
@media(max-width:420px){
  .frc-features{
    width:calc(100% + 20px);
    margin-left:-10px;
    column-gap:16px;
    row-gap:10px;
  }
  .frc-feature{max-width:96px;gap:12px;line-height:1.42}
}

/* v0.6.0 – larger touch screens use a native horizontal scroll container.
   No transform, pointer drag or JS inertia is involved here: iPadOS/Safari
   owns the gesture and momentum exactly like a native scroll view. */
.frc-native-touch .frc-stage{overflow:visible}
.frc-native-touch .frc-viewport{
  overflow-x:auto!important;
  overflow-y:hidden!important;
  padding:3px 0;
  touch-action:pan-x pan-y;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scrollbar-width:none;
  /* The arrow logic owns discrete start/end navigation. Do not let Safari
     create extra centered snap destinations beyond the final real card. */
  scroll-snap-type:none;
  scroll-padding-inline:0;
  scroll-behavior:auto;
}
.frc-native-touch .frc-viewport::-webkit-scrollbar{display:none}
.frc-native-touch .frc-track{
  width:max-content;
  transform:none!important;
  transition:none!important;
  will-change:auto;
  gap:12px;
}
.frc-native-touch .frc-card{
  flex:0 0 clamp(260px,var(--frc-mobile-card-width,72vw),var(--frc-mobile-card-max-width,320px));
  /* Center snapping lets WebKit place the final card in the middle and
     exposes blank track space after it. Keep the real card edge as the end. */
  scroll-snap-align:start;
  scroll-snap-stop:normal;
  scroll-margin-inline:0;
}
.frc-native-touch .frc-image-wrap{height:var(--frc-image-height-mobile)}
.frc-native-touch .frc-card-content{padding:22px 20px 20px}
.frc-native-touch .frc-place h3{font-size:26px}
.frc-native-touch .frc-dots{margin-top:26px;gap:12px}
.frc-native-touch .frc-dot{width:12px;height:12px}

/* v0.6.3 – arrows are controlled through one section class instead of
   competing inline display values from desktop and native-touch routes. */
.frc-native-touch .frc-arrow{z-index:4}
.frc-carousel-section.frc-arrows-hidden .frc-arrow{display:none!important}

/* v0.6.5: carousel images are intentionally eager-loaded. */
.frc-carousel-image.skip-lazy {
  opacity: 1 !important;
}

/* v0.6.8 – arrows sit outside the card viewport without consuming card width. */
@media(min-width:922px){.frc-carousel-shell{padding-left:52px;padding-right:52px}.frc-arrow-prev{left:-44px}.frc-arrow-next{right:-44px}}

/* v0.6.14 – tablets use a finite native strip. No duplicated sets, no hidden loop buffers. */
.frc-native-finite .frc-track{contain:none;}
.frc-native-finite .frc-card{content-visibility:visible;}

/* v0.6.16 – in the finite native tablet strip, only the unavailable boundary arrow disappears. */
.frc-native-finite .frc-arrow[hidden]{display:none!important}

/* v0.6.30 – desktop keeps four cards but uses a tighter gap.
   This deliberately excludes native-touch iPad/tablet and all mobile layouts. */
@media (min-width:1101px) {
  .frc-carousel-section:not(.frc-native-touch) {
    --frc-card-gap: 12px !important;
  }
}

/* v0.6.30 – iPhone/mobile snap after releasing the finger is a little smoother.
   Native-touch iPad/tablet is excluded so the stable v0.6.29 tablet behavior stays unchanged. */
@media (max-width:921px) {
  .frc-carousel-section:not(.frc-native-touch) .frc-track {
    transition: transform .5s cubic-bezier(.25,.8,.25,1);
  }
}


/* v0.6.32 – desktop arrow vertical alignment. Desktop only; iPad/tablet/mobile untouched. */
@media (min-width:1101px) {
  .frc-carousel-section:not(.frc-native-touch) .frc-arrow {
    top: calc(45% + 3px);
  }
}
/* v0.6.34 – desktop carousel may use the full viewport, but the JS
   fits only whole cards inside the visible viewport. iPad/tablet/mobile stay unchanged. */
@media (min-width:1101px) {
  .frc-carousel-section:not(.frc-native-touch) {
    width: 100vw !important;
    max-width: 100vw !important;
    margin-left: calc(50% - 50vw) !important;
    margin-right: calc(50% - 50vw) !important;
  }

  .frc-carousel-section:not(.frc-native-touch) .frc-carousel-shell {
    width: min(1755px, 100vw) !important;
    max-width: 100vw !important;
  }
}
