/* Carlo's Seafood locations page. Prefix: csl- */

/* ---------- Hero ---------- */
.csl-hero { position: relative; overflow: hidden; padding: clamp(50px, 7vw, 86px) 0 clamp(50px, 7vw, 80px); text-align: center; background: linear-gradient(180deg, #3fb2ea 0%, #8fd8f6 46%, var(--cs-sand) 46.1%, var(--cs-sand) 100%); }
.csl-hero__kicker { color: var(--cs-navy-deep); }
.csl-hero__title { margin: 0 0 12px; font-size: clamp(3rem, 10vw, 6.4rem); color: var(--cs-white); text-shadow: 0 5px 0 var(--cs-navy), 0 12px 24px rgba(15,35,80,.3); }
.csl-hero__title span { display: inline-block; animation: cslDrop .8s cubic-bezier(.2,1.5,.4,1) both; }
.csl-hero__title span:nth-child(2) { animation-delay: .12s; color: var(--cs-sun); }
.csl-hero__title span:nth-child(3) { animation-delay: .24s; }
@keyframes cslDrop { 0% { opacity: 0; transform: translateY(-70px) rotate(-10deg); } 100% { opacity: 1; transform: none; } }
.csl-hero__sub { max-width: 600px; margin: 0 auto 30px; font-size: 1.2rem; font-weight: 700; color: var(--cs-navy-deep); background: rgba(255,255,255,.72); border-radius: 14px; padding: 10px 18px; animation: csFadeUp .6s ease .4s both; }

/* ---------- Illustrated route map ---------- */
.csl-map { position: relative; max-width: 1000px; margin: 0 auto; border-radius: 28px; background: var(--cs-cream); border: 4px solid var(--cs-navy); box-shadow: 10px 10px 0 var(--cs-navy), 0 24px 40px rgba(15,35,80,.18); animation: csFadeUp .7s ease .5s both; }
.csl-map__svg { display: block; width: 100%; height: auto; overflow: visible; }
.csl-route { fill: none; stroke: var(--cs-red); stroke-width: 6; stroke-linecap: round; stroke-dasharray: 1 16; }
.csl-walker { pointer-events: none; }
.csl-pin { cursor: pointer; }
.csl-pin path { fill: var(--cs-red); stroke: var(--cs-white); stroke-width: 4; filter: drop-shadow(0 6px 6px rgba(15,35,80,.3)); }
.csl-pin--truck path { fill: var(--cs-navy); }
.csl-pin__dot { fill: var(--cs-white); }
.csl-pin--truck .csl-pin__dot { fill: var(--cs-sun); }
.csl-pin__label { font-family: var(--cs-font-head); font-size: 26px; fill: var(--cs-navy-deep); text-anchor: middle; paint-order: stroke; stroke: var(--cs-cream); stroke-width: 6px; }
.csl-pin__drop { animation: cslPinDrop .9s cubic-bezier(.2,1.6,.4,1) both, cslPinBob 3s ease-in-out infinite; }
.csl-pin--1 .csl-pin__drop { animation-delay: .8s, 1.7s; }
.csl-pin--truck .csl-pin__drop { animation-delay: 1.05s, 2.2s; }
.csl-pin--2 .csl-pin__drop { animation-delay: 1.3s, 2.7s; }
@keyframes cslPinDrop { from { transform: translateY(-140px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes cslPinBob { 50% { transform: translateY(-8px); } }
.csl-pin__pulse { fill: rgba(215,38,46,.35); transform-box: fill-box; transform-origin: center; animation: cslPulse 2s ease-out infinite; }
.csl-pin--truck .csl-pin__pulse { fill: rgba(28,61,122,.35); animation-delay: .6s; }
.csl-pin--2 .csl-pin__pulse { animation-delay: 1.2s; }
@keyframes cslPulse { from { transform: scale(.4); opacity: 1; } to { transform: scale(2.6); opacity: 0; } }
.csl-pin:hover path, .csl-pin:focus path { fill: var(--cs-orange); }
.csl-map__umbrella { position: absolute; width: 120px; right: -24px; top: -70px; transform-origin: 60% 100%; animation: cslSway 6s ease-in-out infinite; }
.csl-map__star { position: absolute; width: 60px; left: -20px; bottom: -22px; animation: cslTwirl 8s ease-in-out infinite; }
@keyframes cslSway { 0%,100% { rotate: -4deg; } 50% { rotate: 4deg; } }
@keyframes cslTwirl { 0%,100% { rotate: -15deg; } 50% { rotate: 25deg; scale: 1.1; } }

/* ---------- Location blocks ---------- */
.csl-body { padding: clamp(50px, 7vw, 90px) 0 clamp(30px, 4vw, 50px); background: linear-gradient(180deg, var(--cs-sand) 0%, var(--cs-cream) 18%, var(--cs-cream) 100%); }
.csl-loc { display: grid; gap: clamp(28px, 5vw, 60px); grid-template-columns: 1fr 1.15fr; align-items: center; padding: clamp(30px, 5vw, 60px) 0; scroll-margin-top: calc(var(--cs-header-h) + 20px); }
.csl-loc--flip .csl-loc__info { order: 2; }
.csl-loc + .csl-loc { border-top: 3px dashed rgba(28,61,122,.18); }
.csl-badge { display: inline-block; margin-bottom: 10px; padding: 4px 14px; border-radius: 999px; background: var(--cs-navy); color: var(--cs-white); font-weight: 800; font-size: .8rem; text-transform: uppercase; letter-spacing: 1.5px; }
.csl-badge--sun { background: var(--cs-sun); color: var(--cs-navy-deep); }
.csl-loc h2 { margin-bottom: 18px; }
.csl-facts li { font-size: 1.12rem; font-weight: 600; margin-bottom: .9em; }
.csl-facts a { font-weight: 800; }
.csl-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; }
.csl-actions .cs-btn { padding: 12px 22px; font-size: 1.05rem; }

/* map in a postcard frame */
.csl-postcard { position: relative; padding: 14px; background: var(--cs-white); border-radius: 22px; box-shadow: 0 20px 40px rgba(15,35,80,.2); rotate: 1.6deg; transition: rotate .5s cubic-bezier(.2,1.5,.4,1), scale .5s cubic-bezier(.2,1.5,.4,1); }
.csl-loc--flip .csl-postcard { rotate: -1.6deg; }
.csl-postcard.is-in { animation: cslCardIn .9s cubic-bezier(.2,1.4,.4,1) both; }
@keyframes cslCardIn { from { opacity: 0; transform: rotate(10deg) translateY(50px) scale(.9); } }
.csl-postcard:hover { rotate: 0deg; scale: 1.015; }
.csl-postcard::before { content: ""; position: absolute; inset: 6px; border-radius: 18px; border: 3px dashed rgba(215,38,46,.35); pointer-events: none; z-index: 1; }
.csl-postcard iframe { display: block; width: 100%; height: clamp(260px, 32vw, 380px); border: 0; border-radius: 12px; }
.csl-stamp { position: absolute; z-index: 2; width: 92px; right: -26px; top: -34px; padding: 8px; background: var(--cs-sun); border-radius: 12px; border: 3px dashed var(--cs-white); box-shadow: 0 6px 14px rgba(0,0,0,.2); transform: rotate(12deg); animation: cslStamp 4s ease-in-out infinite; }
.csl-loc--flip .csl-stamp { right: auto; left: -26px; transform: rotate(-12deg); animation-name: cslStampFlip; }
@keyframes cslStamp { 0%,100% { transform: rotate(12deg); } 50% { transform: rotate(4deg) scale(1.06); } }
@keyframes cslStampFlip { 0%,100% { transform: rotate(-12deg); } 50% { transform: rotate(-4deg) scale(1.06); } }

/* ---------- Food truck ---------- */
.csl-truck { position: relative; overflow: hidden; padding: clamp(60px, 9vw, 100px) 0 120px; background: linear-gradient(180deg, var(--cs-navy) 0%, #2a5aa6 100%); color: var(--cs-white); scroll-margin-top: var(--cs-header-h); }
.csl-truck h2 { color: var(--cs-white); text-shadow: 0 4px 0 var(--cs-red); }
.csl-truck p { font-size: 1.15rem; }
.csl-truck__grid { display: grid; gap: 50px; grid-template-columns: 1.1fr 1fr; align-items: center; position: relative; z-index: 1; }
.csl-truck__art { position: relative; }
.csl-truck__art img { width: 100%; animation: cslIdle .35s ease-in-out infinite alternate; }
.csl-truck__art.is-in { animation: cslDriveIn 2s cubic-bezier(.2,.75,.25,1) both; }
@keyframes cslDriveIn { from { transform: translateX(-120vw); } to { transform: none; } }
@keyframes cslIdle { to { transform: translateY(-3px); } }
.csl-puff { position: absolute; left: 0; bottom: 18%; width: 26px; height: 26px; border-radius: 50%; background: rgba(255,255,255,.7); opacity: 0; animation: cslPuff 1.6s ease-out infinite; }
.csl-puff.p2 { animation-delay: .5s; }
.csl-puff.p3 { animation-delay: 1s; }
@keyframes cslPuff { 0% { opacity: .8; transform: translate(0,0) scale(.4); } 100% { opacity: 0; transform: translate(-90px,-40px) scale(2.2); } }
.csl-truck__list li { font-weight: 700; }
.csl-truck .cs-btn--ghost { color: var(--cs-white); }
.csl-truck__road { position: absolute; left: 0; right: 0; bottom: 0; height: 70px; background: #3b3f47; border-top: 6px solid #c7c9cc; }
.csl-truck__road::after { content: ""; position: absolute; left: 0; top: 28px; width: 200%; height: 8px; background: repeating-linear-gradient(90deg, var(--cs-sun) 0 60px, transparent 60px 120px); animation: cslLane 1.2s linear infinite; }
@keyframes cslLane { to { transform: translateX(-120px); } }

/* ---------- Small screens ---------- */
@media (max-width: 860px) {
  .csl-loc, .csl-truck__grid { grid-template-columns: 1fr; }
  .csl-loc--flip .csl-loc__info { order: 0; }
  .csl-stamp, .csl-loc--flip .csl-stamp { width: 70px; right: -8px; left: auto; top: -26px; }
  .csl-map__umbrella { width: 76px; right: -6px; top: -48px; }
  .csl-map__star { width: 42px; left: -8px; }
  .csl-pin__label { font-size: 34px; }
  .csl-hero__title { text-shadow: 0 4px 0 var(--cs-navy); }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .csl-walker { display: none; }
  .csl-pin__drop { animation: none; }
}
