/*
 * Webfoot site layout
 * -------------------
 * Page-specific layout for index.html. Reusable pieces live in
 * design-system/components.css; colors and sizes come from tokens.css.
 */

.site { overflow: hidden; }

/* ===== Header ========================================================== */

.site-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 32px;
  padding-top: 24px;
  padding-bottom: 24px;
}

.site-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 28px;
  font-size: var(--wf-text-body);
  font-weight: 600;
}
.site-nav > a:not(.wf-btn) {
  padding: 12px 0;
  text-decoration: none;
}
.site-nav > a:not(.wf-btn) { position: relative; }
.site-nav > a:not(.wf-btn)::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 6px;
  height: 3px;
  border-radius: 3px;
  background: var(--wf-bill);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 220ms cubic-bezier(.3, 1.4, .5, 1);
}
.site-nav > a:not(.wf-btn):hover::after,
.site-nav > a:not(.wf-btn):focus-visible::after { transform: scaleX(1); }

@media (max-width: 860px) {
  .site-nav { gap: 0 20px; }
  .site-nav .wf-btn { margin-top: 8px; }
}

/* Phone menu. Only kicks in when site.js has run (html.js), so without
   JavaScript the links simply wrap under the logo. */
.menu-toggle { display: none; gap: 8px; }
.menu-toggle__close { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__close { display: inline; }

@media (max-width: 860px) {
  .js .menu-toggle { display: inline-flex; }
  .js .site-nav {
    display: none;
    flex-basis: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 8px 20px 20px;
    background: var(--wf-white);
    border: var(--wf-border);
    border-radius: var(--wf-radius-lg);
    box-shadow: var(--wf-shadow-md);
  }
  .js .site-nav.is-open { display: flex; }
  .js .site-nav > a:not(.wf-btn) {
    padding: 14px 4px;
    border-bottom: var(--wf-border-thin);
    font-size: var(--wf-text-body-lg);
  }
  .js .site-nav .wf-btn { margin-top: 18px; }
}


/* ===== Section scaffolding ============================================= */

.section {
  padding-top: var(--wf-section-y);
  padding-bottom: calc(var(--wf-section-y) + 8px);
}
.section--after-wave { padding-top: 72px; }

.band--white { background: var(--wf-white); }
.band--fir {
  background: var(--wf-fir);
  color: var(--wf-white);
  border-top: var(--wf-border);
  border-bottom: var(--wf-border);
}

.section-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px 48px;
  margin-bottom: 56px;
}
.section-head__title { max-width: 12ch; }
.section-head__note { max-width: 28em; }

/* ===== Hero ============================================================ */

.hero {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 72px 56px;
  padding-top: 48px;
  padding-bottom: 120px;
}

.hero__copy {
  flex: 1 1 540px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 28px;
}
.hero__title { max-width: 10.5ch; }
.hero__caret {
  display: inline-block;
  width: 0.4em;
  height: 0.8em;
  margin-left: 0.08em;
  vertical-align: -0.04em;
  background: var(--wf-bill);
  border-radius: 3px;
}
.hero__lede { max-width: 31em; }
.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 8px;
}

.hero__art {
  flex: 1 1 420px;
  min-width: 0;
  position: relative;
  padding-top: 96px;
}
.hero__duck svg { width: 100%; height: 100%; }
.hero__duck {
  width: 150px;
  height: 150px;
  position: absolute;
  top: 0;
  right: 36px;
  z-index: 2;
}
.hero__terminal {
  position: relative;
  z-index: 1;
  transform: rotate(-1.5deg);
}
.hero__trail {
  position: absolute;
  left: -40px;
  bottom: -92px;
  width: 660px;
  max-width: 115%;
  height: auto;
}

@media (max-width: 640px) {
  .hero { padding-top: 24px; }
  .hero__duck { width: 110px; height: 110px; right: 8px; top: 20px; }
    .hero__trail { left: 0; max-width: 100%; }
  .wf-terminal__body { font-size: 14px; padding: 18px; }
}

