/* Ultra Tune Gympie designs: shared layer for all 12 designs (handoff 294, November 6, 2026).
   Linked after each design's own <style>, so it only sets what every design shares:
   reviews (content/reviews.js), image reveal and scroll motion (content/motion.js), line breaks, button type,
   eyebrows, and the location map (content/shared.js). Each design sets --btn-font to its body sans. */

/* ---------- buttons: the design's body sans, bold, sentence case, easy spacing (Joseph, November 6, 2026) ---------- */
.call{font-family:var(--btn-font,inherit)!important;text-transform:none!important;letter-spacing:.005em!important;font-stretch:100%!important}
.cta,.dock a,.dock button{font-family:var(--btn-font,inherit)!important;font-weight:700!important;text-transform:none!important;
  letter-spacing:.005em!important;font-stretch:100%!important;font-size:19px!important;line-height:1.15!important}
.cta small{font-family:var(--btn-font,inherit)!important;font-weight:600!important;font-size:13px!important;letter-spacing:.01em!important;
  text-transform:none!important;line-height:1.25!important;opacity:.92}
.top .cta{font-size:16px!important}
.dock a,.dock button,.dock .cta{font-size:17px!important}
.cta{white-space:normal!important;max-width:100%;text-align:center}
@media(max-width:420px){.top .cta{font-size:14.5px!important;max-width:min(50vw,200px);line-height:1.15!important;padding-left:12px!important;padding-right:12px!important}}

/* ---------- line breaks by meaning ---------- */
h1,h2,h3,.kicker,.eyebrow,.pf-h,.h2{text-wrap:balance}
p,li,blockquote,figcaption,label,dd,.rx-q{text-wrap:pretty}
.nw{white-space:nowrap}
.hours-l{display:block}
/* an eyebrow slot that received a sentence: set it as body text, not a shouted label */
.kicker.is-line,.eyebrow.is-line{font-family:var(--btn-font,inherit)!important;text-transform:none!important;letter-spacing:0!important;
  font-weight:500!important;font-size:17px!important;line-height:1.5!important;font-stretch:100%!important}
.kicker:not(.is-line),.eyebrow:not(.is-line){white-space:normal}

/* ---------- reviews ---------- */
.rx{container-type:inline-size;--rx-gap:16px;color:var(--rx-c);width:100%;margin:0 0 8px}
.rx-host{display:block!important;columns:auto!important;grid-template-columns:none!important}
.rx-feat{display:grid;gap:var(--rx-gap);margin-bottom:var(--rx-gap);align-items:start}
.rx-feat:empty{display:none}
@container (min-width:700px){.rx-n2,.rx-n3{grid-template-columns:repeat(2,minmax(0,1fr))}.rx-n3>.rx-card:first-child{grid-column:1/-1}}
@container (min-width:1000px){.rx-n3{grid-template-columns:repeat(3,minmax(0,1fr))}.rx-n3>.rx-card:first-child{grid-column:auto}}
/* an even grid, not ragged columns: every row ends on one line (Joseph, November 6, 2026: the space under the reviews) */
.rx-more{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--rx-gap);align-items:stretch}
.rx-more .rx-card{margin:0!important}
@container (min-width:600px){.rx-more{grid-template-columns:repeat(2,minmax(0,1fr))}}
@container (min-width:960px){.rx-more{grid-template-columns:repeat(3,minmax(0,1fr))}}
.rx-feat{align-items:stretch}
.rx .rx-card{break-inside:avoid;display:flex;flex-direction:column;gap:12px;margin:0 0 var(--rx-gap);padding:20px 20px 22px;
  background:var(--rx-bg);border:var(--rx-bd);border-radius:var(--rx-r);box-shadow:var(--rx-sh,none);text-align:left;color:var(--rx-c)}
