/*
 * Immersive brand magazine presentation.
 *
 * Page-scoped: enqueued only on brand surfaces (front page, Journey pages,
 * Journal index/category, single posts, Our Story) while
 * tucktrail_brand_site_enabled(). Shared header/footer/nav primitives stay in
 * storefront.css.
 *
 * Type system: Fraunces (display serif) carries editorial headlines on these
 * surfaces; Outfit stays on UI chrome (eyebrows, buttons, nav); Inter carries
 * body copy. Shop surfaces never load this file and keep Outfit headlines.
 */

:root {
  --font-display: "Fraunces", "Iowan Old Style", Georgia, serif;
  --tt-editorial-max: 1360px;
  --tt-prose-max: 720px;
  --tt-pine-deep: #243A2D;
  --tt-cream-transparent: rgba(248, 244, 237, 0);
}

.tt-magazine { background: var(--tt-cream); color: var(--tt-ink); }

/* ------------------------------------------------------------------ */
/* Editorial primitives shared across brand surfaces                   */
/* ------------------------------------------------------------------ */

.tt-magazine .tt-section__eyebrow,
.tt-journey-page .tt-section__eyebrow,
.tt-journal .tt-section__eyebrow,
.tt-story-page .tt-section__eyebrow {
  font: 600 12px/1.4 var(--font-head);
  text-transform: uppercase;
  letter-spacing: .22em;
  color: var(--tt-clay-dark);
  margin: 0 0 14px;
}

.tt-arrow-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 600 15px/1.2 var(--font-head);
  color: var(--tt-pine);
  transition: color .18s ease;
}
.tt-arrow-link::after {
  content: "\2192";
  font-family: var(--font-body);
  transition: transform .22s ease;
}
.tt-arrow-link:hover { color: var(--tt-clay-dark); }
.tt-arrow-link:hover::after { transform: translateX(5px); }

/* ------------------------------------------------------------------ */
/* Transparent header over full-bleed heroes                           */
/* ------------------------------------------------------------------ */

/*
 * brand-magazine.js adds .tt-hero-overlay to <html> only when a full-bleed
 * hero opens the page and JS is running; without JS the header keeps its
 * solid storefront treatment. --tt-header-h is measured by the same script.
 */
.tt-hero-overlay .tt-magazine-hero,
.tt-hero-overlay .tt-journey-page__hero { margin-top: calc(-1 * var(--tt-header-h, 74px)); }

.tt-hero-overlay .tt-header {
  background: transparent;
  border-bottom-color: transparent;
  transition: background .28s ease, border-color .28s ease, box-shadow .28s ease;
}
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-nav__list > li > a,
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-iconlink,
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-logo__tuck,
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-logo__word { color: #fff; }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-logo__trail { color: var(--tt-sand); }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-nav__list > li > a:hover,
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-iconlink:hover { color: var(--tt-sand); }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-header__toggle span { background: #fff; }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-nav__item--current > a { color: #fff; }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-nav__item--current > a::after { background: var(--tt-sand); }
.tt-hero-overlay .tt-header:not(.is-scrolled) .tt-cart__count { background: var(--tt-sand); color: var(--tt-ink); }
.tt-hero-overlay .tt-header.is-scrolled {
  background: var(--tt-cream);
  border-bottom-color: var(--tt-line);
  box-shadow: 0 10px 30px rgba(41, 39, 35, .06);
}
/* Mobile menu opens a cream panel — force the solid header state above it. */
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) {
  background: var(--tt-cream);
  border-bottom-color: var(--tt-line);
}
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) .tt-nav__list a,
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) .tt-iconlink,
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) .tt-logo__word,
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) .tt-logo__tuck { color: var(--tt-ink); }
.tt-hero-overlay .tt-header:has(.tt-header__toggle[aria-expanded="true"]) .tt-header__toggle span { background: var(--tt-ink); }

/* ------------------------------------------------------------------ */
/* Hero                                                                */
/* ------------------------------------------------------------------ */

.tt-magazine-hero { min-height: clamp(620px, 82svh, 820px); position: relative; display: grid; align-items: center; overflow: hidden; color: #fff; }
.tt-magazine-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(12, 20, 15, .38) 0%, rgba(12, 20, 15, 0) 24%),
    linear-gradient(90deg, rgba(12, 24, 17, .82) 0%, rgba(12, 24, 17, .58) 40%, rgba(12, 24, 17, .08) 72%);
}
.tt-magazine-hero__picture, .tt-magazine-hero__picture img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tt-magazine-hero__picture img { object-position: center; }
.tt-magazine-hero__content {
  position: relative;
  z-index: 1;
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  padding: clamp(130px, 18vh, 190px) 0 clamp(64px, 8vh, 92px);
}
.tt-magazine-hero__eyebrow {
  margin: 0 0 22px;
  font: 600 13px/1.4 var(--font-head);
  text-transform: uppercase;
  letter-spacing: .26em;
  color: rgba(255, 255, 255, .92);
}
.tt-magazine-hero h1 {
  max-width: 720px;
  margin: 0;
  font: 500 clamp(46px, 5.8vw, 82px)/1.02 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
  text-shadow: 0 2px 32px rgba(12, 24, 17, .35);
}
.tt-magazine-hero__sub {
  max-width: 590px;
  margin: 20px 0 0;
  font: 400 clamp(16px, 1.5vw, 19px)/1.55 var(--font-body);
  color: rgba(255, 255, 255, .94);
  text-shadow: 0 1px 20px rgba(12, 24, 17, .4);
}
.tt-magazine-hero__product-proof {
  display: inline-flex;
  align-items: baseline;
  gap: 12px;
  max-width: min(100%, 620px);
  margin-top: 22px;
  padding: 11px 14px;
  border: 1px solid rgba(255, 255, 255, .38);
  border-radius: 4px;
  background: rgba(16, 30, 21, .44);
  backdrop-filter: blur(10px);
  color: #fff;
  font: 500 14px/1.4 var(--font-head);
}
.tt-magazine-hero__product-proof span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tt-magazine-hero__product-proof strong { margin-left: auto; white-space: nowrap; font-weight: 600; }
.tt-magazine-hero__product-proof del { opacity: .72; }

/* The welcome offer, in the slot the product chip used to hold. Same glass
 * treatment and same position, so the hero's vertical rhythm is unchanged —
 * but cut like a ticket rather than a product row, and deliberately quieter
 * than the button below it. It is the reason to press that button, not a third
 * thing competing to be pressed. */
.tt-magazine-hero__offer {
  display: inline-flex;
  align-items: stretch;
  max-width: min(100%, 620px);
  margin: 22px 0 0;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .38);
  border-radius: 6px;
  background: rgba(16, 30, 21, .44);
  backdrop-filter: blur(10px);
  color: #fff;
  font: 500 14px/1.4 var(--font-head);
  text-align: left;
  overflow: hidden;
}
button.tt-magazine-hero__offer { cursor: pointer; transition: background .18s ease, border-color .18s ease; }
button.tt-magazine-hero__offer:hover { background: rgba(16, 30, 21, .66); border-color: rgba(255, 255, 255, .62); }
button.tt-magazine-hero__offer:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
/* The amount carries a wash of the CTA's own rust so the chip reads as part of
 * the same offer, without becoming a second orange button. */