/* ===== Footprints (shared by the trails) ============================== */

.print {
  fill: var(--wf-ink);
  stroke: var(--wf-ink);
  fill-opacity: var(--o, 1);
  stroke-opacity: var(--o, 1);
}
.print--bill { fill: var(--wf-bill); stroke: var(--wf-bill); }
.print--bill-deep { fill: var(--wf-bill-deep); stroke: var(--wf-bill-deep); }
.print--white { fill: var(--wf-white); stroke: var(--wf-white); }
.print--duck { fill: var(--wf-accent); stroke: var(--wf-accent); }

/* ===== Services ======================================================== */

.services {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 32px;
}

/* ===== Work ============================================================ */

.work {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
  gap: 48px 40px;
}
.work__item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.work__tag {
  position: absolute;
  top: -22px; /* sits on the frame, clear of the web address */
  left: 88px; /* clear of the browser dots */
  z-index: 2;
}
.work__tag--right { left: auto; right: 24px; }
.work__desc {
  margin: 6px 0 0;
  font-size: var(--wf-text-body);
  line-height: 1.5;
  color: var(--wf-text-muted);
}

/* ===== Process ========================================================= */

.process__intro { max-width: 30em; margin: 16px 0 64px; }
.process__walk {
  display: block;
  width: 100%;
  height: auto;
  margin: 0 0 48px;
}
.process {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 40px 32px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.process__step {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.process__step p {
  margin: 0;
  font-size: var(--wf-text-body);
  line-height: 1.6;
  color: var(--wf-text-muted);
}
.process__step .wf-label { margin-top: 8px; }
.process__badge {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  background: var(--wf-white);
  border: var(--wf-border);
  border-radius: var(--wf-radius-pill);
}
.process__badge--launch {
  background: var(--wf-accent);
  box-shadow: var(--wf-shadow-xs);
}
.process__foot {
  fill: var(--wf-ink);
  stroke: var(--wf-ink);
  transform: rotate(90deg);
}

/* ===== Pricing ========================================================= */

.pricing {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 40px 32px;
  align-items: stretch;
}
.price {
  gap: 22px;
  padding: 32px 28px;
  border-radius: var(--wf-radius-xl);
}
.price .price__desc {
  margin: 8px 0 0;
  line-height: 1.5;
  color: var(--wf-text-muted);
}
.price__amount {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  padding: 18px 0;
  border-top: var(--wf-border);
  border-bottom: var(--wf-border);
}
.price__figure {
  font-family: var(--wf-font-mono);
  font-size: 42px;
  font-weight: var(--wf-weight-black);
  letter-spacing: -0.05em;
  line-height: 1;
}
.price__unit {
  font-size: 16px;
  font-weight: 600;
  color: var(--wf-text-muted);
}
.price__list { flex: 1; }
.pricing__addons {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: center;
  gap: 6px 14px;
  margin: 56px 0 0;
  font-size: var(--wf-text-body);
  font-weight: 600;
}
.pricing__addons .wf-label { margin-right: 4px; }
.price__flag {
  position: absolute;
  top: -18px;
  right: 22px;
}
.pricing__note {
  margin-top: 20px;
  text-align: center;
}
.pricing__note a { font-weight: var(--wf-weight-black); }

/* ===== FAQ ============================================================= */

.faq {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.9fr);
  gap: 40px 72px;
  align-items: start;
}
.faq__intro {
  position: sticky;
  top: 32px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.faq__intro p { margin: 0; }
.faq__intro a { font-weight: var(--wf-weight-black); }
.faq__title { max-width: 9ch; }
.faq__duck { align-self: flex-start; margin-top: 8px; }
.faq__list .wf-accordion__body a { font-weight: var(--wf-weight-black); }

@media (max-width: 860px) {
  .faq { grid-template-columns: minmax(0, 1fr); }
  .faq__intro { position: static; }
  .faq__duck { display: none; }
}

/* ===== About =========================================================== */

.about {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 56px 80px;
  padding-top: var(--wf-section-y);
  padding-bottom: var(--wf-section-y);
}
.about__photo-wrap {
  flex: 1 1 340px;
  min-width: 0;
  display: flex;
  justify-content: center;
}
.polaroid {
  width: 320px;
  max-width: 100%;
  margin: 0;
  padding: 18px 18px 24px;
  background: var(--wf-white);
  border: var(--wf-border);
  box-shadow: var(--wf-shadow-xl);
  transform: rotate(-3deg);
}
.polaroid__frame {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;
  background: var(--wf-accent);
  border: var(--wf-border);
}
.polaroid__duck { width: 70%; }
.polaroid__duck svg { width: 100%; height: auto; }
.polaroid__caption {
  margin-top: 16px;
  font-family: var(--wf-font-mono);
  font-size: var(--wf-text-small);
  font-weight: var(--wf-weight-bold);
  color: var(--wf-ink);
  text-align: center;
}
.about__copy {
  flex: 1.3 1 440px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.about__title { max-width: 11ch; }
.about__copy p {
  margin: 0;
  font-size: 19px;
  line-height: 1.65;
  color: var(--wf-on-dark);
}
.about__cta { align-self: flex-start; margin-top: 8px; }

/* ===== Contact ========================================================= */

.contact {
  display: flex;
  flex-wrap: wrap;
  gap: 48px 72px;
  padding-bottom: 128px;
}
.contact__intro {
  flex: 1 1 320px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.contact__intro p { margin: 0; }
.contact__duck {
  display: flex;
  align-items: flex-end;
  gap: 12px;
}
.contact__bubble { margin-bottom: 44px; }
.contact__title { max-width: 10ch; }
.contact__lede { max-width: 24em; }
.contact__email { margin-top: 4px !important; font-size: var(--wf-text-body); }

.contact__form {
  flex: 1.3 1 460px;
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 20px;
  padding: 32px;
  background: var(--wf-white);
  border: var(--wf-border);
  border-radius: var(--wf-radius-xl);
  box-shadow: var(--wf-shadow-xl);
}
.contact__wide { grid-column: 1 / -1; }
.contact__submit {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 24px;
}
.contact__status {
  margin: 0;
  font-family: var(--wf-font-mono);
  font-size: var(--wf-text-small);
  font-weight: var(--wf-weight-bold);
}
.contact__status.is-error { color: #A8322A; }
/* Bot trap: off-screen, never seen or tabbed to by people. */
.contact__trap {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.contact__form { position: relative; }

@media (max-width: 640px) {
  .contact__form { padding: 22px; box-shadow: var(--wf-shadow-md); }
}

/* ===== Footer ========================================================== */

.site-footer {
  background: var(--wf-ink);
  color: var(--wf-on-dark-muted);
}
.site-footer__inner {
  display: flex;
  flex-direction: column;
  gap: 40px;
  padding-top: 72px;
  padding-bottom: 40px;
}
.site-footer__top {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
}
.site-footer__wordmark {
  font-size: clamp(3.5rem, 12vw, 10rem);
  letter-spacing: -0.06em;
  line-height: 0.85;
}
.site-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 32px;
  padding-top: 24px;
  border-top: 2px solid var(--wf-rule-dark);
  font-size: var(--wf-text-small);
}
.site-footer__links { display: flex; flex-wrap: wrap; gap: 24px; }
.site-footer__links a { padding: 12px 0; color: var(--wf-on-dark-strong); }
.site-footer__links a:hover { color: var(--wf-accent); }

/* ===== Scroll motion ===================================================
 * Footprints step in as you scroll and the duck wobbles. Pure CSS
 * scroll-driven animation: browsers without it, and anyone who prefers
 * reduced motion, just see the finished artwork.
 */

@keyframes wf-step { from { opacity: 0; scale: .55; } to { opacity: 1; scale: 1; } }
@keyframes wf-stepin { from { opacity: 0; scale: .35; translate: -14px 0; } to { opacity: 1; scale: 1; translate: 0 0; } }
@keyframes wf-bob {
  0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%, 100% { rotate: -4deg; }
  5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% { rotate: 4deg; }
}

@supports (animation-timeline: scroll()) {
  @media (prefers-reduced-motion: no-preference) {
    .step-hero,
    .step-walk,
    .step-in {
      transform-box: fill-box;
      transform-origin: 50% 60%;
      animation: wf-step linear both;
    }

    /* Hero: one print every 60px of page scroll */
    .step-hero {
      animation-timeline: scroll(root);
      animation-range: calc(var(--i) * 60px - 30px) calc(var(--i) * 60px);
    }

    /* Process: the trail walks across as the section scrolls through */
    .walk { view-timeline-name: --wf-walk; view-timeline-axis: block; }
    .step-walk {
      animation-timeline: --wf-walk;
      animation-range: cover calc(12% + var(--i) * 2.6%) cover calc(14% + var(--i) * 2.6%);
    }

    /* Footer: four prints as the footer comes into view */
    .footer-trail { view-timeline-name: --wf-trail; view-timeline-axis: block; }
    .step-in {
      animation-timeline: --wf-trail;
      animation-range: entry calc(var(--i) * 25%) entry calc(var(--i) * 25% + 20%);
    }

    .motion-pop {
      animation: wf-stepin linear both;
      animation-timeline: view();
      animation-range: entry 10% cover 30%;
    }

    .motion-bob {
      transform-origin: 50% 90%;
      animation: wf-bob linear both;
      animation-timeline: scroll(root);
    }
  }
}

/* ===== Deeper pages ======================================================
 * Services, Process, Pricing and About expand on the home page using the
 * same pieces: the hero and its terminal, section heads, tilted cards,
 * wavy dividers, checklists, footprint badges, price cards and accordions.
 */

/* Home: one small button under a section, leading to its page */
.section-more { margin: 48px 0 0; display: flex; justify-content: center; }
.about__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.about__actions .about__cta { margin-top: 0; }

/* Page hero: the home hero, a little smaller */
.hero--page { padding-bottom: 48px; }
.hero__title--page { font-size: clamp(2.75rem, 6vw, 5rem); max-width: 13ch; }
.hero--page .hero__art { padding-top: 24px; }
.hero--page .wf-label { color: var(--wf-bill-ink); }

/* Jump links (Services) */
.jump { display: flex; flex-wrap: wrap; gap: 10px; padding-bottom: 8px; }
.jump__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 8px 16px;
  font-weight: 700;
  color: var(--wf-ink);
  text-decoration: none;
  background: var(--wf-white);
  border: var(--wf-border-thin);
  border-radius: var(--wf-radius-pill);
  transition: transform 180ms cubic-bezier(.2, .8, .2, 1), background-color 180ms ease, box-shadow 180ms ease;
}
.jump__link:hover { background: var(--wf-accent); transform: translate(-2px, -2px); box-shadow: 3px 3px 0 var(--wf-ink); color: var(--wf-ink); }
html { scroll-padding-top: 24px; }

/* Cards with a checklist */
.wf-card--rain { background: var(--wf-rain); }
.offer-card .wf-checklist { gap: 8px; margin-top: 4px; }
.offer-card .wf-checklist li { font-size: var(--wf-text-small); }
.offer-card .wf-checklist svg { width: 18px; height: 18px; }
.includes { margin-top: 48px; gap: 18px; }
.includes__list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 12px 28px;
}
.subhead { margin: 80px 0 32px; }
.services--three { grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); }
#care .pricing__note { margin-top: 48px; }
.addons { margin-top: 8px; }

/* Process: every step */
.step-list { display: flex; flex-direction: column; gap: 36px; margin: 0; padding: 0; list-style: none; }
.step-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 24px 32px; }
.step-row__badge { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.step-row__body h3 { margin: 4px 0 10px; }
.step-row__body > p { max-width: 44em; margin: 0; font-size: var(--wf-text-body); line-height: 1.65; color: var(--wf-text-muted); }
@media (max-width: 640px) { .step-row { grid-template-columns: 1fr; gap: 12px; } .step-row__badge { flex-direction: row; align-items: center; } }
.step-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 16px 24px;
  margin: 18px 0 0;
}
.step-facts div { padding: 14px 16px; background: var(--wf-white); border: var(--wf-border-thin); border-radius: var(--wf-radius-sm); }
.step-facts dt { font-family: var(--wf-font-mono); font-size: var(--wf-text-tiny); font-weight: 800; text-transform: lowercase; color: var(--wf-bill-ink); }
.step-facts dd { margin: 6px 0 0; line-height: 1.55; }

.promises {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.promise {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 20px;
  background: var(--wf-rain);
  border: var(--wf-border);
  border-radius: var(--wf-radius-md);
  box-shadow: var(--wf-shadow-sm);
}
.promise > svg { flex: none; width: 24px; height: 24px; margin-top: 2px; }
.promise p { margin: 6px 0 0; color: var(--wf-text-muted); line-height: 1.55; }
.offer__title { margin: 0; font-size: 19px; font-weight: var(--wf-weight-black); letter-spacing: -0.01em; line-height: 1.25; }

/* Pricing: side by side */
.cmp-wrap {
  position: relative;
  overflow-x: auto;
  background: var(--wf-white);
  border: var(--wf-border);
  border-radius: var(--wf-radius-xl);
  box-shadow: var(--wf-shadow-md);
}
.cmp { width: 100%; min-width: 640px; border-collapse: collapse; }
.cmp th, .cmp td { padding: 16px 20px; text-align: left; vertical-align: top; border-bottom: var(--wf-border-thin); line-height: 1.45; }
.cmp thead th { font-size: 18px; font-weight: var(--wf-weight-black); }
.cmp tbody th { font-weight: 700; width: 26%; }
.cmp tbody tr:last-child th, .cmp tbody tr:last-child td { border-bottom: 0; }
.cmp thead th { vertical-align: middle; background: var(--wf-rain); border-bottom: var(--wf-border); }
/* The popular plan wears the site's duck yellow, like its price card */
.cmp__pick { background: var(--wf-accent); border-left: var(--wf-border); border-right: var(--wf-border); }
.cmp thead .cmp__pick { background: var(--wf-accent); }
.cmp__flag { margin-left: 8px; vertical-align: 2px; font-size: var(--wf-text-tiny); }
.cmp__yes svg { width: 22px; height: 22px; }
.cmp__no { color: var(--wf-text-off); font-weight: 800; }

/* About */
.about-band--page .about { padding-top: 64px; }
.about__label { color: var(--wf-accent); }
.edu-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr)); gap: 32px; align-items: start; }
.edu { gap: 14px; }
.edu__status { font-family: var(--wf-font-mono); font-size: var(--wf-text-small); font-weight: 800; color: var(--wf-ink) !important; }
.edu .wf-tag { align-self: flex-start; }
.edu p { margin: 0; line-height: 1.65; color: var(--wf-text-muted); }
.edu__meta { font-family: var(--wf-font-mono); font-weight: 700; color: var(--wf-ink) !important; }
.edu__extra { font-style: italic; }
.facts-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: 20px 32px;
  margin: 32px 0 0;
}
.facts-list div { padding-bottom: 14px; border-bottom: var(--wf-border-thin); }
.facts-list dt { font-family: var(--wf-font-mono); font-size: var(--wf-text-tiny); font-weight: 800; text-transform: lowercase; color: var(--wf-bill-ink); }
.facts-list dd { margin: 6px 0 0; font-size: 19px; font-weight: 700; }

