/* ============================================================
   MODERNIST — spec-sheet product template
   New design system from the Claude Design redesign. Namespaced
   under `spec-*` so it can coexist with the current site's
   `.product-detail__*` styles during the phased rollout — nothing
   here touches an existing class. Source of the visual language:
   the "modernist" design system built in Claude Design (Archivo,
   sharp corners, ink/red-orange, plain CSS/no build step).
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Archivo:ital,wght@0,400;0,600;0,700;0,800;0,900;1,400&display=swap');

html:has(.spec-page) { scroll-behavior: smooth; }

:root {
  --spec-hdr: 104px;
  --sm-bg: #f3f2f2;
  --sm-surface: #eae9e9;
  --sm-text: #201e1d;
  --sm-accent: #ec3013;
  --sm-accent-100: #fff2ef;
  --sm-accent-400: #ff9783;
  --sm-accent-600: #dd2b0f;
  --sm-accent-700: #ae1800;
  --sm-divider: rgba(32, 30, 29, 0.4);
  --sm-divider-soft: rgba(32, 30, 29, 0.14);
  --sm-neutral-300: #d7d3d3;
  --sm-neutral-400: #bab6b6;
  --sm-neutral-500: #9b9797;
  --sm-neutral-600: #7d7979;
  --sm-neutral-700: #605d5d;
  --sm-neutral-800: #444141;
  --sm-font: 'Archivo', system-ui, sans-serif;
}

.spec-page { background: var(--sm-bg); color: var(--sm-text); font-family: var(--sm-font); }
.spec-page h1, .spec-page h2, .spec-page h3, .spec-page h4 {
  font-family: var(--sm-font); font-weight: 900; letter-spacing: -0.035em;
  text-transform: uppercase; line-height: 0.98; margin: 0;
}
.spec-page p { margin: 0; }
.spec-page * { box-sizing: border-box; }

.spec-pad { padding-inline: 40px; }
@media (max-width: 780px) { .spec-pad { padding-inline: 20px; } }

.spec-eyebrow {
  display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--sm-accent);
}

/* ---- Breadcrumb ---- */
.spec-crumb {
  padding: 18px 40px; border-bottom: 2px solid var(--sm-divider-soft);
  font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  display: flex; gap: 10px; flex-wrap: wrap;
}
.spec-crumb a { color: var(--sm-neutral-700); text-decoration: none; }
.spec-crumb a:hover { color: var(--sm-text); }
.spec-crumb__sep { color: var(--sm-neutral-500); }
.spec-crumb__current { color: var(--sm-accent); }

/* ---- Hero ---- */
.spec-hero { display: grid; grid-template-columns: 1.1fr 0.9fr; border-bottom: 2px solid var(--sm-text); }
.spec-hero__media { border-right: 2px solid var(--sm-text); padding: 40px; }
.spec-hero__frame { border: 2px solid var(--sm-text); overflow: hidden; background: var(--sm-surface); aspect-ratio: 4/3; }
.spec-hero__frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spec-hero__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 12px; }
.spec-hero__thumbs button { border: 2px solid var(--sm-text); padding: 0; cursor: pointer; background: none; aspect-ratio: 1; overflow: hidden; }
.spec-hero__thumbs button.is-active { border-color: var(--sm-accent); }
.spec-hero__thumbs img { width: 100%; height: 100%; object-fit: cover; }

.spec-hero__info { padding: 40px; }
.spec-hero__title { margin-top: 16px; font-size: clamp(34px, 4vw, 62px); }
.spec-hero__excerpt { margin-top: 22px; font-size: 17px; line-height: 1.6; color: var(--sm-neutral-800); max-width: 48ch; }

.spec-price { display: flex; align-items: baseline; gap: 14px; margin-top: 32px; border-top: 2px solid var(--sm-text); border-bottom: 2px solid var(--sm-text); padding: 20px 0; }
.spec-price__label { font-size: 12px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-price__amount { font-size: 44px; font-weight: 900; letter-spacing: -0.04em; }
.spec-price__unit { font-size: 13px; font-weight: 600; color: var(--sm-neutral-700); }

.spec-dl { margin-top: 0; }
.spec-dl__row { display: grid; grid-template-columns: 1fr 1.4fr; padding: 14px 0; border-bottom: 2px solid var(--sm-divider-soft); }
.spec-dl__row dt { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sm-neutral-700); margin: 0; }
.spec-dl__row dd { font-size: 15px; font-weight: 600; margin: 0; }