.tt-magazine-hero__offer-amount {
  display: flex;
  align-items: center;
  padding: 11px 14px;
  border-right: 1px dashed rgba(255, 255, 255, .45); /* the ticket's perforation */
  background: rgba(169, 93, 56, .52);
  font-weight: 700;
  white-space: nowrap;
}
.tt-magazine-hero__offer-label {
  display: flex;
  align-items: center;
  min-width: 0;
  padding: 11px 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* No underline: the whole chip is the target, and "Find my fit" sits directly
 * below it — two underlined arrow links stacked read as a list of links rather
 * than one badge and one link. The arrow carries the affordance instead. */
.tt-magazine-hero__offer-cta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  padding: 11px 16px 11px 10px;
  font-weight: 600;
  white-space: nowrap;
}
.tt-magazine-hero__offer-cta span { display: inline-block; transition: transform .18s ease; }
button.tt-magazine-hero__offer:hover .tt-magazine-hero__offer-cta span { transform: translateX(2px); }
/* Claimed: the same object, reporting rather than inviting. */
.tt-magazine-hero__offer.is-held { border-style: dashed; }
.tt-magazine-hero__offer.is-held .tt-magazine-hero__offer-label { padding-right: 16px; }
.tt-magazine-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; margin-top: 24px; }
.tt-magazine-hero__actions .tt-btn { padding: 16px 32px; font-size: 16px; }
.tt-magazine-hero__secondary {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #fff;
  font: 600 15px/1.2 var(--font-head);
  text-decoration: underline;
  text-decoration-color: rgba(255, 255, 255, .45);
  text-underline-offset: 5px;
}
.tt-magazine-hero__secondary:hover { text-decoration-color: currentColor; }
.tt-magazine-hero__secondary:focus-visible,
.tt-home-journey-card:focus-visible { outline: 3px solid var(--tt-sand); outline-offset: 4px; }
/* While the consent banner is shown (inline display:flex), lift the hero CTAs clear of it.
   Top padding shrinks in step so the content still fits inside 100svh — otherwise the
   hero grows taller and the lift cancels itself out. */
body:has(#tt-consent[style*="flex"]) .tt-magazine-hero__content {
  padding-top: clamp(70px, 10vh, 140px);
  padding-bottom: 180px;
}
.tt-magazine-hero__scroll {
  position: absolute;
  z-index: 1;
  left: 50%;
  bottom: 26px;
  transform: translateX(-50%);
  width: 1px;
  height: 44px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .85), rgba(255, 255, 255, 0));
}

@media (prefers-reduced-motion: no-preference) {
  .tt-magazine-hero__eyebrow, .tt-magazine-hero h1, .tt-magazine-hero__sub, .tt-magazine-hero__actions {
    animation: tt-hero-rise .9s cubic-bezier(.2, .65, .25, 1) both;
  }
  .tt-magazine-hero h1 { animation-delay: .08s; }
  .tt-magazine-hero__sub { animation-delay: .14s; }
  .tt-magazine-hero__actions { animation-delay: .2s; }
}
@keyframes tt-hero-rise {
  from { opacity: 0; transform: translateY(26px); }
  to { opacity: 1; transform: none; }
}

/* ------------------------------------------------------------------ */
/* Manifesto                                                           */
/* ------------------------------------------------------------------ */

.tt-magazine-manifesto { padding: clamp(72px, 9vw, 120px) 0; }
.tt-magazine-manifesto__inner {
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(300px, .88fr) minmax(0, 1.12fr);
  gap: clamp(44px, 8vw, 128px);
  align-items: center;
}
.tt-magazine-manifesto__inner > img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: 4px;
}
.tt-magazine-manifesto__copy h2 {
  max-width: 720px;
  margin: 0;
  font: 500 clamp(34px, 4vw, 58px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-magazine-manifesto__lead { max-width: 58ch; margin: 22px 0 0; font-size: 17px; line-height: 1.7; color: var(--tt-muted); }
.tt-magazine-manifesto__copy ul { display: grid; gap: 12px; margin: 28px 0 0; padding: 0; list-style: none; }
.tt-magazine-manifesto__copy li { position: relative; padding-left: 24px; font: 600 15px/1.5 var(--font-head); }
.tt-magazine-manifesto__copy li::before { content: ""; position: absolute; left: 0; top: .55em; width: 9px; height: 9px; border-radius: 50%; background: var(--tt-clay); }

/* ------------------------------------------------------------------ */
/* Journey chapters                                                    */
/* ------------------------------------------------------------------ */

.tt-magazine-journeys { padding: clamp(64px, 8vw, 108px) 0; }
/* The shelves sit directly under the journeys and share their container, so
   they open on the head rule alone — a second full pad would read as a gap. */
.tt-magazine-shelves { padding: 0 0 clamp(64px, 8vw, 108px); }
.tt-magazine-journeys > .tt-container,
.tt-magazine-shelves > .tt-container {
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  padding: 0;
}
.tt-magazine-journeys__head,
.tt-magazine-shelves__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  flex-wrap: wrap;
  margin: 0 0 clamp(30px, 4vw, 48px);
  padding-bottom: 26px;
  border-bottom: 1px solid var(--tt-line);
}
.tt-home-journeys-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 22px); }
.tt-home-journey-card { position: relative; min-width: 0; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 4px; background: var(--tt-pine); color: #fff; }
.tt-home-journey-card picture, .tt-home-journey-card img { width: 100%; height: 100%; }
.tt-home-journey-card img { object-fit: cover; transition: transform .55s cubic-bezier(.2, .65, .25, 1); }
.tt-home-journey-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12, 24, 17, .02) 34%, rgba(12, 24, 17, .88) 100%); }
.tt-home-journey-card__overlay { position: absolute; z-index: 1; inset: auto 0 0; display: grid; gap: 8px; padding: clamp(16px, 2vw, 24px); }
.tt-home-journey-card__overlay strong { font: 500 clamp(20px, 1.8vw, 27px)/1.08 var(--font-display); letter-spacing: -.01em; }
.tt-home-journey-card__overlay > span:not(.tt-home-journey-card__action) { display: -webkit-box; overflow: hidden; color: rgba(255, 255, 255, .82); font-size: 13px; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.tt-home-journey-card__action { margin-top: 4px; font: 600 13px/1.2 var(--font-head); }
.tt-home-journey-card:hover img { transform: scale(1.035); }

/* Gear shelves — same card language as the journeys above, widened to 3:2 and
   two-up so the category axis reads as a different question, not a sixth
   journey. Two shelves is the whole model; the grid is sized for exactly that. */
.tt-home-shelves-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 22px); }
.tt-home-shelf-card { position: relative; min-width: 0; aspect-ratio: 3 / 2; overflow: hidden; border-radius: 4px; background: var(--tt-pine); color: #fff; }
.tt-home-shelf-card picture, .tt-home-shelf-card img { display: block; width: 100%; height: 100%; }
.tt-home-shelf-card img { object-fit: cover; transition: transform .55s cubic-bezier(.2, .65, .25, 1); }
.tt-home-shelf-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12, 24, 17, .04) 28%, rgba(12, 24, 17, .9) 100%); }
.tt-home-shelf-card__overlay { position: absolute; z-index: 1; inset: auto 0 0; display: grid; gap: 7px; padding: clamp(18px, 2.2vw, 28px); }
.tt-home-shelf-card__overlay strong { font: 500 clamp(23px, 2.1vw, 32px)/1.06 var(--font-display); letter-spacing: -.01em; }
.tt-home-shelf-card__blurb { max-width: 34ch; color: rgba(255, 255, 255, .84); font-size: 14px; line-height: 1.45; }
.tt-home-shelf-card__meta { display: flex; flex-wrap: wrap; gap: 4px 9px; color: rgba(255, 255, 255, .74); font: 600 12px/1.2 var(--font-head); letter-spacing: .05em; text-transform: uppercase; }
.tt-home-shelf-card__meta span + span::before { content: "·"; margin-right: 9px; }
.tt-home-shelf-card__action { margin-top: 3px; font: 600 13px/1.2 var(--font-head); }
.tt-home-shelf-card:hover img { transform: scale(1.035); }
.tt-home-shelf-card:focus-visible { outline: 3px solid var(--tt-sand); outline-offset: 4px; }

