/* Affiliate Article V4 — Editorial Gallery.
 * V4 is an independent warm-shell treatment layered over the stable V3 article
 * module contract. Every selector is scoped so default, V2 and V3 stay intact.
 */
.affiliate-article-v4 {
  --v4-paper: #f4eee2;
  --v4-paper-high: #fffaf1;
  --v4-paper-deep: #e9deca;
  --v4-ink: #20201d;
  --v4-muted: #656158;
  --v4-line: #d7c9b2;
  --v4-teal: #166b68;
  --v4-coral: #dc6330;
  --v4-coral-dark: #b94720;
  --v3-wrap: min(1280px, calc(100% - 2.5rem));
  --v3-ink: var(--v4-ink);
  --v3-muted: var(--v4-muted);
  --v3-line: var(--v4-line);
  --v3-bg: var(--v4-paper);
  --v3-bg-soft: var(--v4-paper-high);
  --v3-coral: var(--v4-coral);
  --v3-coral-dark: var(--v4-coral-dark);
  color: var(--v4-ink);
  background:
    radial-gradient(circle at 15% 0, rgba(255,255,255,.7), transparent 34rem),
    var(--v4-paper);
  min-height: 100vh;
}
.affiliate-article-v4 .v4-article { padding-bottom: 2rem; }
.affiliate-article-v4 .v4-editorial-hero { padding: clamp(1rem, 2.5vw, 2rem) 0 .75rem; }
.affiliate-article-v4 .v4-breadcrumbs { display:flex; gap:.5rem; align-items:center; margin:0 0 1rem; color:var(--v4-muted); font-size:.78rem; overflow-x:auto; white-space:nowrap; }
.affiliate-article-v4 .v4-breadcrumbs a { color:inherit; text-underline-offset:.2em; }
.affiliate-article-v4 .v3-product-gallery {
  max-width: 1240px;
  margin-inline: auto;
  filter: drop-shadow(0 22px 36px rgba(54, 42, 24, .13));
}
.affiliate-article-v4 .v3-hero-figure.is-fallback { width:100%; max-height:none; aspect-ratio:16 / 8.4; }
.affiliate-article-v4 .v3-gallery-viewport {
  aspect-ratio: 16 / 8.4;
  border: 1px solid rgba(87, 65, 34, .16);
  border-radius: .9rem;
  background: var(--v4-paper-high);
  cursor: grab;
  user-select: none;
}
.affiliate-article-v4 .v3-product-gallery.is-grabbing .v3-gallery-viewport { cursor: grabbing; }
.affiliate-article-v4 .v3-gallery-viewport img { -webkit-user-drag: none; user-select: none; }
.affiliate-article-v4 .v3-gallery-slide { background: var(--v4-paper-high); }
.affiliate-article-v4 .v3-gallery-slide img {
  object-fit: contain;
  object-position: var(--v4-focal-x, 50%) var(--v4-focal-y, 50%);
}
.affiliate-article-v4 .v3-gallery-slide[data-media-fit="cover"] img { object-fit: cover; }
.affiliate-article-v4 .v3-gallery-track { transition-duration: 480ms; }
.affiliate-article-v4 .v3-gallery-track.is-dragging { transition: none !important; }
.affiliate-article-v4 .v3-gallery-arrow {
  width: 3.25rem;
  height: 3.25rem;
  border-color: rgba(70, 50, 24, .16);
  background: rgba(255, 250, 241, .94);
  color: var(--v4-ink);
  box-shadow: 0 10px 25px rgba(45, 34, 19, .2);
}
.affiliate-article-v4 .v3-gallery-arrow:not(:disabled):hover {
  background: var(--v4-coral);
  border-color: var(--v4-coral);
  color: #fff;
  box-shadow: 0 12px 28px rgba(185, 71, 32, .28);
}
.affiliate-article-v4 .v3-gallery-arrow:not(:disabled):active { background: var(--v4-coral-dark); transform: translateY(-50%) scale(.96); }
.affiliate-article-v4 .v3-gallery-arrow:focus-visible { outline: 3px solid var(--v4-teal); outline-offset: 3px; }
.affiliate-article-v4 .v3-gallery-arrow:disabled { opacity: .32; }
.affiliate-article-v4 .v3-gallery-thumb {
  width: 92px;
  height: 66px;
  border-color: var(--v4-paper-high);
  background: var(--v4-paper-high);
  box-shadow: 0 7px 18px rgba(45, 34, 19, .18);
}
.affiliate-article-v4 .v3-gallery-thumb img { object-fit: contain; background: #fff; }
.affiliate-article-v4 .v3-gallery-thumb.is-active { border-color: var(--v4-coral); }
.affiliate-article-v4 .v3-hero-cat {
  color: var(--v4-teal);
  margin-top: 2.15rem;
}
.affiliate-article-v4 .v3-hero-title {
  max-width: min(68rem, 92%);
  font-size: clamp(2rem, 4.4vw, 4.15rem);
  line-height: 1.04;
  letter-spacing: -.045em;
  text-wrap: balance;
}
.affiliate-article-v4 .v3-byline-wrap { max-width: 52rem; margin-inline: auto; }
.affiliate-article-v4 .v3-byline { justify-content: center; }
.affiliate-article-v4 .v3-rating,
.affiliate-article-v4 .v3-layout { width: min(1120px, calc(100% - 2.5rem)); }
.affiliate-article-v4 .v3-rating-grid,
.affiliate-article-v4 .v3-criteria,
.affiliate-article-v4 .v3-rail-card,
.affiliate-article-v4 .v3-fit,
.affiliate-article-v4 .v3-faq-item,
.affiliate-article-v4 .v3-alt,
.affiliate-article-v4 .v3-buynow {
  background: rgba(255, 250, 241, .72);
}
.affiliate-article-v4 .v3-rating-grid-single { background: transparent; }
.affiliate-article-v4 .v3-criteria { background: rgba(255, 250, 241, .5); }
.affiliate-article-v4 .v3-criteria-row { border-bottom: 1px solid rgba(215, 201, 178, .72); }
.affiliate-article-v4 .v3-criteria-row:last-child { border-bottom: 0; }
.affiliate-article-v4 .v3-criteria-row:nth-child(odd) { background: rgba(255, 250, 241, .82); }
.affiliate-article-v4 .v3-scorebox { background: #252a31; }
.affiliate-article-v4 .v3-sample-note { color: var(--v4-muted); }
.affiliate-article-v4 .v3-subnav {
  background: rgba(244, 238, 226, .95);
  border-color: var(--v4-line);
}
.affiliate-article-v4 .v3-subnav a.is-active { border-bottom-color: var(--v4-coral); }
.affiliate-article-v4 .v3-layout.has-rail { grid-template-columns: minmax(0, 1fr) minmax(270px, 310px); }
.affiliate-article-v4 .v3-main { max-width: 760px; }
.affiliate-article-v4 .has-rail .v3-main { max-width: 760px; }
.affiliate-article-v4 .v3-section { border-color: var(--v4-line); }
.affiliate-article-v4 .v3-method-note { background: rgba(255,250,241,.78); }
.affiliate-article-v4 .v3-btn-primary,
.affiliate-article-v4 .v3-btn-buy,
.affiliate-article-v4 .v3-btn-small { background: var(--v4-coral); color: #fff; }
.affiliate-article-v4 .v3-btn-primary:hover,
.affiliate-article-v4 .v3-btn-buy:hover,
.affiliate-article-v4 .v3-btn-small:hover { background: var(--v4-coral-dark); }
.affiliate-article-v4 :is(.v3-btn-primary, .v3-btn-buy, .v3-btn-small):not(.is-disabled):active { background: var(--v4-coral-dark); transform: translateY(1px); }
.affiliate-article-v4 :is(.v3-btn-primary, .v3-btn-buy, .v3-btn-small):not(.is-disabled):focus-visible { outline: 3px solid var(--v4-teal); outline-offset: 3px; box-shadow: 0 0 0 3px var(--v4-paper-high); }
.affiliate-article-v4 :is(.v3-cta-sub, .v3-cta-note) {
  font-size: clamp(.55rem, .5rem + .12vw, .625rem);
  line-height: 1.4;
  color: #706a60;
}
.affiliate-article-v4 .v3-rail-sticky { top: calc(var(--v3-header-offset) + var(--v3-nav-height) + .9rem); }
.affiliate-article-v4 .v3-rail-buy { box-shadow: 0 14px 34px rgba(56, 42, 21, .1); }
.affiliate-article-v4 .v3-media-fallback {
  background: linear-gradient(145deg, var(--v4-paper-deep), var(--v4-paper-high));
}
.affiliate-article-v4 .v4-quick-take { max-width: 40rem; margin: 1.35rem auto 0; padding: 1.1rem 1.3rem; border: 1px solid var(--v4-line); border-radius: .75rem; background: rgba(255, 250, 241, .82); text-align: left; }
.affiliate-article-v4 .v4-quick-take-line { margin: 0; font-size: .92rem; line-height: 1.5; }
.affiliate-article-v4 .v4-quick-take-line + .v4-quick-take-line { margin-top: .5rem; }
.affiliate-article-v4 .v4-quick-take-line strong { color: var(--v4-ink); }
.affiliate-article-v4 .v4-quick-take-good strong { color: var(--v4-teal); }
.affiliate-article-v4 .v4-quick-take-caution strong { color: var(--v4-coral-dark); }
.affiliate-article-v4 .v4-quick-take-owners { margin: .75rem 0 0; padding-top: .75rem; border-top: 1px solid var(--v4-line); font-size: .84rem; color: var(--v4-muted); }
.affiliate-article-v4 .v4-quick-take-owners a { color: var(--v4-teal); font-weight: 750; text-underline-offset: .2em; }
.affiliate-article-v4 .v4-section-kicker { margin:0 0 .35rem; color:var(--v4-teal); font-size:.72rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.affiliate-article-v4 .v4-evidence-meta { color:var(--v4-muted); font-size:.82rem; }
.affiliate-article-v4 .v4-community-intro { max-width:68ch; font-size:1.03rem; }
.affiliate-article-v4 .v4-community-overview { max-width:68ch; }
.affiliate-article-v4 .v4-community-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; margin:1.25rem 0 1.5rem; }
.affiliate-article-v4 .v4-community-meta div { padding:.85rem 1rem; border:1px solid var(--v4-line); border-radius:.55rem; background:rgba(255,250,241,.65); }
.affiliate-article-v4 .v4-community-meta dt { color:var(--v4-muted); font-size:.7rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.affiliate-article-v4 .v4-community-meta dd { margin:.25rem 0 0; font-weight:700; }
.affiliate-article-v4 .v4-community-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.affiliate-article-v4 .v4-community-group { padding:1rem; border:1px solid var(--v4-line); border-radius:.65rem; background:rgba(255,250,241,.58); }
.affiliate-article-v4 .v4-community-group .v3-h3 { margin-top:0; }
.affiliate-article-v4 .v4-community-grid ul,
.affiliate-article-v4 .v4-observation-list { padding-left:1.2rem; }
.affiliate-article-v4 .v4-community-grid li + li,
.affiliate-article-v4 .v4-observation-list li + li { margin-top:.45rem; }
.affiliate-article-v4 .v4-community-finding > p { margin:.15rem 0 .45rem; }
.affiliate-article-v4 .v4-community-takeaway { max-width:68ch; margin-top:1.4rem; padding-top:1.15rem; border-top:1px solid var(--v4-line); }
.affiliate-article-v4 .v4-community-takeaway .v3-h3 { margin-top:0; }
.affiliate-article-v4 .v4-community-source-note { margin:1.25rem 0 .35rem; color:var(--v4-muted); font-size:.88rem; }
.affiliate-article-v4 .v4-confidence { display:inline-flex; align-items:center; gap:.35rem; border:1px solid var(--v4-line); border-radius:999px; padding:.2rem .55rem; color:var(--v4-muted); background:var(--v4-paper-high); font-size:.7rem; font-weight:800; }
.affiliate-article-v4 .v4-confidence::before { content:""; width:.48rem; height:.48rem; border-radius:50%; background:currentColor; }
.affiliate-article-v4 .v4-confidence[data-strength="high"] { color:#22664f; }
.affiliate-article-v4 .v4-confidence[data-strength="moderate"] { color:#8a5a16; }
.affiliate-article-v4 .v4-confidence[data-strength="low"] { color:#795b50; }
.affiliate-article-v4 .v4-community-finding details { margin-top:.55rem; color:var(--v4-muted); font-size:.82rem; }
.affiliate-article-v4 .v4-community-finding summary { cursor:pointer; font-weight:700; }
.affiliate-article-v4 .v4-community-finding summary:focus-visible,
.affiliate-article-v4 .v4-methodology-link:focus-visible { outline:3px solid var(--v4-teal); outline-offset:3px; }
.affiliate-article-v4 .v4-methodology-link { display:inline-block; margin-top:1.2rem; color:var(--v4-teal); font-weight:750; text-underline-offset:.2em; }
.affiliate-article-v4 .v4-mobile-purchase { display:none; }

@media (max-width: 1024px) {
  .affiliate-article-v4 { --v3-wrap: min(100% - 2rem, 960px); }
  .affiliate-article-v4 .v3-rating,
  .affiliate-article-v4 .v3-layout { width: min(100% - 2rem, 920px); }
  .affiliate-article-v4 .v3-layout.has-rail { gap: 2rem; grid-template-columns: minmax(0, 1fr) 270px; }
}
@media (max-width: 900px) {
  .affiliate-article-v4 .v3-layout.has-rail { grid-template-columns: 1fr; }
  .affiliate-article-v4 .v3-main,
  .affiliate-article-v4 .has-rail .v3-main { max-width: 760px; margin-inline: auto; }
  .affiliate-article-v4 .v3-rail { max-width: 760px; width: 100%; margin-inline: auto; }
}
@media (max-width: 768px) {
  .layout-lab-v4 .layout-lab-links { width:100%; max-width:100%; margin-left:0; overflow-x:auto; padding-bottom:.15rem; }
  .layout-lab-v4 .layout-lab-note { width:100%; }
  .affiliate-article-v4 { --v3-wrap: calc(100% - 1.25rem); }
  .affiliate-article-v4 .v3-rating,
  .affiliate-article-v4 .v3-layout { width: calc(100% - 1.25rem); }
  .affiliate-article-v4 .v3-gallery-viewport { aspect-ratio: 4 / 3; border-radius: .65rem; }
  .affiliate-article-v4 .v3-hero-figure.is-fallback { max-height:none; aspect-ratio:4 / 3; }
  .affiliate-article-v4 .v3-gallery { margin-top: -2.25rem; justify-content: flex-start; }
  .affiliate-article-v4 .v3-gallery-thumb { width: 74px; height: 54px; flex: 0 0 auto; }
  .affiliate-article-v4 .v3-hero-title { font-size: clamp(2rem, 8.2vw, 3.25rem); max-width: 40rem; }
  .affiliate-article-v4 .v3-byline { justify-content: flex-start; }
  .affiliate-article-v4 .v3-rating-grid { grid-template-columns: 1fr; }
  .affiliate-article-v4 .v3-scorebox { min-height: 12rem; }
  .affiliate-article-v4 .v4-community-grid { grid-template-columns:1fr; }
  .affiliate-article-v4 .v4-community-meta { grid-template-columns:1fr; }
  .affiliate-article-v4 .v4-article { padding-bottom:5.5rem; }
  .affiliate-article-v4 .v4-mobile-purchase { position:fixed; z-index:40; inset:auto 0 0; display:flex; align-items:center; justify-content:space-between; gap:.75rem; padding:.7rem max(.75rem,env(safe-area-inset-right)) calc(.7rem + env(safe-area-inset-bottom)) max(.75rem,env(safe-area-inset-left)); border-top:1px solid var(--v4-line); background:rgba(255,250,241,.97); box-shadow:0 -8px 24px rgba(45,34,19,.14); }
  .affiliate-article-v4 .v4-mobile-purchase span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.82rem; font-weight:750; }
  .affiliate-article-v4 .v4-mobile-purchase a { flex:0 0 auto; border-radius:.45rem; background:var(--v4-coral); color:#fff; padding:.72rem 1rem; font-weight:800; text-decoration:none; }
  .affiliate-article-v4 .v4-mobile-purchase a:focus-visible { outline:3px solid var(--v4-teal); outline-offset:2px; }
}
@media (max-width: 420px) {
  .affiliate-article-v4 .v4-editorial-hero { padding-top: .65rem; }
  .affiliate-article-v4 .v3-gallery-arrow { width: 2.55rem; height: 2.55rem; }
  .affiliate-article-v4 .v3-gallery-prev { left: .45rem; }
  .affiliate-article-v4 .v3-gallery-next { right: .45rem; }
  .affiliate-article-v4 .v3-hero-cat { margin-top: 1.6rem; }
  .affiliate-article-v4 .v3-hero-title { font-size: clamp(1.85rem, 9.5vw, 2.5rem); }
  .affiliate-article-v4 .v3-btn-primary,
  .affiliate-article-v4 .v3-buynow .v3-btn-buy { width: 100%; }
  .affiliate-article-v4 :is(.v3-cta-sub, .v3-cta-note) { font-size: .68rem; }
}
@media (prefers-reduced-motion: reduce) {
  .affiliate-article-v4 .v3-gallery-track { transition: none !important; }
}
