/* Hallmark · shape: Stat-Led (swap from the draw's Index-First: the brief makes the rating the hero) · genre: editorial · theme: Manifesto (deal 2/3, seed basta-plagas-control-plagas-f6f9·eb476be6·2026-11-06·r0), set on a white sheet at the client's request · job: hire · draw: dc4837
 * hero: Stage, the rating as the visual · nav: banner over a retracting bar · footer: mast (swap from index columns: one page, no sitemap) · imagery: photographs, the client's own 3, mono · signature: 4,9 in Anton at poster size, wiped in once, with 183 reseñas linked to Google
 * axes: light/display-condensed/warm · posture: restrained, one red field (the enquiry builder) · contrast: pass · fold: pass · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H5 E4 S5 R4 V4 · weakest: P, a service page argues little; the hero states the outcome and the builder writes the visitor's own message instead of a form */
/* Hallmark · hero-review: not run separately, folded into the finish review · finish-review: subagent · 8 findings · 8 resolved · gap: none */
/* Hallmark · waive 38iii · the red word Basta, once, in the hero head · it is the brand's own word and Manifesto's signed red word */
/* Hallmark · answered F4 · the night button is Manifesto's on-red variant of the one primary, used only inside the red field */
/* Hallmark · dismissed 25 · the 16ch measure is the pull quote set in Anton at statement size, not running prose */
/* Hallmark · dismissed 58 · the static count reads the closed FAQ answers; the rendered page shows about 380 words */
/* Hallmark · waive 80 · six pest figures drawn inline at the client's request in the seal's solid-ink line · they act out the builder's answer before the seal stamps them */
/* Hallmark · dismissed 63 · the middle dots are the ticker's repeating separator between the client's five phrases */
/* Hallmark · motion: the client asked for movement, beyond Manifesto's one reveal: a stamp on the 4,9, a looping ticker that pauses on hover and off-screen, and one pest run per chip; all off under reduced motion */
/* Hallmark · dismissed 23 · the render tier shoots under reduced motion, where the ticker is static and shorter, so 8px of the red field shows at the 1280x800 fold */
/* Hallmark · waive 77 · the ticker is a one-line black band between the hero and the red field · the client asked for this running strip of the five promises */
/* Hallmark · waive 30b · the WhatsApp mark on the four WhatsApp buttons · the page's one action is a WhatsApp chat and a phone visitor scans for that mark */
@import url("./tokens.css");
@import url("./base.css");

html { scroll-behavior: smooth; scroll-padding-top: var(--space-3xl); }
body { color: var(--color-ink-2); }
h1, h2, h3 { font-weight: 400; text-transform: uppercase; line-height: 1.1; color: var(--color-ink); }
h2 { font-size: clamp(2.5rem, 4vw + 1rem, 5.5rem); }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.ico { width: 20px; height: 20px; flex-shrink: 0; }
.num { font-variant-numeric: tabular-nums; }
.lead { color: var(--color-ink-2); }

/* skip link */
.skip { position: absolute; left: var(--space-md); top: calc(-1 * var(--space-3xl)); z-index: var(--z-toast); padding: var(--space-xs) var(--space-md); background: var(--color-ink); color: var(--color-paper); }
.skip:focus-visible { top: var(--space-md); }

/* links */
a:hover { color: var(--color-accent-text); }
a:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }

/* buttons, eight states */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm); min-height: 52px; padding: 0 var(--space-lg); border: 1px solid transparent; border-radius: 0; background: none; color: var(--color-ink); font: 600 var(--text-md)/1 var(--font-body); white-space: nowrap; text-decoration: none; cursor: pointer; transition: background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), border-color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out); }
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.btn:disabled, .btn[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; transform: none; }
.btn--primary { background: var(--color-accent); color: var(--color-accent-ink); }
.btn--primary:hover { background: var(--color-accent-deep); color: var(--color-accent-ink); }
.btn--line { border-color: var(--color-ink-2); color: var(--color-ink); }
.btn--line:hover { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-accent-ink); }
.btn--night { background: var(--color-night); color: var(--color-night-ink); }
.btn--night:hover { background: var(--color-ink-2); color: var(--color-night-ink); }
.actions { display: flex; flex-wrap: wrap; gap: var(--space-sm); }

