/**
 * FishyGo Core — Phase 4 product carousel.
 *
 * Loaded only when [fishygo_product_carousel] produces real output. The
 * selectors are scoped to .fgo-v3-root and preserve the locked V4 class API.
 */
.fgo-v3-root {
  --fgo-charcoal:#262626;
  --fgo-charcoal2:#4B4B4B;
  --fgo-crimson:#D6174B;
  --fgo-green:#06A77D;
  --fgo-green-dark:#058C68;
  --fgo-green-text:#048765;
  --fgo-sand:#F8F5EF;
  --fgo-text:#262626;
  --fgo-text-faint:rgba(38,38,38,.55);
  --fgo-border-strong:rgba(38,38,38,.12);
  --fgo-s1:4px;
  --fgo-s2:8px;
  --fgo-s3:12px;
  --fgo-s4:16px;
  --fgo-s6:24px;
  --fgo-s7:32px;
  --fgo-r-sm:8px;
  --fgo-r-lg:16px;
  --fgo-r-pill:999px;
  --fgo-fs-h2:26px;
  --fgo-fs-h2-mob:22px;
  --fgo-fs-label:12px;
  --fgo-fs-micro:11px;
  --fgo-shadow-sm:0 2px 8px -2px rgba(38,38,38,.12);
  --fgo-shadow-md:0 8px 20px -8px rgba(38,38,38,.18);
  --fgo-shadow-lg:0 16px 36px -12px rgba(38,38,38,.26);
  --fgo-transition:.22s cubic-bezier(.4,0,.2,1);
  color:var(--fgo-text);
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  font-size:15px;
  line-height:1.5;
  box-sizing:border-box;
}
.fgo-v3-root *, .fgo-v3-root *::before, .fgo-v3-root *::after { box-sizing:border-box; }
.fgo-v3-root button { font:inherit;cursor:pointer;border:0;background:none;padding:0;color:inherit;line-height:1.2; }
.fgo-v3-root a { color:inherit; }
.fgo-v3-root p, .fgo-v3-root h2, .fgo-v3-root h3 { margin:0;padding:0; }
.fgo-v3-root img { max-width:100%;display:block; }
.fgo-v3-root button:focus-visible,
.fgo-v3-root a:focus-visible,
.fgo-v3-root [tabindex]:focus-visible { outline:2px solid var(--fgo-crimson);outline-offset:2px;border-radius:var(--fgo-r-sm); }

.fgo-v3-wrap { max-width:1280px;margin:0 auto;padding:0 var(--fgo-s4); }
@media (min-width:640px) { .fgo-v3-wrap { padding:0 var(--fgo-s6); } }
.fgo-v3-section { padding:var(--fgo-s7) 0 var(--fgo-s1); }
.fgo-v3-eyebrow { font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:var(--fgo-fs-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--fgo-crimson);margin-bottom:var(--fgo-s1); }
.fgo-v3-h2 { font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:var(--fgo-fs-h2);color:var(--fgo-text);line-height:1.2; }
@media (max-width:767px) { .fgo-v3-h2 { font-size:var(--fgo-fs-h2-mob); } }
.fgo-v3-sechead { display:flex;align-items:flex-end;justify-content:space-between;gap:var(--fgo-s4);margin-bottom:var(--fgo-s4); }

.fgo-v3-railwrap { position:relative; }
.fgo-v3-rail { display:flex;flex-wrap:nowrap;gap:var(--fgo-s4);overflow-x:auto;overflow-y:visible;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-inline:contain;padding:var(--fgo-s1) 0 var(--fgo-s3);margin:0 -16px;padding-left:16px;padding-right:16px;scrollbar-width:none;-ms-overflow-style:none;cursor:grab; }
.fgo-v3-rail:active { cursor:grabbing; }
.fgo-v3-rail::-webkit-scrollbar { display:none; }
@media (min-width:640px) { .fgo-v3-rail { margin:0;padding-left:0;padding-right:0; } }
.fgo-v3-rail > * { scroll-snap-align:start; }