.tt-magazine-journeys__head h2,
.tt-magazine-shelves__head h2 {
  margin: 0;
  max-width: 640px;
  font: 500 clamp(34px, 4.2vw, 64px)/1.05 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-journey-chapter {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(300px, .88fr);
  gap: clamp(40px, 6.5vw, 120px);
  align-items: center;
  margin: 0 0 clamp(88px, 12vw, 180px);
}
.tt-journey-chapter:last-child { margin-bottom: 0; }
.tt-journey-chapter--reverse { grid-template-columns: minmax(300px, .88fr) minmax(0, 1.12fr); }
.tt-journey-chapter--reverse > img { order: 2; }
.tt-journey-chapter img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 4px;
  transition: transform .8s cubic-bezier(.2, .65, .25, 1);
}
.tt-journey-chapter:hover img { transform: scale(1.02); }
.tt-journey-chapter__number {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0;
  font: 600 12px/1 var(--font-head);
  letter-spacing: .2em;
  color: var(--tt-clay-dark);
}
.tt-journey-chapter__number::after { content: ""; width: 44px; height: 1px; background: var(--tt-clay-soft); }
.tt-journey-chapter h3 {
  margin: 14px 0 16px;
  font: 500 clamp(32px, 3.8vw, 60px)/1.04 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-journey-chapter__content > p:not(.tt-journey-chapter__number) {
  max-width: 46ch;
  margin: 0;
  font-size: 17px;
  line-height: 1.7;
  color: var(--tt-muted);
}
.tt-journey-chapter__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 28px; margin-top: 28px; }
.tt-journey-chapter__actions a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 600 15px/1.2 var(--font-head);
  color: var(--tt-pine);
  transition: color .18s ease;
}
.tt-journey-chapter__actions a:first-child::after {
  content: "\2192";
  font-family: var(--font-body);
  transition: transform .22s ease;
}
.tt-journey-chapter__actions a:first-child:hover::after { transform: translateX(5px); }
.tt-journey-chapter__actions a:hover { color: var(--tt-clay-dark); }
.tt-journey-chapter__actions a + a {
  color: var(--tt-muted);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-color: var(--tt-line);
}
.tt-journey-chapter__actions a + a:hover { color: var(--tt-clay-dark); text-decoration-color: currentColor; }

/* ------------------------------------------------------------------ */
/* Fit-finder teaser (posts to the filtered shop)                      */
/* ------------------------------------------------------------------ */

.tt-magazine-planner {
  padding: clamp(80px, 11vw, 160px) 0;
  background:
    radial-gradient(120% 140% at 85% -10%, rgba(138, 160, 143, .35) 0%, rgba(138, 160, 143, 0) 55%),
    linear-gradient(160deg, var(--tt-pine) 0%, var(--tt-pine-deep) 100%);
  color: #fff;
}
.tt-magazine-planner .tt-container {
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 560px);
  gap: clamp(44px, 7vw, 110px);
  align-items: center;
}
.tt-magazine-planner .tt-section__eyebrow { color: var(--tt-sand); }
.tt-magazine-planner h2 {
  margin: 0 0 18px;
  font: 500 clamp(34px, 4.2vw, 62px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  color: #fff;
  text-wrap: balance;
}
.tt-magazine-planner__note { margin: 0; max-width: 44ch; font-size: 17px; line-height: 1.7; color: rgba(255, 255, 255, .78); }
.tt-magazine-planner form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin: 0;
  padding: clamp(26px, 3vw, 38px);
  background: var(--tt-cream);
  border-radius: 10px;
  box-shadow: 0 30px 70px rgba(10, 18, 13, .35);
  color: var(--tt-ink);
}
.tt-magazine-planner label { display: grid; gap: 9px; font: 600 13px/1.3 var(--font-head); letter-spacing: .02em; }
.tt-magazine-planner label:first-of-type { grid-column: 1 / -1; }
.tt-magazine-planner input, .tt-magazine-planner select {
  min-height: 54px;
  border: 1px solid var(--tt-line);
  border-radius: 8px;
  background: #fff;
  color: var(--tt-ink);
  padding: 0 16px;
  font: 400 16px/1.4 var(--font-body);
  transition: border-color .18s ease, box-shadow .18s ease;
}
.tt-magazine-planner select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' stroke='%236B6A63' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; padding-right: 40px; }
.tt-magazine-planner input:focus, .tt-magazine-planner select:focus {
  outline: none;
  border-color: var(--tt-clay);
  box-shadow: 0 0 0 3px rgba(169, 93, 56, .18);
}
.tt-magazine-planner form .tt-btn { grid-column: 1 / -1; padding: 16px 28px; font-size: 16px; }

/* ------------------------------------------------------------------ */
/* Real stories (hidden until permissioned posts exist)                */
/* ------------------------------------------------------------------ */

.tt-magazine-stories { padding: clamp(72px, 10vw, 140px) 0; }
.tt-magazine-stories .tt-container { width: min(100% - 48px, var(--tt-editorial-max)); margin: 0 auto; padding: 0; }
.tt-magazine-stories[hidden] { display: none; }
.tt-magazine-stories h2 { font: 500 clamp(32px, 3.8vw, 54px)/1.06 var(--font-display); letter-spacing: -.015em; }
.tt-magazine-stories__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; margin-top: 36px; }

/* ------------------------------------------------------------------ */
/* Gear groups                                                         */
/* ------------------------------------------------------------------ */

.tt-magazine-gear { padding: clamp(80px, 11vw, 150px) 0; background: var(--tt-sand); }
/* Two product grids now sit back to back (Best sellers, then New arrivals).
 * The first drops the tint so the page keeps alternating plain/sand rather
 * than reading as one very tall sand block. */
.tt-magazine-gear--plain { background: transparent; }
.tt-magazine-gear[hidden] { display: none; }
.tt-magazine-gear .tt-container { width: min(100% - 48px, var(--tt-editorial-max)); margin: 0 auto; padding: 0; }
.tt-magazine-gear__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  flex-wrap: wrap;
  margin: 0 0 clamp(40px, 5vw, 64px);
}
.tt-magazine-gear__head h2 {
  margin: 0;
  max-width: 620px;
  font: 500 clamp(32px, 3.8vw, 56px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-magazine-gear__head > div > p:last-child { max-width: 58ch; margin: 14px 0 0; color: var(--tt-muted); line-height: 1.65; }
.tt-home-featured-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 2vw, 28px); }
.tt-home-featured-item { min-width: 0; }
.tt-home-featured-item .tt-series-card { height: 100%; }
.tt-gear-group { display: flex; flex-direction: column; }
.tt-gear-group > h3 {
  margin: 0 0 10px;
  padding-top: 18px;
  border-top: 2px solid var(--tt-pine);
  font: 500 clamp(21px, 1.8vw, 26px)/1.2 var(--font-display);
  letter-spacing: -.01em;
}
.tt-gear-group > p { margin: 0 0 22px; font-size: 15px; line-height: 1.65; color: var(--tt-muted); }
.tt-gear-group__products { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: auto; }

