:root{
    /* Sampled from TekRV logo — see /tekrv/content/brand.md */
    --ink:#000000; --slate:#1a1a1a; --body:#3f3f3f; --line:#e3e3e3; --bg:#fff;
    --wash:#f6f6f6; --accent:#ff1818; --accent-dk:#cc0f0f; --gold:#e8a317; --green:#1e7d4f;
  }
  *{box-sizing:border-box;margin:0;padding:0;}
  body{font-family:-apple-system,'Segoe UI',Roboto,Helvetica,sans-serif;color:var(--body);line-height:1.6;background:var(--bg);}
  .rev-banner{background:#1B5E33;color:#fff;padding:8px 20px;font-size:12.5px;text-align:center;}
  .rev-banner a{color:#9fd7b2;}
  .wrap{max-width:1080px;margin:0 auto;padding:0 22px;}

  /* header */
  /* Steve 8/17: black bar, white text — the service-area list is a positioning
     statement (Summerlin second, Henderson third) and needs to read cleanly. */
  .topbar{background:var(--ink);color:#fff;font-size:12.5px;padding:7px 0;font-weight:500;}
  .topbar .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;}
  header.nav{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;}
  header.nav .wrap{display:flex;align-items:center;justify-content:space-between;padding-top:12px;padding-bottom:12px;gap:16px;}
  .logo img{display:block;height:52px;width:auto;}
  .footlogo img{display:block;height:46px;width:auto;margin-bottom:12px;}
  nav ul{display:flex;gap:20px;list-style:none;font-size:14px;font-weight:600;}
  nav a{color:var(--slate);text-decoration:none;}
  nav a:hover{color:var(--accent);}
  .navcta{display:flex;align-items:center;gap:10px;}
  /* Mobile menu: CSS-only checkbox toggle — no JS dependency, works on every
     page. Checkbox is visually hidden but focusable so keyboard toggling works. */
  .navtoggle{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none;}
  .burger{display:none;cursor:pointer;flex-direction:column;justify-content:center;gap:5px;
    width:42px;height:38px;padding:8px 9px;border:1px solid var(--line);border-radius:6px;background:#fff;}
  .burger span{display:block;height:3px;background:var(--ink);border-radius:2px;}
  .navtoggle:focus-visible ~ .burger{outline:2px solid var(--accent);outline-offset:2px;}
  .m-req{display:none;}
  .callbtn{background:var(--accent);color:#fff;text-decoration:none;font-weight:800;font-size:15px;padding:11px 18px;border-radius:6px;white-space:nowrap;}
  .callbtn:hover{background:var(--accent-dk);}
  /* Primary conversion action lives in the nav on every page — not in the hero. */
  .reqbtn{background:var(--ink);color:#fff;text-decoration:none;font-weight:800;font-size:15px;
    padding:11px 18px;border-radius:6px;white-space:nowrap;border:2px solid var(--ink);}
  .reqbtn:hover{background:#fff;color:var(--ink);}
  @media(max-width:1080px){ .reqbtn{display:none;} }

  /* hero — "Alice at sunset on the Strip", v4
     GEOMETRY (measured from hero-alice-sunset-original.png, 1672×941, aspect 1.777):
       Alice        y 33%–87%,  x 17%–81%
       Sky band     y 0%–33%          <- the ONLY place the card may live
       Landmarks    Caesars/High Roller x 4–18%, Paris x 73–78%, Stratosphere x 88–92%
     Anchored TOP (`50% 0%`): maximises the sky band, and the only thing ever cropped
     is dead asphalt below her wheels. Height is 60vw so the sky band grows with the
     viewport and the card always clears her roof rack (verified 1000–2560px).
     Never anchor centre — it crops the rack and the wheels at once. */
  .hero{position:relative;color:#fff;padding:0;border-bottom:5px solid var(--accent);
    overflow:hidden;background:#1a0f12;height:clamp(520px,60vw,900px);}
  /* Photo caps at 1500px and centres: past that the frame would get wider without
     getting taller, and cover would start trimming her tires. Ink fills the sides. */
  .hero-bg{position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);
    width:100%;max-width:1500px;
    background-image:url('/assets/hero-alice-1600.jpg');background-size:cover;background-position:50% 0%;}
  @media (min-resolution:1.5dppx),(min-width:1700px){ .hero-bg{background-image:url('/assets/hero-alice-2400.jpg');} }
  /* Very light wash — the sunset is the asset, don't mute it. Legibility is the
     card's job, not the scrim's. Warm-black tint so it never greys the oranges. */
  .hero-scrim{position:absolute;inset:0;background:
    linear-gradient(180deg,rgba(18,8,10,.20) 0%,rgba(18,8,10,.06) 38%,rgba(12,8,10,.04) 68%,rgba(12,8,10,.20) 100%);}
  .hero .wrap{position:relative;z-index:2;height:100%;}
  .hero-grid{display:block;padding:clamp(20px,2.4vw,34px) 0 0;}

  /* The text panel lives ENTIRELY in the sky band above Alice — it must never
     grow tall enough to touch the roof rack. Everything inside scales with vw so
     the card's height stays proportional to the sky band as the window resizes.
     Rule: no buttons in here. The CTAs live in the nav (.navcta) on every page. */
  .hero-card{max-width:clamp(330px,42vw,530px);background:rgba(9,12,18,.86);
    -webkit-backdrop-filter:blur(10px) saturate(115%);backdrop-filter:blur(10px) saturate(115%);
    border:1px solid rgba(255,255,255,.14);border-left:5px solid var(--accent);
    border-radius:12px;padding:clamp(18px,1.9vw,26px) clamp(20px,2.1vw,30px);
    box-shadow:0 18px 50px rgba(0,0,0,.45);}
  .hero h1{font-size:clamp(25px,2.7vw,38px);line-height:1.1;color:#fff;letter-spacing:-.7px;margin-bottom:10px;}
  .hero h1 span{display:block;}
  .photo-note{position:absolute;right:12px;bottom:10px;z-index:3;font-size:10.5px;color:rgba(255,255,255,.72);background:rgba(0,0,0,.55);padding:4px 9px;border-radius:4px;}
  /* Inside the card everything sits on a known dark background — no text-shadows,
     no chips, no per-element hacks needed. */
  .hero p.lede{font-size:clamp(14px,1.35vw,17px);color:#dfe3e8;margin-bottom:10px;}
  .hero .btns{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px;}
  .btn{display:inline-block;text-decoration:none;font-weight:800;font-size:16px;padding:14px 24px;border-radius:6px;}
  .btn-p{background:var(--accent);color:#fff;}
  .btn-p:hover{background:var(--accent-dk);}
  .btn-s{background:rgba(255,255,255,.10);color:#fff;border:2px solid rgba(255,255,255,.55);}
  .btn-s:hover{background:rgba(255,255,255,.18);border-color:#fff;}
  .hero .meta{font-size:13.5px;color:#b9c0c9;}
  .hero .meta .star{color:var(--gold);}
  .photo{background:repeating-linear-gradient(45deg,#333,#333 10px,#2c2c2c 10px,#2c2c2c 20px);border-radius:10px;height:270px;display:flex;align-items:center;justify-content:center;color:#c9c9c9;font-size:13px;font-style:italic;text-align:center;padding:20px;border:1px solid rgba(255,255,255,.18);}

  /* trust */
  .trust{background:var(--wash);border-bottom:1px solid var(--line);padding:18px 0;}
  .trust .wrap{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;}
  .tr{font-size:13px;font-weight:700;color:var(--slate);display:flex;align-items:center;gap:7px;}
  .tr .st{color:var(--gold);}

  /* sections */
  section{padding:56px 0;}
  section.alt{background:var(--wash);}
  h2{font-size:31px;color:var(--ink);letter-spacing:-.5px;margin-bottom:10px;line-height:1.2;}
  .sec-lede{font-size:16.5px;margin-bottom:26px;max-width:720px;}

  /* house/truck */
  .hs{display:grid;grid-template-columns:1fr 1fr;gap:22px;}
  .hs-card{border:1px solid var(--line);border-radius:10px;padding:24px;background:#fff;}
  .hs-card.yes{border-top:4px solid var(--accent);}
  .hs-card.no{border-top:4px solid #b8b8b8;}
  .hs-card h3{font-size:18px;color:var(--ink);margin-bottom:12px;}
  .hs-card ul{list-style:none;font-size:15px;}
  .hs-card li{padding:5px 0 5px 26px;position:relative;}
  .hs-card.yes li:before{content:"✓";position:absolute;left:0;color:var(--accent-dk);font-weight:900;}
  .hs-card.no li:before{content:"✕";position:absolute;left:0;color:#9d9d9d;font-weight:900;}
  .referral{margin-top:16px;padding:13px 16px;background:var(--wash);border-left:3px solid var(--accent);font-size:14.5px;border-radius:0 6px 6px 0;}

  /* services */
  .svc{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
  .svc a{display:block;text-decoration:none;border:1px solid var(--line);border-radius:9px;padding:18px 16px;background:#fff;transition:.15s;}
  .svc a:hover{border-color:var(--accent);box-shadow:0 4px 14px rgba(0,0,0,.07);transform:translateY(-2px);}
  .ic{display:block;width:30px;height:30px;margin-bottom:11px;stroke:var(--accent);stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round;}
  .svc a:hover .ic{stroke:var(--accent-dk);}
  .ic-sm{width:17px;height:17px;stroke:var(--accent);stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
  .ic-btn{width:17px;height:17px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px;margin-right:6px;}
  .svc h3{font-size:15px;color:var(--ink);margin-bottom:3px;}
  .svc p{font-size:12.5px;color:#7d7d7d;line-height:1.45;}

  /* area + parks */
  .area{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:center;}
  /* Live Leaflet map (8/17). Replaced the illustrated sepia map: its highway
     network was fictional (showed a "515" that's been I-11 for years) and the
     Boulder Highway parks were scattered across the valley instead of sitting
     within two miles of each other. Park coordinates now come from street
     addresses. Google tiles are not used — their terms forbid it outside the
     official APIs. */
  .mapwrap{position:relative;margin-top:22px;border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 3px 16px rgba(0,0,0,.09);}
  .mapwrap img{display:block;width:100%;height:auto;}
  /* Height: enough that the Nellis-to-Bermuda-Palms pin span fits at city
     zoom (needs ~600px for z11), but capped at 62vh so the map never
     dominates a short screen — on a 720p monitor 600px was the whole frame. */
  #tekrv-map{height:clamp(360px,min(48vw,62vh),600px);width:100%;background:var(--wash);z-index:1;}
  /* Every pin identical — Steve flagged that two parks were baked into the old
     artwork while three had HTML pins, so they didn't match. */
  .tekrv-pin i{display:block;width:16px;height:16px;border-radius:50% 50% 50% 0;
    background:var(--accent);transform:rotate(-45deg);
    box-shadow:0 1px 5px rgba(0,0,0,.5);border:2px solid #fff;}
  /* Most-frequented parks: bigger, darker pin so they read as the anchors */
  .tekrv-pin-featured i{width:22px;height:22px;background:var(--accent-dk);
    border-width:3px;box-shadow:0 2px 7px rgba(0,0,0,.55);}
  /* Pin labels. Featured parks get always-on labels; the rest label on hover
     (and everything labels once the user zooms past 11.5). */
  .tekrv-lbl{background:rgba(255,255,255,.92);border:1px solid #d8d8d8;border-radius:4px;
    color:var(--ink);font-weight:700;font-size:11.5px;line-height:1.2;padding:2px 7px;
    box-shadow:0 1px 4px rgba(0,0,0,.18);white-space:nowrap;}
  .tekrv-lbl.tekrv-lbl-f{font-size:12.5px;border-color:var(--accent-dk);}
  .leaflet-tooltip-top.tekrv-lbl::before{border-top-color:#d8d8d8;}
  /* "We also serve" — the smaller parks: compact multi-column name list */
  .alsolist{columns:3;column-gap:34px;margin:10px 0 0;padding:0;list-style:none;
    font-size:14.5px;color:#3f3f3f;}
  .alsolist li{margin:0 0 12px;padding-left:16px;position:relative;break-inside:avoid;}
  .alsolist li::before{content:"";position:absolute;left:0;top:7px;width:7px;height:7px;
    border-radius:50%;background:var(--accent);}
  .alsolist li small{display:block;color:#8f8f8f;font-size:12.5px;margin-top:3px;line-height:1.35;}
  @media(max-width:860px){.alsolist{columns:2;}}
  @media(max-width:520px){.alsolist{columns:1;}}
  .leaflet-popup-content{margin:11px 14px;font-size:13.5px;line-height:1.45;}
  .leaflet-popup-content strong{color:var(--ink);font-size:14.5px;}
  .leaflet-popup-content .pop-sub{color:#7d7d7d;font-size:12.5px;}
  .leaflet-popup-content a{color:var(--accent-dk);font-weight:700;text-decoration:none;}
  .leaflet-container{font-family:inherit;}
  .pin{position:absolute;transform:translate(-50%,-100%);text-decoration:none;}
  .pin i{display:block;width:15px;height:15px;border-radius:50% 50% 50% 0;background:var(--accent);transform:rotate(-45deg);margin:0 auto;box-shadow:0 1px 4px rgba(0,0,0,.45);border:1.5px solid #fff;}
  .pin span{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:6px;font-size:10.5px;font-weight:800;color:#fff;background:rgba(20,22,28,.86);padding:2px 7px;border-radius:3px;white-space:nowrap;letter-spacing:.2px;}
  .pin:hover i{background:var(--accent-dk);} .pin:hover span{background:var(--accent-dk);}
  .maplegend{font-size:12.5px;color:#7d7d7d;margin-top:9px;font-style:italic;}
  @media(max-width:700px){ .pin span{display:none;} .pin i{width:12px;height:12px;} }
  .cities{font-size:17px;font-weight:800;color:var(--ink);margin-bottom:10px;}
  .parks{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px;}
  .parks a{text-decoration:none;border:1px solid var(--line);background:#fff;border-radius:8px;padding:14px 16px;font-size:14px;font-weight:700;color:var(--slate);}
  .parks a:hover{border-color:var(--accent);color:var(--accent);}
  .parks a small{display:block;font-weight:500;font-size:12px;color:#8f8f8f;margin-top:2px;}

  /* reviews */
  .revs{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
  .rv{border:1px solid var(--line);border-radius:10px;padding:20px;background:#fff;}
  .rv{border-top:3px solid var(--accent);}
  .rv .stars{color:var(--gold);font-size:15px;letter-spacing:2px;margin-bottom:8px;}
  .rv p{font-size:14.5px;color:var(--slate);margin-bottom:10px;}
  .rv cite{font-size:12.5px;color:#8f8f8f;font-style:normal;font-weight:700;}

  /* cta + faq */
  .ctabox{background:var(--ink);color:#fff;border-radius:12px;padding:36px;display:grid;grid-template-columns:1.1fr .9fr;gap:32px;align-items:center;border-left:6px solid var(--accent);}
  .ctabox h2{color:#fff;font-size:27px;}
  .ctabox p{color:#cfcfcf;font-size:15.5px;margin-bottom:18px;}
  .form{background:#fff;border-radius:9px;padding:20px;}
  .form label{display:block;font-size:12px;font-weight:800;color:var(--slate);text-transform:uppercase;letter-spacing:.6px;margin:10px 0 4px;}
  .form .f{border:1px solid #d2d2d2;border-radius:6px;padding:11px 12px;font-size:14px;color:#9d9d9d;background:#fcfcfc;}
  .form .btn-p{width:100%;text-align:center;margin-top:16px;}
  .faq{max-width:800px;}
  .faq details{border-bottom:1px solid var(--line);padding:15px 0;}
  .faq summary{font-size:16.5px;font-weight:700;color:var(--ink);cursor:pointer;list-style:none;display:flex;justify-content:space-between;}
  .faq summary::-webkit-details-marker{display:none;}
  .faq summary:after{content:"+";color:var(--accent);font-weight:900;}
  .faq details[open] summary:after{content:"–";}
  .faq p{font-size:15px;padding-top:9px;}

  footer{background:var(--ink);color:#a5a5a5;font-size:13.5px;padding:40px 0 28px;border-top:5px solid var(--accent);}
  footer .cols{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:30px;margin-bottom:24px;}
  footer h4{color:#fff;font-size:14px;margin-bottom:10px;text-transform:uppercase;letter-spacing:.8px;}
  footer a{color:#a5a5a5;text-decoration:none;display:block;padding:2px 0;}
  footer a:hover{color:var(--accent);}
  .certline{border-top:1px solid #333;padding-top:18px;font-size:12.5px;color:#858585;}
  .certline a{color:#b5b5b5;text-decoration:underline;text-underline-offset:2px;}
  .certline a:hover{color:#fff;}

  @media(max-width:1000px){
    /* Mobile: the sky band is too short to hold the card, so stop overlaying —
       card sits on solid ink above the photo, Alice gets the lower band whole. */
    .hero{height:auto;display:flex;flex-direction:column;background:var(--ink);}
    .hero-grid{padding:22px 0 24px;order:1;}
    .hero-card{max-width:none;background:none;border:none;border-left:none;
      backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;padding:0;}
    .hero h1{font-size:30px;}
    .hero p.lede{font-size:16px;}
    /* Photo gets its own band below the copy. 56vw ≈ the image's own proportions,
       and `50% 42%` keeps rack-to-wheels in frame while trimming spare asphalt. */
    .hero-bg{position:relative;order:2;transform:none;left:auto;max-width:none;
      height:56vw;min-height:215px;max-height:340px;
      background-position:50% 42%;background-image:url('/assets/hero-alice-1000.jpg');}
    .hero-scrim{display:none;}
    .area,.hs,.ctabox{grid-template-columns:1fr;}
    .svc{grid-template-columns:repeat(2,1fr);}
    .revs,.parks{grid-template-columns:1fr;}
    /* Hamburger replaces the inline links: panel drops from the sticky header */
    .burger{display:flex;}
    header.nav nav{position:absolute;top:100%;left:0;right:0;background:#fff;display:none;
      border-bottom:1px solid var(--line);box-shadow:0 12px 26px rgba(0,0,0,.14);}
    .navtoggle:checked ~ nav{display:block;}
    header.nav nav ul{display:flex;flex-direction:column;gap:0;padding:4px 0 8px;}
    header.nav nav li a{display:block;padding:13px 22px;font-size:15.5px;border-top:1px solid var(--wash);}
    .m-req{display:block;}
    .m-req a{color:var(--accent-dk);font-weight:800;}
    .hero h1{font-size:32px;}
  }

/* ---------- interior page styles ---------- */
.page-hero{background:var(--ink);color:#fff;padding:38px 0 34px;border-bottom:5px solid var(--accent);}
.page-hero h1{color:#fff;font-size:38px;letter-spacing:-.7px;line-height:1.15;margin-bottom:12px;}
.page-hero p.lede{color:#d2d2d2;font-size:18px;max-width:760px;margin-bottom:20px;}
.crumb{font-size:12.5px;color:#9a9a9a;margin-bottom:14px;}
.crumb a{color:#c9c9c9;text-decoration:none;} .crumb a:hover{color:var(--accent);}
article{padding:52px 0;}
article .wrap{max-width:860px;}
article h2{font-size:27px;margin:36px 0 12px;}
article h2:first-child{margin-top:0;}
article h3{font-size:19px;color:var(--ink);margin:24px 0 8px;}
article p{font-size:16.5px;margin-bottom:15px;}
article ul{margin:0 0 18px 20px;font-size:16.5px;}
article li{margin-bottom:7px;}
article a{color:var(--accent-dk);}
.callout{background:var(--wash);border-left:4px solid var(--accent);border-radius:0 8px 8px 0;padding:16px 20px;margin:22px 0;font-size:16px;}
.callout strong{color:var(--ink);}
.anchor-sec{scroll-margin-top:80px;border-top:1px solid var(--line);padding-top:28px;margin-top:34px;}
.anchor-sec:first-of-type{border-top:none;margin-top:0;}
.tag-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 16px;}
.tag-row span{font-size:12.5px;font-weight:700;background:var(--wash);border:1px solid var(--line);border-radius:14px;padding:4px 12px;color:var(--slate);}
.cta-strip{background:var(--ink);color:#fff;border-radius:12px;padding:28px 32px;margin:34px 0 0;display:flex;justify-content:space-between;align-items:center;gap:22px;flex-wrap:wrap;border-left:6px solid var(--accent);}
.cta-strip h3{color:#fff;font-size:21px;margin:0 0 4px;}
.cta-strip p{color:#c9c9c9;font-size:15px;margin:0;}
.symptoms{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 20px;}
.symptoms div{border:1px solid var(--line);border-radius:7px;padding:12px 14px;font-size:15px;background:#fff;}
.symptoms b{color:var(--ink);}
@media(max-width:700px){ .symptoms{grid-template-columns:1fr;} .page-hero h1{font-size:29px;} .cta-strip{flex-direction:column;align-items:flex-start;} }