/* The closing band on each page */
.closing {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 18px;
  padding-top: 88px;
  padding-bottom: 88px;
}
.closing p { max-width: 36em; margin: 0; color: var(--wf-on-dark); }
.closing__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; }

/* The menu underlines the page you're on */
.site-nav > a[aria-current="page"]:not(.wf-btn)::after { transform: scaleX(1); }
.site-nav > a[aria-current="page"]:not(.wf-btn) { font-weight: 800; }

/* FAQ and Contact pages start with their section, so give it room up top */
.faq--page, .contact--page { padding-top: 56px; }

/* Work page: project facts and a live link */
.work__facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
.work__facts li { padding: 3px 10px; font-family: var(--wf-font-mono); font-size: var(--wf-text-tiny); font-weight: 700; background: var(--wf-rain); border: var(--wf-border-thin); border-radius: var(--wf-radius-pill); }
.work__link { margin: 14px 0 0; font-weight: 800; }

/* Contact page: what happens after you hit send */
.steps-mini {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 28px 32px;
  margin: 40px 0 0;
  padding: 0;
  list-style: none;
}
.steps-mini li { display: flex; flex-direction: column; gap: 10px; }
.steps-mini p { margin: 0; color: var(--wf-text-muted); line-height: 1.6; }
.steps-mini__n {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  font-family: var(--wf-font-mono);
  font-size: 22px;
  font-weight: 800;
  background: var(--wf-accent);
  border: var(--wf-border);
  border-radius: var(--wf-radius-pill);
  box-shadow: var(--wf-shadow-xs);
}

