/* s-visit.css v3b: edge-to-edge owner video, chalk block (quote, dense prices, facts, sticky video beside it at 900+), $10 popup dialog, footer = storefront photo.
   Square media. Motion is GSAP only (s-visit.js). */
.s-visit.sec{padding:0;background:var(--ink);overflow:clip}
.vs__grid{display:block;padding-bottom:var(--s6)}

/* ---- owner video ---- */
.vs__owner{position:relative}
.vs__panel{height:78svh;min-height:520px;margin-top:0;overflow:hidden;background:var(--ink-3);isolation:isolate}
.vs__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform-origin:50% 40%;will-change:transform}
.vs__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.4) 0%,rgba(10,10,10,0) 22%,rgba(10,10,10,0) 55%,rgba(10,10,10,.7) 100%);pointer-events:none}
.vs__caps{position:absolute;left:var(--s3);right:var(--s3);bottom:var(--s6);height:3.2em;font:800 28px/1.1 var(--display);letter-spacing:-.015em;color:#fff;
  text-align:center;text-shadow:0 2px 14px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.5);pointer-events:none}
.vs__caps{display:none} /* captions exist only while the video is playing (JS adds .is-playing; never in reduced motion) */
.vs__caps.is-playing{display:block}
.vs__cap{position:absolute;left:0;right:0;bottom:0;opacity:0;visibility:hidden;text-wrap:balance}
.vs__cap.is-on{opacity:1;visibility:visible}

/* ---- chalk block ---- */
.vs__col{display:block}
.vs__quote,.vs__prices,.vs__side{padding-left:var(--gut);padding-right:var(--gut)}
.vs__quote{padding-top:var(--s6);margin-bottom:var(--s5)}
.vs__side{display:flex;flex-direction:column}
.vs__h{font-size:32px;line-height:1.04;letter-spacing:-.03em;margin-bottom:var(--s2);text-wrap:pretty}
.vs__by{display:block}

/* ---- prices: dense rows ---- */
.vs__plabel{margin-bottom:12px}
.vs__list{list-style:none}
.vs__row{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);min-height:48px;padding:6px 0;border-top:1px solid rgba(10,10,10,.14)}
.vs__row:last-child{border-bottom:1px solid rgba(10,10,10,.14)}
.vs__name{min-width:0;display:flex;flex-direction:column;gap:1px}
.vs__svc{font:700 16px/1.2 var(--body);color:var(--ink)}
.vs__name .small{font-size:12.5px;line-height:1.3}
.vs__price{flex:none;font:800 24px/1 var(--display);letter-spacing:-.01em;color:var(--ink);white-space:nowrap}
.vs__price small{font:700 var(--t-label)/1 var(--body);letter-spacing:.14em;text-transform:uppercase;color:rgba(10,10,10,.62);margin-right:6px}
.vs__note{margin-top:var(--s1)}

/* ---- facts ---- */
.vs__shop{margin-top:var(--s5);display:flex;flex-direction:column}
.vs__fact{display:grid;grid-template-columns:84px 1fr;gap:var(--s2);padding:12px 0;border-top:1px solid rgba(10,10,10,.14);align-items:start}
.vs__fact:last-child{border-bottom:1px solid rgba(10,10,10,.14)}
.vs__fact dt{padding-top:4px}
.vs__fact dd{display:flex;flex-direction:column;gap:2px;min-width:0}
.vs__strong{font:700 var(--t-body)/1.3 var(--body);color:var(--ink)}
.vs__phone{display:inline-block;font:800 24px/1.2 var(--display);letter-spacing:-.01em;color:var(--ink)}
.vs__dir{align-self:flex-start;color:var(--ink)}
.vs__reopen{background:none;border:0;border-bottom:1.5px solid currentColor;border-radius:0;cursor:pointer;font:700 15px/1 var(--body);min-height:32px}

