:root {
  --navy: #061e4a;
  --navy-800: #12336a;
  --ink: #24334d;
  --red: #f7192d;
  --orange: #ff7919;
  --yellow: #ffc323;
  --surface: #f6f8fd;
  --brand-tint: #e9eff9;
  --white: #ffffff;
  --line: #d8e1f0;
  --container: 1344px;
  --shadow: 0 24px 58px rgba(6, 30, 74, 0.15);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
/*
 * Every Container element we build gets Elementor's own `.e-con` class, which ships a DEFAULT
 * 10px padding on all 4 sides (via --padding-top/right/bottom/left custom properties consumed as
 * logical padding-inline/block properties in Elementor's frontend.css) unless a `padding` setting
 * is explicitly configured in the editor — which we never do, since every dimension here comes
 * from these reused classes instead. That silently shrank/offset content in every container that
 * doesn't have its own explicit padding rule below (hero, button-row, style-card, benefits-grid,
 * etc). Reset it once, early, so specific selectors further down still override it normally.
 *
 * Elementor containers also default to a 20px flex `gap`. That IS reset globally, but only in
 * the mockup-parity layer further down — it has to be paired with restoring the per-element
 * margins the theme was suppressing, otherwise the spacing those gaps were standing in for
 * collapses. See section (a)/(d) of that layer; don't zero the gap without the margins.
 */
.e-con { padding: 0; }
body {
  margin: 0;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}
/*
 * The rule above targets the mockup's own hand-drawn outline icons (stroke-based, no fill).
 * Font Awesome icons rendered by Elementor's native Icon widget (`.e-font-icon-svg`) are solid
 * FILLED glyphs, not outlines — inheriting fill:none from the rule above makes them invisible or
 * wrongly stroke-rendered, and their own color otherwise fell back to Elementor's default grey.
 */
.e-font-icon-svg {
  fill: currentColor;
  stroke: none;
}
p { margin-top: 0; }
h3, h4 { margin-top: 0; }

/*
 * The theme ships two global overrides that both load AFTER this file and both use bare tag
 * selectors (body, h1..h6, button, .button, ...) at the same specificity as the equivalent rules
 * above, so on a load-order tie the theme wins — one of them (dynamic.css) isn't even !important,
 * yet still wins, because our un-bumped rules weren't !important either. The other
 * (style-font-weight-500.css) IS !important, so beating it needs both !important AND higher
 * specificity, not just one or the other. Every rule below is deliberately restated at
 * `html body ...` specificity for that reason — this block is the fix, not a duplicate.
 */
html body,
html body button,
html body input {
  font-family: "Manrope", Arial, sans-serif !important;
}
/*
 * Same collision, plain `body{...}`: the theme's own body rule (color:#333, no background) was
 * winning on the same load-order tie, so navy text + the light surface background were silently
 * falling back to the theme's defaults everywhere nothing more specific set its own color —
 * every heading without its own color rule (H1, H3s, H4s, section headings) rendered dark grey
 * instead of navy, and body's background was fully transparent instead of --surface.
 *
 * The theme also has an admin-configured base font size (`html, body{font-size:14.5px}` in both
 * style.css and dynamic.css) — a deliberate site-wide setting, not a bug, so it's only reset
 * here rather than removed at the source. Every rem-based size in this whole design (body text,
 * eyebrows, button/team-name labels, h1/h2's rem-based clamp() bounds, etc) was quietly
 * computing ~10% smaller than intended off that 14.5px root instead of the standard 16px this
 * design was built against. Safe to hard-set here since fp-home.css only loads on the front page
 * (is_front_page()), so this never touches shop/other pages that may want the theme's own scale.
 *
 * The theme's rule is `html, body{font-size:14.5px}` — two independent selectors, not a
 * descendant chain — so it sets the <html> element's OWN font-size directly. `html body` below
 * only ever matches <body> (every body is a descendant of html), so on its own it never touches
 * rem sizing at all; <html> has to be reset separately for rem units (h1/h2/h3 clamp() bounds,
 * etc) to actually recompute against 16px instead of 14.5px.
 */
html {
  font-size: 16px !important;
}
html body {
  background: var(--surface) !important;
  color: var(--navy) !important;
  font-size: 16px !important;
  line-height: 1.55 !important;
}
html body h1,
html body h2 {
  font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important;
  font-style: italic !important;
  font-weight: 800 !important;
  /*
   * Discovered by diffing against the original mockup file directly: the theme's style.css also
   * ships its OWN plain `h1{font-size:...}`/`h2{...}` rules (no !important), loaded AFTER this
   * file, so on the specificity tie our un-bumped font-size/line-height/margin/letter-spacing
   * were silently losing too — not just family/style/weight. Same fix, same reason.
   */
  margin-top: 0 !important;
  margin-bottom: 20px !important;
  letter-spacing: -0.025em !important;
}
html body h1 { font-size: clamp(4.25rem, 5.25vw, 5.75rem) !important; line-height: 0.91 !important; }
html body h2 { font-size: clamp(3.2rem, 4.4vw, 4.8rem) !important; line-height: 0.94 !important; }
/* h3/h4 that don't already declare their own family (theme's own h1..h6 rule is a *direct* match
   on these tags, not inheritance, so `html body {font-family:Manrope}` above cannot reach them —
   inheritance always loses to any direct rule, important or not). */
html body h3,
html body h4 {
  font-family: "Manrope", Arial, sans-serif !important;
  font-style: normal !important;
}
html body .button {
  font-weight: 800 !important;
}

/* ==========================================================================
   Mockup-parity layer — added after diffing every section of the live page
   against homepage (2).html at 1280px. Each block below fixes a class of
   mismatch whose root cause is the Elementor wrapper or an elessi-theme rule
   out-specifying ours, NOT a difference in the design itself.
   ========================================================================== */

/* (a) Elementor gives every Container `display:flex` + a 20px gap. The mockup is
       margin-driven with no gaps, so the phantom gap was inflating section heights
       (benefits +42px, collections +134px) and shrinking every grid track
       (trust-strip 300->285px). Zero it here; the ~19 containers that genuinely do
       want a gap re-declare their own further down and win on load order. */
.e-con { gap: 0; }

/* (b) Containers the mockup renders as plain blocks. Left as flex they turn their
       children into flex items, which is why `.closing-desc` shrank to its text
       width (639px) instead of honouring its own max-width:700px + auto margins. */
.hero, .hero-copy, .hero-products, .speed-ribbons, .product-card,
.collections-section, .conference-panel, .division,
.styles-section, .section-heading, .style-image,
.customize-section, .benefits-section, .benefits-grid article,
.faq-section, .closing-section, .closing-inner, .container { display: block; }

/* (c) Typography. dynamic.css styles `p` directly (Jost, line-height 1.6) and
       style-font-weight-500.css forces weight 500 on h1..h6 through a very long
       selector list that out-specifies `html body h1`. Restating at `.elementor`
       scope clears both without needing !important for the inherited properties. */
html body .elementor p { font-family: "Manrope", Arial, sans-serif; line-height: 1.55; }
html body .elementor span,
html body .elementor small,
html body .elementor strong,
html body .elementor li,
html body .elementor details,
html body .elementor summary { line-height: 1.55; }
/* Elementor's own `.elementor-heading-title{line-height:1}` is what flattened the
   h3/h4 blocks (43px tall instead of 67px). */
html body .elementor h3,
html body .elementor h4 { line-height: 1.55; }
html body .elementor h1.elementor-heading-title { font-weight: 800 !important; line-height: .91; }
html body .elementor h2.elementor-heading-title { font-weight: 800 !important; line-height: .94; }

/* (d) Every <p> here is the only child of its widget wrapper, so the theme's
       `p:last-child{margin-bottom:0}` (0,1,1) was killing the spacing our single
       class selectors set. Restate the mockup's margins above that specificity. */
html body .elementor p.eyebrow { margin-bottom: 8px; }
html body .elementor p.hero-lead { margin-bottom: 26px; line-height: 1.65; }
html body .elementor .collections-lead { margin-bottom: 9px; }
html body .elementor .conference-title p { margin-bottom: 2px; }
html body .elementor p.style-label { margin-bottom: 6px; }
html body .elementor .style-copy p:not(.style-label) { margin-bottom: 16px; }
html body .elementor .customize-desc { margin-bottom: 25px; }
html body .elementor .faq-desc { margin-bottom: 16px; }
html body .elementor .closing-desc { margin-bottom: 25px; }

/* (e) Restate the two display-type line-heights that (c) would otherwise flatten. */
html body .elementor .number-card strong { line-height: .9; }

/* (f) Elementor's button base is font-size:15px / line-height:1 — the mockup's
       buttons are 16px/1.55, which is why every button rendered ~22px narrower. */
.elementor-widget-button.button a.elementor-button { font-size: 1rem; line-height: 1.55; }

/* (g) The theme resets <small> away from the browser's 0.8333em default. */
html body .elementor .number-card small { font-size: .8333em; }

/* (h) Mirrors the mockup's `a { color: inherit }`. Kept un-!important so the
       genuinely coloured links (.conference-title a, .team-link, buttons) still win
       on their own higher specificity. */
html body .elementor a { color: inherit; }


/* (i) Text-Editor widgets holding bare text (no <p> wrapper) — the (c)/(d) rules key off `p`
       and so never reached these; and Elementor's own
       `.elementor.elementor-NNN … .elementor-widget{max-width:100%}` carries enough
       specificity to beat a two-class selector, hence the !important on max-width. */
html body .elementor .elementor-widget-text-editor { line-height: 1.55; }
html body .elementor .collections-lead { margin-bottom: 9px !important; }
html body .elementor .customize-desc { margin-bottom: 25px !important; }
html body .elementor .faq-desc { margin-bottom: 16px !important; }
html body .elementor .closing-desc { max-width: 700px !important; margin: 0 auto 25px !important; }
html body .elementor .closing-inner h2 { max-width: 800px !important; margin-inline: auto !important; }

/* (j) Elementor's button chrome: its icon renders at 15px inside a wrapper with a 5px gap,
       against the mockup's 20px arrow and 12px gap — ~11px narrower per button. */
.elementor-widget-button.button .elementor-button-content-wrapper { gap: 12px; }
.elementor-widget-button.button .elementor-button-icon svg { width: 20px; height: 20px; }

.container { width: min(calc(100% - 64px), var(--container)); margin-inline: auto; }
.hero {
  position: relative;
  overflow: hidden;
  background: var(--surface);
}
.hero-grid {
  display: grid;
  min-height: 620px;
  grid-template-columns: 46% 54%;
  align-items: center;
  gap: 16px;
}
.hero-copy { position: relative; z-index: 4; padding: 56px 0 64px; }
.hero-copy h1 { max-width: 650px; margin: 22px 0 14px !important; }
.eyebrow {
  margin-bottom: 8px;
  color: var(--red);
  font-size: 0.79rem;
  font-weight: 800;
  letter-spacing: 0.13em;
}
.eyebrow.light { color: var(--yellow); }
.speed-line {
  display: block;
  height: 5px;
  background: linear-gradient(90deg, var(--red) 0 45%, var(--orange) 45% 80%, var(--yellow) 80%);
  clip-path: polygon(0 0, 100% 0, 95% 100%, 0 100%);
}
.speed-line-short { width: 108px; height: 4px; }
.speed-line-long { width: 330px; margin-bottom: 24px; }
.hero-lead {
  max-width: 520px;
  margin-bottom: 26px;
  color: var(--ink);
  font-size: 1.08rem;
  line-height: 1.65;
}
/*
 * Elementor's own base CSS (`.e-con.e-flex{--flex-direction:column}`, consumed by
 * `.e-con-full.e-flex{flex-direction:var(--flex-direction)}`) defaults EVERY Container element
 * to a column flex layout unless a `flex_direction` setting is explicitly set in the editor —
 * which we never do (all layout comes from these reused classes). That rule's specificity
 * (two classes) beats a plain one-class selector here regardless of load order, so any container
 * that actually needs a ROW layout (side-by-side children) must say so explicitly and win the
 * specificity fight with `!important`, same pattern as the font-cascade fixes above.
 */
.button-row { display: flex; flex-direction: row !important; flex-wrap: wrap; gap: 14px; }
/*
 * Elementor's Button widget always wraps the real, clickable <a class="elementor-button"> two
 * levels deep inside .elementor-widget-container (and optionally .elementor-button-wrapper);
 * its `_css_classes` setting only ever lands on the OUTERMOST .elementor-element wrapper div,
 * never on that inner <a>. So `.button`/`.button-primary`/etc (added via _css_classes) can't be
 * plain box-model rules anymore — box-model/color rules are re-targeted onto the real <a> via
 * this bridge, and the wrapper divs in between are collapsed with `display:contents` so the box
 * still behaves as one visual unit with the whole area clickable.
 */
/*
 * The theme's `#submit, button, .button, input[type="submit"]{...}` rule (style.css) is a
 * complete box-model rule for ITS OWN buttons, not just a couple of stray properties — it also
 * sets padding:0 30px and height:42px directly on whatever carries class="button", which lands
 * on THIS outer wrapper div (not just the inner <a> our own bridge rule targets), stacking a
 * second 30px of padding on each side and clamping the box to 42px tall against our 56px <a>.
 * Neutralize every property that rule sets so it can't leak through onto the wrapper.
 */
.elementor-widget-button.button {
  display: inline-flex;
  border: 0;
  padding: 0;
  height: auto;
  font-size: inherit;
  border-radius: 0;
  text-transform: none;
  letter-spacing: normal;
  /* Same theme rule also paints a red background (its own default button color) on this
     wrapper — invisible normally, but it peeked out around the real <a>'s edges since the
     wrapper isn't always pixel-identical in size to its contents-collapsed child. */
  background: transparent;
  box-shadow: none;
}
/* The theme also has several `.button:hover{background-color:red;...}` rules (style.css AND
   dynamic.css both ship one) that fire on this same wrapper on hover — reset that state too. */
.elementor-widget-button.button:hover {
  background: transparent !important;
  border-color: transparent !important;
}
.elementor-widget-button.button > .elementor-widget-container,
.elementor-widget-button.button .elementor-button-wrapper {
  display: contents;
}
.elementor-widget-button.button a.elementor-button {
  display: inline-flex;
  min-height: 56px;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 0 30px;
  border: 2px solid transparent;
  border-radius: 10px;
  color: inherit;
  text-decoration: none;
  font-weight: 800 !important;
  /*
   * The parent theme's own style.css has a very generic `#submit, button, .button,
   * input[type="submit"]{...}` rule (meant for its own buttons) that our reused `.button` class
   * name collides with; it sets uppercase + 2px letter-spacing + a 1px border, which INHERITS
   * down through the `display:contents` wrapper divs onto this <a> since nothing here previously
   * set those 3 properties to override it — the extra letter-spacing alone was ~40px per button,
   * enough to break the two hero buttons onto separate lines. Reset explicitly.
   */
  text-transform: none !important;
  letter-spacing: normal !important;
  line-height: 1.55;
  transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease;
}
.elementor-widget-button.button a.elementor-button:hover { transform: translateY(-2px); }
.elementor-widget-button.button-primary a.elementor-button { background: var(--navy); box-shadow: 0 10px 24px rgba(6, 30, 74, 0.16); color: white; }
.elementor-widget-button.button-primary a.elementor-button:hover { background: var(--navy-800); box-shadow: 0 14px 28px rgba(6, 30, 74, 0.22); }
.elementor-widget-button.button-secondary a.elementor-button { border-color: var(--navy); background: white; color: var(--navy); }
.elementor-widget-button.button-secondary a.elementor-button:hover { background: var(--brand-tint); }
.elementor-widget-button.button-white a.elementor-button { background: white; color: var(--navy); }
.elementor-widget-button.button-gold a.elementor-button { background: var(--yellow); color: var(--navy); }
.hero-products { position: relative; min-height: 590px; }
.product-card {
  position: absolute;
  top: 50%;
  width: min(400px, 53%);
  overflow: hidden;
  border: 8px solid white;
  border-radius: 18px;
  box-shadow: var(--shadow);
  transition: transform 260ms cubic-bezier(.2,.8,.2,1);
}
.product-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  object-position: center;
}
.product-card:hover { z-index: 5; }
.satin-product {
  left: 3%;
  background: var(--navy);
  transform: translateY(-51%) rotate(-4deg);
}
.satin-product:hover { transform: translateY(calc(-51% - 4px)) rotate(-3deg); }
.cuffed-product {
  right: 0;
  z-index: 2;
  background: var(--brand-tint);
  transform: translateY(-47%) rotate(4deg);
}
.cuffed-product:hover { transform: translateY(calc(-47% - 4px)) rotate(3deg); }
.product-tag {
  position: absolute;
  top: 15px;
  left: 15px;
  z-index: 3;
  padding: 6px 11px;
  border-radius: 7px;
  background: white;
  box-shadow: 0 6px 15px rgba(6, 30, 74, 0.12);
  color: var(--navy);
  font-size: 0.67rem;
  font-weight: 800;
  letter-spacing: 0.1em;
}
.speed-ribbons { position: absolute; top: 95px; right: -110px; width: 400px; height: 310px; }
.speed-ribbons span {
  position: absolute;
  right: 0;
  width: 355px;
  height: 54px;
  clip-path: polygon(12% 0, 100% 0, 88% 100%, 0 100%);
  transform: rotate(-13deg);
}
.speed-ribbons span:nth-child(1) { top: 5px; background: var(--red); }
.speed-ribbons span:nth-child(2) { top: 82px; width: 325px; background: var(--orange); }
.speed-ribbons span:nth-child(3) { top: 155px; width: 290px; background: var(--yellow); }
.trust-strip {
  position: relative;
  z-index: 6;
  display: grid;
  min-height: 96px;
  grid-template-columns: repeat(4, 1fr);
  padding: 0 max(32px, calc((100vw - var(--container)) / 2));
  margin: 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: white;
  box-shadow: 0 6px 20px rgba(6, 30, 74, 0.06);
  list-style: none;
}
.trust-strip .trust-item {
  display: flex;
  flex-direction: row !important;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 0 20px;
}
.trust-strip .trust-item + .trust-item { border-left: 1px solid var(--line); }
/*
 * Trust badges use a real Elementor Icon widget instead of raw <svg> (see build script) so the
 * icon survives someone editing the widget in Elementor. Icon widgets wrap their glyph as
 * .elementor-element(our .trust-icon class) > .elementor-widget-container > .elementor-icon-wrapper
 * > .elementor-icon > svg — the badge box styling that used to live on <strong> now targets the
 * inner .elementor-icon (descendant selector, so the extra wrapper levels don't matter).
 */