/* Footer links to the deeper pages */
.site-footer__nav { display: flex; flex-wrap: wrap; gap: 4px 28px; font-weight: 700; }
.site-footer__nav a { padding: 10px 0; color: var(--wf-on-dark-strong); text-decoration: none; }
.site-footer__nav a:hover { color: var(--wf-accent); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; }

@media (prefers-reduced-motion: reduce) {
  .jump__link { transition: none; }
}

/* ===== Project illustrations ==============================================
 * Until real screenshots are added, each browser frame shows a simple
 * drawing of a page in the brand's colors (clearly an illustration).
 * To use a screenshot, put <img src="…" alt="…"> in .wf-browser__screen
 * instead of the spans.
 */
.shot-mock {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 4.5%;
  padding: 6% 7%;
  overflow: hidden;
}
.shot-mock > span { display: block; border-radius: 999px; background: var(--wf-ink); }
.shot-mock__nav { display: flex !important; gap: 4%; width: 100%; justify-content: flex-end; background: none !important; }
.shot-mock__nav i { display: block; width: 9%; height: 6px; border-radius: 999px; background: color-mix(in srgb, var(--wf-ink) 35%, transparent); }
.shot-mock__nav i:first-child { margin-right: auto; width: 14%; background: var(--wf-ink); }
.shot-mock__title { width: 62%; height: 13%; border-radius: 10px !important; margin-top: 3%; }
.shot-mock__title--short { width: 40%; margin-top: 0; }
.shot-mock__text { width: 54%; height: 5%; opacity: .35; }
.shot-mock__btn { width: 20%; height: 9%; background: var(--wf-bill) !important; border: 2px solid var(--wf-ink); }
.shot-mock__cards { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 4%; width: 100%; height: 22%; margin-top: auto; background: none !important; border-radius: 0 !important; }
.shot-mock__cards i { display: block; border: 2px solid var(--wf-ink); border-radius: 8px; background: var(--wf-white); }
.shot-mock--tabs .shot-mock__btn { background: var(--wf-fir) !important; }
.shot-mock--tabs .shot-mock__cards { grid-template-columns: repeat(5, 1fr); height: 9%; margin-top: 2%; }
.shot-mock--tabs .shot-mock__cards i:first-child { background: var(--wf-accent); }
.shot-mock--tabs .shot-mock__cards::after { content: ""; grid-column: 1 / -1; height: 260%; margin-top: 6%; border: 2px solid var(--wf-ink); border-radius: 10px; background: var(--wf-white); }