/* ------------------------------------------------------------------ */
/* Spotlight buy — the homepage's one full purchase module             */
/* ------------------------------------------------------------------ */

.tt-magazine-spotbuy { padding: clamp(64px, 9vw, 120px) 0; background: var(--tt-sand); }
.tt-magazine-spotbuy .tt-container { width: min(100% - 48px, var(--tt-editorial-max)); margin: 0 auto; padding: 0; }
/* .tt-pdp-hero brings the two-column buy layout; only the top padding it
 * carries on a PDP is unwanted here. */
.tt-magazine-spotbuy__grid { padding-top: 0; align-items: center; }
.tt-magazine-spotbuy__media { display: block; }
.tt-magazine-spotbuy__title {
  margin: 6px 0 10px;
  font: 500 clamp(28px, 3vw, 44px)/1.08 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-magazine-spotbuy__title a:hover { color: var(--tt-clay); }
.tt-magazine-spotbuy__positioning { margin: 0 0 6px; color: var(--tt-muted); font-size: 16px; line-height: 1.6; }
.tt-magazine-spotbuy__summary form.cart { margin: 14px 0 4px; }
.tt-magazine-spotbuy__details { display: inline-block; margin-top: 14px; font-family: var(--font-head); font-weight: 600; font-size: 14px; color: var(--tt-pine); text-decoration: underline; text-underline-offset: 3px; }
.tt-magazine-spotbuy__details:hover { color: var(--tt-clay); }

/* ------------------------------------------------------------------ */
/* Current issue                                                       */
/* ------------------------------------------------------------------ */

.tt-magazine-journal { padding: clamp(80px, 11vw, 150px) 0; }
.tt-magazine-journal[hidden] { display: none; }
.tt-magazine-journal .tt-container { width: min(100% - 48px, var(--tt-editorial-max)); margin: 0 auto; padding: 0; }
.tt-magazine-journal h2 {
  max-width: 720px;
  margin: 0 0 clamp(40px, 5vw, 64px);
  font: 500 clamp(32px, 3.8vw, 56px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-magazine-journal__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 3vw, 40px); margin: 0 0 clamp(36px, 5vw, 56px); }
.tt-magazine-journal__story a { display: block; }
.tt-magazine-journal__story figure { margin: 0 0 18px; border-radius: 4px; overflow: hidden; background: var(--tt-sand); }
.tt-magazine-journal__story figure img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; transition: transform .8s cubic-bezier(.2, .65, .25, 1); }
.tt-magazine-journal__story a:hover figure img { transform: scale(1.03); }
.tt-magazine-journal__role, .tt-magazine-journal__story > a > p {
  margin: 0 0 8px;
  font: italic 500 15px/1.4 var(--font-display);
  color: var(--tt-clay-dark);
}
.tt-magazine-journal__story h3 {
  margin: 0;
  font: 500 clamp(21px, 1.9vw, 27px)/1.22 var(--font-display);
  letter-spacing: -.01em;
}
.tt-magazine-journal__story a:hover h3 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }

/* ------------------------------------------------------------------ */
/* Trust band                                                          */
/* ------------------------------------------------------------------ */

.tt-magazine-trust { padding: 0; background: var(--tt-cream); }
.tt-magazine-trust__items {
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  padding: 0;
  display: grid;
  /* Four independent promises (returns, secure checkout, fit honesty, human
   * support) — with no reviews on the site these carry the risk-reversal, and
   * merging any two buries one. Drops to 2×2 early — four columns under
   * ~1040px squeezes the sub-lines into three-line wraps. */
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--tt-line);
  border-bottom: 1px solid var(--tt-line);
}
@media (max-width: 1040px) {
  .tt-magazine-trust__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tt-magazine-trust__items p:nth-child(odd) { border-left: 0; }
}
.tt-magazine-trust__items p {
  margin: 0;
  padding: clamp(24px, 3vw, 38px) clamp(18px, 2vw, 32px);
  font: 500 clamp(15px, 1.3vw, 18px)/1.4 var(--font-head);
  letter-spacing: .01em;
}
.tt-magazine-trust__items strong,
.tt-magazine-trust__items span { display: block; }
.tt-magazine-trust__items span { margin-top: 5px; color: var(--tt-muted); font: 400 13px/1.45 var(--font-body); }
.tt-magazine-trust__items p + p { border-left: 1px solid var(--tt-line); }

/* ------------------------------------------------------------------ */
/* Journey landing page                                                */
/* ------------------------------------------------------------------ */

.tt-journey-page__hero {
  position: relative;
  display: grid;
  align-items: end;
  min-height: clamp(480px, 74vh, 780px);
  overflow: hidden;
  color: #fff;
}
.tt-journey-page__hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tt-journey-page__hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(12, 20, 15, .5) 0%, rgba(12, 20, 15, 0) 30%),
    linear-gradient(180deg, rgba(12, 24, 17, .04) 45%, rgba(12, 24, 17, .74) 100%);
}
.tt-journey-page__hero > div {
  position: relative;
  z-index: 1;
  width: min(100% - 48px, var(--tt-editorial-max));
  margin: 0 auto;
  padding: clamp(140px, 20vh, 220px) 0 clamp(44px, 7vh, 84px);
}
.tt-journey-page__hero .tt-section__eyebrow { color: rgba(255, 255, 255, .92); }
.tt-journey-page__hero h1 {
  margin: 0 0 14px;
  font: 500 clamp(40px, 5.6vw, 92px)/1.02 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
  text-shadow: 0 2px 28px rgba(12, 24, 17, .35);
}
.tt-journey-page__hero p:not(.tt-section__eyebrow) { max-width: 58ch; margin: 0; font-size: 18px; line-height: 1.65; color: rgba(255, 255, 255, .88); }
/* Paid clicks land here — the hero needs a direct path to the gear grid. */
.tt-journey-page__hero-actions { margin-top: 26px; }
.tt-journey-page__hero-actions .tt-btn { padding: 15px 30px; font-size: 16px; }

.tt-journey-page__meaning { padding: clamp(80px, 11vw, 150px) 0; }
.tt-journey-page__meaning .tt-container { max-width: 1020px; }
.tt-journey-page__meaning h2 {
  margin: 0 0 18px;
  font: 600 12px/1.4 var(--font-head);
  text-transform: uppercase;
  letter-spacing: .22em;
  color: var(--tt-clay-dark);
}
.tt-journey-page__meaning p {
  margin: 0;
  font: 400 clamp(26px, 3vw, 46px)/1.22 var(--font-display);
  letter-spacing: -.01em;
  text-wrap: pretty;
}

