/* Reviews and catering. */
.eyebrow{font-size:13px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;margin:0 0 14px}
.community-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:32px}
.community-heading h2,.catering-copy h2{font-size:clamp(44px,5.3vw,76px);line-height:1.05;color:var(--ink)}
.text-link{color:var(--ink);font-weight:700;text-underline-offset:5px;display:inline-block;padding:12px 0}
.reviews{background:var(--cream)}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.review-card{margin:0;padding:28px;background:#fff;border:1px solid #d4e4ed;border-radius:20px;display:flex;flex-direction:column}
.review-card::before{content:'“';font:80px/1 'Lobster Two',cursive;color:var(--r);height:58px}
.review-card blockquote{margin:0 0 28px;font-size:clamp(21px,2vw,28px);line-height:1.4;flex:1;max-width:24ch}
.review-card figcaption{font-size:13px;line-height:1.65}.review-card strong{display:block;font-size:15px}.review-card a{color:var(--ink);text-underline-offset:3px;display:inline-block;padding:6px 0;margin:-6px 0}
.review-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px;margin-top:28px}.review-actions p{font-size:13px;margin:0 0 8px}.review-actions>div{display:flex;gap:26px;align-items:center;flex-wrap:wrap}
.secondary-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font:700 14px 'Space Grotesk',sans-serif;border:1px solid #17345c50;background:#fff;color:var(--ink);border-radius:12px;padding:13px 18px;cursor:pointer;min-height:48px}
.catering-feature{background:var(--sky,#87CEFA);position:relative;overflow:hidden;padding-bottom:0}
.catering-layout{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:center;gap:32px;position:relative;z-index:1}
.catering-copy{padding-bottom:64px}.catering-copy h2 span{color:#B5141A}   /* a touch deeper than --r: 4:1 on the sky, where #DB191D reads 2.9:1 */.catering-copy>p:not(.eyebrow){font-size:17px;line-height:1.75;max-width:38ch;margin:24px 0}
.catering-occasions{display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0 0 30px;list-style:none}.catering-occasions li{border:1px solid #17345c35;border-radius:30px;padding:8px 12px;font-size:12px;font-weight:600}
.catering-copy .catering-help{font-size:13px;line-height:1.6;margin:20px 0 0;max-width:36ch}
.smash-scene{position:relative;isolation:isolate;margin:0;min-width:0;padding-top:60px;align-self:end}
.smash-sun{position:absolute;z-index:-2;right:4%;top:0;width:54%;aspect-ratio:1;background:#FFDE17;border-radius:50%}
.smash-cloud{position:absolute;z-index:-1;background:url(../img/brand/cloud.svg) center/contain no-repeat;width:150px;aspect-ratio:1/.576;top:60px;left:0}.smash-cloud.second{top:160px;left:auto;right:-8%;transform:scale(.7)}
.smash-art{position:relative;aspect-ratio:3/2}
/* The Smashmobile, in layers cut from the illustration by tools/catering/rig-layers.py (units: px of the 2019x592
   drawing; the van layer starts at its bumper, x=943, and parks 150 px ahead of the trailer, so the stage is 2169 wide). Without motion it shows the
   parked, open rig; assets/community.js plays the arrival when the section comes into view. */
.smash-rig{position:absolute;left:-6%;top:50%;translate:0 -50%;width:111.7%;aspect-ratio:2169/592;container-type:inline-size}
@media(max-width:600px){.smash-rig{left:-4%;width:104%}}   /* the parked van's nose stays on a phone screen */
.rig-move{position:absolute;inset:0}
.rig-trailer,.rig-van{position:absolute;top:0;height:100%}
.rig-trailer{left:0;width:43.799%;perspective:102cqw;perspective-origin:40.7% 16%;transform-origin:36.6% 85.6%}
.rig-van{left:43.4763%;width:49.6081%;transform:translateX(13.9405%)}
.smash-rig img{position:absolute;display:block;max-width:none}
.rig-body{inset:0;width:100%;height:100%;filter:drop-shadow(0 15px 7px #17345c15)}
.rig-kitchen,.rig-door{left:16%;top:27.3649%;width:49.3684%;height:30.7432%}
.rig-door{position:absolute;transform-origin:50% 100%;transform-style:preserve-3d;transform:rotateX(-90deg)}
.rig-door img,.rig-door-inside{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden}
.rig-door-inside{transform:rotateX(180deg);background:linear-gradient(#9fabb6,#dfe5ea 55%,#b9c3cc);box-shadow:inset 0 0 0 2px #7d8b97}
.rig-rim{position:absolute}.rig-rim img{inset:0;width:100%;height:100%}
.rim-trailer{left:31.7895%;top:77.8716%;width:9.6842%;height:15.5405%;--turn:1925deg}
.rim-van-rear,.rim-van-front{top:76.8581%;width:8.7361%;height:15.8784%;--turn:1753deg}.rim-van-rear{left:14.9628%}.rim-van-front{left:72.7695%}
.rig-light{position:absolute;left:74.42%;top:1.69%;width:12.63%;height:20.27%;border-radius:50%;background:radial-gradient(#fff9d6 0 18%,#ffe76a80 40%,#ffe76a00 70%);pointer-events:none}
.rig-puff{position:absolute;left:64.42%;top:-2%;width:8.42%;aspect-ratio:1/.576;background:url(../img/brand/cloud.svg) center/contain no-repeat;opacity:0;pointer-events:none}
.smash-caption{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0 24px;font-size:12px;line-height:1.5}.smash-caption p{max-width:24ch;margin:0}
.smash-replay{flex:none;border:1px solid #17345c40;border-radius:999px;background:#ffffffb3;color:var(--ink);font:inherit;font-weight:700;padding:12px 16px;min-height:44px;cursor:pointer}
.catering-route{position:relative;margin:0 -72px;padding:20px 72px;background:var(--ink);color:#fff;display:flex;justify-content:space-between;gap:16px;font-size:13px;letter-spacing:.03em}
@media(prefers-reduced-motion:no-preference){
 /* Waiting off-stage, hitched and closed, until the section scrolls into view. */
 .smash-scene.rig-waiting .rig-move{transform:translateX(-110%)}
 .smash-scene.rig-waiting .rig-van{transform:none}
 .smash-scene.rig-waiting .rig-door{transform:none}
 .smash-scene.rig-waiting .rig-kitchen{filter:brightness(.35)}
 .smash-scene.rig-waiting .rig-light{opacity:0}
 /* Rolls in (the rims turn as far as the rig travels), unhitches, the van pulls ahead, the door folds down. */
 .smash-scene.rolling .rig-move{animation:rig-in 2.6s cubic-bezier(.2,.7,.3,1) both}
 .smash-scene.rolling .rig-rim{animation:rim-in 2.6s cubic-bezier(.2,.7,.3,1) both}
 .smash-scene.rolling .rig-trailer{animation:trailer-rest .6s ease-out 3s both}
 .smash-scene.rolling .rig-van{animation:van-pull 1.4s cubic-bezier(.5,0,.3,1) 3s both}
 .smash-scene.rolling .rig-van .rig-rim img{animation:rim-pull 1.4s cubic-bezier(.5,0,.3,1) 3s both}
 .smash-scene.rolling .rig-door{animation:door-fold 1.2s cubic-bezier(.55,0,.25,1) 4.5s both}
 .smash-scene.rolling .rig-kitchen{animation:kitchen-on .9s ease-out 5s both}
 .smash-scene.rolling .rig-light{animation:light-on .6s ease-out 5.6s both}
 .smash-scene.rolling .rig-puff{animation:puff 4s ease-out 6s 3}   /* three puffs each, then the parked rig is still: nothing animates forever */
 .smash-scene.rolling .rig-puff:nth-of-type(2){animation-delay:7.3s}
 .smash-scene.rolling .rig-puff:nth-of-type(3){animation-delay:8.6s}
 .smash-scene.rolling .smash-cloud{animation:cloud-arrive 2.6s ease-out both}
 @keyframes rig-in{from{transform:translateX(-110%)}to{transform:translateX(0)}}
 @keyframes rim-in{from{rotate:calc(-1 * var(--turn))}to{rotate:0deg}}
 @keyframes trailer-rest{40%{rotate:.5deg}to{rotate:0deg}}
 @keyframes van-pull{from{transform:none}to{transform:translateX(13.9405%)}}
 @keyframes rim-pull{from{rotate:-110deg}to{rotate:0deg}}
 @keyframes door-fold{from{transform:none}70%{transform:rotateX(-97deg)}86%{transform:rotateX(-87deg)}to{transform:rotateX(-90deg)}}
 @keyframes kitchen-on{from{filter:brightness(.35)}to{filter:brightness(1)}}
 @keyframes light-on{from{opacity:0}to{opacity:1}}
 @keyframes puff{0%{opacity:0;translate:0 0;scale:.5}20%{opacity:.95}100%{opacity:0;translate:-30% -160%;scale:1.25}}
 @keyframes cloud-arrive{from{translate:24px 0}to{translate:0 0}}
}
@media(min-width:601px) and (max-width:1000px){nav{gap:16px}nav a{font-size:19px}nav .btn{font-size:20px;padding:10px 16px}.catering-layout{grid-template-columns:1fr}.catering-copy{padding-bottom:0;max-width:580px}.smash-scene{max-width:650px;width:100%;justify-self:center}.review-grid{gap:12px}.review-card{padding:20px}.review-card blockquote{font-size:22px}}
@media(max-width:600px){.community-heading{display:block;margin-bottom:18px}.community-heading .text-link{margin-top:12px}.review-grid{grid-template-columns:1fr;gap:12px}.review-card{padding:22px;display:grid;grid-template-columns:28px 1fr;gap:0 12px}.review-card::before{font-size:50px}.review-card blockquote{font-size:23px;margin-bottom:16px;max-width:none}.review-card figcaption{grid-column:2}.review-actions>div{gap:12px;width:100%}.review-actions .text-link{font-size:14px}.catering-layout{grid-template-columns:1fr;gap:36px}.catering-copy{padding-bottom:0}.catering-copy>p:not(.eyebrow){font-size:16px}.smash-scene{padding-top:30px}.smash-cloud{top:60px;scale:.7;transform-origin:left}.smash-cloud.second{top:110px}.smash-caption{align-items:flex-start;flex-direction:column;padding-bottom:24px;gap:12px}.smash-caption p{max-width:none}.catering-route{margin:0 -18px;padding:18px;gap:12px;font-size:11px}.review-actions{margin-top:22px}}
@media(min-width:601px) and (max-width:1000px){.visit{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.visit .paper:last-child{grid-column:1/-1}}
@media(min-width:601px) and (max-width:800px){.review-grid{grid-template-columns:1fr}.review-card blockquote{max-width:none}.community-heading{align-items:start;flex-direction:column;gap:10px}}

/* Give the complete van and trailer room to read as two distinct vehicles. */
.catering-layout{display:block}.catering-copy{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 64px;padding-bottom:12px}.catering-copy .eyebrow{grid-column:1/-1}.catering-copy h2{grid-column:1;grid-row:2/6}.catering-copy>p:not(.eyebrow){grid-column:2;margin:0 0 20px;max-width:46ch}.catering-copy .catering-occasions{grid-column:2;margin:0 0 24px}.catering-copy .btn{grid-column:2;justify-self:start}.catering-copy p.catering-help{margin:20px 0 0}.smash-scene{max-width:1120px;margin:40px auto 0;padding-top:60px}.smash-art{aspect-ratio:12/5}.smash-van{width:100%;margin:0}.smash-sun{width:30%;right:8%}.smash-cloud{left:12%;top:80px}.smash-cloud.second{right:0;top:150px}.smash-caption p{max-width:40ch}
@media(max-width:800px){.catering-copy{display:block;max-width:none}.catering-copy>p:not(.eyebrow){margin:24px 0}.catering-copy p.catering-help{margin:20px 0 0}.smash-scene{padding-top:30px;margin-top:40px}.smash-sun{width:35%}.smash-cloud{left:0;top:30px}.smash-cloud.second{top:80px}.smash-caption{padding-top:25px}}

/* "AI draft photo" labels on homepage menu photos (toggle: showAiPhotoLabels in assets/site-config.js). */
.wcard .ph .draft{position:absolute;left:8px;top:8px;z-index:2;font-size:10px;font-weight:700;color:var(--ink);background:rgba(255,255,255,.88);border-radius:6px;padding:2px 6px;pointer-events:none}

/* Catering and contact form. */
.catering-contact{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:32px;align-items:start;margin:56px 0;padding:32px;border-radius:24px;background:#fff;box-shadow:0 10px 30px #17345c14}
.catering-contact h3{font:italic 700 clamp(30px,3vw,40px)/1.1 'Lobster Two',cursive;color:var(--ink);margin:0 0 12px}
.catering-contact-intro p{font-size:15px;line-height:1.6;margin:0;max-width:36ch}
.catering-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.catering-form[hidden],.form-fallback[hidden]{display:none}
.catering-form label{display:grid;gap:6px;font-size:13px;font-weight:600;color:var(--ink)}
.catering-form label small{font-weight:400;opacity:.7}
.catering-form input,.catering-form textarea{font:inherit;font-size:16px;font-weight:400;padding:11px 13px;border:1px solid #17345c40;border-radius:10px;background:#fff;color:var(--ink);width:100%}
.catering-form textarea{resize:vertical;min-height:110px}
.catering-form input:focus-visible,.catering-form textarea:focus-visible{outline:3px solid var(--sky,#87CEFA);outline-offset:1px}
.catering-form .wide{grid-column:1/-1}
.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.form-actions .btn{border:0;cursor:pointer}
.form-actions .btn:disabled{opacity:.6;cursor:progress}
.form-status{margin:0;font-size:14px;line-height:1.5;max-width:46ch}
.form-status[data-state="success"]{color:#176b3a;font-weight:600}
.form-status[data-state="error"]{color:var(--r);font-weight:600}
.form-status a,.form-fallback a{color:inherit;font-weight:700}
.form-fallback{margin:0;font-size:15px;line-height:1.6}
.hp-field{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
@media(max-width:800px){.catering-contact{grid-template-columns:1fr;gap:20px;padding:22px;margin:40px 0}.catering-form{grid-template-columns:1fr}}