.spec-actions { display: flex; gap: 14px; margin-top: 32px; flex-wrap: wrap; }
.spec-btn {
  border: 0; padding: 18px 24px; cursor: pointer; font-family: var(--sm-font);
  font-size: 13px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase;
  display: inline-flex; gap: 32px; justify-content: space-between; align-items: center;
  text-decoration: none; transition: background 0.2s, color 0.2s;
}
.spec-btn--primary { background: var(--sm-accent); color: #fff; min-width: 250px; }
.spec-btn--primary:hover { background: var(--sm-accent-600); }
.spec-btn--outline { background: none; border: 2px solid var(--sm-text); color: var(--sm-text); }
.spec-btn--outline:hover { background: var(--sm-text); color: var(--sm-bg); }

@media (max-width: 900px) {
  .spec-hero { grid-template-columns: 1fr; }
  .spec-hero__media { border-right: 0; border-bottom: 2px solid var(--sm-text); }
}

/* ---- Sticky tab rail (anchor-nav, not panel-swap) ---- */
.spec-tabs {
  position: sticky; top: var(--spec-hdr); z-index: 500;
  background: var(--sm-bg); border-bottom: 2px solid var(--sm-text);
  display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.spec-tabs::-webkit-scrollbar { height: 0; }
.spec-tabs__btn {
  flex: 1; white-space: nowrap; background: none; border: 0; border-right: 2px solid var(--sm-divider-soft);
  padding: 16px 20px; cursor: pointer; font-family: var(--sm-font);
  font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--sm-text);
}
.spec-tabs__btn:last-child { border-right: 0; }
.spec-tabs__btn.is-active { background: var(--sm-text); color: var(--sm-bg); }

/* ---- Section shell ---- */
.spec-section { padding: 88px 40px; border-bottom: 2px solid var(--sm-text); }
.spec-section--surface { background: var(--sm-surface); }
.spec-section--ink { background: var(--sm-text); color: var(--sm-bg); }
.spec-section--ink .spec-eyebrow { color: var(--sm-accent-400); }
.spec-section--ink h2, .spec-section--ink h3 { color: var(--sm-bg); }
@media (max-width: 780px) { .spec-section { padding: 56px 20px; } }

.spec-section__head { display: flex; justify-content: space-between; align-items: end; gap: 32px; flex-wrap: wrap; }
.spec-section__title { margin-top: 16px; font-size: clamp(28px, 3vw, 46px); }

.spec-col2 { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 64px; }
@media (max-width: 900px) { .spec-col2 { grid-template-columns: 1fr; gap: 32px; } }

/* ---- Overview checklist ---- */
.spec-body { display: grid; gap: 22px; font-size: 17px; line-height: 1.7; color: var(--sm-neutral-800); max-width: 66ch; }
.spec-check { display: grid; gap: 0; border-top: 2px solid var(--sm-text); margin-top: 8px; }
.spec-check li { padding: 16px 0; border-bottom: 2px solid var(--sm-divider-soft); display: flex; gap: 16px; font-size: 15px; font-weight: 600; list-style: none; }
.spec-check li::before { content: '✓'; color: var(--sm-accent); }

/* ---- Long-form product prose (rolled-out product pages) ---- */
.spec-prose { max-width: 68ch; display: grid; gap: 22px; font-size: 17px; line-height: 1.7; color: var(--sm-neutral-800); }
.spec-prose p { margin: 0; }
.spec-prose h2 { font-size: 26px; margin-top: 10px; }
.spec-prose h3 { font-size: 20px; margin-top: 8px; }
.spec-prose ul { margin: 0; padding-left: 1.3em; list-style: disc; display: grid; gap: 8px; }
.spec-prose li::marker { color: var(--sm-accent); }
.spec-prose a { color: var(--sm-accent-700); border-bottom: 2px solid var(--sm-accent); font-weight: 700; text-decoration: none; }

/* ---- Exploded anatomy diagram ---- */
.spec-explode { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; margin-top: 64px; align-items: center; }
@media (max-width: 900px) { .spec-explode { grid-template-columns: 1fr; } }
.spec-explode__stage { position: relative; height: 460px; perspective: 1200px; display: flex; align-items: center; justify-content: center; }
.spec-explode__group { position: relative; width: min(440px, 100%); height: 280px; transform-style: preserve-3d; transform: rotateX(58deg) rotateZ(-32deg); transition: transform 0.6s cubic-bezier(.16,1,.3,1); }
.spec-explode__group.is-exploded .spec-explode__layer { transform: translateZ(var(--z-open)) !important; }
.spec-explode__layer {
  position: absolute; inset: 0; cursor: pointer; border: 2px solid var(--sm-bg);
  transition: transform 0.8s cubic-bezier(.16,1,.3,1); display: flex; align-items: flex-end; padding: 14px;
}
.spec-explode__layer span { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-explode__hint { position: absolute; bottom: 0; left: 0; font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sm-neutral-500); }
.spec-explode__panel { display: none; }
.spec-explode__panel.is-active { display: block; }
.spec-explode__panel h3 { margin-top: 12px; font-size: 34px; }
.spec-explode__panel p { margin-top: 16px; font-size: 17px; line-height: 1.65; color: var(--sm-neutral-300); max-width: 52ch; }
.spec-explode__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.spec-explode__tags span { border: 2px solid var(--sm-neutral-600); padding: 7px 12px; font-size: 12px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.spec-explode__tags span.is-selected { border-color: var(--sm-accent); color: var(--sm-accent-400); }
.spec-explode__note { margin-top: 22px; padding-top: 18px; border-top: 2px solid var(--sm-neutral-800); font-size: 14px; line-height: 1.6; color: var(--sm-neutral-400); }
.spec-explode__note strong { color: var(--sm-bg); }
.spec-explode__btn { background: var(--sm-accent); color: #fff; border: 0; padding: 16px 22px; cursor: pointer; font-family: var(--sm-font); font-size: 13px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }

/* ---- 3-col spec grid ---- */
.spec-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; background: var(--sm-divider-soft); margin-top: 48px; border: 2px solid var(--sm-text); }
.spec-grid3 > div { background: var(--sm-bg); padding: 28px; }
.spec-grid3 ul { margin-top: 16px; display: grid; gap: 10px; font-size: 15px; line-height: 1.5; padding: 0; list-style: none; }
@media (max-width: 780px) { .spec-grid3 { grid-template-columns: 1fr; } }

/* ---- Materials / compare tables ---- */
.spec-table-wrap { border: 2px solid var(--sm-text); background: var(--sm-bg); overflow-x: auto; }
.spec-mtable { display: grid; grid-template-columns: 1.2fr 0.8fr 1fr 1.4fr; min-width: 640px; }
.spec-mtable__head { display: contents; }
.spec-mtable__head > span { background: var(--sm-text); color: var(--sm-bg); font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; padding: 12px 16px; }
.spec-mtable__row { display: contents; }
.spec-mtable__row > span { padding: 14px 16px; border-bottom: 2px solid var(--sm-divider-soft); font-size: 14px; }
.spec-mtable__row.is-highlight > span { background: var(--sm-accent-100); }
.spec-mtable__row > span:first-child { font-weight: 700; }

table.spec-compare { width: 100%; border-collapse: collapse; min-width: 760px; font-size: 14px; }
.spec-compare thead tr { background: var(--sm-text); color: var(--sm-bg); font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-compare th, .spec-compare td { padding: 14px 16px; text-align: left; }
.spec-compare th.is-highlight { background: var(--sm-accent); }
.spec-compare tbody tr { border-bottom: 2px solid var(--sm-divider-soft); }
.spec-compare td.is-highlight { background: var(--sm-accent-100); font-weight: 800; }
.spec-compare td:first-child { font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; font-size: 12px; }

/* ---- Finishing 4-col ---- */
.spec-finish4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; background: var(--sm-divider-soft); margin-top: 48px; border: 2px solid var(--sm-text); }
.spec-finish4 > div { background: var(--sm-bg); padding: 28px; min-height: 200px; display: flex; flex-direction: column; justify-content: space-between; }
.spec-finish4__num { font-size: 32px; font-weight: 900; letter-spacing: -0.04em; color: var(--sm-accent); }
.spec-finish4 h3 { font-size: 19px; font-weight: 800; letter-spacing: -0.01em; text-transform: none; }
.spec-finish4 p { margin-top: 10px; font-size: 14px; line-height: 1.55; color: var(--sm-neutral-700); }
@media (max-width: 900px) { .spec-finish4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .spec-finish4 { grid-template-columns: 1fr; } }

/* ---- Horizontal-scroll timeline ---- */
.spec-hscroll { position: relative; border-bottom: 2px solid var(--sm-text); background: var(--sm-text); color: var(--sm-bg); overflow: hidden; }
.spec-hscroll__viewport { height: 100vh; max-height: 720px; display: flex; align-items: center; overflow: hidden; }
.spec-hscroll__track { display: flex; align-items: stretch; will-change: transform; }
.spec-hscroll__intro { width: 42vw; min-width: 320px; padding: 0 56px; display: flex; flex-direction: column; justify-content: center; border-right: 2px solid var(--sm-neutral-800); }
.spec-hscroll__intro h2 { font-size: clamp(30px, 3.2vw, 52px); }
.spec-hscroll__intro p { margin-top: 20px; font-size: 16px; line-height: 1.65; color: var(--sm-neutral-400); max-width: 36ch; }
.spec-hscroll__stage { width: 26vw; min-width: 270px; padding: 56px; border-right: 2px solid var(--sm-neutral-800); display: flex; flex-direction: column; justify-content: space-between; }
.spec-hscroll__stage span.spec-eyebrow { color: var(--sm-accent-400); font-size: 12px; letter-spacing: 0.16em; }
.spec-hscroll__stage h3 { font-size: 26px; font-weight: 900; letter-spacing: -0.02em; }
.spec-hscroll__stage p { margin-top: 12px; font-size: 15px; line-height: 1.6; color: var(--sm-neutral-400); }
.spec-hscroll__cta { width: 30vw; min-width: 300px; background: var(--sm-accent); padding: 56px; display: flex; flex-direction: column; justify-content: space-between; }
.spec-hscroll__cta h3 { font-size: clamp(26px, 2.4vw, 40px); }
.spec-hscroll__cta .spec-btn { margin-top: 28px; background: #fff; color: var(--sm-accent); width: 100%; }
@media (max-width: 780px) {
  .spec-hscroll__viewport { height: auto; max-height: none; }
  .spec-hscroll__track { flex-direction: column; }
  .spec-hscroll__intro, .spec-hscroll__stage, .spec-hscroll__cta { width: 100%; min-width: 0; border-right: 0; border-bottom: 2px solid var(--sm-neutral-800); padding: 40px 20px; }
}

/* ---- FAQ (native details/summary — zero JS required) ---- */
.spec-faq { border-top: 2px solid var(--sm-text); }
.spec-faq details { border-bottom: 2px solid var(--sm-divider-soft); }
.spec-faq summary { padding: 22px 0; display: flex; justify-content: space-between; gap: 24px; font-size: 19px; font-weight: 700; letter-spacing: -0.01em; cursor: pointer; list-style: none; }
.spec-faq summary::-webkit-details-marker { display: none; }
.spec-faq summary::after { content: '+'; color: var(--sm-accent); font-weight: 900; flex-shrink: 0; }
.spec-faq details[open] summary::after { content: '\2212'; }
.spec-faq p { padding: 0 0 22px; font-size: 16px; line-height: 1.65; color: var(--sm-neutral-800); max-width: 62ch; }

/* ---- Related products ---- */
.spec-related__head { display: flex; justify-content: space-between; align-items: end; gap: 32px; border-bottom: 2px solid var(--sm-text); padding-bottom: 24px; }
.spec-related__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-top: 32px; }
@media (max-width: 900px) { .spec-related__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .spec-related__grid { grid-template-columns: 1fr; } }
.spec-related__card { background: var(--sm-bg); border: 2px solid var(--sm-text); padding: 0; cursor: pointer; text-align: left; text-decoration: none; color: inherit; display: block; }
.spec-related__card-media { aspect-ratio: 4/3; overflow: hidden; border-bottom: 2px solid var(--sm-text); }
.spec-related__card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s cubic-bezier(.16,1,.3,1); }
.spec-related__card:hover .spec-related__card-media img { transform: scale(1.05); }
.spec-related__card-body { padding: 18px; }
.spec-related__card-body h3 { font-size: 17px; font-weight: 800; letter-spacing: -0.01em; text-transform: none; }
.spec-related__card-price { display: block; margin-top: 8px; font-size: 13px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sm-accent); }