.tt-journey-page__guidance { padding: 0 0 clamp(72px, 10vw, 130px); }
.tt-journey-page__guidance .tt-container > * { max-width: 860px; }
.tt-journey-page__guidance h2 {
  margin: 0 0 16px;
  font: 500 clamp(24px, 2.4vw, 34px)/1.15 var(--font-display);
  letter-spacing: -.01em;
}
.tt-journey-page__guidance p {
  margin: 0;
  padding: 22px 26px;
  border-left: 3px solid var(--tt-clay);
  background: #fff;
  border-radius: 0 8px 8px 0;
  font-size: 16px;
  line-height: 1.7;
  color: var(--tt-muted);
}

.tt-journey-page__gear { padding: clamp(72px, 10vw, 130px) 0; background: var(--tt-sand); }
.tt-journey-page__gear h2 {
  margin: 0 0 clamp(28px, 4vw, 44px);
  font: 500 clamp(30px, 3.4vw, 50px)/1.08 var(--font-display);
  letter-spacing: -.015em;
}
.tt-journey-page__gear .tt-magazine-gear__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 2.6vw, 32px); }
.tt-journey-spotlight {
  display: grid;
  grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr);
  margin: 0 0 clamp(34px, 5vw, 58px);
  overflow: hidden;
  border: 1px solid var(--tt-line);
  border-radius: 10px;
  background: #fff;
}
.tt-journey-spotlight__media { min-height: 420px; background: #f2f0ec; }
.tt-journey-spotlight__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.tt-journey-spotlight__body { align-self: center; padding: clamp(30px, 5vw, 72px); }
.tt-journey-spotlight__body .tt-section__eyebrow { margin-bottom: 16px; }
.tt-journey-spotlight__badge {
  display: inline-flex;
  margin-bottom: 14px;
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--tt-pine);
  color: #fff;
  font: 700 11px/1.3 var(--font-head);
  letter-spacing: .06em;
  text-transform: uppercase;
}
.tt-journey-spotlight h3 { margin: 0 0 12px; font: 500 clamp(28px, 3vw, 44px)/1.08 var(--font-display); letter-spacing: -.015em; }
.tt-journey-spotlight h3 a { color: var(--tt-ink); }
.tt-journey-spotlight__price { margin: 16px 0; font: 600 18px/1.4 var(--font-head); color: var(--tt-pine); }
.tt-journey-spotlight ul { margin: 0 0 28px; padding-left: 20px; color: var(--tt-muted); }
.tt-journey-spotlight li + li { margin-top: 8px; }
.tt-journey-page__all-products { display: flex; justify-content: center; margin: clamp(30px, 4vw, 48px) 0 0; }

.tt-journey-page__journal { padding: clamp(64px, 9vw, 110px) 0; text-align: center; }
.tt-journey-page__journal h2 {
  margin: 0 0 14px;
  font: 500 clamp(28px, 3.2vw, 46px)/1.1 var(--font-display);
  letter-spacing: -.015em;
}
.tt-journey-page__journal a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 600 16px/1.3 var(--font-head);
  color: var(--tt-pine);
}
.tt-journey-page__journal a::after { content: "\2192"; font-family: var(--font-body); transition: transform .22s ease; }
.tt-journey-page__journal a:hover { color: var(--tt-clay-dark); }
.tt-journey-page__journal a:hover::after { transform: translateX(5px); }