/* ---- footer: storefront photo, white type ---- */
.vs__foot{position:relative;overflow:hidden;min-height:620px;display:flex;align-items:flex-end;background:var(--ink-3);isolation:isolate}
.vs__foot::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(10,10,10,.5) 0%,rgba(10,10,10,.25) 30%,rgba(10,10,10,.78) 68%,rgba(10,10,10,.92) 100%)}
.vs__bg{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;object-position:50% 40%;z-index:-2;will-change:transform}
.vs__foot-in{width:100%;padding:var(--s8) var(--gut) calc(var(--s12) + var(--s5) + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--s1);color:#fff}
.vs__logo{width:64px;height:64px;margin-bottom:var(--s1)}
.vs__foot-name{font:800 22px/1.15 var(--display);letter-spacing:-.01em;color:#fff}
.vs__foot-addr{font:500 var(--t-small)/1.4 var(--body);color:rgba(255,255,255,.88)}
.vs__foot-links{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px var(--s2);margin-top:var(--s1);font:700 var(--t-small)/1.3 var(--body);color:#fff}
.vs__foot-links a{padding:6px 0}
.vs__copy{margin-top:var(--s2);font:500 13px/1.3 var(--body);color:rgba(255,255,255,.7)}

@media (hover:hover){ .vs__foot-links a:hover,.vs__phone:hover,.vs__dir:hover{opacity:.7} .vs__row:hover .vs__price{opacity:.6} }

@media (min-width:900px){
  .vs__grid{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;padding-bottom:0}
  .vs__owner{grid-column:1;grid-row:1}
  /* the video is sticky beside the one right column and travels with it; the section ends where the column ends */
  .s-visit .vs__panel{position:sticky;top:var(--nav-h);width:100%;height:calc(100svh - var(--nav-h));min-height:0;margin-left:0}
  .vs__caps{font-size:34px;bottom:var(--s10)}
  .vs__col{grid-column:2;grid-row:1;padding:var(--s12) var(--gut) var(--s5) var(--s10);display:flex;flex-direction:column;max-width:760px}
  .vs__quote,.vs__prices,.vs__side{padding-left:0;padding-right:0}
  .vs__quote{margin:0 0 var(--s8);padding:0}
  .vs__h{font-size:clamp(34px,3.3vw,48px);line-height:1.04;letter-spacing:-.03em;margin-bottom:var(--s3);text-wrap:pretty}
  .vs__svc{font-size:19px}
  .vs__price{font-size:30px}
  .vs__row{min-height:56px}
  .vs__name .small{font-size:14px}
  .vs__shop{margin-top:var(--s8)}
  .vs__foot{min-height:640px}
  .vs__foot-in{padding-bottom:var(--s10)}
  .vs__foot-name{font-size:28px}
}
/* owner 22:10: the footer photo shows the whole sign (their sign is the logo, so no second logo), text under it on ink */
.vs__foot{display:block;min-height:0;background:var(--ink)}
.vs__foot::after{inset:auto 0 auto 0;top:0;height:calc(100vw * 1.02);max-height:720px;
  background:linear-gradient(180deg,rgba(10,10,10,0) 55%,rgba(10,10,10,.85) 92%,var(--ink) 100%)}
.vs__bg{position:relative;top:auto;left:auto;display:block;width:100%;height:auto;max-height:720px;object-fit:cover;object-position:50% 35%}
.vs__foot-in{position:relative;padding-top:var(--s5) !important}
@media (min-width:900px){ .vs__foot{min-height:0} .vs__foot::after{height:640px}
  /* Omar 10-26 "on web its all cut": the portrait storefront shows whole, centred; a blurred copy fills the sides */
  .vs__foot::before{content:"";position:absolute;left:0;right:0;top:0;height:640px;z-index:-3;pointer-events:none;
    background:url(../media/visit/storefront.webp) center 40%/cover no-repeat;filter:blur(28px) brightness(.55);transform:scale(1.1)}
  .vs__bg{width:auto;height:640px;max-height:none;margin:0 auto;object-fit:contain;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)} }

/* ---- $10 popup: native <dialog> (top layer, Esc, focus trap), our tokens ---- */
html.vs-lock{overflow:hidden}
.vs__dlg{border:0;padding:0;background:transparent;color:var(--paper);max-width:none;max-height:none;overflow:visible;
  width:min(440px,calc(100vw - 32px));margin:auto}
.vs__dlg::backdrop{background:rgba(10,10,10,.72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.vs__dlg[open]{animation:vsDlgIn .32s cubic-bezier(.16,1,.3,1) both}
.vs__dlg[open]::backdrop{animation:vsBdIn .32s ease both}
@keyframes vsDlgIn{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
@keyframes vsBdIn{from{opacity:0}to{opacity:1}}
.vs__dlg-card{position:relative;padding:var(--s6) var(--s4) var(--s4);background:var(--ink-2);border:1px solid var(--line);border-top:3px solid var(--gold);
  border-radius:var(--radius);box-shadow:0 30px 80px rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:stretch;gap:var(--s2)}
.vs__dlg-x{position:absolute;top:8px;right:8px;width:44px;height:44px;display:grid;place-items:center;background:none;border:0;color:var(--soft);cursor:pointer;
  border-radius:var(--radius);-webkit-tap-highlight-color:transparent;transition:color .2s,background-color .2s}
.vs__dlg-title{font:800 44px/.95 var(--display);letter-spacing:-.035em;color:var(--paper);padding-right:var(--s4)}
.vs__dlg-text{font:500 var(--t-body)/1.45 var(--body);color:var(--soft)}
.vs__dlg-code{display:flex;flex-direction:column;gap:var(--s1);align-items:flex-start;padding:var(--s3);background:var(--gold);color:var(--ink);margin-top:var(--s1)}
.vs__dlg-code .label{color:rgba(10,10,10,.78)}
.vs__dlg-num{font:800 56px/1 var(--display);letter-spacing:-.02em;color:var(--ink);user-select:all}
.vs__dlg-copy,.vs__dlg-no{width:100%;min-height:52px;border-radius:var(--radius);font:700 16px/1 var(--body);letter-spacing:-.01em;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:background-color .2s,color .2s,border-color .2s,transform .2s}
.vs__dlg-copy{background:var(--paper);color:var(--ink);border:1.5px solid var(--paper)}
.vs__dlg-copy.is-copied{background:var(--gold);border-color:var(--gold)}
.vs__dlg-no{background:none;color:var(--soft);border:1.5px solid var(--line)}
.vs__dlg-live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.vs__dlg button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (hover:hover){
  .vs__dlg-x:hover{color:var(--paper);background:rgba(245,243,238,.08)}
  .vs__dlg-copy:hover{background:var(--gold);border-color:var(--gold)}
  .vs__dlg-no:hover{color:var(--paper);border-color:var(--faint)}
  .vs__reopen:hover{opacity:.7}
}
@media (min-width:900px){ .vs__dlg{width:480px} .vs__dlg-card{padding:var(--s6) var(--s5) var(--s5)} .vs__dlg-title{font-size:52px} }
@media (prefers-reduced-motion:reduce){ .vs__dlg[open],.vs__dlg[open]::backdrop{animation:none} .vs__dlg-copy,.vs__dlg-no,.vs__dlg-x{transition:none} }

/* ---- copy pass round 3: place heading, Book Yohan, end row, popup Book ---- */
.vs__place{font:800 28px/1.02 var(--display);letter-spacing:-.025em;color:inherit;margin:0 0 var(--s4);text-wrap:balance}
.vs__quote .vs__go{margin-top:var(--s3);min-width:220px}
.vs__end{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2);margin-top:var(--s5)}
.vs__end .vs__go{flex:1 1 220px}
.vs__callbtn{display:inline-flex;align-items:center;justify-content:center;min-height:56px;padding:0 26px;flex:1 1 220px;border-radius:var(--radius);border:1.5px solid var(--ink);color:var(--ink);
  font:700 15px/1 var(--body);letter-spacing:-.01em;-webkit-tap-highlight-color:transparent;transition:background-color .2s,color .2s}
.vs__dlg-book{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;border-radius:var(--radius);border:1.5px solid var(--gold);color:var(--gold);
  font:700 16px/1 var(--body);letter-spacing:-.01em;-webkit-tap-highlight-color:transparent;transition:background-color .2s,color .2s}
.vs__dlg-book:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@media (hover:hover){ .vs__callbtn:hover{background:var(--ink);color:var(--paper)} .vs__dlg-book:hover{background:var(--gold);color:var(--on-gold)} }
@media (min-width:900px){ .vs__place{font-size:clamp(32px,3vw,44px)} }
@media (max-width:600px){ .vs__foot-links{flex-direction:column;gap:2px} .vs__foot-links > span{display:none} }

/* Spanish width buffer: each fact label is one word and "Encuéntranos" is the longest, so the label column holds it on /es/ */
html[lang="es"] .vs__fact{grid-template-columns:124px 1fr}