.rx .rx-feat .rx-card{margin:0;padding:24px 26px 26px;gap:16px}
.rx .rx-who{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0;border:0;margin:0;font-family:var(--rx-nf);text-transform:none;letter-spacing:0}
.rx-av,.rx .rx-av{width:40px;height:40px;border-radius:50%;flex:none;object-fit:cover;background:rgba(128,128,128,.2);display:block}
.rx .rx-big .rx-av{width:48px;height:48px}
.rx .rx-av-t,.rx-av-t{display:grid;place-items:center;font:700 18px/1 var(--rx-nf);color:#fff;background:#5f6b65}
.rx .rx-id{display:flex;flex-direction:column;gap:4px;min-width:0}
.rx .rx-name{font-family:var(--rx-qf);font-weight:700;font-size:16px;line-height:1.2;color:var(--rx-c)}
.rx .rx-meta{display:flex;align-items:center;gap:8px;font:500 13px/1 var(--rx-qf);color:var(--rx-c)}
.rx .rx-src{opacity:.7}
.rx .rx-st{color:#f5b301;letter-spacing:1px;font-size:14px;line-height:1}
.rx .rx-q{margin:0;padding:0;border:0;font:400 16.5px/1.6 var(--rx-qf);color:var(--rx-c);text-transform:none;letter-spacing:0;font-style:normal;max-width:64ch}
.rx .rx-q::before,.rx .rx-q::after{content:none}
.rx .rx-big .rx-q{font-size:clamp(18px,1.45vw,20px);line-height:1.55}
.rx .rx-q b{font-weight:700;color:inherit}
.rx-all{display:none}
@container (max-width:599px){
  .rx-more .rx-card:nth-child(n+4){display:none}
  .rx.rx-open .rx-more .rx-card{display:flex}
  .rx-all:not([hidden]){display:block;width:100%;min-height:48px;margin:0 0 4px;padding:10px 16px;border-radius:var(--rx-r);background:transparent;
    color:var(--rx-c);border:var(--rx-bd);font:600 16px/1.2 var(--rx-qf);cursor:pointer}
}
.rx-rest:empty{display:none}
.rx-score{display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px}
@media(min-width:768px){.rx-score{align-items:flex-end}}
.rx-score-t{font:500 16px/1.3 var(--btn-font,inherit);letter-spacing:0;text-transform:none;color:inherit;opacity:.9;white-space:nowrap}
.rx-score-t b{font-weight:800;font-size:18px}
.rx-cite{display:inline-flex;align-items:center;gap:10px}
.rx-cite .rx-av{width:40px;height:40px}
.quote blockquote b{font-weight:700}

/* ---------- location map (content/shared.js) ---------- */
.mapx{padding:56px 0;background:var(--mapx-bg,transparent);color:var(--mapx-c,inherit)}
.mapx-in{max-width:var(--wrap,1200px);margin:0 auto;padding:0 16px;display:grid;gap:20px;align-items:center}
@media(min-width:768px){.mapx-in{padding:0 32px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:36px}}
.mapx-map{position:relative;display:block;border-radius:var(--rx-r,12px);overflow:hidden;aspect-ratio:15/10;min-height:340px;background:var(--mapx-tile,#d9ddd9);
  border:1px solid var(--mapx-line,rgba(128,128,128,.25))}
.mapx-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.mapx-k{margin:0 0 6px;font:700 14px/1.2 var(--btn-font,inherit);letter-spacing:.06em;text-transform:uppercase;color:var(--mapx-accent,#0a7a3f)}
.mapx-a{margin:0 0 6px;font:600 21px/1.35 var(--btn-font,inherit);color:inherit;text-wrap:balance}
.mapx-h{margin:0 0 18px;font:400 16px/1.5 var(--btn-font,inherit);opacity:.8}
.mapx-btn{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:12px 22px;border-radius:10px;background:var(--mapx-accent,#0a7a3f);color:#fff;
  text-decoration:none;font:700 17px/1.1 var(--btn-font,inherit)}
.mapx-shop{display:block;width:100%;height:auto;max-width:340px;aspect-ratio:16/9;object-fit:cover;border-radius:10px;margin:0 0 16px}
.mapx-btns{display:flex;flex-wrap:wrap;gap:10px}
.mapx-btn-2{background:transparent;color:inherit;box-shadow:inset 0 0 0 2px var(--mapx-accent,#0a7a3f)}
.mapx-qr{display:none;margin:20px 0 0;align-items:center;gap:14px}
.mapx-qr img{width:200px;height:200px;display:block}
.mapx-qr figcaption{font:600 15px/1.35 var(--btn-font,inherit);max-width:14ch;opacity:.85}
@media(min-width:980px) and (hover:hover){.mapx-qr{display:flex}}
.mapx-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---------- motion (content/motion.js; html.mx is only set when motion is allowed) ---------- */
html.mx img.mx-i{opacity:0;transition:opacity .55s ease}
html.mx img.mx-i.mx-in{opacity:1}
/* a frame's shadow waits for its picture, then arrives with it */
html.mx .mx-wait{box-shadow:none!important;filter:none!important}
html.mx .mx-wait::before,html.mx .mx-wait::after{opacity:0!important}
html.mx .mx-sh{transition:box-shadow .55s ease,filter .55s ease}
html.mx .mx-sh::before,html.mx .mx-sh::after{transition:opacity .55s ease}
html.mx .mx-r{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
html.mx .mx-r.mx-on{opacity:1;transform:none}
html.mx .mx-p{will-change:transform}
@media (prefers-reduced-motion: reduce){
  html.mx img.mx-i,html.mx .mx-r{opacity:1!important;transform:none!important;transition:none!important}
}