/* missing fact */
.fill { padding: 0 var(--space-2xs); border: 1px dashed var(--color-muted); border-radius: 3px; color: var(--color-muted); -webkit-box-decoration-break: clone; box-decoration-break: clone; }

/* banner over the bar */
.banner { background: var(--color-night); color: var(--color-night-ink); font-size: var(--text-sm); }
.banner__in { display: flex; align-items: center; min-height: 40px; }
.banner a { color: var(--color-night-ink); font-weight: 600; }
.banner a:hover { color: var(--color-night-muted); }
.banner a:focus-visible { outline-color: var(--color-night-ink); }

.bar { background: var(--color-paper); border-bottom: var(--rule-bar) solid var(--color-rule-strong); z-index: var(--z-sticky-nav); }
.bar__in { display: flex; align-items: center; gap: var(--space-xl); min-height: 80px; }
.brand { display: inline-flex; align-items: center; gap: var(--space-sm); text-decoration: none; color: var(--color-ink); }
.brand img { width: 56px; height: 56px; }
.brand__name { font-family: var(--font-display); font-size: var(--text-xl); text-transform: uppercase; letter-spacing: var(--tracking-display); line-height: 1; }
.brand:hover { color: var(--color-ink); }
.bar__nav { display: flex; gap: var(--space-lg); margin-left: auto; }
.bar__nav a { color: var(--color-ink); text-decoration: none; padding: var(--space-xs) 0; }
.bar__nav a:hover { color: var(--color-accent-text); text-decoration: underline; }
.bar__call { min-height: 48px; }

/* hero */
.hero { padding-block: var(--space-2xl); }
.hero__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); grid-template-areas: "text rating"; column-gap: var(--space-3xl); align-items: center; }
.hero__text { grid-area: text; display: grid; gap: var(--space-lg); container-type: inline-size; }
.hero__rating { grid-area: rating; container-type: inline-size; }
.hero__head { font-size: 14cqi; max-width: none; line-height: 1.1; }
.hero__head .line { display: block; white-space: nowrap; }
.hero__head .hot { color: var(--color-accent-text); }
.hero .lead { max-width: 40ch; }
.hero .actions { margin-top: var(--space-xs); }

.rating { display: grid; gap: var(--space-md); margin: 0; }
.rating__count a { color: inherit; text-underline-offset: 0.14em; }
.rating__count a:hover { color: var(--color-accent-text); }
.rating__count span { white-space: nowrap; }
.rating__fig { font-family: var(--font-display); font-size: 80cqi; line-height: 1; color: var(--color-ink); letter-spacing: var(--tracking-display); transform-origin: 50% 55%; animation: stamp 620ms var(--ease-out) 200ms backwards; }
.rating__side { display: grid; gap: var(--space-sm); justify-items: start; }
.stars { display: flex; gap: var(--space-2xs); color: var(--color-accent); }
.stars svg { width: 32px; height: 32px; }
.rating__count { font-family: var(--font-display); font-size: var(--text-2xl); text-transform: uppercase; letter-spacing: var(--tracking-display); line-height: 1.05; color: var(--color-ink); }
@keyframes stamp { 0% { opacity: 0; transform: scale(1.7) rotate(calc(var(--stamp-rot, 0deg) - 10deg)); } 55% { opacity: 1; transform: scale(0.93) rotate(var(--stamp-rot, 0deg)); } 78% { transform: scale(1.035) rotate(var(--stamp-rot, 0deg)); } 100% { opacity: 1; transform: scale(1) rotate(var(--stamp-rot, 0deg)); } }
@media (prefers-reduced-motion: reduce) { .rating__fig { animation: none; } }