/* ---- Header / footer responsiveness ---- */
@media (max-width: 900px) {
  .spec-hide-sm { display: none !important; }
  .spec-page header nav[aria-label="Primary"] { flex-wrap: wrap; row-gap: 4px; }
  .spec-page [data-mega] { left: 0 !important; right: 0 !important; width: auto !important; max-width: none !important; grid-template-columns: 1fr !important; max-height: 70vh; overflow-y: auto; }
  .spec-footer-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 560px) {
  .spec-page header > div:last-child { flex-wrap: wrap; height: auto !important; padding-block: 12px !important; gap: 10px; }
  .spec-footer-grid { grid-template-columns: 1fr !important; }
}

/* ============================================================
   Category listing template
   ============================================================ */
.spec-cat-hero { display: grid; grid-template-columns: 1.15fr 0.85fr; border-bottom: 2px solid var(--sm-text); }
.spec-cat-hero__text { padding: 72px 56px 64px 40px; border-right: 2px solid var(--sm-text); }
.spec-cat-hero__text p { margin-top: 24px; font-size: 18px; line-height: 1.6; color: var(--sm-neutral-800); max-width: 52ch; }
.spec-cat-hero__media { position: relative; overflow: hidden; min-height: 260px; }
.spec-cat-hero__media img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
@media (max-width: 900px) { .spec-cat-hero { grid-template-columns: 1fr; } .spec-cat-hero__text { border-right: 0; border-bottom: 2px solid var(--sm-text); } }

.spec-filterbar {
  position: sticky; top: var(--spec-hdr); z-index: 400; background: var(--sm-bg); border-bottom: 2px solid var(--sm-text);
  display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap;
}
.spec-filterbar__filters { display: flex; overflow-x: auto; }
.spec-filterbar__filters::-webkit-scrollbar { height: 0; }
.spec-filter-btn {
  background: none; border: 0; border-left: 2px solid var(--sm-divider-soft); padding: 16px 20px; cursor: pointer;
  font-family: var(--sm-font); font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase;
  white-space: nowrap; color: var(--sm-text);
}
.spec-filter-btn:first-child { border-left: 0; }
.spec-filter-btn.is-active { background: var(--sm-text); color: var(--sm-bg); }
.spec-filterbar__count { font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-700); padding-right: 40px; }

.spec-toolbar { padding: 28px 40px; display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; border-bottom: 2px solid var(--sm-divider-soft); }
.spec-toolbar__group { display: flex; align-items: center; }
.spec-toolbar__label { font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-700); padding-right: 14px; }
.spec-toolbar__btn { background: transparent; border: 0; border-left: 2px solid var(--sm-divider-soft); padding: 12px 16px; cursor: pointer; font-family: var(--sm-font); font-size: 12px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-text); }
.spec-toolbar__btn:first-of-type { border-left: 0; }
.spec-toolbar__btn.is-active { background: var(--sm-text); color: var(--sm-bg); }