/* Phones: the web address gives way to the location tag, and the plan
   table says it can be swiped */
.cmp-hint { display: none; margin: 0 0 12px; font-family: var(--wf-font-mono); font-size: var(--wf-text-tiny); font-weight: 700; color: var(--wf-text-subtle); }
@media (max-width: 700px) {
  .cmp-hint { display: block; }
  .wf-browser__url { min-width: 0; max-width: 55%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* Illustration variants: EHS Now (safety yellow on fir), home services
   (click-to-call strip), restaurant (menu list) */
.wf-browser__screen--ehs { background: color-mix(in srgb, var(--wf-fir) 14%, var(--wf-white)); }
.shot-mock--ehs .shot-mock__btn { background: var(--wf-accent) !important; }
.shot-mock--ehs .shot-mock__cards i:nth-child(2) { background: var(--wf-accent); }
.shot-mock--services { background: color-mix(in srgb, var(--wf-bill) 18%, var(--wf-white)); }
.shot-mock--services .shot-mock__btn { width: 28%; background: var(--wf-fir) !important; }
.shot-mock--services .shot-mock__cards i { background: var(--wf-white); }
.shot-mock--services .shot-mock__cards i:first-child { background: var(--wf-accent); }
.shot-mock--menu .shot-mock__btn { background: var(--wf-bill-deep) !important; }
.shot-mock--menu .shot-mock__cards { grid-template-columns: 1fr; gap: 6%; height: 26%; }
.shot-mock--menu .shot-mock__cards i { border-radius: 999px; height: 22%; }

/* ===== Even grids ==========================================================
 * Card groups use set column counts so every row is full: four cards sit
 * 4 across, then 2 by 2, then stacked; six sit 3 by 2, then 2 by 3. The
 * three plans stay in one row, or stack (never two plus one).
 */
.services, .process { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.services--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pricing { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pricing.addons { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.work, .promises, .includes__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 1100px) {
  .services, .process, .pricing.addons { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1000px) {
  .services--three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pricing:not(.addons) { grid-template-columns: minmax(0, 560px); justify-content: center; }
}
@media (max-width: 760px) {
  .work, .promises, .includes__list { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .services, .services--three, .process, .pricing.addons { grid-template-columns: minmax(0, 1fr); }
}

.facts-list, .steps-mini { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.step-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1100px) { .facts-list, .steps-mini { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 860px) { .step-facts { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .facts-list, .steps-mini { grid-template-columns: minmax(0, 1fr); } }

/* The add-ons line reads as one centered sentence */
.pricing__addons { display: block; text-align: center; line-height: 1.8; }
.pricing__addons > span[aria-hidden] { margin: 0 8px; }

/* Browser frames line up whether or not they show a web address */
.wf-browser__bar { min-height: 42px; }

/* Work: the open slot for the next project */
.work__next-screen { position: relative; flex-direction: column; gap: 6px; background: var(--wf-rain); }
.work__next-screen::before { content: ""; position: absolute; inset: 18px; border: 3px dashed var(--wf-ink); border-radius: var(--wf-radius-sm); opacity: .35; }
.work__next-plus { font-family: var(--wf-font-sans); font-size: 64px; font-weight: 800; line-height: 1; color: var(--wf-ink); }
.work__next-text { font-family: var(--wf-font-mono); font-size: var(--wf-text-small); font-weight: 700; color: var(--wf-text-muted); }

/* Phones: the services page's section links scroll sideways in one row */
@media (max-width: 860px) {
  .jump { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-top: 4px; padding-bottom: 12px; }
  .jump::-webkit-scrollbar { display: none; }
  .jump__link { flex: none; }
}

/* Small page label above the heading on pages without a big hero */
.page-label { display: block; margin-bottom: 4px; color: var(--wf-bill-ink); }
