/* KasaRentals: Bobcat skid steers + dump trailers, El Paso & Las Cruces.
   Brand: Kasa indigo (#4f46e5, shared with the KasaPro app) on a rugged
   charcoal base, amber for calls to action. Type: Space Grotesk display,
   Nunito Sans body, JetBrains Mono technical labels. */

@font-face { font-family: "Space Grotesk"; src: url("assets/fonts/space-grotesk-variable.woff2") format("woff2"); font-weight: 300 700; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("assets/fonts/jetbrains-mono-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "JetBrains Mono"; src: url("assets/fonts/jetbrains-mono-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }

:root {
  --bg: #14151a; --bg-2: #1c1e26; --bg-3: #23252f;
  --fg: #f2f3f5; --muted: rgba(242, 243, 245, 0.62);
  --indigo: #4f46e5; --indigo-lt: #7b73f2; --indigo-deep: #4338ca;
  --amber: #f2a33c;
  --line: rgba(242, 243, 245, 0.12);
  --display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
  --body: "Nunito Sans", ui-sans-serif, system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --ease: cubic-bezier(0.6, 0.08, 0.02, 0.99);
  --indigo-grad: linear-gradient(135deg, #4338ca, #6d64f0 55%, #4338ca);
  --wrap: 1200px;
}

/* ===== Light mode (eggshell, matching Sun City), toggled via data-theme on
   <html>. The nav, scrub video sections, and loader stay dark islands; the
   content sections and footer go eggshell. ===== */
[data-theme="light"] {
  --bg: #f6f2e9;
  --bg-2: #efe9db;
  --bg-3: #e4dcc9;
  --fg: #241f17;
  --muted: rgba(36, 31, 23, 0.62);
  --line: rgba(36, 31, 23, 0.15);
  --indigo-lt: #4f46e5; /* deeper indigo for small text on the light ground */
  color-scheme: light;
}
[data-theme="light"] .nav,
[data-theme="light"] .scrub,
[data-theme="light"] .loader {
  --bg: #14151a; --bg-2: #1c1e26; --bg-3: #23252f;
  --fg: #f2f3f5; --muted: rgba(242, 243, 245, 0.6);
  --line: rgba(242, 243, 245, 0.12); --indigo-lt: #7b73f2;
  color: var(--fg);
}
/* Footer goes eggshell too: multiply drops the mountain etching into the page. */
[data-theme="light"] .footer { background: linear-gradient(to bottom, #efe9db, #e5ddc9); border-top-color: var(--indigo); }
[data-theme="light"] .footer::before { mix-blend-mode: multiply; opacity: 0.7; }
[data-theme="light"] .footer::after {
  background: linear-gradient(to bottom,
    rgba(246,242,233,0.95) 0%, rgba(246,242,233,0.78) 34%,
    rgba(246,242,233,0.26) 58%, rgba(246,242,233,0.14) 74%,
    rgba(246,242,233,0.9) 100%);
}
[data-theme="light"] .ph { background: repeating-linear-gradient(45deg, #e6ddca, #e6ddca 12px, #ded5c0 12px, #ded5c0 24px); }
[data-theme="light"] .ph::after { color: rgba(36,31,23,0.5); border-color: rgba(79,70,229,0.5); }
[data-theme="light"] .book__form input,
[data-theme="light"] .book__form select,
[data-theme="light"] .book__form textarea,
[data-theme="light"] .cal__time,
[data-theme="light"] .cal { background: #fbf8f1; }
[data-theme="light"] .book__form input::placeholder,
[data-theme="light"] .book__form textarea::placeholder { color: rgba(36, 31, 23, 0.35); }
[data-theme="light"] .cal__day { background: rgba(36, 31, 23, 0.06); }
[data-theme="light"] .cal__day.is-past { color: rgba(36, 31, 23, 0.25); }
[data-theme="light"] .cal__day.is-booked { color: rgba(36, 31, 23, 0.32); }

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: auto; color-scheme: dark; }
body { font-family: var(--body); background: var(--bg); color: var(--fg); line-height: 1.55; overflow-x: hidden; -webkit-font-smoothing: antialiased; }
body.is-loading { overflow: hidden; height: 100vh; }
a { color: inherit; text-decoration: none; }
canvas { display: block; }
img { max-width: 100%; display: block; }
:focus-visible { outline: 2px solid var(--indigo-lt); outline-offset: 3px; border-radius: 2px; }

.eyebrow { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.22em; font-size: 0.72rem; font-weight: 500; color: var(--indigo-lt); }

/* Masked title lines (split in JS): each line rides up from behind its clip. */
.tline { display: block; overflow: hidden; padding-bottom: 0.08em; margin-bottom: -0.08em; }
.tline__in { display: block; will-change: transform; }

/* ===== Buttons ===== */
.btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.9rem 1.7rem; border-radius: 8px; font-family: var(--body); font-weight: 700; font-size: 0.95rem; cursor: pointer; border: 1px solid transparent; transition: transform 0.3s var(--ease), background 0.3s var(--ease), border-color 0.3s var(--ease); white-space: nowrap; }
.btn--amber { background: var(--amber); color: #201603; }
.btn--amber:hover { transform: translateY(-2px); background: #f6b45c; }
.btn--indigo { background: var(--indigo-grad); color: #fff; }
.btn--indigo:hover { transform: translateY(-2px); }
.btn--ghost { border-color: var(--line); color: var(--fg); background: rgba(255,255,255,0.03); }
.btn--ghost:hover { border-color: var(--indigo-lt); color: var(--indigo-lt); }

/* ===== Loader ===== */
.loader { position: fixed; inset: 0; z-index: 100; background: var(--bg); display: grid; place-items: center; }
.loader__inner { text-align: center; width: min(280px, 70vw); }
.loader__mark { font-family: var(--display); font-weight: 700; font-size: 1.4rem; letter-spacing: -0.02em; }
.loader__mark b { color: var(--indigo-lt); }
.loader__bar { height: 2px; background: var(--line); border-radius: 2px; margin-top: 1rem; overflow: hidden; }
.loader__fill { display: block; height: 100%; width: 100%; background: var(--indigo-grad); transform: scaleX(0); transform-origin: left; }
.loader__pct { font-family: var(--mono); font-size: 0.7rem; color: var(--muted); margin-top: 0.6rem; letter-spacing: 0.14em; }

/* ===== Nav ===== */
.nav { position: fixed; top: 0; left: 0; right: 0; z-index: 40; display: flex; align-items: center; justify-content: space-between; padding: 1.1rem clamp(1.2rem, 5vw, 3.5rem); transition: background 0.4s var(--ease), backdrop-filter 0.4s var(--ease), border-color 0.4s var(--ease); border-bottom: 1px solid transparent; }
.nav.is-stuck { background: rgba(20, 21, 26, 0.82); backdrop-filter: blur(12px); border-bottom-color: var(--line); }
/* Over the full-bleed scroll-video sections the nav stays clear so it never
   cuts a bar across the footage. Wins over is-stuck (same specificity, later). */
.nav.is-clear { background: transparent; backdrop-filter: none; border-bottom-color: transparent; }
.nav__brand { display: inline-flex; align-items: center; gap: 0.3rem; font-family: var(--display); font-weight: 700; font-size: 1.3rem; letter-spacing: -0.02em; }
.nav__logo { display: block; height: 34px; width: auto; }
.nav__brand b { color: var(--indigo-lt); }
.nav__links { display: flex; gap: 1.9rem; }
.nav__links a { font-size: 0.95rem; color: var(--muted); transition: color 0.25s var(--ease); }
.nav__links a:hover { color: var(--fg); }
.nav__actions { display: flex; align-items: center; gap: 1rem; }
.nav__phone { font-family: var(--mono); font-size: 0.82rem; letter-spacing: 0.06em; }
@media (max-width: 900px) { .nav__links { display: none; } }

/* ===== Scrub sections (image sequence pinned + scrubbed to scroll) ===== */
.scrub { position: relative; height: 400vh; background: var(--bg); }
.scrub__pin { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.scrub__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.scrub__scrim { position: absolute; inset: 0; pointer-events: none; }
#hero .scrub__pin { background: url("assets/frames/hero/0001.webp") center/cover no-repeat; }
#work .scrub__pin { background: url("assets/frames/work/0001.webp") center/cover no-repeat; }

/* ===== Hero ===== */
.hero__scrim { background: linear-gradient(90deg, rgba(20,21,26,0.9) 0%, rgba(20,21,26,0.55) 38%, rgba(20,21,26,0.15) 65%, transparent 100%), linear-gradient(to top, rgba(20,21,26,0.85), transparent 45%); }
.hero__content { position: absolute; left: clamp(1.2rem, 5vw, 4.5rem); bottom: clamp(3rem, 12vh, 7rem); max-width: 46rem; z-index: 3; }
.hero__title { font-family: var(--display); font-weight: 700; font-size: clamp(2.8rem, 8vw, 6.5rem); line-height: 0.95; letter-spacing: -0.03em; margin: 1rem 0 1.2rem; }
.hero__title b { color: var(--indigo-lt); }
.hero__sub { color: rgba(242,243,245,0.82); font-size: clamp(1rem, 1.4vw, 1.22rem); max-width: 42ch; }
.hero__cta { display: flex; gap: 0.8rem; flex-wrap: wrap; margin-top: 1.8rem; }
.hero__badges { display: flex; gap: 1.4rem; margin-top: 1.8rem; font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); flex-wrap: wrap; }
.hero__badges span { display: flex; align-items: center; gap: 0.45rem; }
.hero__badges i { width: 6px; height: 6px; border-radius: 50%; background: var(--amber); }

.scrollcue { position: absolute; left: 50%; bottom: 1.6rem; transform: translateX(-50%); z-index: 3; font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.24em; text-transform: uppercase; color: var(--muted); }
.scrollcue::after { content: ""; display: block; width: 1px; height: 28px; margin: 0.5rem auto 0; background: var(--indigo-lt); animation: cue 1.8s var(--ease) infinite; transform-origin: top; }
@keyframes cue { 0% { transform: scaleY(0); } 45% { transform: scaleY(1); transform-origin: top; } 55% { transform: scaleY(1); transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }

/* ===== Work (real footage) overlay ===== */
.work__scrim { background: linear-gradient(90deg, transparent 0%, rgba(20,21,26,0.2) 45%, rgba(20,21,26,0.72) 80%, rgba(20,21,26,0.92) 100%); }
.work__content { position: absolute; right: clamp(1.2rem, 5vw, 4.5rem); top: 50%; transform: translateY(-50%); max-width: 30rem; z-index: 3; text-align: right; }
.work__title { font-family: var(--display); font-weight: 700; font-size: clamp(2.2rem, 5vw, 4rem); line-height: 0.98; letter-spacing: -0.02em; margin: 0.8rem 0 1rem; }
.work__sub { color: rgba(242,243,245,0.8); font-size: clamp(0.98rem, 1.3vw, 1.12rem); margin-left: auto; max-width: 34ch; }
@media (max-width: 700px) {
  .work__content { text-align: left; left: clamp(1.2rem,5vw,4.5rem); right: auto; }
  .work__scrim { background: linear-gradient(to top, rgba(20,21,26,0.9), rgba(20,21,26,0.2) 60%); }
}
@media (max-width: 640px) { .scrub { height: 300vh; } }
@media (prefers-reduced-motion: reduce) { .scrollcue::after { animation: none; } }

/* ===== Section shell + editorial heads (number spine, matches Sun City) ===== */
.section { padding: clamp(4.5rem, 10vw, 8rem) clamp(1.2rem, 5vw, 4rem); }
.section-title { font-family: var(--display); font-weight: 700; line-height: 0.98; letter-spacing: -0.02em; font-size: clamp(2.2rem, 5.4vw, 4rem); }
.title-rule { display: block; width: 60px; height: 3px; background: var(--indigo-grad); margin: 1.2rem 0 0; border-radius: 2px; transform: scaleX(0); transform-origin: left; }
.section-head { display: grid; grid-template-columns: auto 1fr; align-items: start; column-gap: clamp(1rem, 3vw, 2.6rem); max-width: var(--wrap); margin: 0 auto clamp(2.5rem, 5vw, 4rem); }
.section-head__num { font-family: var(--display); font-weight: 700; line-height: 0.78; font-size: clamp(2.6rem, 7vw, 5.5rem); letter-spacing: -0.01em; color: transparent; -webkit-text-stroke: 1.3px rgba(123, 115, 242, 0.42); margin-top: -0.06em; user-select: none; }
.section-head__text { min-width: 0; }
.section-head .section-title { margin-top: 0.4rem; }
@media (max-width: 560px) { .section-head { grid-template-columns: 1fr; row-gap: 0.15rem; } .section-head__num { font-size: 2.7rem; line-height: 1; } }

/* ===== Placeholder image blocks (swap for real photos) ===== */
.ph { position: relative; aspect-ratio: 16 / 10; background: repeating-linear-gradient(45deg, #20222b, #20222b 12px, #1b1d25 12px, #1b1d25 24px); display: grid; place-items: center; }
.ph::after { content: attr(data-label); font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(242, 243, 245, 0.5); border: 1px dashed rgba(123, 115, 242, 0.5); padding: 0.5rem 0.9rem; border-radius: 6px; }

/* ===== Equipment ===== */
.equipment { background: var(--bg); }
.equip { max-width: var(--wrap); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.2rem, 3vw, 2rem); }
.equip-card { background: var(--bg-2); border: 1px solid var(--line); border-radius: 14px; overflow: hidden; display: flex; flex-direction: column; }
.equip-card__body { padding: clamp(1.4rem, 3vw, 2rem); display: flex; flex-direction: column; gap: 0.9rem; flex: 1; }
.equip-card__top { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.equip-card__top h3 { font-family: var(--display); font-weight: 700; font-size: clamp(1.4rem, 2.4vw, 1.9rem); letter-spacing: -0.01em; }
.equip-card__price { font-family: var(--mono); font-size: 0.85rem; color: var(--muted); white-space: nowrap; }
.equip-card__price strong { color: var(--amber); font-size: 1.5rem; font-family: var(--display); }
.equip-card__blurb { color: var(--muted); font-size: 0.98rem; }
.equip-card__specs { list-style: none; display: flex; flex-direction: column; gap: 0.5rem; }
.equip-card__specs li { font-size: 0.9rem; padding-left: 1.4rem; position: relative; }
.equip-card__specs li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 8px; height: 8px; border-radius: 2px; background: var(--indigo); }
.equip-card__specs strong { color: var(--amber); }
.equip-card .btn { margin-top: auto; align-self: flex-start; }
@media (max-width: 720px) { .equip { grid-template-columns: 1fr; } }

/* ===== Combo band ===== */
.combo { max-width: var(--wrap); margin: clamp(1.5rem, 4vw, 2.5rem) auto 0; background: var(--indigo-grad); border-radius: 14px; padding: clamp(1.6rem, 4vw, 2.6rem); display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; }
.combo__text { max-width: 44rem; }
.combo__text .eyebrow { color: rgba(255, 255, 255, 0.82); }
.combo__text h3 { font-family: var(--display); font-weight: 700; font-size: clamp(1.5rem, 3vw, 2.2rem); margin: 0.5rem 0 0.6rem; color: #fff; letter-spacing: -0.01em; }
.combo__text p { color: rgba(255, 255, 255, 0.9); font-size: 0.98rem; }
.combo .btn { flex: none; }

/* ===== How it works ===== */
.how { background: var(--bg-2); }
.how__grid { position: relative; max-width: var(--wrap); margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1.2rem, 2.5vw, 2rem); --draw: 0; }
/* Connector line runs through the node centers; JS scrubs --draw as you scroll. */
.how__grid::before { content: ""; position: absolute; top: 21px; left: 12.5%; right: 12.5%; height: 2px; background: var(--indigo-grad); transform: scaleX(var(--draw)); transform-origin: left; }
.how__step { text-align: center; }
.how__step span { position: relative; z-index: 2; display: grid; place-items: center; width: 44px; height: 44px; margin: 0 auto 1.1rem; border-radius: 50%; border: 1px solid rgba(123, 115, 242, 0.5); background: var(--bg-2); font-family: var(--mono); font-size: 0.85rem; color: var(--indigo-lt); }
.how__step h3 { font-family: var(--display); font-weight: 700; font-size: 1.2rem; letter-spacing: -0.01em; margin-bottom: 0.5rem; }
.how__step p { color: var(--muted); font-size: 0.92rem; max-width: 26ch; margin: 0 auto; }
@media (max-width: 820px) { .how__grid { grid-template-columns: 1fr 1fr; } .how__grid::before { display: none; } }
@media (max-width: 480px) { .how__grid { grid-template-columns: 1fr; } }

/* ===== Service area ===== */
.areas { background: var(--bg); }
.areas__note { color: var(--muted); margin-top: 1.4rem; max-width: 46ch; }
.areas__grid { max-width: var(--wrap); margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.areas__grid a { display: flex; align-items: center; gap: 0.5rem; background: var(--bg-2); padding: 1.1rem 1.3rem; font-family: var(--display); font-weight: 600; font-size: 1.05rem; letter-spacing: -0.01em; color: inherit; text-decoration: none; transition: background 0.25s var(--ease), color 0.25s var(--ease); }
.areas__grid a::after { content: "\2197"; margin-left: auto; font-size: 0.85em; color: var(--indigo-lt); opacity: 0; transform: translate(-3px, 3px); transition: opacity 0.25s var(--ease), transform 0.25s var(--ease); }
.areas__grid a:hover { background: var(--bg-3); color: var(--indigo-lt); }
.areas__grid a:hover::after { opacity: 1; transform: translate(0, 0); }
.areas__grid a:focus-visible { outline: 2px solid var(--indigo-lt); outline-offset: -2px; }
@media (max-width: 720px) { .areas__grid { grid-template-columns: 1fr 1fr; } }

/* ===== Reviews (drag-to-spin wheel) ===== */
.reviews { background: var(--bg); overflow: hidden; }
.reviews__wheel { position: relative; height: 340px; cursor: grab; }
.reviews__wheel:active { cursor: grabbing; }
.reviews__track { position: absolute; inset: 0; }
.review {
  position: absolute; top: 50%; left: 50%; width: min(520px, 82vw);
  background: var(--bg-2); border: 1px solid var(--line); border-radius: 12px;
  padding: clamp(1.6rem, 3vw, 2.2rem); will-change: transform, opacity; user-select: none;
}
.review.is-center { box-shadow: 0 18px 50px rgba(0, 0, 0, 0.45); border-color: rgba(123, 115, 242, 0.5); }
[data-theme="light"] .review.is-center { box-shadow: 0 18px 50px rgba(36, 31, 23, 0.14); }
.review__stars { display: inline-flex; gap: 0.25rem; }
.review__stars svg { width: 17px; height: 17px; fill: var(--amber); }
.review__quote { margin-top: 1rem; color: var(--fg); font-size: 0.97rem; line-height: 1.6; }
.review__name { margin-top: 1.1rem; font-family: var(--display); text-transform: uppercase; letter-spacing: 0.14em; font-size: 0.72rem; color: var(--muted); }
.reviews__hint { position: absolute; left: 50%; bottom: -2.6rem; transform: translateX(-50%); font-family: var(--display); text-transform: uppercase; letter-spacing: 0.22em; font-size: 0.7rem; color: var(--muted); }
@media (max-width: 640px) { .reviews__wheel { height: 420px; } }

/* ===== Why (trust) ===== */
.why { background: var(--bg-2); }
.why__grid { max-width: var(--wrap); margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1rem, 2.5vw, 1.8rem); }
.why__item h3 { font-family: var(--display); font-weight: 700; font-size: 1.25rem; letter-spacing: -0.01em; margin-bottom: 0.6rem; }
.why__item h3::before { content: ""; display: block; width: 26px; height: 3px; background: var(--indigo-grad); margin-bottom: 0.9rem; border-radius: 2px; }
.why__item p { color: var(--muted); font-size: 0.92rem; }
@media (max-width: 820px) { .why__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .why__grid { grid-template-columns: 1fr; } }

/* ===== Book ===== */
.book { background: var(--bg); }
.book__inner { max-width: var(--wrap); margin: 0 auto; display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.book__copy { position: sticky; top: 100px; }
.book__copy .section-head { margin-bottom: 0; }
.book__sub { color: var(--muted); font-size: clamp(1rem, 1.4vw, 1.15rem); margin-top: 1.4rem; }
.book__contact { display: flex; flex-direction: column; gap: 0.9rem; margin-top: 1.8rem; }
.book__contact a { display: flex; flex-direction: column; font-family: var(--display); font-weight: 700; font-size: 1.3rem; letter-spacing: -0.01em; }
.book__contact-k { font-family: var(--mono); font-size: 0.68rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--indigo-lt); margin-bottom: 0.2rem; font-weight: 500; }
.book__fineprint { margin-top: 1.8rem; font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.68rem; color: var(--muted); }
.book__form { display: flex; flex-direction: column; gap: 1rem; background: var(--bg-2); border: 1px solid var(--line); border-radius: 14px; padding: clamp(1.4rem, 3vw, 2rem); }
.book__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.book__form label { display: flex; flex-direction: column; gap: 0.4rem; font-size: 0.85rem; color: var(--muted); }
.book__form input, .book__form select, .book__form textarea { background: #101116; border: 1px solid var(--line); color: var(--fg); padding: 0.85rem 0.95rem; border-radius: 8px; font-family: inherit; font-size: 0.95rem; }
.book__form input:focus, .book__form select:focus, .book__form textarea:focus { outline: none; border-color: var(--indigo-lt); }
.book__form .btn { margin-top: 0.3rem; }
.btn--lg { padding: 1.05rem 2.2rem; font-size: 1rem; }
.book__success { border: 1px solid rgba(123, 115, 242, 0.5); background: rgba(79, 70, 229, 0.12); border-radius: 10px; padding: 1.2rem 1.4rem; }
.book__success strong { font-family: var(--display); color: var(--indigo-lt); }
.book__success p { margin-top: 0.4rem; color: var(--muted); font-size: 0.95rem; }
.book__success a { color: var(--amber); font-weight: 700; }
.book__error { margin-top: 0.9rem; color: #f2a33c; font-size: 0.92rem; font-weight: 600; }
.book__hint { margin: -0.4rem 0 0.2rem; font-size: 0.78rem; color: var(--muted); line-height: 1.4; }

/* Delivery vs self-pickup. Two cards rather than a select: it is a priced
   choice, so the cost belongs on the option itself instead of behind a click. */
.book__choice { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; }
.book__choice[hidden] { display: none; }
.book__choice legend { font-size: 0.85rem; color: var(--muted); padding: 0 0 0.5rem; }
.book__radio {
  display: flex; align-items: flex-start; gap: 0.6rem; cursor: pointer;
  border: 1px solid var(--line); border-radius: 8px; padding: 0.8rem 0.9rem;
  background: rgba(242,243,245,0.05);
  transition: border-color 0.2s var(--ease), background 0.2s var(--ease);
}
.book__radio:hover { border-color: var(--indigo-lt); }
.book__radio input { accent-color: var(--indigo); margin-top: 0.15rem; flex: none; }
.book__radio span { display: flex; flex-direction: column; gap: 0.15rem; }
.book__radio strong { font-size: 0.9rem; color: var(--fg); font-weight: 700; }
.book__radio small { font-size: 0.76rem; color: var(--muted); line-height: 1.35; }
.book__radio:has(input:checked) { border-color: var(--indigo-lt); background: rgba(79,70,229,0.14); }
.book__radio:has(input:focus-visible) { outline: 2px solid var(--indigo-lt); outline-offset: 2px; }
[data-theme="light"] .book__radio { background: #fbf8f1; }
[data-theme="light"] .book__radio:has(input:checked) { background: rgba(79,70,229,0.10); }
@media (max-width: 520px) { .book__choice { grid-template-columns: 1fr; } }
@media (max-width: 820px) { .book__inner { grid-template-columns: 1fr; } .book__copy { position: static; } .book__row { grid-template-columns: 1fr; } }

/* ===== Brand logo (house + pickup) — transparent, sits on dark ===== */
.footer__logo { display: block; width: clamp(175px, 42vw, 235px); height: auto; margin: 0 0 0.3rem; }
/* Footer flips to eggshell in light theme, so swap the cream logo for an ink one
   (dark house lines) that reads directly on the light ground — no card. */
.footer__logo--light { display: none; }
[data-theme="light"] .footer__logo--dark { display: none; }
[data-theme="light"] .footer__logo--light { display: block; }

/* ===== Footer (Franklin Mountains vista) ===== */
.footer { position: relative; overflow: hidden; background: linear-gradient(to bottom, #17181b, #0a0b0d); border-top: 1px solid var(--indigo); padding: clamp(3rem, 7vh, 5rem) clamp(1.2rem, 5vw, 5rem) 2rem; }
.footer::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: url("assets/brand/franklin-star.jpg") center 58% / cover no-repeat; opacity: 0.4; filter: grayscale(1) contrast(1.05); }
.footer::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(to bottom, rgba(10,11,13,0.95) 0%, rgba(10,11,13,0.8) 34%, rgba(20,21,26,0.3) 58%, rgba(10,11,13,0.2) 74%, rgba(10,11,13,0.92) 100%); }
.footer__main, .footer__legal { position: relative; z-index: 2; }
.footer__vista { position: relative; height: clamp(200px, 26vw, 360px); }
.footer__main { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.3fr; gap: clamp(1.6rem, 4vw, 3rem); padding-bottom: clamp(2.4rem, 5vw, 3.4rem); }
.footer__name { font-family: var(--display); font-weight: 700; font-size: 1.4rem; letter-spacing: -0.02em; }
.footer__name em { font-style: normal; color: var(--indigo-lt); }
.footer__tag { color: var(--muted); font-size: 0.9rem; margin-top: 1rem; max-width: 34ch; line-height: 1.6; }
.footer__socialrow { display: flex; gap: 0.7rem; margin-top: 1.2rem; }
.footer__socialrow a { border: 1px solid var(--line); border-radius: 6px; padding: 0.55rem 1rem; font-size: 0.85rem; transition: border-color 0.3s var(--ease), color 0.3s var(--ease); }
.footer__socialrow a:hover { border-color: var(--indigo-lt); color: var(--indigo-lt); }
.footer__col h4 { font-family: var(--mono); text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.72rem; color: var(--indigo-lt); margin-bottom: 1.1rem; }
.footer__col a, .footer__col span { display: block; color: var(--muted); font-size: 0.92rem; margin-bottom: 0.6rem; transition: color 0.3s var(--ease); }
.footer__col a:hover { color: var(--fg); }
.footer__legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.8rem; color: var(--muted); font-size: 0.8rem; border-top: 1px solid var(--line); margin-top: clamp(1.6rem, 4vh, 2.4rem); padding-top: 1.5rem; }
.footer__credit { position: relative; z-index: 2; text-align: center; margin-top: 1.2rem; font-size: 0.74rem; letter-spacing: 0.04em; color: var(--muted); }
.footer__credit a { color: var(--indigo-lt); text-decoration: none; font-weight: 600; transition: color 0.25s var(--ease); }
.footer__credit a:hover { text-decoration: underline; }
@media (max-width: 860px) { .footer__main { grid-template-columns: 1fr 1fr; } .footer__brandcol { grid-column: 1 / -1; } }
@media (max-width: 520px) { .footer__main { grid-template-columns: 1fr; } }

/* ===== Sticky mobile call bar ===== */
.callbar { display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 80; border-top: 1px solid var(--indigo); background: rgba(20, 21, 26, 0.96); backdrop-filter: blur(10px); padding-bottom: env(safe-area-inset-bottom); }
.callbar a { flex: 1; text-align: center; padding: 1rem 0.5rem; font-weight: 700; font-size: 0.95rem; }
.callbar__call { background: var(--amber); color: #201603; }
.callbar__est { color: var(--indigo-lt); }
@media (max-width: 720px) { .callbar { display: flex; } .footer { padding-bottom: 5.2rem; } }
/* The fixed call bar covers Call + Book on mobile, so drop the duplicate phone
   number and Book button from the nav (they were overflowing) — keep the logo
   + theme toggle. */
@media (max-width: 720px) { .nav__phone, .nav__actions .btn { display: none; } }

/* ===== Nav theme toggle ===== */
.nav__theme { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); background: none; color: var(--fg); cursor: pointer; transition: border-color 0.3s var(--ease), color 0.3s var(--ease); }
.nav__theme:hover { border-color: var(--indigo-lt); color: var(--indigo-lt); }
.nav__theme svg { width: 18px; height: 18px; }
.nav__theme .ic-moon { display: none; }
[data-theme="light"] .nav__theme .ic-sun { display: none; }
[data-theme="light"] .nav__theme .ic-moon { display: block; }

/* ===== Booking calendar (demo availability; wire to KasaPro) ===== */
.cal { border: 1px solid var(--line); border-radius: 10px; background: #0e0f11; padding: 1.1rem 1.2rem 1rem; }
.cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.9rem; }
.cal__month { font-family: var(--display); font-weight: 700; letter-spacing: -0.01em; font-size: 1rem; }
.cal__nav { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: none; color: var(--fg); cursor: pointer; font-size: 0.95rem; transition: border-color 0.3s var(--ease), color 0.3s var(--ease), opacity 0.2s; }
.cal__nav:hover:not(:disabled) { border-color: var(--indigo-lt); color: var(--indigo-lt); }
.cal__nav:disabled { opacity: 0.25; cursor: default; }
.cal__dow, .cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal__dow span { text-align: center; font-family: var(--mono); text-transform: uppercase; font-size: 0.68rem; letter-spacing: 0.1em; color: var(--muted); padding-bottom: 0.4rem; }
.cal__day { aspect-ratio: 1; border-radius: 6px; border: 1px solid transparent; background: rgba(242,243,245,0.05); color: var(--fg); font-size: 0.82rem; cursor: pointer; font-family: inherit; transition: background 0.2s var(--ease), border-color 0.2s var(--ease); }
.cal__day.is-avail:hover { border-color: var(--indigo-lt); }
.cal__day.is-past { background: none; color: rgba(242,243,245,0.18); cursor: default; }
.cal__day.is-booked { background: rgba(79,70,229,0.14); color: rgba(242,243,245,0.28); text-decoration: line-through; cursor: default; }
/* Free later that day: a corner wedge in amber, the colour already used for
   calls to action, so a turnaround day reads as bookable-with-a-caveat rather
   than as a third availability state competing with booked/free. */
.cal__day.is-partial { position: relative; }
.cal__day.is-partial::after {
  content: ""; position: absolute; top: 3px; right: 3px;
  width: 0; height: 0; border-top: 7px solid var(--amber);
  border-left: 7px solid transparent; border-radius: 1px;
}
.cal__day.is-sel { background: rgba(79,70,229,0.32); }
.cal__day.is-edge { background: var(--indigo-grad); color: #fff; font-weight: 700; }
.cal__legend { display: flex; gap: 1.2rem; flex-wrap: wrap; margin-top: 0.9rem; font-size: 0.75rem; color: var(--muted); }
.cal__legend span { display: inline-flex; align-items: center; gap: 0.4rem; }
.cal__swatch { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.cal__swatch--avail { background: rgba(242,243,245,0.15); }
.cal__swatch--booked { background: rgba(79,70,229,0.32); }
.cal__swatch--partial { background: var(--amber); }
.cal__swatch--sel { background: var(--indigo-lt); }

/* Pickup / return hour pickers, matching the booking form's field styling. */
.cal__times { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; margin-top: 0.9rem; }
/* The return field is only shown for same-day rentals. `display: flex` below
   would otherwise beat the UA stylesheet's rule for [hidden], leaving the
   field visible however the attribute is set. */
.cal__timefield[hidden] { display: none; }
.cal__times:has(.cal__timefield[hidden]) { grid-template-columns: 1fr; }
.cal__timefield { display: flex; flex-direction: column; gap: 0.3rem; font-family: var(--mono); text-transform: uppercase; font-size: 0.68rem; letter-spacing: 0.1em; color: var(--muted); }
.cal__time {
  font-family: var(--body); font-size: 0.88rem; text-transform: none; letter-spacing: 0;
  color: var(--fg); background: rgba(242,243,245,0.05);
  border: 1px solid var(--line); border-radius: 6px; padding: 0.55rem 0.6rem;
  cursor: pointer; transition: border-color 0.2s var(--ease);
}
.cal__time:hover, .cal__time:focus-visible { border-color: var(--indigo-lt); }
.cal__summary { margin-top: 0.8rem; font-size: 0.88rem; color: var(--fg); border-top: 1px solid var(--line); padding-top: 0.8rem; }

/* ===== Equipment drag-to-spin turntable (dump trailer; Bobcat when its clip
   lands). A dark "showroom screen" in both themes, since the render has a
   studio-dark ground. ===== */
.equip-media { position: relative; aspect-ratio: 16 / 10; background: radial-gradient(120% 120% at 50% 30%, #202228 0%, #101114 72%); overflow: hidden; }
.spin__canvas { position: absolute; inset: 0; width: 100%; height: 100%; cursor: grab; touch-action: pan-y; }
.spin__canvas:active { cursor: grabbing; }
.equip-spinhint { position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%); z-index: 2; font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(242,243,245,0.78); background: rgba(20,21,26,0.45); backdrop-filter: blur(4px); border: 1px solid rgba(242,243,245,0.12); padding: 0.42rem 0.85rem; border-radius: 100px; pointer-events: none; transition: opacity 0.4s var(--ease); }
.equip-media.is-spun .equip-spinhint { opacity: 0; }