.trust-item .trust-icon .elementor-icon {
  display: grid;
  min-width: 46px;
  height: 46px;
  place-items: center;
  border: 2px solid var(--navy);
  border-radius: 13px;
  background: var(--surface);
}
.trust-item .trust-icon svg {
  width: 24px;
  height: 24px;
}
.trust-strip .trust-item:nth-child(1) .trust-icon .elementor-icon { border-color: var(--red); color: var(--red); }
.trust-strip .trust-item:nth-child(2) .trust-icon .elementor-icon { border-color: var(--orange); color: var(--orange); }
.trust-strip .trust-item:nth-child(3) .trust-icon .elementor-icon { border-color: #d89a00; color: #b47f00; }
.trust-strip span { font-size: 0.9rem; font-weight: 800; }
.collections-section { padding: 100px 0 110px; background: white; }
.section-heading { margin-bottom: 45px; }
.section-heading.centered { max-width: 720px; margin-inline: auto; text-align: center; }
.section-heading p:not(.eyebrow) { color: var(--ink); }
.collections-heading {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  align-items: end;
  gap: 60px;
}
.collections-heading .collections-lead { max-width: 520px; margin-bottom: 9px; color: var(--ink); }
.conference-stack { display: grid; gap: 30px; }
.conference-panel {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 10px 28px rgba(6, 30, 74, 0.06);
}
.conference-title {
  display: grid;
  grid-template-columns: 78px 1fr auto;
  align-items: center;
  gap: 20px;
  padding: 25px 30px;
  background: var(--navy);
  color: white;
}
.conference-title .conf-badge {
  display: grid;
  width: 68px;
  height: 68px;
  place-items: center;
  border: 3px solid white;
  border-radius: 14px;
  background: var(--red);
  box-shadow: 5px 5px 0 var(--orange);
  font-family: "Barlow Condensed", "Arial Narrow", sans-serif;
  font-size: 2rem;
  font-style: italic;
  font-weight: 800;
}
.conference-panel:nth-child(2) .conference-title .conf-badge { background: var(--orange); box-shadow: 5px 5px 0 var(--yellow); }
.conference-title p { margin-bottom: 2px; color: #b9c5df; font-size: 0.69rem; font-weight: 800; letter-spacing: 0.1em; }
.conference-title h3 { margin-bottom: 0; font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important; font-size: 2.15rem; font-style: italic !important; font-weight: 700 !important; }
.conference-title a { display: flex; flex-direction: row !important; align-items: center; gap: 9px; color: var(--yellow); font-size: 0.8rem; font-weight: 800; }
.division-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.division { padding: 25px 22px 27px; }
.division + .division { border-left: 1px solid var(--line); }
.division-heading { display: flex; flex-direction: row !important; align-items: center; gap: 9px; margin-bottom: 14px; }
.division-heading span { padding: 4px 7px; border-radius: 5px; background: var(--red); color: white; font-size: 0.62rem; font-weight: 800; }
.conference-panel:nth-child(2) .division-heading span { background: var(--orange); }
.division-heading h4 { margin: 0; font-size: 1rem; text-transform: uppercase; font-weight: 700 !important; }
.division .team-list { display: grid; gap: 8px; padding: 0; margin: 0; list-style: none; }
.team-list .team-link {
  display: grid;
  min-height: 51px;
  grid-template-columns: 39px 1fr 17px;
  align-items: center;
  gap: 8px;
  padding: 7px 9px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: white;
  color: var(--ink);
  font-size: 0.73rem;
  font-weight: 650;
  transition: border 180ms ease, transform 180ms ease;
}
.team-list .team-link:hover { border-color: var(--orange); transform: translateX(2px); }
.team-list .team-link .team-arrow svg { width: 16px; height: 16px; color: var(--red); }
.team-code {
  display: grid;
  width: 36px;
  height: 30px;
  place-items: center;
  border-radius: 6px;
  background: var(--brand-tint);
  color: var(--navy);
  font-size: 0.62rem;
  font-weight: 800;
}
.collection-note { margin: 18px 0 0; color: #6c7588; font-size: 0.7rem; text-align: center; }
.styles-section { padding: 105px 0; background: var(--surface); }
.style-grid { display: grid; gap: 28px; }
.style-card {
  display: grid;
  overflow: hidden;
  grid-template-columns: 1fr 1fr;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: white;
  box-shadow: 0 12px 32px rgba(6, 30, 74, 0.07);
}
.style-card.reverse .style-image { order: 2; }
.style-image { position: relative; min-height: 460px; overflow: hidden; }
.style-image.dark { background: var(--navy); }
.style-image.light { background: var(--brand-tint); }
.style-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 400ms ease; }
.style-card:hover .style-image img { transform: scale(1.025); }
.style-image span {
  position: absolute;
  right: 20px;
  bottom: -14px;
  color: rgba(255,255,255,.55);
  font-family: "Barlow Condensed", "Arial Narrow", sans-serif;
  font-size: 7rem;
  font-style: italic;
  font-weight: 800;
}
.style-image.light span { color: rgba(6,30,74,.16); }
.style-copy { display: flex; flex-direction: column; justify-content: center; padding: 48px 54px; }
.style-label { margin-bottom: 6px; color: var(--red); font-size: 0.72rem; font-weight: 800; letter-spacing: 0.12em; }
.style-copy h3 { margin-bottom: 12px; font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important; font-size: 2.7rem; font-style: italic !important; font-weight: 700 !important; }
.style-copy p:not(.style-label) { color: var(--ink); }
/*
 * Small trailing arrow icon reused by "View Conference" and the style-card text-links — also a
 * real Icon widget now (see build script) instead of an inline <svg> appended to the link text.
 */
.inline-arrow svg { width: 18px; height: 18px; }
/*
 * Feature checkmarks are real Icon widgets (see build script), each in its own .feature-item
 * Container, rather than raw <svg> inside one bundled <ul>/<li> blob — same reasoning as the
 * trust badges above.
 */
.style-copy .feature-list { display: grid; gap: 9px; margin: 18px 0 25px; }
.style-copy .feature-item { display: flex; flex-direction: row !important; align-items: center; gap: 9px; font-size: 0.88rem; font-weight: 650; }
.style-copy .feature-check .elementor-icon { display: grid; place-items: center; padding: 3px; border-radius: 50%; background: rgba(247,25,45,.1); color: var(--red); }
.style-copy .feature-check svg { width: 16px; height: 16px; }
.text-link { display: inline-flex; flex-direction: row !important; align-items: center; gap: 8px; width: fit-content; border-bottom: 2px solid var(--red); font-weight: 800; }
.customize-section {
  position: relative;
  overflow: hidden;
  padding: 95px 0;
  background: var(--navy);
  color: white;
}
.customize-section::before {
  position: absolute;
  top: -50px;
  right: -50px;
  width: 360px;
  height: 160px;
  background: linear-gradient(165deg, var(--red) 0 32%, transparent 32% 40%, var(--orange) 40% 69%, transparent 69% 77%, var(--yellow) 77%);
  content: "";
  transform: rotate(-8deg);
}
.customize-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr .9fr .55fr; align-items: center; gap: 54px; }
.customize-grid h2 { font-size: clamp(3.2rem, 4.3vw, 4.8rem) !important; }
.customize-grid .customize-desc { max-width: 520px; margin-bottom: 25px; color: #c4cde1; }
.steps { display: grid; gap: 11px; padding: 0; margin: 0; list-style: none; }
.steps li { display: grid; min-height: 74px; grid-template-columns: 58px 1fr; align-items: center; gap: 14px; padding: 10px 17px; border: 1px solid rgba(255,255,255,.15); border-radius: 11px; background: rgba(255,255,255,.06); }
.steps strong { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 8px; background: var(--yellow); color: var(--navy); font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important; font-size: 1.4rem; font-style: italic !important; font-weight: 700 !important; }
.steps span { font-size: 0.9rem; font-weight: 700; }
.number-card { display: flex; min-height: 295px; flex-direction: column; align-items: center; justify-content: center; border: 7px solid white; border-radius: 22px; background: var(--red); box-shadow: 10px 10px 0 var(--orange); transform: rotate(3deg); }
.number-card small, .number-card span { font-weight: 800; letter-spacing: .1em; }
.number-card strong { font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important; font-size: 7rem; font-style: italic !important; font-weight: 700 !important; line-height: .9; text-shadow: 4px 4px 0 var(--navy); }
.number-card span { margin-top: 12px; padding: 5px 9px; border-radius: 5px; background: white; color: var(--navy); font-size: .63rem; }
/* number-card's small/strong/span are bundled as one raw-HTML block inside a single Elementor
   widget (see build script) rather than three separate widgets, so they stay inline by default;
   force them block-level to reproduce the original flex-column stacked look. */
.number-card small, .number-card strong, .number-card span { display: block; }
.benefits-section { padding: 105px 0; background: white; }
.benefits-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.benefits-grid article { padding: 30px 25px; border: 1px solid var(--line); border-top: 4px solid var(--red); border-radius: 13px; background: var(--surface); }
.benefits-grid article:nth-child(2) { border-top-color: var(--orange); }
.benefits-grid article:nth-child(3) { border-top-color: var(--yellow); }
.benefits-grid article:nth-child(4) { border-top-color: var(--navy); }
.benefits-grid strong { font-family: "Barlow Condensed", "Arial Narrow", sans-serif !important; font-size: 2.6rem; font-style: italic !important; font-weight: 700 !important; }
.benefits-grid h3 { min-height: 48px; margin-bottom: 8px; font-size: 1rem; font-weight: 700 !important; }
.benefits-grid p { margin-bottom: 0; color: var(--ink); font-size: .83rem; }
.faq-section { padding: 105px 0; background: var(--brand-tint); }
.faq-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 70px; }
.faq-grid .faq-desc { color: var(--ink); }
.faq-list { border-top: 1px solid #cbd7ea; }
.faq-list details { border-bottom: 1px solid #cbd7ea; }
.faq-list summary { display: flex; min-height: 72px; align-items: center; justify-content: space-between; cursor: pointer; font-weight: 800; list-style: none; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary::after { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; background: white; content: "+"; font-size: 1.2rem; }
.faq-list details[open] summary::after { content: "−"; }
.faq-list details p { padding: 0 48px 24px 0; margin-bottom: 0; color: var(--ink); font-size: .9rem; }
.closing-section { overflow: hidden; padding: 95px 0; background: var(--red); color: white; text-align: center; }
.closing-inner { position: relative; }
.closing-inner::before, .closing-inner::after { position: absolute; top: 45%; width: 280px; height: 45px; background: var(--orange); content: ""; transform: rotate(-9deg); }
.closing-inner::before { left: -170px; }
.closing-inner::after { right: -170px; background: var(--yellow); }
.closing-inner h2 { max-width: 800px; margin-inline: auto; }
.closing-inner .closing-desc { max-width: 700px; margin: 0 auto 25px; color: rgba(255,255,255,.82); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
:focus-visible { outline: 3px solid rgba(247,25,45,.42); outline-offset: 3px; }
@media (max-width: 1120px) {
.hero-grid { grid-template-columns: 44% 56%; }
.product-card { width: 55%; }
.division-grid { grid-template-columns: repeat(2, 1fr); }
.division:nth-child(3) { border-left: 0; border-top: 1px solid var(--line); }
.division:nth-child(4) { border-top: 1px solid var(--line); }
.customize-grid { grid-template-columns: .9fr 1.1fr; }
.number-card { display: none; }
.benefits-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
.hero-grid { grid-template-columns: 1fr; }
.hero-copy { padding-bottom: 10px; }
.hero-products { min-height: 560px; }
.product-card { width: 47%; }
.satin-product { left: 8%; }
.cuffed-product { right: 8%; }
.trust-strip { grid-template-columns: repeat(2, 1fr); }
.trust-strip .trust-item { min-height: 76px; }
.trust-strip .trust-item:nth-child(3) { border-left: 0; }
.trust-strip .trust-item:nth-child(n+3) { border-top: 1px solid var(--line); }
.collections-heading, .faq-grid { grid-template-columns: 1fr; gap: 10px; }
.style-card { grid-template-columns: 1fr; }
.style-card.reverse .style-image { order: 0; }
.style-image { min-height: 520px; }
.customize-grid { grid-template-columns: 1fr; }
.steps { grid-template-columns: repeat(3, 1fr); }
.steps li { grid-template-columns: 1fr; align-items: start; }
}
@media (max-width: 640px) {
.container { width: min(calc(100% - 34px), var(--container)); }
html body h1 { font-size: clamp(3.45rem, 15vw, 4.3rem) !important; }
html body h2 { font-size: clamp(3rem, 13vw, 3.8rem) !important; }
.hero-copy { padding-top: 46px; }
.speed-line-long { width: 260px; }
.button-row, .elementor-widget-button.button { width: 100%; }
.elementor-widget-button.button a.elementor-button { width: 100%; }
.hero-products { min-height: 410px; }
.product-card { width: 59%; border-width: 5px; }
.satin-product { left: 0; }
.cuffed-product { right: 0; }
.speed-ribbons { opacity: .55; }
.trust-strip { padding: 0 12px; }
.trust-strip .trust-item { flex-direction: column !important; gap: 5px; padding: 10px 6px; text-align: center; }
.trust-item .trust-icon .elementor-icon { min-width: 40px; height: 40px; }
.trust-item .trust-icon svg { width: 20px; height: 20px; }
.trust-strip span { font-size: .68rem; }
.collections-section, .styles-section, .benefits-section, .faq-section { padding: 76px 0; }
.collections-heading { margin-bottom: 30px; }
.conference-title { grid-template-columns: 58px 1fr; padding: 21px 17px; }
.conference-title .conf-badge { width: 54px; height: 54px; font-size: 1.55rem; }
.conference-title h3 { font-size: 1.55rem; }
.conference-title a { grid-column: 1 / -1; padding-left: 2px; }
.division-grid { grid-template-columns: 1fr; }
.division + .division { border-top: 1px solid var(--line); border-left: 0; }
.division { padding: 21px 17px; }
.team-list .team-link { font-size: .78rem; }
.style-image { min-height: 340px; }
.style-copy { padding: 32px 23px 36px; }
.style-copy h3 { font-size: 2.25rem; }
.customize-section { padding: 78px 0; }
.steps { grid-template-columns: 1fr; }
.steps li { grid-template-columns: 58px 1fr; }
.benefits-grid { grid-template-columns: 1fr; }
.closing-section { padding: 78px 0; }
.closing-inner .elementor-widget-button.button { width: 100%; }
.closing-inner .elementor-widget-button.button a.elementor-button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}
/* ---------- Team logo trong the .team-link -------------------------------------------------
 * Cot dau cua .team-link (39px) truoc day chua badge chu .team-code (36x30). Nay chua logo doi
 * (anh PNG vuong 512x512), nen phai ep ve dung o do va dung `contain` de logo khong bi meo hay
 * tran ra lam vo luoi. Elementor boc anh trong .elementor-widget-container nen phai san phang
 * lop do bang `display: contents`, neu khong chieu cao cua no se day the cao len.
 */
.team-list .team-link .elementor-widget-image > .elementor-widget-container { display: contents; }
.team-list .team-link .elementor-widget-image {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 6px;
  background: var(--brand-tint);
  overflow: hidden;
}
.team-list .team-link .elementor-widget-image img,
.team-list .team-link .team-logo img {
  display: block;
  width: 100%;
  height: 100%;
  padding: 3px;
  object-fit: contain;
}
/* Ten doi. Truoc day o day ep 1 dong + cat bot (ellipsis); tu khi ten mang duoi
   "... Pajamas" thi CACH DO cat cut ca 32 ten, nen bo di, cho xuong dong binh thuong. */
.team-list .team-link .elementor-widget-heading .elementor-heading-title {
  display: block;
  overflow: hidden;
  font-size: inherit;
  font-weight: 650;
  line-height: 1.35;
  /* Two wrapped lines (~32px) still fit inside the 36px logo, so every card keeps the same
     52px height it had back when the names were short — no need to clamp or clip. */
  overflow-wrap: anywhere;
}

/* ---------- Trust badges rebuilt as Image widgets --------------------------------------------
 * The four badges are Elementor IMAGE widgets holding real illustrations now; they were Icon
 * widgets when this file was written, which is what `.trust-icon .elementor-icon` above sizes.
 * The replacements carry no CSS class at all and ship at 248px with nothing constraining them, so
 * each one stretched the 96px strip to 250px tall and squeezed its label to one word per line.
 * Size the image widget itself. No border or tint here on purpose — that framing is drawn into
 * the artwork, and adding the old badge box would double it up.
 */
.trust-strip .trust-item .elementor-widget-image {
  flex: 0 0 auto;
  width: 46px;
  line-height: 0;
}
.trust-strip .trust-item .elementor-widget-image img {
  display: block;
  width: 46px;
  height: 46px;
  object-fit: contain;
}
.trust-strip .trust-item .elementor-widget-text-editor { min-width: 0; }