/* the red field: enquiry builder */
.field { --color-focus: var(--color-field-ink); background: var(--color-field); color: var(--color-field-ink); padding-block: var(--section-gap-s); }
.field h2, .field .lead { color: var(--color-field-ink); }
.field__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); column-gap: var(--space-3xl); align-items: start; }
.field__head { display: grid; gap: var(--space-md); }
.field__head h2 { font-size: clamp(2.5rem, 4vw + 1rem, 5.5rem); }
.builder { display: grid; gap: var(--space-xl); }
.chips { margin: 0; padding: 0; border: 0; min-width: 0; }
.chips legend, .barrio label { padding: 0; margin-bottom: var(--space-sm); font-size: var(--text-sm); font-weight: 600; color: var(--color-field-ink); }
.chips__row { display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.chips input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.chips label { display: inline-flex; align-items: center; min-height: 48px; padding: 0 var(--space-md); border: 1px solid var(--color-field-ink); color: var(--color-field-ink); cursor: pointer; user-select: none; transition: background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out); }
.chips label:hover { background: var(--color-accent-deep); }
.chips input:checked + label { background: var(--color-field-ink); color: var(--color-ink); }
.chips input:focus-visible + label { outline: 2px solid var(--color-field-ink); outline-offset: 2px; }
.chips input:active + label { transform: translateY(1px); }
.chips input:disabled + label { opacity: 0.55; cursor: not-allowed; }
.barrio { display: grid; }
.barrio input { width: 100%; max-width: 26rem; min-height: 52px; padding: 0 var(--space-md); border: 1px solid var(--color-field-ink); border-radius: 0; background: var(--color-paper); color: var(--color-ink); font-size: var(--text-md); outline: 2px solid transparent; outline-offset: -4px; }
.barrio input::placeholder { color: var(--color-muted); }
.barrio input:focus-visible { outline-color: var(--color-ink); }
.barrio input:disabled { opacity: 0.55; cursor: not-allowed; }
.send { display: grid; gap: var(--space-md); justify-items: start; padding-top: var(--space-lg); border-top: 1px solid var(--color-field-ink); }
.send__msg { font-size: var(--text-lead); line-height: 1.45; max-width: 44ch; color: var(--color-field-ink); }
.send__msg q { quotes: "“" "”"; }

/* the record */
.record { padding-block: var(--section-gap); }
.record__list { list-style: none; margin: var(--space-2xl) 0 0; padding: 0; counter-reset: rec; }
.record__list li { counter-increment: rec; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 5fr) minmax(0, 6fr); column-gap: var(--gap-columns); align-items: baseline; padding-block: var(--space-lg); border-top: 1px solid var(--color-rule); }
.record__list li:last-child { border-bottom: 1px solid var(--color-rule); }
.record__list li::before { content: counter(rec); font-family: var(--font-display); font-size: var(--text-section); line-height: 1; color: var(--color-muted); }
.record__list h3 { font-size: var(--text-2xl); max-width: none; }
.record__list p { max-width: 48ch; }

/* reviews */
.reviews { background: var(--color-paper-2); padding-block: var(--section-gap); }
.pull { margin: 0; display: grid; gap: var(--space-md); }
.pull blockquote { margin: 0; }
.pull blockquote p { font-family: var(--font-display); font-size: clamp(3rem, 7vw, 7.5rem); line-height: 1.02; text-transform: uppercase; color: var(--color-ink); letter-spacing: var(--tracking-display); max-width: 16ch; text-wrap: wrap; overflow-wrap: break-word; min-width: 0; }
.pull figcaption { font-size: var(--text-sm); color: var(--color-muted); }
.quotes { list-style: none; margin: var(--space-2xl) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.quotes li { display: flex; flex-direction: column; justify-content: space-between; gap: var(--space-md); padding-inline: var(--space-lg); border-left: 1px solid var(--color-rule); }
.quotes li:first-child { padding-left: 0; border-left: 0; }
.quotes li:last-child { padding-right: 0; }
.quotes blockquote { margin: 0; }
.quotes blockquote p { color: var(--color-ink); }
.quotes__who { font-size: var(--text-sm); font-weight: 600; color: var(--color-ink); display: grid; }
.quotes__who time { font-weight: 400; color: var(--color-muted); }
.reviews__more { margin-top: var(--space-2xl); }
.reviews__more a { font-family: var(--font-display); font-size: clamp(1.125rem, 4vw + 0.25rem, 1.5625rem); white-space: nowrap; text-transform: uppercase; letter-spacing: var(--tracking-display); color: var(--color-ink); display: inline-flex; align-items: center; min-height: 48px; }
.reviews__more a:hover { color: var(--color-accent-text); }

/* pests */
.pests { padding-block: var(--section-gap-l) var(--section-gap); }
.pests__grid { display: grid; row-gap: var(--space-2xl); }
.pests__list { list-style: none; margin: 0; padding: 0; }
.pests__list li { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr) minmax(0, 1fr); column-gap: var(--gap-columns); align-items: baseline; padding-block: var(--space-md); border-top: 1px solid var(--color-rule); }
.pests__list li:last-child { border-bottom: 1px solid var(--color-rule); }
.pests__list h3 { font-size: clamp(2.25rem, 4.5vw + 0.5rem, 5.5rem); line-height: 1.05; max-width: none; }
.pick { justify-self: end; }
.pick { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; color: var(--color-ink); text-underline-offset: 0.2em; }