.spec-cat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; padding: 48px 40px 88px; }
@media (max-width: 980px) { .spec-cat-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) { .spec-cat-grid { grid-template-columns: 1fr; } }

.spec-cat-card { background: var(--sm-bg); border: 2px solid var(--sm-text); text-decoration: none; color: inherit; display: flex; flex-direction: column; }
.spec-cat-card__media { position: relative; aspect-ratio: 4/3; overflow: hidden; border-bottom: 2px solid var(--sm-text); }
.spec-cat-card__media img { width: 100%; height: 100%; object-fit: cover; }
.spec-cat-card__tag { position: absolute; top: 0; left: 0; background: var(--sm-accent); color: #fff; padding: 6px 10px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-cat-card__body { padding: 22px 24px; display: grid; gap: 12px; flex: 1; align-content: start; }
.spec-cat-card__body h3 { font-size: 21px; letter-spacing: -0.025em; }
.spec-cat-card__body p { font-size: 14px; line-height: 1.55; color: var(--sm-neutral-800); }
.spec-cat-card__foot { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 2px; }
.spec-cat-card__price { font-size: 13px; font-weight: 900; letter-spacing: 0.06em; text-transform: uppercase; color: var(--sm-accent-700); }
.spec-cat-card__cta { font-size: 12px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.spec-cat-card--cta { background: var(--sm-accent); color: #fff; padding: 32px; justify-content: space-between; gap: 32px; min-height: 260px; }
.spec-cat-card--cta h3 { color: #fff; font-size: clamp(22px, 2vw, 32px); }

table.spec-cat-table { width: 100%; border-collapse: collapse; min-width: 720px; }
.spec-cat-table caption { text-align: left; padding: 20px 24px; border-bottom: 2px solid var(--sm-text); font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-cat-table th, .spec-cat-table td { text-align: left; padding: 14px 16px; font-size: 13px; }
.spec-cat-table thead tr { border-bottom: 2px solid var(--sm-text); }
.spec-cat-table thead th { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-cat-table tbody tr { border-bottom: 2px solid var(--sm-divider-soft); }
.spec-cat-table tbody th { font-size: 15px; font-weight: 900; letter-spacing: -0.01em; }
.spec-cat-table td.spec-cat-table__price { font-weight: 900; color: var(--sm-accent-700); white-space: nowrap; }

.spec-guide { margin-top: 72px; display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 56px; border-top: 2px solid var(--sm-text); padding: 48px 40px 88px; }
.spec-guide h2 { font-size: clamp(24px, 2.4vw, 38px); }
.spec-guide__body { display: grid; gap: 18px; font-size: 16px; line-height: 1.7; color: var(--sm-neutral-800); max-width: 64ch; }
@media (max-width: 900px) { .spec-guide { grid-template-columns: 1fr; padding-inline: 20px; } }

/* ============================================================
   Blog article template
   ============================================================ */
.spec-article__head { padding: 80px 40px 56px; border-bottom: 2px solid var(--sm-text); max-width: 1100px; }
.spec-article__head h1 { margin-top: 20px; font-size: clamp(36px, 4.6vw, 76px); }
.spec-article__dek { margin-top: 28px; font-size: 21px; line-height: 1.5; color: var(--sm-neutral-800); max-width: 60ch; font-weight: 500; }
.spec-article__hero { margin: 0; border-bottom: 2px solid var(--sm-text); aspect-ratio: 21/9; overflow: hidden; background: var(--sm-surface); }
.spec-article__hero img { width: 100%; height: 100%; object-fit: cover; display: block; }

.spec-article__layout { display: grid; grid-template-columns: 0.32fr 0.68fr; border-bottom: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-article__layout { grid-template-columns: 1fr; } }

.spec-article__toc-col { border-right: 2px solid var(--sm-text); padding: 48px 40px; }
@media (max-width: 900px) { .spec-article__toc-col { border-right: 0; border-bottom: 2px solid var(--sm-text); } }
.spec-article__toc-sticky { position: sticky; top: 20px; }
.spec-article__toc-label { font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-article__toc { margin-top: 18px; display: grid; gap: 0; border-top: 2px solid var(--sm-divider-soft); list-style: none; padding: 0; }
.spec-article__toc li { border-bottom: 2px solid var(--sm-divider-soft); }
.spec-article__toc a { display: block; padding: 12px 0; font-size: 14px; font-weight: 700; color: var(--sm-text); text-decoration: none; }
.spec-article__toc a:hover { color: var(--sm-accent); }
.spec-article__toc-cta { margin-top: 32px; border: 2px solid var(--sm-text); padding: 20px; }
.spec-article__toc-cta p { margin-top: 10px; font-size: 14px; line-height: 1.55; color: var(--sm-neutral-800); }
.spec-article__toc-cta a { margin-top: 16px; display: block; background: var(--sm-text); color: var(--sm-bg); border: 0; padding: 12px 16px; text-decoration: none; font-size: 12px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; text-align: left; }

.spec-article__body-col { padding: 56px 40px 80px; }
.spec-article__prose { max-width: 68ch; display: grid; gap: 26px; font-size: 18px; line-height: 1.75; color: var(--sm-neutral-900); }
.spec-article__prose p { margin: 0; }
.spec-article__dropcap::first-letter { float: left; font-size: 76px; line-height: 0.78; font-weight: 900; padding: 6px 14px 0 0; color: var(--sm-accent); }
.spec-article__prose h2 { margin-top: 24px; font-size: 30px; font-weight: 900; letter-spacing: -0.03em; text-transform: uppercase; line-height: 1.05; scroll-margin-top: 20px; }
.spec-article__prose a { color: var(--sm-accent-700); border-bottom: 2px solid var(--sm-accent); font-weight: 700; text-decoration: none; }
.spec-article__figure { margin: 12px 0; border: 2px solid var(--sm-text); }
.spec-article__figure img { width: 100%; display: block; }
.spec-article__figure figcaption { border-top: 2px solid var(--sm-text); padding: 12px 16px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; background: var(--sm-surface); }
.spec-article__quote { margin: 16px 0; border-top: 2px solid var(--sm-accent); border-bottom: 2px solid var(--sm-accent); padding: 28px 0; font-size: 26px; line-height: 1.3; font-weight: 800; letter-spacing: -0.02em; }
.spec-article__sizelist { display: grid; gap: 14px; margin: 8px 0; }
.spec-article__sizelist div { font-size: 16px; line-height: 1.6; }
.spec-article__sizelist strong { color: var(--sm-text); }

.spec-article__cta { margin-top: 56px; border: 2px solid var(--sm-text); padding: 32px; display: flex; justify-content: space-between; align-items: center; gap: 32px; flex-wrap: wrap; background: var(--sm-surface); }
.spec-article__cta h3 { font-size: 24px; }
.spec-article__cta p { margin-top: 8px; font-size: 15px; color: var(--sm-neutral-800); max-width: 44ch; }

.spec-related-posts { padding: 72px 40px; border-bottom: 2px solid var(--sm-text); }
.spec-related-posts h2 { font-size: clamp(24px, 2.4vw, 38px); border-bottom: 2px solid var(--sm-text); padding-bottom: 20px; }
.spec-related-posts__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 24px; }
@media (max-width: 900px) { .spec-related-posts__grid { grid-template-columns: 1fr; } }
.spec-related-posts__card { text-decoration: none; color: inherit; display: grid; gap: 0; align-content: start; }
.spec-related-posts__card figure { margin: 0; aspect-ratio: 16/10; overflow: hidden; border-bottom: 2px solid var(--sm-text); }
.spec-related-posts__card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spec-related-posts__card-body { padding: 20px 4px 0; display: grid; gap: 12px; }
.spec-related-posts__card h3 { font-size: 21px; line-height: 1.15; letter-spacing: -0.02em; text-transform: none; font-weight: 800; }

/* ============================================================
   Homepage template
   ============================================================ */
.spec-home-hero { position: relative; border-bottom: 2px solid var(--sm-text); overflow: hidden; }
.spec-home-hero__grid { position: relative; display: grid; grid-template-columns: 1.05fr 0.95fr; padding-inline: 40px; min-height: 82vh; }
@media (max-width: 900px) { .spec-home-hero__grid { grid-template-columns: 1fr; min-height: 0; padding-inline: 20px; } }
.spec-home-hero__text { padding: 72px 56px 56px 0; display: flex; flex-direction: column; justify-content: center; border-right: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-home-hero__text { padding: 56px 0; border-right: 0; border-bottom: 2px solid var(--sm-text); } }
.spec-home-hero__badge { display: flex; align-items: center; gap: 10px; margin-bottom: 28px; }
.spec-home-hero__dot { width: 8px; height: 8px; background: var(--sm-accent); border-radius: 50%; animation: spec-blink 1.8s infinite; }
@keyframes spec-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.25; } }
.spec-home-hero__text h1 { font-size: clamp(48px, 6.4vw, 108px); line-height: 0.88; text-wrap: balance; }
.spec-home-hero__text h1 em { font-style: normal; color: var(--sm-accent); }
.spec-home-hero__lede { margin-top: 32px; max-width: 46ch; font-size: 19px; line-height: 1.55; color: var(--sm-neutral-800); }
.spec-home-hero__ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 40px; }
.spec-home-hero__ctas .spec-btn { min-width: 230px; }

.spec-home-hero__visual { position: relative; display: flex; align-items: stretch; padding: 48px 0 40px 56px; }
@media (max-width: 900px) { .spec-home-hero__visual { padding: 32px 0; } }
.spec-carton-stage { position: relative; width: 100%; min-height: 420px; display: flex; align-items: center; justify-content: center; perspective: 1400px; }

/* A real die-cut net that folds up and back down on a loop — the label
   says "live", so it has to actually move rather than settle into one
   end state. Base panel lies in a tilted plane; each of the four walls
   is hinged on the base edge it shares (transform-origin on that edge)
   and swings up out of the plane. Dashed edges read as score lines,
   solid as cut lines — the same die-line language as the product pages. */
.spec-carton {
  position: relative;
  width: 150px; height: 120px;
  transform-style: preserve-3d;
  transform: rotateX(58deg) rotateZ(-32deg);
}
.spec-carton__panel {
  position: absolute;
  background: var(--sm-neutral-200);
  border: 2px solid var(--sm-text);
  animation-duration: 7s;
  animation-iteration-count: infinite;
  animation-timing-function: cubic-bezier(.65, 0, .35, 1);
}
.spec-carton__base {
  inset: 0;
  background: var(--sm-neutral-100);
  border-style: dashed;
  border-color: var(--sm-accent);
  animation: none;
}
.spec-carton__wall--back {
  width: 150px; height: 85px; left: 0; top: -85px;
  transform-origin: bottom center;
  animation-name: spec-fold-back;
}
.spec-carton__wall--front {
  width: 150px; height: 85px; left: 0; top: 120px;
  transform-origin: top center;
  animation-name: spec-fold-front;
}
.spec-carton__wall--left {
  width: 85px; height: 120px; left: -85px; top: 0;
  background: var(--sm-neutral-300);
  transform-origin: right center;
  animation-name: spec-fold-left;
}
.spec-carton__wall--right {
  width: 85px; height: 120px; left: 150px; top: 0;
  background: var(--sm-neutral-300);
  transform-origin: left center;
  animation-name: spec-fold-right;
}
@keyframes spec-fold-back {
  0%, 12% { transform: rotateX(0deg); }
  38%, 72% { transform: rotateX(-90deg); }
  94%, 100% { transform: rotateX(0deg); }
}
@keyframes spec-fold-front {
  0%, 12% { transform: rotateX(0deg); }
  38%, 72% { transform: rotateX(90deg); }
  94%, 100% { transform: rotateX(0deg); }
}
@keyframes spec-fold-left {
  0%, 12% { transform: rotateY(0deg); }
  38%, 72% { transform: rotateY(90deg); }
  94%, 100% { transform: rotateY(0deg); }
}
@keyframes spec-fold-right {
  0%, 12% { transform: rotateY(0deg); }
  38%, 72% { transform: rotateY(-90deg); }
  94%, 100% { transform: rotateY(0deg); }
}
/* An infinite loop is exactly what reduced-motion asks us not to run:
   hold the assembled state instead of animating. */
@media (prefers-reduced-motion: reduce) {
  .spec-carton__wall--back { animation: none; transform: rotateX(-90deg); }
  .spec-carton__wall--front { animation: none; transform: rotateX(90deg); }
  .spec-carton__wall--left { animation: none; transform: rotateY(90deg); }
  .spec-carton__wall--right { animation: none; transform: rotateY(-90deg); }
}
.spec-carton__label { position: absolute; left: 56px; top: 48px; display: flex; align-items: center; gap: 10px; pointer-events: none; }
.spec-carton__label span:last-child { font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-carton__caption { position: absolute; left: 56px; bottom: 40px; right: 0; pointer-events: none; }
.spec-carton__stage-tag { display: inline-block; background: var(--sm-text); color: var(--sm-bg); padding: 10px 14px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-carton__caption p { margin-top: 12px; font-size: 13px; line-height: 1.5; color: var(--sm-neutral-700); max-width: 34ch; }
@media (max-width: 900px) { .spec-carton__label, .spec-carton__caption { position: static; margin-top: 16px; } }

.spec-stat-strip { border-top: 2px solid var(--sm-text); display: grid; grid-template-columns: repeat(4, 1fr); padding-inline: 40px; }
@media (max-width: 700px) { .spec-stat-strip { grid-template-columns: 1fr 1fr; } }
@media (max-width: 900px) { .spec-stat-strip { padding-inline: 20px; } }
.spec-stat-strip > div { padding: 22px 24px; border-right: 2px solid var(--sm-divider-soft); }
.spec-stat-strip > div:last-child { border-right: 0; }
.spec-stat-strip__num { font-size: 34px; font-weight: 900; letter-spacing: -0.03em; }
.spec-stat-strip__num--accent { color: var(--sm-accent); }
.spec-stat-strip__label { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 700; color: var(--sm-neutral-700); margin-top: 4px; }

.spec-marquee { background: var(--sm-text); color: var(--sm-bg); overflow: hidden; border-bottom: 2px solid var(--sm-text); }
.spec-marquee__track { display: flex; width: max-content; animation: spec-marquee 32s linear infinite; padding: 14px 0; }
.spec-marquee__set { display: flex; gap: 56px; padding-right: 56px; font-size: 13px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; white-space: nowrap; }
.spec-marquee__set span:nth-child(even) { color: var(--sm-accent-400); }
@keyframes spec-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .spec-marquee__track { animation: none; } }

.spec-diff { padding: 96px 40px; border-bottom: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-diff { padding: 56px 20px; } }
.spec-diff__head { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: end; margin-bottom: 56px; }
@media (max-width: 900px) { .spec-diff__head { grid-template-columns: 1fr; gap: 20px; } }
.spec-diff__head h2 { margin-top: 18px; font-size: clamp(34px, 4.4vw, 68px); }
.spec-diff__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; background: var(--sm-text); border: 2px solid var(--sm-text); }
@media (max-width: 700px) { .spec-diff__grid { grid-template-columns: 1fr; } }
.spec-diff__col { background: var(--sm-bg); display: grid; gap: 2px; align-content: start; }
.spec-diff__col figure { position: relative; aspect-ratio: 4/3; overflow: hidden; margin: 0; }
.spec-diff__col img { width: 100%; height: 100%; object-fit: cover; }
.spec-diff__col figcaption { position: absolute; left: 0; bottom: 0; background: var(--sm-bg); padding: 6px 10px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }

.spec-feat { border-bottom: 2px solid var(--sm-text); }
.spec-feat__head { padding: 88px 40px 28px; display: flex; justify-content: space-between; align-items: end; gap: 40px; flex-wrap: wrap; }
@media (max-width: 900px) { .spec-feat__head { padding: 56px 20px 24px; } }
.spec-feat__head h2 { margin-top: 18px; font-size: clamp(32px, 3.8vw, 60px); }
.spec-feat__filters { display: flex; gap: 0; overflow-x: auto; border-top: 2px solid var(--sm-text); border-bottom: 2px solid var(--sm-text); }
.spec-feat__filters button { background: transparent; color: var(--sm-text); border: 0; border-left: 2px solid var(--sm-divider-soft); padding: 14px 18px; cursor: pointer; font-family: var(--sm-font); font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; }
.spec-feat__filters button:first-child { border-left: 0; }
.spec-feat__filters button.is-active { background: var(--sm-text); color: var(--sm-bg); }
.spec-feat__count { margin-left: auto; padding: 14px 40px 14px 18px; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-700); white-space: nowrap; align-self: center; }
.spec-feat__body { display: grid; grid-template-columns: 0.86fr 1.14fr; }
@media (max-width: 900px) { .spec-feat__body { grid-template-columns: 1fr; } }
.spec-feat__visual { border-right: 2px solid var(--sm-text); position: relative; }
@media (max-width: 900px) { .spec-feat__visual { display: none; } }
.spec-feat__visual-stage { position: sticky; top: var(--spec-hdr); height: 560px; overflow: hidden; background: var(--sm-text); }
.spec-feat__visual-stage img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 0.4s ease; }
.spec-feat__visual-stage img.is-active { opacity: 1; }
.spec-feat__visual-caption { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; background: var(--sm-text); color: var(--sm-bg); border-top: 2px solid var(--sm-accent); padding: 20px 24px; display: grid; gap: 8px; }
.spec-feat__visual-caption span:first-child { font-size: 12px; font-weight: 800; letter-spacing: 0.18em; text-transform: uppercase; color: var(--sm-accent-400); }
.spec-feat__visual-caption strong { font-size: 22px; font-weight: 900; letter-spacing: -0.02em; text-transform: uppercase; line-height: 1.05; }
.spec-feat__visual-caption em { font-style: normal; font-size: 13px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--sm-neutral-400); }
.spec-feat__row { border-bottom: 2px solid var(--sm-divider-soft); }
.spec-feat__row-btn { width: 100%; background: none; border: 0; padding: 26px 40px; cursor: pointer; text-align: left; display: grid; grid-template-columns: 34px 1fr auto; gap: 24px; align-items: baseline; font: inherit; color: inherit; text-decoration: none; }
@media (max-width: 900px) { .spec-feat__row-btn { padding: 20px; grid-template-columns: 24px 1fr; } }
.spec-feat__row-btn:hover { background: var(--sm-surface); }
.spec-feat__row-num { font-size: 12px; font-weight: 900; letter-spacing: 0.1em; color: var(--sm-accent); }
.spec-feat__row-main { display: grid; gap: 8px; }
.spec-feat__row-main h3 { font-size: clamp(20px, 1.9vw, 28px); letter-spacing: -0.025em; line-height: 1.02; }
.spec-feat__row-main p { font-size: 14px; line-height: 1.55; color: var(--sm-neutral-800); max-width: 62ch; }
.spec-feat__row-specs { display: flex; flex-wrap: wrap; gap: 0 28px; margin: 4px 0 0; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-feat__row-specs b { color: var(--sm-text); font-weight: 700; }
.spec-feat__row-price { display: grid; gap: 6px; justify-items: end; text-align: right; }
@media (max-width: 900px) { .spec-feat__row-price { grid-column: 2; } }
.spec-feat__row-price .amt { font-size: 15px; font-weight: 900; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sm-accent-700); }
.spec-feat__row-price .cat { font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-feat__row-price .cta { font-size: 12px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.spec-feat__banner { background: var(--sm-accent); color: #fff; padding: 44px 40px; display: flex; justify-content: space-between; align-items: end; gap: 32px; flex-wrap: wrap; }
.spec-feat__banner h3 { margin-top: 12px; font-size: clamp(24px, 2.4vw, 38px); line-height: 0.98; color: #fff; }
.spec-feat__banner-actions { display: flex; gap: 2px; flex-wrap: wrap; }
.spec-feat__banner-actions a { padding: 14px 20px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; text-decoration: none; }
.spec-feat__banner-actions a:first-child { background: transparent; color: #fff; border: 2px solid #fff; }
.spec-feat__banner-actions a:last-child { background: #fff; color: var(--sm-accent); border: 2px solid #fff; display: flex; gap: 16px; align-items: center; }

.spec-quote60 { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-quote60 { grid-template-columns: 1fr; } }
.spec-quote60__intro { padding: 88px 56px 88px 40px; border-right: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-quote60__intro { padding: 56px 20px; border-right: 0; border-bottom: 2px solid var(--sm-text); } }
.spec-quote60__intro h2 { margin-top: 18px; font-size: clamp(32px, 3.8vw, 60px); }
.spec-quote60__intro p { margin-top: 22px; font-size: 17px; line-height: 1.6; color: var(--sm-neutral-800); max-width: 44ch; }
.spec-quote60__steps { margin-top: 36px; display: grid; gap: 0; border-top: 2px solid var(--sm-divider-soft); list-style: none; padding: 0; }
.spec-quote60__steps li { padding: 16px 0; border-bottom: 2px solid var(--sm-divider-soft); display: flex; gap: 16px; font-size: 15px; }
.spec-quote60__steps b { color: var(--sm-accent); font-weight: 900; flex-shrink: 0; }
.spec-quote60__form-col { padding: 88px 40px 88px 56px; background: var(--sm-surface); }
@media (max-width: 900px) { .spec-quote60__form-col { padding: 56px 20px; } }
.spec-quote60 form { max-width: 520px; }
.spec-quote60__form-head { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 2px solid var(--sm-text); padding-bottom: 12px; }
.spec-quote60__form-head span:first-child { font-size: 13px; font-weight: 900; letter-spacing: 0.16em; text-transform: uppercase; }
.spec-quote60__form-head span:last-child { font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-quote60__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 28px; }
@media (max-width: 560px) { .spec-quote60__fields { grid-template-columns: 1fr; } }
.spec-quote60__fields label { display: grid; gap: 8px; }
.spec-quote60__fields label.full { grid-column: 1 / -1; }
.spec-quote60__fields span { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-quote60__fields input, .spec-quote60__fields select { border: 0; border-bottom: 2px solid var(--sm-text); background: transparent; padding: 10px 0; font-family: var(--sm-font); font-size: 15px; font-weight: 600; color: var(--sm-text); }
.spec-quote60__actions { display: flex; gap: 16px; align-items: center; margin-top: 32px; flex-wrap: wrap; }
.spec-quote60__note { margin-top: 18px; font-size: 13px; line-height: 1.5; color: var(--sm-neutral-700); max-width: 44ch; }
.spec-quote60 .form-error { color: var(--sm-accent-700); font-size: 14px; margin-top: 14px; }

.spec-story { border-bottom: 2px solid var(--sm-text); }
.spec-story__grid { display: grid; grid-template-columns: 1fr 1fr; }
@media (max-width: 900px) { .spec-story__grid { grid-template-columns: 1fr; } }
.spec-story__visual { border-right: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-story__visual { border-right: 0; } }
.spec-story__visual-inner { position: sticky; top: var(--spec-hdr); height: 70vh; overflow: hidden; background: var(--sm-text); }
@media (max-width: 900px) { .spec-story__visual-inner { position: static; height: 260px; border-bottom: 2px solid var(--sm-text); } }
.spec-story__visual-inner img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 0.5s ease; }
.spec-story__visual-inner img.is-active { opacity: 1; }
.spec-story__visual-tag { position: absolute; left: 0; bottom: 0; background: var(--sm-accent); color: #fff; padding: 12px 18px; font-size: 12px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; }
.spec-story__step { min-height: 60vh; padding: 96px 40px; display: flex; flex-direction: column; justify-content: center; border-bottom: 2px solid var(--sm-divider-soft); }
@media (max-width: 900px) { .spec-story__step { min-height: 0; padding: 48px 20px; } }
.spec-story__step-num { font-size: 64px; font-weight: 900; letter-spacing: -0.04em; color: var(--sm-accent); line-height: 1; }
.spec-story__step h3 { margin-top: 12px; font-size: clamp(28px, 3vw, 44px); line-height: 1; }
.spec-story__step p { margin-top: 20px; font-size: 17px; line-height: 1.65; color: var(--sm-neutral-800); max-width: 46ch; }

.spec-ind { border-bottom: 2px solid var(--sm-text); }
.spec-ind__head { padding: 88px 40px 32px; display: flex; justify-content: space-between; align-items: end; gap: 40px; flex-wrap: wrap; }
@media (max-width: 900px) { .spec-ind__head { padding: 56px 20px 24px; } }
.spec-ind__head h2 { margin-top: 18px; font-size: clamp(32px, 3.8vw, 60px); }
.spec-ind__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; background: var(--sm-divider-soft); border-top: 2px solid var(--sm-text); }
@media (max-width: 900px) { .spec-ind__grid { grid-template-columns: repeat(2, 1fr); } }
.spec-ind__grid > article { background: var(--sm-bg); padding: 32px 28px; display: grid; gap: 12px; align-content: start; }
.spec-ind__grid > article:hover { background: var(--sm-surface); }
.spec-ind__grid .row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.spec-ind__grid .row span:first-child { font-size: 12px; font-weight: 900; letter-spacing: 0.1em; color: var(--sm-accent); }
.spec-ind__grid .row span:last-child { font-size: 12px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-ind__grid h3 { font-size: 21px; letter-spacing: -0.025em; }
.spec-ind__grid p { font-size: 14px; line-height: 1.55; color: var(--sm-neutral-800); }
.spec-ind__grid .also { margin-top: 4px; padding-top: 12px; border-top: 2px solid var(--sm-divider-soft); font-size: 12px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-ind__foot { padding: 28px 40px; display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; border-top: 2px solid var(--sm-text); }
.spec-ind__foot span { font-size: 13px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sm-neutral-700); }

/* ============================================================
   Quote wizard (Contact page)
   ============================================================ */
.spec-quote-hero { padding: 56px 40px 40px; border-bottom: 2px solid var(--sm-text); max-width: 900px; }
.spec-quote-hero h1 { margin-top: 16px; font-size: clamp(32px, 4vw, 56px); }
.spec-quote-hero p { margin-top: 20px; font-size: 17px; line-height: 1.6; color: var(--sm-neutral-800); max-width: 60ch; }

.spec-quote-steps { display: flex; border-bottom: 2px solid var(--sm-text); overflow-x: auto; }
.spec-quote-steps > div { flex: 1; min-width: 110px; padding: 14px 16px; border-right: 2px solid var(--sm-divider-soft); font-size: 12px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sm-neutral-600); white-space: nowrap; }
.spec-quote-steps > div:last-child { border-right: 0; }
.spec-quote-steps > div.is-active { background: var(--sm-accent); color: #fff; }
.spec-quote-steps > div.is-done { color: var(--sm-text); }

.spec-quote-layout { display: grid; grid-template-columns: 1.25fr 0.75fr; }
@media (max-width: 900px) { .spec-quote-layout { grid-template-columns: 1fr; } }

.spec-quote-form { padding: 48px 56px 64px 40px; }
@media (max-width: 900px) { .spec-quote-form { padding: 32px 20px 48px; } }
.spec-quote-form h2 { font-size: 30px; }
.spec-quote-form > [data-spec-step] > p { margin-top: 10px; font-size: 15px; color: var(--sm-neutral-700); }

.spec-quote-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 28px; }
@media (max-width: 560px) { .spec-quote-field-row { grid-template-columns: 1fr; } }
.spec-quote-field-row label.full { grid-column: 1 / -1; }
.spec-quote-form label > span:first-child { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-quote-form input[type="text"], .spec-quote-form input[type="email"], .spec-quote-form input[type="tel"],
.spec-quote-form input[type="date"], .spec-quote-form input[type="url"], .spec-quote-form select {
  width: 100%; border: 0; border-bottom: 2px solid var(--sm-text); background: transparent; padding: 12px 0;
  font-family: var(--sm-font); font-size: 16px; font-weight: 600; color: var(--sm-text);
}
.spec-quote-form textarea {
  width: 100%; border: 2px solid var(--sm-text); background: transparent; padding: 14px;
  font-family: var(--sm-font); font-size: 16px; font-weight: 500; color: var(--sm-text); resize: vertical;
}

.spec-quote-choices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; background: var(--sm-divider-soft); border: 2px solid var(--sm-text); margin-top: 28px; }
@media (max-width: 700px) { .spec-quote-choices { grid-template-columns: 1fr 1fr; } }
.spec-quote-choice { background: var(--sm-bg); padding: 20px; cursor: pointer; display: grid; gap: 6px; }
.spec-quote-choice:has(input:checked) { background: var(--sm-accent-100); box-shadow: inset 0 0 0 2px var(--sm-accent); }
.spec-quote-choice span:first-of-type { font-size: 15px; font-weight: 800; letter-spacing: -0.01em; }
.spec-quote-choice span:last-child { font-size: 13px; color: var(--sm-neutral-700); }

.spec-quote-orientation { display: flex; border: 2px solid var(--sm-text); }
.spec-quote-orientation label { flex: 1; padding: 12px; cursor: pointer; font-size: 13px; font-weight: 700; display: flex; gap: 8px; align-items: center; border-right: 2px solid var(--sm-text); }
.spec-quote-orientation label:last-child { border-right: 0; }
.spec-quote-orientation label:has(input:checked) { background: var(--sm-accent-100); }

.spec-quote-chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.spec-quote-chip { border: 2px solid var(--sm-text); padding: 10px 14px; cursor: pointer; font-size: 13px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; display: flex; gap: 8px; align-items: center; }
.spec-quote-chip:has(input:checked) { background: var(--sm-text); color: var(--sm-bg); }

.spec-quote-upload { margin-top: 32px; border: 2px dashed var(--sm-text); padding: 32px; background: var(--sm-surface); }
.spec-quote-upload p { margin-top: 8px; font-size: 14px; color: var(--sm-neutral-700); max-width: 52ch; }
.spec-quote-upload input[type="file"] { margin-top: 16px; font-size: 14px; font-family: var(--sm-font); }

.spec-quote-form .cf-turnstile { margin-top: 28px; }
.spec-quote-form .form-note { margin-top: 18px; font-size: 13px; line-height: 1.55; color: var(--sm-neutral-700); max-width: 56ch; }
.spec-quote-form .form-error { color: var(--sm-accent-700); font-size: 14px; margin-top: 14px; }

.spec-quote-nav { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-top: 44px; border-top: 2px solid var(--sm-text); padding-top: 24px; flex-wrap: wrap; }
.spec-quote-nav__right { display: flex; gap: 14px; align-items: center; }
.spec-quote-nav__count { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sm-neutral-700); }
.spec-quote-back { background: none; border: 2px solid var(--sm-text); padding: 15px 22px; cursor: pointer; font-family: var(--sm-font); font-size: 13px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.spec-quote-back:disabled { opacity: 0.35; cursor: default; }

.spec-quote-sidebar { background: var(--sm-text); color: var(--sm-bg); }
.spec-quote-sidebar__inner { position: sticky; top: var(--spec-hdr); padding: 48px 40px; }
.spec-quote-sidebar h2 { margin-top: 14px; font-size: 28px; color: var(--sm-bg); }
.spec-quote-sidebar dl { margin-top: 28px; border-top: 2px solid var(--sm-neutral-800); }
.spec-quote-sidebar .row { display: grid; grid-template-columns: 1fr 1.2fr; padding: 13px 0; border-bottom: 2px solid var(--sm-neutral-800); }
.spec-quote-sidebar dt { font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--sm-neutral-500); }
.spec-quote-sidebar dd { margin: 0; font-size: 14px; font-weight: 700; }
.spec-quote-sidebar__perks { margin-top: 32px; border-top: 2px solid var(--sm-accent); padding-top: 20px; }
.spec-quote-sidebar__perks p { font-size: 14px; line-height: 1.6; color: var(--sm-neutral-400); }
.spec-quote-sidebar__perks ul { margin-top: 20px; display: grid; gap: 8px; font-size: 13px; font-weight: 700; list-style: none; padding: 0; color: var(--sm-accent-400); }
.spec-quote-sidebar__direct { margin-top: 32px; border-top: 2px solid var(--sm-neutral-800); padding-top: 20px; display: grid; gap: 10px; }
.spec-quote-sidebar__direct a { color: var(--sm-bg); text-decoration: none; font-weight: 700; }
.spec-quote-sidebar__direct span { font-size: 12px; color: var(--sm-neutral-500); text-transform: uppercase; letter-spacing: 0.1em; }

.spec-quote-success { padding: 64px 40px; }
.spec-quote-success h2 { margin-top: 16px; font-size: clamp(30px, 3.4vw, 54px); }
.spec-quote-success p { margin-top: 20px; font-size: 18px; line-height: 1.6; color: var(--sm-neutral-800); max-width: 48ch; }

/* WebGL carton host (replaces the CSS-transform carton) */
[data-hero3d] { position: relative; width: 100%; min-height: 500px; }
[data-hero3d] canvas { display: block; width: 100%; height: 100%; }
@media (max-width: 900px) { [data-hero3d] { min-height: 340px; } }