.tt-journey-page__planner {
  padding: clamp(88px, 12vw, 160px) 0;
  text-align: center;
  background:
    radial-gradient(120% 140% at 85% -10%, rgba(138, 160, 143, .35) 0%, rgba(138, 160, 143, 0) 55%),
    linear-gradient(160deg, var(--tt-pine) 0%, var(--tt-pine-deep) 100%);
  color: #fff;
}
.tt-journey-page__planner h2 {
  margin: 0 auto 28px;
  max-width: 700px;
  font: 500 clamp(34px, 4vw, 58px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  color: #fff;
  text-wrap: balance;
}
.tt-journey-page__planner .tt-btn { padding: 16px 34px; font-size: 16px; }

/* ------------------------------------------------------------------ */
/* Journal index + category archive                                    */
/* ------------------------------------------------------------------ */

.tt-journal { padding-top: clamp(56px, 8vw, 110px); padding-bottom: clamp(72px, 10vw, 150px); }
.tt-journal__header { max-width: 860px; margin: 0 0 clamp(32px, 4.5vw, 56px); }
.tt-journal__header h1 {
  margin: 0;
  font: 500 clamp(42px, 5.6vw, 88px)/1.02 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-journal__categories ul { list-style: none; margin: 0 0 clamp(40px, 6vw, 72px); padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.tt-journal__categories a {
  display: inline-block;
  padding: 10px 20px;
  border: 1px solid var(--tt-line);
  border-radius: 999px;
  font: 500 14px/1.4 var(--font-head);
  transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.tt-journal__categories a:hover { background: var(--tt-pine); border-color: var(--tt-pine); color: #fff; }
.tt-journal__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(28px, 3.4vw, 48px) clamp(24px, 3vw, 40px); }
.tt-journal-card img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 4px;
  transition: transform .8s cubic-bezier(.2, .65, .25, 1);
}
.tt-journal-card > a { display: block; overflow: hidden; border-radius: 4px; }
.tt-journal-card > a:hover img { transform: scale(1.03); }
.tt-journal-card h2 {
  margin: 18px 0 8px;
  font: 500 clamp(21px, 1.9vw, 27px)/1.22 var(--font-display);
  letter-spacing: -.01em;
}
.tt-journal-card > a:hover h2 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.tt-journal-card__date {
  margin: 0 0 10px;
  font: 600 11px/1.4 var(--font-head);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--tt-clay-dark);
}
.tt-journal-card > p:last-child { margin: 0; font-size: 15px; line-height: 1.65; color: var(--tt-muted); }

/* ------------------------------------------------------------------ */
/* Journal article (single post)                                       */
/* ------------------------------------------------------------------ */

.tt-article { padding-top: clamp(48px, 7vw, 96px); }
.tt-article__header { max-width: 860px; margin: 0 auto clamp(32px, 4vw, 48px); text-align: center; }
.tt-article__eyebrow {
  margin: 0 0 14px;
  font: 600 12px/1.4 var(--font-head);
  text-transform: uppercase;
  letter-spacing: .22em;
  color: var(--tt-clay-dark);
}
.tt-article__title {
  margin: 0 0 16px;
  font: 500 clamp(36px, 4.6vw, 68px)/1.06 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-article__dek { margin: 0 auto 18px; max-width: 640px; font: italic 400 clamp(18px, 1.8vw, 22px)/1.5 var(--font-display); color: var(--tt-muted); }
.tt-article__meta { display: flex; justify-content: center; gap: 18px; margin: 0; font: 500 13px/1.5 var(--font-head); color: var(--tt-muted); }
.tt-article__hero { margin: 0 0 clamp(36px, 5vw, 56px); }
.tt-article__hero img { width: 100%; aspect-ratio: 21 / 10; object-fit: cover; border-radius: 6px; }
.tt-article__body { max-width: var(--tt-prose-max); margin: 0 auto; font-size: 17.5px; line-height: 1.8; }
.tt-article__body h2 { margin: 1.6em 0 .6em; font: 500 clamp(26px, 2.6vw, 36px)/1.15 var(--font-display); letter-spacing: -.01em; }
.tt-article__body h3 { margin: 1.4em 0 .5em; font: 500 clamp(21px, 2vw, 26px)/1.25 var(--font-display); }
.tt-article__body blockquote {
  margin: 1.6em 0;
  padding: 4px 0 4px 26px;
  border-left: 3px solid var(--tt-clay);
  font: italic 400 clamp(20px, 2vw, 25px)/1.5 var(--font-display);
  color: var(--tt-clay-dark);
}
.tt-article__body img { border-radius: 6px; }
.tt-article__sources { max-width: var(--tt-prose-max); margin: clamp(40px, 5vw, 56px) auto 0; padding: 24px 28px; background: var(--tt-sand); border-radius: 8px; }
.tt-article__sources h2 { font: 600 13px/1.4 var(--font-head); text-transform: uppercase; letter-spacing: .18em; color: var(--tt-clay-dark); margin: 0 0 12px; }
.tt-article__sources ul { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.8; word-break: break-all; }

/* ------------------------------------------------------------------ */
/* Our Story page                                                      */
/* ------------------------------------------------------------------ */

.tt-story-page { width: min(100% - 48px, 980px); margin: 0 auto; padding: clamp(56px, 8vw, 110px) 0 clamp(72px, 10vw, 140px); }
.tt-story-page h1 {
  font: 500 clamp(44px, 6vw, 92px)/1.02 var(--font-display);
  letter-spacing: -.015em;
  text-wrap: balance;
}
.tt-story-page h2 { font: 500 clamp(26px, 2.8vw, 40px)/1.12 var(--font-display); letter-spacing: -.01em; margin-top: 1.6em; }
.tt-story-page p { font-size: 17px; line-height: 1.75; }
.tt-story-page__manifesto, .tt-story-page .tt-editorial-intro p {
  font: 400 clamp(22px, 2.4vw, 34px)/1.3 var(--font-display);
  letter-spacing: -.01em;
}
.tt-story-page__header { max-width: 900px; }
.tt-story-page__image { margin: clamp(42px, 6vw, 76px) 0; overflow: hidden; border-radius: 6px; background: var(--tt-sand); }
.tt-story-page__image img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.tt-story-page__chapters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(36px, 6vw, 80px); }
.tt-story-page__chapters h2 { margin-top: 0; }
.tt-story-page__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: clamp(36px, 5vw, 60px); }
@media (max-width: 720px) {
  .tt-story-page__chapters { grid-template-columns: 1fr; }
  .tt-story-page__image { margin-left: -24px; margin-right: -24px; border-radius: 0; }
}

/* ------------------------------------------------------------------ */
/* Scroll reveal                                                       */
/* ------------------------------------------------------------------ */

/*
 * Gated on .tt-motion-ready, which brand-magazine.js adds only when motion is
 * allowed and IntersectionObserver exists. No-JS and reduced-motion visitors
 * never receive the hidden state, so content is always present without script.
 */
.tt-motion-ready .tt-journey-chapter,
.tt-motion-ready .tt-magazine-manifesto__inner,
.tt-motion-ready .tt-magazine-journal__story,
.tt-motion-ready .tt-gear-group {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .7s ease, transform .7s ease;
}
.tt-motion-ready .tt-journey-chapter.is-visible,
.tt-motion-ready .tt-magazine-manifesto__inner.is-visible,
.tt-motion-ready .tt-magazine-journal__story.is-visible,
.tt-motion-ready .tt-gear-group.is-visible { opacity: 1; transform: none; }
.tt-motion-ready .tt-magazine-journal__story:nth-child(2),
.tt-motion-ready .tt-gear-group:nth-child(2) { transition-delay: .08s; }
.tt-motion-ready .tt-magazine-journal__story:nth-child(3),
.tt-motion-ready .tt-gear-group:nth-child(3) { transition-delay: .16s; }

/* ------------------------------------------------------------------ */
/* Tablet                                                              */
/* ------------------------------------------------------------------ */

@media (max-width: 1080px) {
  .tt-magazine-planner .tt-container { grid-template-columns: 1fr; gap: 40px; }
  .tt-magazine-planner form { max-width: 640px; }
  .tt-home-featured-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tt-magazine-journal__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
  .tt-journal__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tt-journey-page__gear .tt-magazine-gear__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ------------------------------------------------------------------ */
/* Mobile                                                              */
/* ------------------------------------------------------------------ */

@media (max-width: 760px) {
  .tt-magazine-hero { min-height: clamp(650px, 84svh, 740px); align-items: end; }
  .tt-magazine-hero::after { background: linear-gradient(180deg, rgba(12, 20, 15, .48) 0%, rgba(12, 24, 17, .08) 34%, rgba(12, 24, 17, .9) 100%); }
  .tt-magazine-hero__picture img { object-position: 58% center; }
  .tt-magazine-hero__content { width: min(100% - 40px, 680px); padding: 128px 0 36px; }
  body:has(#tt-consent[style*="flex"]) .tt-magazine-hero__content { padding-top: clamp(80px, 12vh, 140px); padding-bottom: 220px; }
  .tt-magazine-hero h1 { max-width: 10ch; font-size: clamp(40px, 11vw, 52px); }
  .tt-magazine-hero__eyebrow { margin-bottom: 14px; letter-spacing: .16em; }
  .tt-magazine-hero__sub { max-width: 34ch; margin-top: 14px; font-size: 15px; }
  .tt-magazine-hero__product-proof { width: 100%; margin-top: 16px; padding: 9px 11px; font-size: 12px; }
  /* Full width on a phone so the three parts get the whole line rather than
     fighting over it; the label truncates first if anything has to give.
     min-height clears the 44px touch target — this is the first thing most
     visitors here are asked to tap, and at 37px it was under it. */
  .tt-magazine-hero__offer { width: 100%; min-height: 44px; margin-top: 16px; font-size: 12px; }
  .tt-magazine-hero__offer-amount { padding: 9px 11px; }
  .tt-magazine-hero__offer-label { padding: 9px 10px; }
  .tt-magazine-hero__offer-cta { padding: 9px 12px 9px 8px; }
  .tt-magazine-hero__actions { margin-top: 18px; }
  .tt-magazine-hero__actions .tt-btn { min-height: 50px; padding: 14px 22px; font-size: 15px; }
  .tt-magazine-hero__scroll { display: none; }

  .tt-magazine-manifesto__inner { grid-template-columns: 1fr; gap: 28px; }
  .tt-magazine-manifesto__inner > img { aspect-ratio: 4 / 3; }

  .tt-magazine-journeys__head,
  .tt-magazine-shelves__head { align-items: flex-start; margin-bottom: 28px; padding-bottom: 18px; }
  .tt-home-journeys-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .tt-home-journey-card { aspect-ratio: 4 / 5; }
  .tt-home-journey-card:nth-child(odd):last-child { grid-column: 1 / -1; aspect-ratio: 2 / 1; }
  .tt-home-journey-card__overlay { padding: 16px; }
  .tt-home-journey-card__overlay strong { font-size: 22px; }

  /* One-up on phones: side by side, a 3:2 card is too short to hold the name,
     the blurb, the count and the CTA without the text stack overrunning it.
     The card grows to 5:4 and the text stack tightens in step — at 4:3 with
     desktop padding the overlay ate 61% of the card and left the photograph
     a 100px strip. */
  .tt-home-shelves-grid { grid-template-columns: 1fr; gap: 12px; }
  .tt-home-shelf-card { aspect-ratio: 5 / 4; }
  .tt-home-shelf-card__overlay { padding: 16px; gap: 5px; }
  .tt-home-shelf-card__overlay strong { font-size: 23px; }
  .tt-home-shelf-card__blurb { font-size: 13px; }

  .tt-magazine-planner form { grid-template-columns: 1fr; padding: 22px; }
  .tt-magazine-planner label:first-of-type { grid-column: auto; }

  .tt-magazine-gear__head { align-items: flex-start; margin-bottom: 30px; }
  .tt-home-featured-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

  .tt-magazine-journal__grid { grid-template-columns: 1fr; gap: 36px; }
  .tt-magazine-stories__grid { grid-template-columns: 1fr; }

  .tt-magazine-trust__items { grid-template-columns: 1fr 1fr; }
  .tt-magazine-trust__items p { padding: 18px 16px; }
  .tt-magazine-trust__items p + p { border-left: 0; }
  .tt-magazine-trust__items p:nth-child(even) { border-left: 1px solid var(--tt-line); }
  /* Row 2 starts at the third cell. This used to read nth-child(n+3) and span it
   * full width, which was right while the row held three items — with a fourth
   * cell added it caught cells 3 AND 4 and stacked them one per row. */
  .tt-magazine-trust__items p:nth-child(n+3) { border-top: 1px solid var(--tt-line); }

  .tt-header__account { display: none; }

  .tt-journey-page__hero { min-height: clamp(440px, 78svh, 620px); }
  .tt-journey-page__hero h1 { font-size: clamp(32px, 10vw, 48px); }
  .tt-journey-spotlight { grid-template-columns: 1fr; }
  .tt-journey-spotlight__media { min-height: 0; aspect-ratio: 4 / 3; }
  .tt-journey-page__gear .tt-magazine-gear__grid { grid-template-columns: 1fr 1fr; gap: 14px; }

  .tt-journal__grid { grid-template-columns: 1fr; }
  .tt-article__meta { flex-direction: column; gap: 4px; align-items: center; }
}

@media (max-width: 560px) {
  /* Two-up stays on phones (2026-08-09): one card per screen made browsing a
   * ten-product journey a ten-screen scroll. */
  .tt-journey-page__gear .tt-magazine-gear__grid { grid-template-columns: 1fr 1fr; gap: 12px; }
}

@media (pointer: coarse) {
  .tt-home-featured-grid .tt-series-card__img--hover { display: none; }
  .tt-home-journey-card:hover img { transform: none; }
  .tt-home-shelf-card:hover img { transform: none; }
}

/* ------------------------------------------------------------------ */
/* Reduced motion                                                      */
/* ------------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
  .tt-magazine *, .tt-magazine *::before, .tt-magazine *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .tt-motion-ready .tt-journey-chapter,
  .tt-motion-ready .tt-magazine-manifesto__inner,
  .tt-motion-ready .tt-magazine-journal__story,
  .tt-motion-ready .tt-gear-group { opacity: 1; transform: none; }
  .tt-magazine-hero__eyebrow, .tt-magazine-hero h1, .tt-magazine-hero__actions { animation: none; }
  .tt-journey-chapter:hover img { transform: none; }
}

/* ------------------------------------------------------------------ */
/* Journey landing — paid-landing restructure (2026-08-09)             */
/* ------------------------------------------------------------------ */

/* Ghost button legible on dark grounds (hero photo, planner pine). */
.tt-btn--ghost-light { color: #fff; background: transparent; border-color: rgba(255, 255, 255, .72); }
.tt-btn--ghost-light:hover { background: #fff; border-color: #fff; color: var(--tt-pine-deep); }

.tt-journey-page__hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* Price anchor + service chips under the hero copy. Beats the generic hero-p
 * rule on specificity by carrying the same compound selector. */
.tt-journey-page__hero p.tt-journey-page__hero-meta {
  display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 0; max-width: none; font-size: 0;
}
.tt-journey-page__hero-meta span {
  padding: 7px 13px;
  border: 1px solid rgba(255, 255, 255, .38);
  border-radius: 999px;
  background: rgba(12, 24, 17, .38);
  -webkit-backdrop-filter: blur(2px);
  backdrop-filter: blur(2px);
  font: 600 12.5px/1.2 var(--font-head);
  letter-spacing: .02em;
  color: #fff;
}

/* Shop-by-need chip bar, sticky so the grouping survives the scroll. */
.tt-journey-page__groups { position: sticky; top: 0; z-index: 30; background: var(--tt-cream); border-bottom: 1px solid var(--tt-line); }
.tt-journey-page__groups .tt-container {
  display: flex; gap: 8px; padding-top: 10px; padding-bottom: 10px;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.tt-journey-page__groups .tt-container::-webkit-scrollbar { display: none; }
.tt-journey-page__groups a {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 16px; border: 1px solid var(--tt-line); border-radius: 999px; background: #fff;
  font: 600 13.5px/1.2 var(--font-head); color: var(--tt-ink); white-space: nowrap;
  transition: border-color .18s ease, color .18s ease;
}
.tt-journey-page__groups a:hover { border-color: var(--tt-pine); color: var(--tt-pine); }
.tt-journey-page__groups a span { padding: 4px 7px; border-radius: 999px; background: var(--tt-sand); font: 700 11px/1 var(--font-head); color: var(--tt-muted); }

/* Grouped grids. */
.tt-journey-page__group { margin-top: clamp(36px, 5vw, 56px); scroll-margin-top: 72px; }
.tt-journey-page__group-title {
  display: flex; align-items: baseline; gap: 10px; margin: 0 0 16px;
  font: 500 clamp(20px, 2vw, 28px)/1.15 var(--font-display); letter-spacing: -.01em;
}
.tt-journey-page__group-title span { font: 600 13px/1 var(--font-head); color: var(--tt-muted); }

/* Spotlight extras: product film + care line. */
.tt-journey-spotlight__media video { display: block; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
.tt-journey-spotlight__care { margin: 0 0 14px; font-size: 14px; color: var(--tt-muted); }

.tt-journey-page__all-products a {
  font: 600 15px/1.4 var(--font-head); color: var(--tt-pine);
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px;
}
.tt-journey-page__all-products a:hover { color: var(--tt-clay-dark); }

/* Choosing guide, collapsed below the gear. */
.tt-series-guide--collapsed { padding: clamp(44px, 6vw, 76px) 0 0; }
.tt-series-guide--collapsed .tt-container { display: flex; justify-content: center; }
.tt-series-guide__details { width: min(100%, 860px); border: 1px solid var(--tt-line); border-radius: 10px; background: #fff; }
.tt-series-guide__details summary {
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  padding: 18px 22px; cursor: pointer; list-style: none;
  font: 500 clamp(18px, 1.8vw, 22px)/1.3 var(--font-display); letter-spacing: -.01em;
}
.tt-series-guide__details summary::-webkit-details-marker { display: none; }
.tt-series-guide__details summary::after { content: "+"; flex: 0 0 auto; font: 400 26px/1 var(--font-body); color: var(--tt-clay-dark); }
.tt-series-guide__details[open] summary::after { content: "\2212"; }
.tt-series-guide__details .tt-series-guide__body { padding: 0 22px 20px; }
.tt-series-guide__body p { margin: 0 0 14px; font-size: 15.5px; line-height: 1.7; color: var(--tt-muted); }
.tt-series-guide__safety { padding-top: 12px; border-top: 1px dashed var(--tt-line); font-size: 13.5px; }

/* Journal band: real story cards instead of a heading and a lone link. */
.tt-journey-page__journal { text-align: left; }
.tt-journey-page__journal-head { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; margin-bottom: clamp(22px, 3vw, 34px); }
.tt-journey-page__journal-head h2 { margin: 0; }
.tt-journey-page__journal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(22px, 3vw, 40px); }
.tt-journey-page__journal-grid .tt-journal-card h3 {
  margin: 16px 0 8px;
  font: 500 clamp(20px, 1.9vw, 26px)/1.22 var(--font-display); letter-spacing: -.01em;
}
.tt-journey-page__journal-grid .tt-journal-card > a { color: var(--tt-ink); }
.tt-journey-page__journal-grid .tt-journal-card p { margin: 0; font-size: 15px; line-height: 1.65; color: var(--tt-muted); }

/* Conversion close: inline offer + choosing help, postcard demoted to a line. */
.tt-journey-close { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(28px, 4vw, 64px); text-align: left; }
.tt-journey-close h2 { margin: 0 0 18px; max-width: none; text-align: left; }
.tt-journey-close__help { align-self: center; padding: clamp(20px, 2.5vw, 30px); border: 1px solid rgba(255, 255, 255, .22); border-radius: 12px; background: rgba(12, 24, 17, .25); }
.tt-journey-close__help-title { margin: 0 0 6px; font: 500 clamp(19px, 1.9vw, 24px)/1.25 var(--font-display); color: #fff; }
.tt-journey-close__help-copy { margin: 0 0 16px; font-size: 14.5px; line-height: 1.6; color: rgba(255, 255, 255, .82); }
.tt-journey-close__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.tt-journey-close__actions .tt-btn { padding: 12px 20px; font-size: 14.5px; }
.tt-journey-close__postcard { grid-column: 1 / -1; margin: clamp(10px, 2vw, 22px) 0 0; padding-top: 18px; border-top: 1px solid rgba(255, 255, 255, .18); font-size: 14px; color: rgba(255, 255, 255, .78); }
.tt-journey-close__postcard a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* Inline welcome-offer claim (shared classes with the modal's code chip). */
.tt-welcome-inline__lead { margin: 0 0 16px; font-size: 17px; line-height: 1.55; color: rgba(255, 255, 255, .92); }
.tt-welcome-inline__lead strong { color: #fff; }
.tt-welcome-inline.is-held .tt-welcome-inline__lead { margin: 0; }
.tt-welcome-inline__form { display: flex; flex-wrap: wrap; gap: 10px; max-width: 520px; }
.tt-welcome-inline__input {
  flex: 1 1 220px; min-width: 0; min-height: 50px; padding: 12px 18px;
  border: 1px solid rgba(255, 255, 255, .4); border-radius: 999px;
  background: rgba(12, 24, 17, .35); color: #fff; font-size: 16px;
}
.tt-welcome-inline__input::placeholder { color: rgba(255, 255, 255, .55); }
.tt-welcome-inline__input:focus { outline: 2px solid rgba(255, 255, 255, .8); outline-offset: 1px; }
.tt-welcome-inline__submit {
  flex: 0 0 auto; min-height: 50px; padding: 12px 26px;
  border: 1px solid var(--tt-clay); border-radius: 999px;
  background: var(--tt-clay); color: #fff; font: 600 15px/1.2 var(--font-head); cursor: pointer;
}
.tt-welcome-inline__submit:hover { filter: brightness(1.08); }
.tt-welcome-inline__submit[disabled] { opacity: .6; cursor: default; }
.tt-welcome-inline__msg { margin: 12px 0 0; font-size: 15px; color: rgba(255, 255, 255, .9); }
.tt-welcome-inline__msg--err { color: #F0B8A0; }
.tt-welcome-inline__msg .tt-welcome__code {
  display: inline-block; margin-top: 8px; padding: 8px 16px; border-radius: 8px;
  border: 1px dashed rgba(255, 255, 255, .65); background: rgba(12, 24, 17, .35);
  font: 600 16px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; color: #fff;
}
.tt-welcome-inline__fine { margin: 12px 0 0; font-size: 12px; color: rgba(255, 255, 255, .6); }
.tt-welcome-inline__fine a { color: rgba(255, 255, 255, .8); }

@media (max-width: 860px) {
  .tt-journey-close { grid-template-columns: 1fr; }
  .tt-journey-page__journal-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .tt-journey-page__hero-actions .tt-btn { min-height: 48px; }
  .tt-journey-spotlight__media:has(video) { aspect-ratio: 4 / 5; }
  .tt-journey-page__group { scroll-margin-top: 64px; }
}

/* ------------------------------------------------------------------ */
/* Gear shelf landings (/gear/*) — journey-page layout with a CSS-only
 * hero: no photography yet for these shelves, so a deep pine field
 * carries the same white-text hero, cut shorter so a paid click sees
 * the product grid on screen one. */
/* ------------------------------------------------------------------ */

.tt-gear-page .tt-journey-page__hero {
  min-height: clamp(340px, 44vh, 500px);
  background:
    radial-gradient(120% 90% at 85% 0%, rgba(138, 160, 143, .28) 0%, rgba(138, 160, 143, 0) 55%),
    linear-gradient(165deg, #35503E 0%, var(--tt-pine) 46%, #22352A 100%);
}
.tt-gear-page .tt-journey-page__hero::after { content: none; }
.tt-gear-page .tt-journey-page__hero > div {
  padding: clamp(104px, 15vh, 150px) 0 clamp(38px, 6vh, 60px);
}
.tt-gear-page .tt-journey-page__hero h1 { font-size: clamp(36px, 4.6vw, 72px); }

/* A shelf with a 主推 pick swaps the pine field for that product's platform
 * hero (page-gear-category.php). The scrim comes back with it — and heavier
 * than the journey one, because this hero is shorter and the copy runs its
 * full height instead of sitting in a dark band at the bottom. Left-weighted
 * so the product still reads on the right, where the copy column ends. The
 * pine field stays underneath as the pre-load and load-failure state. */
.tt-gear-page .tt-journey-page__hero.tt-gear-page__hero--media::after {
  content: "";
  background:
    linear-gradient(180deg, rgba(12, 20, 15, .62) 0%, rgba(12, 20, 15, .2) 34%, rgba(12, 20, 15, 0) 60%),
    linear-gradient(90deg, rgba(12, 24, 17, .8) 0%, rgba(12, 24, 17, .46) 50%, rgba(12, 24, 17, .12) 100%),
    linear-gradient(0deg, rgba(12, 24, 17, .58) 0%, rgba(12, 24, 17, 0) 46%);
}
@media (max-width: 780px) {
  /* One column at phone widths: the copy sits over the middle of the frame,
   * so the left-weighted wash is not enough on its own. */
  .tt-gear-page .tt-journey-page__hero.tt-gear-page__hero--media::after {
    background:
      linear-gradient(180deg, rgba(12, 20, 15, .66) 0%, rgba(12, 20, 15, .42) 45%, rgba(12, 24, 17, .72) 100%);
  }
}
.tt-gear-page .tt-journey-page__gear { padding-top: clamp(40px, 6vw, 72px); }