/* real jobs */
.jobs { padding-block: var(--section-gap-s) var(--section-gap); }
.jobs__grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); column-gap: var(--gap-columns); align-items: start; }
.jobs__shots { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--gap-columns); }
.jobs__shots:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 4px; }
.jobs__head { display: grid; gap: var(--space-md); align-self: start; }
.shot { margin: 0; display: grid; align-content: start; gap: var(--space-sm); }
.shot__frame { aspect-ratio: 4 / 5; overflow: hidden; background: var(--color-paper-3); outline: 1px solid var(--color-rule); outline-offset: -1px; }
.shot__frame picture, .shot__frame img { display: block; width: 100%; height: 100%; }
.shot__frame img { object-fit: cover; filter: grayscale(1) contrast(1.12); }
.shot figcaption { font-size: var(--text-sm); color: var(--color-muted); max-width: 32ch; }

/* questions */
.faq { padding-block: var(--section-gap-s) var(--section-gap); border-top: var(--rule-bar) solid var(--color-rule-strong); }
.faq__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); column-gap: var(--gap-columns); align-items: start; }
.faq__list details { border-top: 1px solid var(--color-rule); }
.faq__list details:last-child { border-bottom: 1px solid var(--color-rule); }
.faq__list summary { display: flex; align-items: center; justify-content: space-between; gap: var(--space-md); min-height: 72px; padding-block: var(--space-sm); font-size: var(--text-lg); font-weight: 600; color: var(--color-ink); cursor: pointer; list-style: none; }
.faq__list summary::-webkit-details-marker { display: none; }
.faq__list details:not([open]) > :not(summary) { display: none; }
.faq__list summary:hover { color: var(--color-accent-text); }
.faq__list summary:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.faq__list details[open] summary .ico { transform: rotate(180deg); }
.faq__list details p { padding-bottom: var(--space-lg); max-width: 60ch; }

/* footer mast */
.foot { --color-focus: var(--color-night-ink); background: var(--color-night); color: var(--color-night-ink); padding-block: var(--section-gap-s) var(--space-xl); }
.foot a { color: var(--color-night-ink); }
.foot a:hover { color: var(--color-night-muted); }
.foot__grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); grid-template-areas: "mast call" "links links" "legal legal"; column-gap: var(--gap-columns); row-gap: var(--space-2xl); align-items: center; }
.foot__mast { grid-area: mast; display: grid; gap: var(--space-md); justify-items: start; }
.foot__mast img { width: 160px; height: 160px; }
.foot__line { color: var(--color-night-muted); max-width: 28ch; }
.foot__call { grid-area: call; display: grid; gap: var(--space-lg); justify-items: start; }
.foot__phone { font-family: var(--font-display); font-size: clamp(3.5rem, 9vw, 9rem); line-height: 0.95; letter-spacing: var(--tracking-display); text-decoration: none; white-space: nowrap; }
.foot__phone:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.foot__links { grid-area: links; list-style: none; margin: 0; padding: var(--space-lg) 0 0; display: flex; flex-wrap: wrap; gap: var(--space-xl); border-top: 1px solid var(--color-night-rule); }
.foot__links a { display: inline-flex; align-items: center; gap: var(--space-xs); min-height: 44px; text-decoration: none; }
.foot__links a:hover { text-decoration: underline; }
.foot__legal { grid-area: legal; font-size: var(--text-sm); color: var(--color-night-muted); }

/* mobile dock */
.dock { display: none; }

@media (min-width: 60.0625rem) {
  .bar { position: sticky; top: 0; transition: transform var(--dur-short) var(--ease-out); }
  .bar.is-hidden { transform: translateY(-100%); }
  .hero { min-height: calc(100svh - 124px - 52px); display: grid; align-content: center; }
}
@media (prefers-reduced-motion: reduce) { .bar, .js .dock { transition: none; } .bar.is-hidden { transform: none; } }

