/* Tulum Flavors of Mexico: "Postal de Playa" (Claude Design handoff 2026-10-23). Most styling is inline on the elements,
   exactly as the design files carry it; this file holds the base, fonts, the responsive grids the design computed from
   window width in JS, the motion states, and the hover rules (appended by build.py from templates/*.hover.css). */
@font-face{font-family:Staatliches;src:url(/assets/fonts/staatliches-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url(/assets/fonts/lato-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url(/assets/fonts/lato-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url(/assets/fonts/lato-900.woff2) format("woff2");font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:Lato;src:url(/assets/fonts/lato-400i.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Lato;src:url(/assets/fonts/lato-900i.woff2) format("woff2");font-weight:900;font-style:italic;font-display:swap}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:#fffdf8;font-family:Lato,sans-serif;color:#2b201d}
a{color:inherit;text-decoration:none}
a:hover{color:inherit}
img{max-width:100%}
button,input,select,textarea{font:inherit}
h1,h2,h3{font-weight:400}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:#2b201d;color:#fffdf8;padding:12px 18px;font-family:Staatliches;letter-spacing:1px}
.skip:focus{top:12px}
:focus-visible{outline:3px solid #3B69E6;outline-offset:3px}

/* ---------- header (SiteHeader.dc.html) ---------- */
.hdr{position:sticky;top:-37px;z-index:40;display:block}
.nav-d{display:none}
.nav-m{display:flex}
.burger{position:relative;width:46px;height:46px;border-radius:12px;border:2px solid #2b201d;background:#4FF8FF;color:#0d3e44;cursor:pointer;padding:0;flex:none}
.burger i{position:absolute;left:11px;right:11px;height:3px;border-radius:2px;background:#0d3e44;transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .2s}
.burger i:nth-child(1){top:13px}.burger i:nth-child(2){top:20.5px}.burger i:nth-child(3){top:28px}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}
@media (min-width:1080px){.nav-d{display:flex}.nav-m,.mnav{display:none!important}}
.nl{display:inline-block}
.nl:hover{transform:rotate(0deg) translateY(-3px)!important}

/* animated logo (client's own art, 13 pieces; the coded intro from the harvest) */
.tl-logo{position:relative;width:100%;aspect-ratio:375/195}
.tl-logo .tl-p{position:absolute;height:auto;display:block;user-select:none;pointer-events:none;max-width:none}
.js .tl-logo.tl-ready .tl-p{visibility:hidden}
.js .tl-logo.tl-play .tl-p{visibility:visible}
.tl-play .tl-trunk{transform-origin:60% 100%;animation:tl-grow .55s cubic-bezier(.2,.8,.2,1) both}
.tl-play .tl-palm{transform-origin:49% 61.8%;animation:tl-crown .8s cubic-bezier(.3,1.5,.5,1) .3s both,tl-sway 5.5s ease-in-out 1.6s infinite alternate}
.tl-play .tl-T{transform-origin:50% 100%;animation:tl-drop .6s cubic-bezier(.3,1.45,.55,1) .5s both}
.tl-play .tl-U1{transform-origin:50% 100%;animation:tl-drop .6s cubic-bezier(.3,1.45,.55,1) .59s both}
.tl-play .tl-L{transform-origin:50% 100%;animation:tl-drop .6s cubic-bezier(.3,1.45,.55,1) .68s both}
.tl-play .tl-U2{transform-origin:50% 100%;animation:tl-drop .6s cubic-bezier(.3,1.45,.55,1) .77s both}
.tl-play .tl-M{transform-origin:50% 100%;animation:tl-drop .6s cubic-bezier(.3,1.45,.55,1) .86s both}
.tl-play .tl-post{animation:tl-rise .45s cubic-bezier(.2,.8,.2,1) .95s both}
.tl-play .tl-arrow1{transform-origin:38.8% 50%;animation:tl-swingR .7s cubic-bezier(.3,1.5,.5,1) 1.25s both}
.tl-play .tl-arrow2{transform-origin:30.2% 50%;animation:tl-swingR .7s cubic-bezier(.3,1.5,.5,1) 1.37s both}
.tl-play .tl-arrow3{transform-origin:46.6% 50%;animation:tl-swingL .7s cubic-bezier(.3,1.5,.5,1) 1.49s both}
.tl-play .tl-arrow4{transform-origin:49.4% 50%;animation:tl-swingR .7s cubic-bezier(.3,1.5,.5,1) 1.61s both}
.tl-play .tl-pill{animation:tl-pill .6s cubic-bezier(.2,.9,.3,1.2) 1.9s both}
@keyframes tl-grow{from{transform:scaleY(0)}to{transform:none}}
@keyframes tl-crown{from{transform:scale(.2) rotate(-25deg);opacity:0}60%{opacity:1}to{transform:none;opacity:1}}
@keyframes tl-sway{from{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}
@keyframes tl-drop{from{transform:translateY(-70%) scaleY(1.08);opacity:0}35%{opacity:1}to{transform:none;opacity:1}}
@keyframes tl-rise{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes tl-swingR{from{transform:rotate(-80deg) scale(.7);opacity:0}30%{opacity:1}to{transform:none;opacity:1}}
@keyframes tl-swingL{from{transform:rotate(80deg) scale(.7);opacity:0}30%{opacity:1}to{transform:none;opacity:1}}
@keyframes tl-pill{from{transform:translateY(60%) scale(.9);opacity:0}to{transform:none;opacity:1}}

/* ---------- motion: reveals + wipes, only below the fold, only with JS (site.js adds .rv/.wx/.wy, then .in) ---------- */
.rv{opacity:0;translate:0 28px}
.rv.in{opacity:1;translate:0 0;transition:opacity .9s cubic-bezier(.16,1,.3,1) var(--d,0ms),translate .95s cubic-bezier(.16,1,.3,1) var(--d,0ms)}
.wx{clip-path:inset(0 100% 0 0)}
.wy{clip-path:inset(0 0 100% 0)}
.wx.in,.wy.in{clip-path:inset(0);transition:clip-path 1.1s cubic-bezier(.76,0,.24,1) var(--d,0ms)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
  .rv,.wx,.wy{opacity:1!important;translate:none!important;clip-path:none!important}
  .js .tl-logo .tl-p{visibility:visible!important}
}

/* ---------- responsive grids (the design computed these from window width) ---------- */
.g-panels{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:760px){.g-panels{grid-template-columns:repeat(4,minmax(0,1fr))}}
.g-sel{grid-template-columns:minmax(0,1fr)}
@media (min-width:620px){.g-sel{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.g-sel{grid-template-columns:repeat(4,minmax(0,1fr))}}
.g-pc{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:520px){.g-pc{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:900px){.g-pc{grid-template-columns:repeat(5,minmax(0,1fr))}}
.g-perks{grid-template-columns:minmax(0,1fr)}
@media (min-width:760px){.g-perks{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* home hero */
.hero-v,.hero-i{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.15) contrast(1.05)}
.hero-cap{gap:12px}
.hero-cap span:last-child{text-align:right}
.h1-sub{display:block;margin-top:14px;font-size:clamp(18px,2vw,24px);letter-spacing:3px;line-height:1.1;color:#4FF8FF;text-shadow:2px 2px 0 #2b201d}
@media (max-width:519px){.hero-cap{flex-direction:column;align-items:flex-start!important;gap:2px}}

/* FAQ (home) */
.faq details{border-top:2px solid #2b201d}
.faq details:last-child{border-bottom:2px solid #2b201d}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;font-family:Staatliches;font-size:clamp(22px,2.2vw,28px);letter-spacing:.5px;line-height:1.1;min-height:44px}
.faq summary::-webkit-details-marker{display:none}
.faq summary span{flex:none;width:34px;height:34px;display:grid;place-items:center;background:#FE49DB;color:#2b201d;font-size:24px;transform:rotate(-4deg);transition:transform .3s cubic-bezier(.3,1.5,.5,1)}
.faq details[open] summary span{transform:rotate(41deg)}
.faq details p{margin:0 0 20px;font-size:17px;line-height:1.6;color:#4a3c39;max-width:62ch}

/* ---------- menu ---------- */
.m-tab{font:inherit;letter-spacing:inherit;cursor:pointer;border:0;padding:12px 46px 12px 22px;min-height:44px;clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%);background:rgba(255,253,248,.1);color:#fffdf8;transition:transform .3s cubic-bezier(.3,1.5,.5,1),background .2s}
.m-tab[aria-pressed="true"]{background:var(--bg);color:var(--fg);transform:rotate(-2deg) scale(1.06)}
.m-chip{border:1.5px solid #2b201d;background:#fffdf8;color:#2b201d;padding:7px 14px;min-height:44px;border-radius:3px;cursor:pointer;font:inherit;letter-spacing:inherit;transition:transform .2s}
.m-chip:hover{transform:translateY(-2px) rotate(-1deg)}
.m-chip[aria-pressed="true"]{background:var(--c)}
.m-chip.all[aria-pressed="true"]{background:#2b201d;color:#fffdf8}
.m-sheet{grid-template-columns:minmax(0,1fr)}
.m-ph{display:none}
@media (min-width:980px){.m-sheet.has-ph{grid-template-columns:minmax(0,300px) minmax(0,1fr)}.m-ph{display:block}}
.m-items{grid-template-columns:minmax(0,1fr)}
@media (min-width:1180px){.m-items{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- gallery ---------- */
.g-gal{grid-template-columns:minmax(0,1fr)}
@media (min-width:480px){.g-gal{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:760px){.g-gal{grid-template-columns:repeat(3,minmax(0,1fr))}.gt.big{grid-column:span 2}.gt.big img{height:clamp(260px,30vw,440px)!important}}
@media (min-width:1100px){.g-gal{grid-template-columns:repeat(4,minmax(0,1fr))}}
.gf{font:inherit;letter-spacing:inherit;cursor:pointer;border:2px solid #2b201d;padding:10px 40px 10px 18px;min-height:44px;clip-path:polygon(0 0,86% 0,100% 50%,86% 100%,0 100%);background:#fffdf8;color:#2b201d;transition:transform .3s}
.gf[aria-pressed="true"]{background:var(--bg);color:var(--fg);transform:rotate(-2deg)}
.lb{position:fixed;inset:0;z-index:200;background:rgba(13,62,68,.92);display:flex;align-items:center;justify-content:center;padding:clamp(14px,4vw,56px)}
.lb-btn{position:absolute;width:56px;height:56px;border:2px solid #fffdf8;background:#0d3e44;color:#fffdf8;font-family:Staatliches;font-size:30px;line-height:1;cursor:pointer}

/* ---------- VIP ---------- */
@keyframes vip-spin{to{transform:rotate(360deg)}}
@keyframes vip-float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-16px) rotate(-5deg)}}
@keyframes vip-glint{0%{background-position:130% 0}100%{background-position:-130% 0}}
.vf input{min-height:56px;padding:14px;font-size:17px;border:2px solid #2b201d;background:#fffaf0;border-radius:2px;color:#2b201d;width:100%}
.vf input:focus{outline:3px solid #3B69E6;outline-offset:1px}
.form-err{margin:0;color:#a3127f;font-weight:700;font-size:15px}
.form-err:empty{display:none}

/* ---------- events (OS feed region, styled like the design's board + Holidays & hours) ---------- */
.ev-row{grid-template-columns:90px minmax(0,1fr)}
.ev-row .ev-act{grid-column:2}
@media (min-width:820px){.ev-row{grid-template-columns:110px minmax(0,1fr) 200px}.ev-row .ev-act{grid-column:auto}}

/* ---------- footer ---------- */
.ftr-l a:hover{color:#4FF8FF}
.soc{display:flex;gap:10px}

/* ---------- design hovers (style-hover in the design files) ---------- */
.stamp,.ticket{display:inline-block;transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.stamp:hover{transform:rotate(1.5deg) translateY(-4px) scale(1.06)!important}
.ticket:hover{transform:rotate(-1.5deg) translateY(-4px) scale(1.05)!important}
.sign{transition:transform .25s}
.sign:hover{transform:rotate(0deg) translateX(8px)!important}
.lift:hover{transform:rotate(0deg) translateY(-6px)!important}
button.stamp,button.ticket{border:0;cursor:pointer;font:inherit;letter-spacing:inherit}

/* ---------- menu items are selectable: each opens the item sheet (order on SkyTab, or served in house) ---------- */
.m-item{display:flex;flex-direction:column;gap:5px;width:100%;min-height:44px;margin:-8px -10px;padding:8px 10px;box-sizing:content-box;border:0;border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .2s,transform .25s cubic-bezier(.16,1,.3,1)}
.m-item:hover{background:rgba(255,253,248,.75);transform:translateX(4px)}
.m-item:hover .m-item-n{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.m-sheet-bg{position:fixed;inset:0;z-index:200;background:rgba(13,62,68,.88);display:flex;align-items:center;justify-content:center;padding:16px}
@media (max-width:599px){.m-sheet-bg{align-items:flex-end;padding:12px}.m-sheet-card{transform:none!important}}

/* holidays: compact rows on phones (fleet pattern, El Taco Veloz): small date tile left, the text right */
@media (max-width:599px){
  .hol{flex-direction:row!important;align-items:center;gap:12px;padding:8px!important}
  .hol .hol-tile{flex:none;width:96px;aspect-ratio:1!important;border-width:4px!important}
  .hol .hol-tile:has(img){width:132px;aspect-ratio:4/3!important}
  .hol .hol-tile span:first-child{inset:5px!important}
  .hol .hol-day{font-size:44px!important;text-shadow:2px 2px 0 currentColor!important}
  .hol .hol-b{padding:4px 4px 4px 0!important;min-width:0}
  .hol .hol-b h3{font-size:26px!important}
}