.fgo-v3-img { position:relative;overflow:hidden;background:linear-gradient(135deg,#EDE7DC 0%,#F8F5EF 55%,#E4DDD0 100%);display:block; }
.fgo-v3-img img { width:100%;height:100%;object-fit:cover;display:block; }
.fgo-v3-img.is-missing img { display:none; }
.fgo-v3-img.is-missing::after { content:attr(data-fgo-label);position:absolute;inset:auto 6px 8px 6px;text-align:center;font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:rgba(38,38,38,.35);font-family:'IBM Plex Mono',ui-monospace,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.fgo-v3-img-sq { aspect-ratio:1/1; }

.fgo-v3-card { flex:0 0 208px;width:208px;background:#fff;border-radius:var(--fgo-r-lg);box-shadow:var(--fgo-shadow-md);display:flex;flex-direction:column;overflow:hidden;transition:transform var(--fgo-transition),box-shadow var(--fgo-transition); }
@media (min-width:420px) and (max-width:767px) { .fgo-v3-card { flex-basis:232px;width:232px; } }
@media (min-width:768px) { .fgo-v3-card { flex-basis:250px;width:250px; } }
@media (min-width:1024px) { .fgo-v3-card { flex-basis:278px;width:278px; } }
.fgo-v3-card:hover { transform:translateY(-4px);box-shadow:var(--fgo-shadow-lg); }
.fgo-v3-card-media { position:relative; }
.fgo-v3-card-media .fgo-v3-img { width:100%;border-radius:var(--fgo-r-lg) var(--fgo-r-lg) 0 0;transition:transform .45s ease; }
.fgo-v3-card-media .fgo-v3-img img { transition:transform .45s ease; }
.fgo-v3-badge { position:absolute;top:10px;left:10px;padding:5px 10px;border-radius:var(--fgo-r-pill);font-size:10px;font-weight:600;color:#fff;letter-spacing:.02em;z-index:2;box-shadow:var(--fgo-shadow-sm); }
.fgo-v3-badge-fresh { background:var(--fgo-green); }
.fgo-v3-badge-oos { background:var(--fgo-charcoal2); }
.fgo-v3-badge-weekend { background:var(--fgo-crimson); }
.fgo-v3-badge-new { background:var(--fgo-charcoal2); }
.fgo-v3-badge-best { background:var(--fgo-green-dark); }
.fgo-v3-badge-off { position:absolute;top:10px;right:48px;background:var(--fgo-crimson);color:#fff;padding:5px 10px;border-radius:var(--fgo-r-pill);font-size:10px;font-weight:600;z-index:2;box-shadow:var(--fgo-shadow-sm); }
.fgo-v3-wish { position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:var(--fgo-r-pill);background:rgba(255,255,255,.95);display:flex;align-items:center;justify-content:center;z-index:2;box-shadow:var(--fgo-shadow-sm);transition:transform var(--fgo-transition); }
.fgo-v3-wish svg { pointer-events:none; }
.fgo-v3-eta { position:absolute;left:10px;bottom:10px;background:rgba(38,38,38,.88);color:#fff;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:9px;padding:5px 9px;border-radius:var(--fgo-r-pill);z-index:2;letter-spacing:.02em; }
.fgo-v3-card-body { padding:var(--fgo-s3) var(--fgo-s4) var(--fgo-s4);display:flex;flex-direction:column;flex:1;gap:var(--fgo-s2); }
.fgo-v3-card-title { font-size:14px;font-weight:600;line-height:1.35;color:var(--fgo-text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:38px; }
.fgo-v3-card-title a { color:inherit;text-decoration:none; }
.fgo-v3-card-title a:hover { text-decoration:underline; }
.fgo-v3-card-meta { font-size:var(--fgo-fs-micro);color:var(--fgo-text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px; }
.fgo-v3-star { color:var(--fgo-crimson);font-weight:600; }
.fgo-v3-card-price { font-family:'IBM Plex Mono',ui-monospace,monospace;display:flex;align-items:baseline;gap:var(--fgo-s2);flex-wrap:wrap; }
.fgo-v3-now { font-size:15px;font-weight:700;color:var(--fgo-text); }
.fgo-v3-was { font-size:12px;color:var(--fgo-text-faint);text-decoration:line-through; }
.fgo-v3-off { font-size:12px;color:var(--fgo-green-text);font-weight:600; }
.fgo-v3-card-actions { display:flex;align-items:center;justify-content:space-between;gap:var(--fgo-s2);margin-top:auto;padding-top:var(--fgo-s1); }
.fgo-v3-add { background:var(--fgo-green);color:#fff;font-size:14px;font-weight:600;padding:9px 20px;border-radius:var(--fgo-r-pill);min-height:36px;transition:background var(--fgo-transition),transform var(--fgo-transition); }
a.fgo-v3-add { display:inline-flex;align-items:center;justify-content:center;text-decoration:none; }
.fgo-v3-add[disabled] { background:var(--fgo-charcoal2);cursor:not-allowed; }
.fgo-v3-qv { font-size:11px;color:var(--fgo-text-faint);text-decoration:underline;white-space:nowrap;text-underline-offset:2px;transition:color var(--fgo-transition); }
.fgo-v3-card.is-oos .fgo-v3-img { filter:grayscale(55%);opacity:.75; }

.fgo-v3-arrow { display:none;position:absolute;top:38%;width:40px;height:40px;border-radius:var(--fgo-r-pill);background:#fff;border:1px solid var(--fgo-border-strong);box-shadow:var(--fgo-shadow-md);align-items:center;justify-content:center;z-index:5;transition:opacity var(--fgo-transition),background var(--fgo-transition); }
@media (min-width:768px) { .fgo-v3-arrow { display:flex; } }
.fgo-v3-arrow-prev { left:-18px; }
.fgo-v3-arrow-next { right:-18px; }
.fgo-v3-arrow[disabled] { opacity:.3;cursor:not-allowed; }
.fgo-v3-arrow:not([disabled]):hover { background:var(--fgo-sand); }

@media (prefers-reduced-motion:reduce) {
  .fgo-v3-root * { transition-duration:.01ms!important;scroll-behavior:auto!important; }
}