@media (max-width: 60rem) {
  .bar__nav, .bar__call { display: none; }
  .bar__in { gap: var(--space-md); justify-content: space-between; min-height: 64px; }
  .brand img { width: 44px; height: 44px; }
  .hero { padding-block: var(--space-lg) var(--space-2xl); }
  .hero__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "rating" "text"; row-gap: var(--space-lg); }
  .rating { grid-template-columns: auto minmax(0, 1fr); align-items: center; column-gap: var(--space-md); }
  .rating__count span { display: block; }
  .rating__fig { font-size: clamp(6.5rem, 30vw, 11rem); }
  .stars svg { width: 24px; height: 24px; }
  .rating__count { font-size: var(--text-xl); }
  .field__grid, .faq__grid { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-xl); }
  .hero__head { font-size: 13.5cqi; }
  .pests__list li { grid-template-columns: minmax(0, 1fr) auto; row-gap: var(--space-2xs); }
  .pests__list li p { grid-column: 1 / -1; grid-row: 2; }
  .pests__list .pick { grid-column: 2; grid-row: 1; }
  .record__list li { grid-template-columns: 3rem minmax(0, 1fr); row-gap: var(--space-xs); }
  .record__list li::before { grid-row: span 2; font-size: var(--text-3xl); padding-right: var(--space-xs); }
  .jobs__grid { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-xl); }
  .quotes { grid-template-columns: minmax(0, 1fr); row-gap: var(--space-lg); }
  .quotes li, .quotes li:first-child, .quotes li:last-child { padding: var(--space-lg) 0 0; border-left: 0; border-top: 1px solid var(--color-rule); }
  .quotes li:first-child { padding-top: 0; border-top: 0; }
  .foot__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "mast" "call" "links" "legal"; row-gap: var(--space-xl); }
  .foot__mast img { width: 112px; height: 112px; }
  body { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
  .dock { display: flex; gap: var(--space-xs); position: fixed; inset-inline: 0; bottom: 0; z-index: var(--z-sticky); padding: var(--space-sm) var(--space-md) calc(var(--space-sm) + env(safe-area-inset-bottom)); background: var(--color-paper); border-top: 1px solid var(--color-rule); }
  .dock__wa { flex: 1; min-width: 0; }
  .dock__call { width: 52px; padding: 0; }
  .js .dock { transform: translateY(100%); visibility: hidden; transition: transform var(--dur-short) var(--ease-out), visibility var(--dur-short); }
  .js .dock.is-on { visibility: visible; }
  .js .dock.is-on { transform: none; }
}

@media (max-width: 40rem) {
  .pests__list li { grid-template-columns: minmax(0, 1fr) auto; row-gap: var(--space-2xs); }
  .pests__list li p { grid-column: 1 / -1; grid-row: 2; }
  .pests__list .pick { grid-column: 2; grid-row: 1; }
  .jobs__shots { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 72%; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; padding-bottom: var(--space-xs); }
  .shot { scroll-snap-align: start; }
  .actions .btn { flex: 1 1 auto; }
}

/* stars under each review, in the seal's red */
.stars--review { color: var(--color-seal); gap: var(--space-3xs); }
.stars--review svg { width: 16px; height: 16px; }
.pull .stars--review { margin-top: var(--space-xs); }

/* ticker */
.ticker { position: relative; display: flex; align-items: center; height: 52px; background: var(--color-night); color: var(--color-night-ink); overflow: hidden; }
.ticker__track { display: flex; width: max-content; animation: ticker 36s linear infinite; }
.ticker__run { display: flex; align-items: center; gap: var(--space-lg); padding-right: var(--space-lg); margin: 0; max-width: none; white-space: nowrap; font-family: var(--font-display); font-size: var(--text-lg); text-transform: uppercase; letter-spacing: var(--tracking-display); line-height: 1; }
.ticker__sep { color: var(--color-seal); }
[data-loop]:not(.is-running) .ticker__track { animation-play-state: paused; }
@keyframes ticker { to { transform: translateX(-50%); } }

