/* ══════════════════════════════════════════════════════════════════
   booking.css — the Reservar drawer.
   Shared by every page. Reads the same custom properties as the site,
   so the colour picker on the home page drives it here too.
   ══════════════════════════════════════════════════════════════════ */
/* ══ reservar — the booking drawer ═══════════════════════════════════
     A decided buyer arrives from a pasted link and never scrolls, so the way
     in is pinned at every scroll depth and the flow runs in an overlay that
     never unmounts the terrain underneath. Deep-linkable: #reservar, or
     #reservar=andes-peru to land straight on one departure.
     Everything here reads the same custom properties as the page, so the
     colour picker drives it too. */

  #rvOpen{
    position:fixed;right:clamp(20px,3vw,34px);top:20px;z-index:56;
    display:flex;align-items:center;gap:10px;
    font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;letter-spacing:.005em;
    color:var(--page);background:var(--accent);border:none;border-radius:99px;
    padding:13px 21px 13px 16px;cursor:pointer;
    transition:transform .55s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease;
    will-change:transform;box-shadow:0 8px 30px -14px #000;
  }
  #rvOpen:hover{transform:translate3d(0,-2px,0);box-shadow:0 14px 38px -16px #000}
  /* 16px on any touch device, and it is not a taste decision. This is a
     <button>, so tapping it gives it focus, and iOS zooms the page to fit a
     focused control whose text is under 16px — which is why this pill
     opened the drawer zoomed while "Reservar ahora", an <a>, opened it
     perfectly. Anchors never take focus. Danny found that by comparing the
     two, which is what finally named it. */
  @media (pointer: coarse){
    #rvOpen{font-size:16px;padding:12px 20px 12px 15px}
  }
  #rvOpen .pip{width:6px;height:6px;border-radius:99px;background:var(--page);display:block;
    animation:rvPip 4.2s ease-in-out infinite}
  @keyframes rvPip{0%,74%,100%{opacity:.34}84%{opacity:1}}
  @media(prefers-reduced-motion:reduce){#rvOpen .pip{animation:none;opacity:.6}}

  #rvVeil{position:fixed;inset:0;z-index:70;background:color-mix(in srgb,#08090A 62%,transparent);
    backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .45s ease}
  #rvPanel{
    position:fixed;top:0;right:0;bottom:0;z-index:71;
    width:min(690px,100vw);background:var(--page);color:var(--body);
    border-left:1px solid color-mix(in srgb,var(--body) 18%,transparent);
    display:flex;flex-direction:column;
    transform:translate3d(101%,0,0);will-change:transform;
    transition:transform .62s cubic-bezier(.2,.7,.2,1),
               box-shadow .62s cubic-bezier(.2,.7,.2,1);
    /* NO shadow while closed. The panel parks at translate 101%, which puts
       its left edge 7px past the viewport — but a 110px blur reaches back
       about 60px, so a closed drawer was painting a black fade down the
       right-hand side of every page. Measured: the ground ran 234,210,160
       until x=1356 and 219,196,149 by x=1430. The shadow belongs to the
       drawer being open, so it arrives with it. */
  }
  html.rv-open{overflow:hidden}
  html.rv-open #rvVeil{opacity:1;pointer-events:auto}
  html.rv-open #rvPanel{transform:translate3d(0,0,0);box-shadow:-40px 0 110px -50px #000}
  @media(prefers-reduced-motion:reduce){#rvPanel{transition:none}}

  .rv-head{padding:clamp(26px,3.4vw,40px) clamp(24px,3.4vw,44px) 0;flex:none}
  .rv-head-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
  .rv-head h3{font-family:var(--display),var(--sans),sans-serif;font-weight:400;
    font-size:clamp(28px,3.6vw,44px);line-height:1;letter-spacing:-.025em;
    color:var(--heading);margin-top:6px;max-width:15ch}
  #rvClose{background:none;border:1px solid color-mix(in srgb,var(--body) 26%,transparent);
    color:var(--body);width:38px;height:38px;border-radius:99px;cursor:pointer;flex:none;
    font-family:var(--sans),system-ui,sans-serif;font-size:15px;line-height:1;
    transition:border-color .2s ease,transform .3s cubic-bezier(.2,.7,.2,1)}
  #rvClose:hover{border-color:var(--accent);color:var(--accent);transform:rotate(90deg)}
  .rv-draft{display:inline-block;margin-top:18px;font-family:var(--sans),system-ui,sans-serif;font-size:13px;
    letter-spacing:.005em;color:var(--accent);
    border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);
    border-radius:99px;padding:6px 12px}

  .rv-steps{display:flex;gap:0;margin-top:26px;
    border-top:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-steps b{flex:1;font-family:var(--sans),system-ui,sans-serif;font-weight:400;font-size:13px;
    letter-spacing:.005em;color:var(--body);opacity:.4;
    padding:15px 0 13px;border-top:1px solid transparent;margin-top:-1px;
    transition:opacity .3s ease,border-color .3s ease,color .3s ease}
  .rv-steps b.on{opacity:1;color:var(--accent);border-top-color:var(--accent)}
  .rv-steps b.done{opacity:.75}

  .rv-body{flex:1;overflow-y:auto;overscroll-behavior:contain;
    padding:clamp(24px,3vw,34px) clamp(24px,3.4vw,44px) 34px;
    scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--body) 30%,transparent) transparent}
  .rv-pane{display:none}
  /* the panes are <section>s, so section{} and section:first-child{} were
     handing them the page's 168px gutters. Outrank both. */
  #rvBody .rv-pane{padding:0;max-width:none;margin-inline:0;min-height:0}
  .rv-pane.on{display:block;animation:rvIn .5s cubic-bezier(.2,.7,.2,1) both}
  @keyframes rvIn{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:none}}
  @media(prefers-reduced-motion:reduce){.rv-pane.on{animation:none}}
  .rv-lab{font-family:var(--sans),system-ui,sans-serif;font-size:13px;letter-spacing:.005em;
    color:var(--accent);margin-bottom:16px;display:block}
  .rv-note{font-family:var(--sans),system-ui,sans-serif;font-size:11.5px;line-height:1.85;color:var(--body);opacity:.66;
    margin-top:18px;max-width:52ch}

  /* the two lanes: a dated departure, or something for tomorrow */
  .rv-lanes{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-bottom:30px;
    background:color-mix(in srgb,var(--body) 16%,transparent);
    border:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-lane{background:var(--page);border:none;cursor:pointer;text-align:left;
    padding:16px 18px;color:var(--body);
    transition:background .3s ease,color .3s ease}
  .rv-lane b{display:block;font-family:var(--sans),sans-serif;font-weight:500;font-size:15px;
    letter-spacing:-.01em;color:var(--heading);transition:color .3s ease}
  .rv-lane span{display:block;margin-top:6px;font-family:var(--sans),system-ui,sans-serif;font-size:13px;
    letter-spacing:.005em;opacity:.6}
  .rv-lane[aria-pressed="true"]{background:var(--accent)}
  .rv-lane[aria-pressed="true"] b,.rv-lane[aria-pressed="true"] span{color:var(--page);opacity:1}

  /* a departure: the date is the product, so the date leads */
  .rv-empty{font-family:var(--sans),sans-serif;font-size:18px;line-height:1.4;color:var(--body);
    padding:22px 0 14px;border-top:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-empty-go{font-family:var(--sans),sans-serif;font-size:13.5px;color:var(--body);
    text-decoration:underline;text-underline-offset:4px}
  .rv-dep{display:grid;grid-template-columns:76px 1fr;gap:22px;width:100%;text-align:left;
    background:none;border:none;cursor:pointer;color:var(--body);
    padding:22px 20px 22px 16px;position:relative;
    border-top:1px solid color-mix(in srgb,var(--body) 16%,transparent);
    transition:background .3s ease}
  .rv-dep:last-of-type{border-bottom:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-dep:hover{background:color-mix(in srgb,var(--body) 5%,transparent)}
  .rv-dep[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 13%,transparent)}
  .rv-dep::before{content:'';position:absolute;left:0;top:-1px;bottom:0;width:2px;
    background:var(--accent);transform:scaleY(0);transform-origin:50% 0;
    transition:transform .4s cubic-bezier(.2,.7,.2,1)}
  .rv-dep[aria-pressed="true"]::before{transform:scaleY(1)}
  .rv-dep.out{opacity:.34;cursor:not-allowed}
  .rv-dep.out:hover{background:none}
  .rv-when{font-family:var(--mono);font-size:13.5px;letter-spacing:.005em;
    color:var(--accent);line-height:1.7;padding-top:3px}
  .rv-when b{display:block;font-family:var(--display),var(--sans),sans-serif;font-weight:400;
    font-size:30px;letter-spacing:-.03em;line-height:.9;color:var(--heading);margin-bottom:7px}
  .rv-dep h4{font-family:var(--sans),sans-serif;font-weight:500;font-size:18px;
    letter-spacing:-.015em;color:var(--heading)}
  .rv-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:9px;
    font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;letter-spacing:.005em;opacity:.66}
  .rv-price{display:block;margin-top:14px;font-family:var(--mono);font-size:13px;letter-spacing:.04em;
    color:var(--heading);font-variant-numeric:tabular-nums}
  .rv-price i{font-style:normal;font-size:13.5px;letter-spacing:.005em;
    opacity:.6;margin-left:7px}
  .rv-seats{display:block;margin-top:13px;max-width:210px}
  .rv-seats i{display:block;height:2px;background:color-mix(in srgb,var(--body) 18%,transparent);
    position:relative;overflow:hidden}
  .rv-seats i u{position:absolute;inset:0;background:var(--accent);transform-origin:0 50%;
    display:block;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
  .rv-seats span{display:block;margin-top:8px;font-family:var(--sans),system-ui,sans-serif;font-size:13px;
    letter-spacing:.005em;opacity:.6}

  /* lane two: pick a day in the next fortnight */
  .rv-days{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;margin-bottom:6px;
    scroll-snap-type:x mandatory;overscroll-behavior-x:contain;
    scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--body) 26%,transparent) transparent}
  .rv-day{flex:none;scroll-snap-align:start;width:62px;padding:12px 0 13px;cursor:pointer;
    background:none;color:var(--body);text-align:center;border-radius:2px;
    border:1px solid color-mix(in srgb,var(--body) 18%,transparent);
    font-family:var(--mono);font-size:13px;letter-spacing:.005em;
    transition:border-color .25s ease,background .25s ease,color .25s ease,transform .4s cubic-bezier(.2,.7,.2,1)}
  .rv-day b{display:block;font-family:var(--display),var(--sans),sans-serif;font-weight:400;
    font-size:21px;letter-spacing:-.02em;line-height:1;margin:6px 0 5px;color:var(--heading);
    transition:color .25s ease}
  .rv-day:hover{border-color:var(--accent);transform:translate3d(0,-2px,0)}
  .rv-day[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--page)}
  .rv-day[aria-pressed="true"] b{color:var(--page)}

  .rv-opts{display:grid;gap:1px;margin-top:26px;
    background:color-mix(in srgb,var(--body) 16%,transparent);
    border:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-opt{background:var(--page);border:none;cursor:pointer;text-align:left;color:var(--body);
    padding:19px 20px;display:flex;justify-content:space-between;align-items:center;gap:18px;
    transition:background .3s ease}
  .rv-opt:hover{background:color-mix(in srgb,var(--body) 5%,transparent)}
  .rv-opt[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 13%,transparent)}
  .rv-opt b{display:block;font-family:var(--sans),sans-serif;font-weight:500;font-size:16px;
    letter-spacing:-.01em;color:var(--heading)}
  .rv-opt span{display:block;margin-top:7px;font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;
    letter-spacing:.005em;opacity:.66}
  .rv-opt em{font-style:normal;font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;
    color:var(--heading);flex:none;font-variant-numeric:tabular-nums}
  .rv-opt.pending{cursor:not-allowed;opacity:.42}
  .rv-opt.pending:hover{background:none}

  /* party size */
  .rv-party{display:flex;align-items:center;gap:0;margin-top:12px;width:max-content;
    border:1px solid color-mix(in srgb,var(--body) 20%,transparent)}
  .rv-party button{width:46px;height:46px;background:none;border:none;cursor:pointer;
    color:var(--body);font-family:var(--sans),system-ui,sans-serif;font-size:17px;line-height:1;
    transition:background .25s ease,color .25s ease}
  .rv-party button:hover:not(:disabled){background:var(--accent);color:var(--page)}
  .rv-party button:disabled{opacity:.28;cursor:not-allowed}
  .rv-party output{width:62px;text-align:center;font-family:var(--display),var(--sans),sans-serif;
    font-size:21px;color:var(--heading);font-variant-numeric:tabular-nums;
    border-inline:1px solid color-mix(in srgb,var(--body) 20%,transparent);line-height:44px}

  /* who's coming */
  .rv-fields{display:grid;gap:24px;margin-top:6px}
  @media(min-width:560px){.rv-fields.two{grid-template-columns:1fr 1fr}}
  .rv-field label{display:block;font-family:var(--sans),system-ui,sans-serif;font-size:13px;letter-spacing:.005em;color:var(--accent);margin-bottom:10px}
  .rv-field input,.rv-field textarea{
    width:100%;background:none;color:var(--heading);font-family:var(--sans),sans-serif;
    font-size:16px;padding:11px 0;border:none;
    border-bottom:1px solid color-mix(in srgb,var(--body) 26%,transparent);
    border-radius:0;transition:border-color .3s ease}
  .rv-field textarea{resize:vertical;min-height:74px;line-height:1.55}
  .rv-field input:focus,.rv-field textarea:focus{outline:none;border-bottom-color:var(--accent)}
  .rv-field input::placeholder,.rv-field textarea::placeholder{color:var(--body);opacity:.34}
  .rv-field.bad input{border-bottom-color:#E0533C}

  /* the summary reuses the spec table idiom from the trip cards */
  .rv-sum{width:100%;border-collapse:collapse;font-family:var(--sans),system-ui,sans-serif;font-size:11.5px;
    letter-spacing:.005em;margin-top:4px}
  .rv-sum tr{border-top:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-sum tr:last-child{border-bottom:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  .rv-sum th{text-align:left;font-weight:400;opacity:.62;
    padding:14px 12px 14px 0;white-space:nowrap;vertical-align:top}
  .rv-sum td{text-align:right;padding:14px 0;color:var(--heading);
    font-variant-numeric:tabular-nums;letter-spacing:.02em}
  .rv-total{display:flex;justify-content:space-between;align-items:baseline;gap:20px;
    margin-top:26px;padding-top:22px;
    border-top:1px solid color-mix(in srgb,var(--accent) 40%,transparent)}
  .rv-total span{font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;letter-spacing:.005em;color:var(--accent)}
  .rv-total b{font-family:var(--display),var(--sans),sans-serif;font-weight:400;
    font-size:clamp(30px,4vw,44px);letter-spacing:-.03em;color:var(--heading);
    font-variant-numeric:tabular-nums}

  .rv-pays{display:grid;gap:1px;margin-top:12px;
    background:color-mix(in srgb,var(--body) 16%,transparent);
    border:1px solid color-mix(in srgb,var(--body) 16%,transparent)}
  @media(min-width:560px){.rv-pays{grid-template-columns:1fr 1fr}}
  .rv-pay{background:var(--page);border:none;cursor:pointer;text-align:left;color:var(--body);
    padding:18px 20px;transition:background .3s ease}
  .rv-pay:hover{background:color-mix(in srgb,var(--body) 5%,transparent)}
  .rv-pay[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 13%,transparent)}
  .rv-pay b{display:block;font-family:var(--sans),sans-serif;font-weight:500;font-size:15px;
    color:var(--heading)}
  .rv-pay span{display:block;margin-top:7px;font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;
    letter-spacing:.005em;opacity:.66}

  /* the seam where a real processor lands */
  .rv-seam{margin-top:28px;padding:18px 20px;
    border:1px dashed color-mix(in srgb,var(--accent) 46%,transparent);
    font-family:var(--sans),system-ui,sans-serif;font-size:11px;line-height:1.9;color:var(--body);opacity:.82}
  .rv-seam b{display:block;color:var(--accent);letter-spacing:.005em;
    font-size:13px;font-weight:400;margin-bottom:9px}

  .rv-foot{flex:none;display:flex;gap:12px;align-items:center;
    padding:18px clamp(24px,3.4vw,44px) calc(18px + env(safe-area-inset-bottom));
    border-top:1px solid color-mix(in srgb,var(--body) 16%,transparent);
    background:var(--page)}
  .rv-foot .rv-back{margin-right:auto;background:none;border:none;cursor:pointer;
    font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;letter-spacing:.005em;
    color:var(--body);opacity:.66;padding:12px 2px;transition:opacity .25s ease,color .25s ease}
  .rv-foot .rv-back:hover{opacity:1;color:var(--accent)}
  .rv-foot .rv-back[hidden]{display:none}
  .rv-go{display:inline-flex;align-items:center;gap:12px;border:none;cursor:pointer;
    font-family:var(--sans),system-ui,sans-serif;font-size:12px;letter-spacing:.005em;
    color:var(--page);background:var(--accent);padding:19px 28px;border-radius:2px;
    transition:transform .5s cubic-bezier(.2,.7,.2,1),opacity .3s ease;will-change:transform}
  .rv-go:hover:not(:disabled){transform:translate3d(0,-3px,0)}
  .rv-go:disabled{opacity:.34;cursor:not-allowed}
  .rv-go em{font-style:normal;opacity:.62;font-variant-numeric:tabular-nums}

  .trip-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:22px}
  .trip-cta .ask{margin-top:0}

  /* stays top-right on phones — bottom-right belongs to the altitude HUD */
  @media(max-width:620px){
    #rvOpen{top:16px;right:16px;padding:11px 17px 11px 13px}
    .rv-dep{grid-template-columns:62px 1fr;gap:16px}
    .rv-when b{font-size:25px}
    .rv-foot{padding-inline:24px}
    .rv-go{flex:1;justify-content:center;padding:18px 20px}
  }

  /* the hero now carries both doors: reserve, or ask first */
  .hero-cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:40px}
  .hero-cta .ask{margin-top:0}
  #approachHero .ask.ghost{background:none;color:#F6ECD4;
    box-shadow:inset 0 0 0 1px color-mix(in srgb,#F6ECD4 45%,transparent)}

  /* an optional extra that is too expensive to leave off the summary */
  .rv-addon{margin-top:26px}
  .rv-check{display:flex;align-items:center;gap:16px;width:100%;text-align:left;cursor:pointer;
    background:none;color:var(--body);padding:17px 18px;
    border:1px solid color-mix(in srgb,var(--body) 18%,transparent);
    transition:border-color .3s ease,background .3s ease}
  .rv-check:hover{border-color:var(--accent)}
  .rv-check[aria-pressed="true"]{border-color:var(--accent);
    background:color-mix(in srgb,var(--accent) 12%,transparent)}
  .rv-check i{flex:none;width:19px;height:19px;border-radius:2px;position:relative;
    border:1px solid color-mix(in srgb,var(--body) 40%,transparent);transition:background .25s ease,border-color .25s ease}
  .rv-check[aria-pressed="true"] i{background:var(--accent);border-color:var(--accent)}
  .rv-check[aria-pressed="true"] i::after{content:'';position:absolute;left:6px;top:2px;
    width:4px;height:9px;border:solid var(--page);border-width:0 2px 2px 0;transform:rotate(42deg)}
  .rv-check b{display:block;font-family:var(--sans),sans-serif;font-weight:500;font-size:15px;
    color:var(--heading)}
  .rv-check > span{flex:1}
  .rv-check > span span{display:block;margin-top:6px;font-family:var(--sans),system-ui,sans-serif;font-size:13.5px;
    letter-spacing:.005em;opacity:.66}
  .rv-check em{font-style:normal;flex:none;font-family:var(--mono);font-size:12.5px;
    letter-spacing:.04em;color:var(--heading);font-variant-numeric:tabular-nums}

/* ══ type ══════════════════════════════════════════════════════════════
   Mono is reserved for measured quantities — money, dates, altitudes.
   Every label in this drawer is Archivo with tracking. */
.rv-sum td,.rv-pay span,.rv-go em,#rvRentalSum{font-family:var(--mono)}
.rv-lane span,.rv-meta,.rv-seats span,.rv-lab,.rv-draft,.rv-steps b,
.rv-opt span,.rv-check > span span,.rv-field label,.rv-sum th,
.rv-total span,.rv-foot .rv-back,.rv-go{font-weight:500}