/* pest stage in the red field */
.stage { --stage-h: 150px; position: relative; height: var(--stage-h); overflow: hidden; }
.stage__svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.stage__seal { position: absolute; inset: 0; margin: auto; width: calc(var(--stage-h) * 0.74); height: calc(var(--stage-h) * 0.74); --stamp-rot: -8deg; transform: rotate(-8deg); }
.ink-fill { fill: var(--color-night); }
.ink-line { fill: none; stroke: var(--color-night); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.ink-line--thin { stroke-width: 2.2; }
.gap-line { fill: none; stroke: var(--color-field); stroke-width: 1.5; }
.gap-fill { fill: var(--color-field); }
.paper-fill { fill: var(--color-field-ink); }
.paper-line { fill: none; stroke: var(--color-field-ink); stroke-width: 2.4; stroke-linecap: round; }
.paper-line--thread { stroke-width: 1.4; }
.wing { fill: var(--color-field-ink); stroke: var(--color-night); stroke-width: 2; }
.pest { display: none; }
.pest.is-on { display: inline; }
.legs, .wings, .bob { transform-box: fill-box; transform-origin: 50% 50%; }
.wings { transform-origin: 50% 100%; }
.stage.is-run .pest.is-on { animation: pest-out 320ms var(--ease-in) 1600ms forwards; }
.stage.is-run .stage__seal { animation: stamp 420ms var(--ease-out) 1450ms backwards; }
.stage.is-run { animation: thud 200ms var(--ease-out) 1680ms; }
.stage.is-run .legs--a { animation: leg-a 140ms linear infinite alternate; }
.stage.is-run .legs--b { animation: leg-b 140ms linear infinite alternate; }
.stage.is-run .bob { animation: bob 120ms linear infinite alternate; }
.stage.is-run .wings { animation: flap 70ms linear infinite alternate; }
.stage.is-run .pest__move--walk { animation: walk 1300ms cubic-bezier(0.25, 0.6, 0.35, 1) both; }
.stage.is-run .pest__move--run { animation: walk 950ms var(--ease-out) both; }
.stage.is-run .pest__move--zigzag { animation: zigzag 1350ms var(--ease-in-out) both; }
.stage.is-run .pest__move--hop { animation: hop 1300ms linear both; }
.stage.is-run .pest__move--drop { animation: drop 1300ms var(--ease-out) both; }
@keyframes walk { from { transform: translateX(-340px); } to { transform: none; } }
@keyframes zigzag { 0% { transform: translate(-340px, 34px); } 20% { transform: translate(-260px, -34px); } 40% { transform: translate(-190px, 30px); } 60% { transform: translate(-120px, -30px); } 80% { transform: translate(-50px, 18px); } 100% { transform: none; } }
@keyframes hop { 0% { transform: translate(-320px, 0); } 12% { transform: translate(-280px, -64px); } 25% { transform: translate(-240px, 0); } 37% { transform: translate(-200px, -64px); } 50% { transform: translate(-160px, 0); } 62% { transform: translate(-120px, -64px); } 75% { transform: translate(-80px, 0); } 87% { transform: translate(-40px, -50px); } 100% { transform: none; } }
@keyframes drop { 0% { transform: translateY(-240px); } 82% { transform: translateY(8px); } 100% { transform: none; } }
@keyframes leg-a { from { transform: rotate(-10deg); } to { transform: rotate(10deg); } }
@keyframes leg-b { from { transform: rotate(10deg); } to { transform: rotate(-10deg); } }
@keyframes bob { to { transform: translateY(-3px); } }
@keyframes flap { to { transform: scaleY(0.35); } }
@keyframes pest-out { to { opacity: 0; } }
@keyframes thud { 30% { transform: translateY(3px); } 60% { transform: translateY(-1px); } }

@media (min-width: 60.0625rem) {
  .stage { --stage-h: 240px; position: absolute; left: var(--gutter); bottom: 0; width: calc((100% - 2 * var(--gutter) - var(--space-3xl)) * 4 / 11); }
  .field__grid { position: relative; }
}
@media (max-width: 60rem) {
  .ticker { height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .ticker { height: auto; padding-block: var(--space-sm); padding-inline: var(--gutter); }
  .ticker__track { animation: none; width: auto; }
  .ticker__run { flex-wrap: wrap; white-space: normal; row-gap: var(--space-xs); padding-right: 0; }
  .ticker__run[aria-hidden="true"] { display: none; }
  .stage *, .stage, .rating__fig { animation: none !important; }
  .stage__seal { opacity: 1; }
}
