/* Shared homepage navigation and footer, used on every public-facing page. */
/* Intrinsic HTML dimensions reserve space; resizing must preserve image proportions.
   Component rules can still set an intentional photo crop with object-fit: cover. */
img { height: auto; object-fit: contain; }
footer#footer .footer-logo img { height: auto; }
header.nav-shell, footer#footer, div.announcement {
 --ink:#303843; --cream:#f3f0eb; --lime:#e4f98c; --lilac:#9d84f6; --line:rgba(48,56,67,.24);
 --heading:'Soma Geologica',Arial,sans-serif; --body:'Soma Haas',Arial,sans-serif;
 font-family:var(--body); font-size:18px; font-weight:300; letter-spacing:.025em; line-height:normal;
}
header.nav-shell {color:var(--ink)}
header.nav-shell img, footer#footer img {display:block;max-width:100%}
header.nav-shell a, footer#footer a {color:inherit}
div.announcement { background: var(--ink); color: var(--lime); text-align: center; padding: 9px 16px; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }header.nav-shell { position: sticky; z-index: 50; top: 12px; width: min(1560px, calc(100% - 28px)); min-height: 82px; margin: 12px auto -94px; display: grid; grid-template-columns: 170px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 8px 10px 8px 18px; border: 1px solid var(--line); border-radius: 14px; background: rgba(228, 249, 140, .94); backdrop-filter: blur(16px); box-shadow: 0 10px 35px rgba(48, 56, 67, .12); }header.nav-shell .logo img { width: 155px; height: 52px; object-fit: contain; object-position: left center; }header.nav-shell .nav-links { justify-self: stretch; display: grid; grid-template-columns: repeat(6, minmax(76px, 1fr)); align-self: stretch; }header.nav-shell .nav-links > a, header.nav-shell .nav-main { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 6px 8px; font-size: 14px; line-height: 1.1; letter-spacing: .04em; text-align: center; text-transform: uppercase; font-weight: 600; text-decoration: none; transition: background .2s, color .2s, transform .2s; }header.nav-shell .nav-links > a, header.nav-shell .nav-has-subnav { border-left: 1px solid rgba(48, 56, 67, .22); }header.nav-shell .nav-links > a:last-child { border-right: 1px solid rgba(48, 56, 67, .22); }header.nav-shell .nav-links > a:hover, header.nav-shell .nav-links > a:focus-visible, header.nav-shell .nav-main:hover, header.nav-shell .nav-main:focus-visible { color: var(--cream); background: var(--lilac); transform: translateY(-2px); outline: none; }header.nav-shell .nav-has-subnav { position: relative; display: flex; min-width: 0; }header.nav-shell .nav-main { flex: 1; min-width: 0; }header.nav-shell .nav-subnav { position: absolute; top: calc(100% + 9px); left: 50%; z-index: 10; width: max-content; min-width: 180px; padding: 8px; border: 1px solid var(--ink); border-radius: 13px; background: var(--cream); box-shadow: 5px 6px 0 var(--ink); opacity: 0; visibility: hidden; transform: translate(-50%, -7px); transition: opacity .18s, transform .18s, visibility .18s; }header.nav-shell .nav-subnav::before { content: ""; position: absolute; bottom: 100%; left: 0; width: 100%; height: 11px; }header.nav-shell .nav-has-subnav:hover .nav-subnav, header.nav-shell .nav-has-subnav:focus-within .nav-subnav { opacity: 1; visibility: visible; transform: translate(-50%, 0); }header.nav-shell .nav-subnav a { display: block; padding: 11px 13px; border-radius: 8px; font-size: 13px; line-height: 1.2; letter-spacing: .04em; text-align: left; text-transform: uppercase; text-decoration: none; }header.nav-shell .nav-subnav a:hover, header.nav-shell .nav-subnav a:focus-visible { color: var(--cream); background: var(--lilac); outline: none; }header.nav-shell .button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: 16px; padding: 13px 22px; border: 2px solid var(--ink); border-radius: 100px; color: var(--ink); font-weight: 600; text-decoration: none; box-shadow: 3px 3px 0 var(--ink); transition: transform .2s, box-shadow .2s; }header.nav-shell .button:hover { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }header.nav-shell .button-dark { background: var(--ink); color: var(--cream); border-color: var(--ink); box-shadow: 3px 3px 0 var(--lilac); }header.nav-shell .button-green { background: var(--lime); color: var(--ink); }header.nav-shell .button-orange { background: var(--orange); }header.nav-shell .button-yellow { background: var(--yellow); }header.nav-shell .menu-button { display: none; background: transparent; border: 0; font-weight: 600; }

footer#footer { padding: 70px 5vw 24px; display: grid; grid-template-columns: 1.7fr 1fr 1fr 1fr; gap: 42px; background: var(--ink); color: var(--cream); }footer#footer .footer-logo { align-self: start; width: fit-content; padding: 18px; border-radius: 14px; background: var(--lime); }footer#footer .footer-logo img { width: 250px; }footer#footer b { display: block; color: var(--lime); font-family: var(--heading); font-size: 18px; margin-bottom: 15px; }footer#footer p, footer#footer a { font-size: 14px; line-height: 1.75; }footer#footer a { display: block; text-underline-offset: 4px; }footer#footer .footer-bottom { grid-column: 1 / -1; display: flex; justify-content: space-between; margin-top: 45px; padding-top: 20px; border-top: 1px solid rgba(242,238,226,.25); font-size: 12px; opacity: .75; }


div.announcement {font-size:13px; font-weight:600; letter-spacing:.08em}
header.nav-shell .nav-links {padding:0; border:0; border-radius:0; background:transparent; box-shadow:none}
header.nav-shell .nav-links>a, header.nav-shell .nav-main {min-height:0; gap:0}
header.nav-shell .nav-subnav a {margin:0; border:0; background:transparent; font-size:14px}
header.nav-shell .nav-cta {display:inline-flex; font-size:18px; white-space:nowrap}
header.nav-shell .button-dark {color:var(--cream)}
header.nav-shell .menu-button {font-family:var(--body); font-size:18px; color:var(--ink); padding:0; min-height:44px; cursor:pointer}
footer#footer {align-items:stretch}
footer#footer p {margin:1em 0}
footer#footer p, footer#footer a {font-size:15px; line-height:1.75}
footer#footer .footer-bottom {font-size:13px}
header.nav-shell .nav-links>a:hover, header.nav-shell .nav-links>a:focus-visible,
header.nav-shell .nav-main:hover, header.nav-shell .nav-main:focus-visible,
header.nav-shell .nav-subnav a:hover, header.nav-shell .nav-subnav a:focus-visible {color:var(--ink); background:#c8b8ff}
@media (min-width:1025px) and (max-width:1180px) {
 header.nav-shell {grid-template-columns:116px minmax(0,1fr) 142px; gap:5px; padding-inline:10px}
 header.nav-shell .logo img {width:108px}
 header.nav-shell .nav-links a {padding-inline:2px}
 header.nav-shell .nav-cta {padding-inline:12px; gap:7px}
}
@media (max-width:1024px) {
 header.nav-shell {grid-template-columns:1fr auto auto}
 header.nav-shell .menu-button {display:block}
 header.nav-shell .nav-links {display:none;position:absolute;top:88px;left:0;right:auto;width:100%;padding:16px;background:var(--lime);border:1px solid var(--ink);border-radius:18px;grid-template-columns:repeat(4,1fr)}
 header.nav-shell .nav-links.open {display:grid}
 header.nav-shell .nav-links>a, header.nav-shell .nav-main {min-height:58px;border:0;border-bottom:1px solid var(--line)}
 header.nav-shell .nav-links>a:last-child {border-right:0}
 header.nav-shell .nav-has-subnav {grid-column:1/-1;display:grid;border:0;min-height:0}
 header.nav-shell .nav-subnav {position:static;display:grid;grid-template-columns:1fr 1fr;width:auto;min-width:0;padding:5px;border:0;border-radius:10px;background:rgba(243,240,235,.7);box-shadow:none;opacity:1;visibility:visible;transform:none}
 header.nav-shell .nav-has-subnav:hover .nav-subnav, header.nav-shell .nav-has-subnav:focus-within .nav-subnav {transform:none}
 header.nav-shell .nav-subnav::before {display:none}
 header.nav-shell .nav-subnav a {padding:12px;text-align:center}
 footer#footer {grid-template-columns:1fr 1fr}
 footer#footer .footer-logo {grid-column:1/-1}
}
@media (max-width:560px) {
 div.announcement {font-size:11px}
 header.nav-shell {grid-template-columns:1fr auto}
 header.nav-shell .nav-cta {display:none}
 header.nav-shell .nav-links {grid-template-columns:1fr 1fr}
 footer#footer {grid-template-columns:1fr}
 footer#footer .footer-bottom {flex-direction:column;gap:8px}
}

footer#footer .footer-legal {grid-column:1/-1;display:flex;flex-wrap:wrap;gap:16px 30px;padding-top:24px;border-top:1px solid rgba(243,240,235,.25)}
footer#footer .footer-legal a {font-weight:500}
footer#footer .footer-bottom {margin-top:0}

footer#footer .footer-ai-note {font-size:13px;line-height:1.5;max-width:480px}

/* Shared small-screen safeguards for content, controls and the mobile menu. */
:where(main,section,article,aside,header,footer,div,figure,dl,li)>*{min-width:0}
:where(h1,h2,h3,h4,p,dd,dt,a,button,summary){overflow-wrap:anywhere}
.button{max-width:100%;white-space:normal;text-align:center;line-height:1.35}
.button>span{flex-shrink:0}
.button.button-lime{color:var(--ink);background:var(--lime)}
header.nav-shell .nav-links a:hover,header.nav-shell .nav-links a:focus-visible{color:var(--ink);background:#c8b8ff}
@media(max-width:1024px){
 header.nav-shell .nav-links{top:calc(100% + 8px);max-height:calc(100dvh - 125px);overflow-y:auto;overscroll-behavior:contain}
}
@media(max-width:600px){
 .hero-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
 .hero-sticker,.pod-badge{max-width:calc(100% - 36px)}
 .programme-card-top{grid-template-columns:minmax(0,1fr)}
 .programme-card-top img{width:110px}
 .programme-topics{grid-template-columns:minmax(0,1fr)}
 .format-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
 .policy-hero h1,.policy-title-line{font-size:clamp(32px,9vw,42px)}
 .policy-jumps{grid-template-columns:minmax(0,1fr)}
 .final-actions{flex-wrap:wrap}
}

/* Clear mascot silhouettes and compact, reachable section navigation. */
body .faq-intro img[src*="dog"],body .faq-intro img[src*="ella"]{filter:none;height:auto;max-height:290px;object-fit:contain}
.section-bottom-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1250px;margin:28px auto 0;color:var(--ink)}
.section-bottom-controls p{margin:0;text-align:center;font:500 16px/1.4 var(--body)}
.section-bottom-controls button{min-height:48px;padding:12px 18px;border:2px solid var(--ink);border-radius:100px;background:var(--lime);color:var(--ink);font:600 16px/1.3 var(--body);cursor:pointer;flex-shrink:0}
.section-bottom-controls button:disabled,.gallery-controls button:disabled{opacity:.4;cursor:default;box-shadow:none}
.section-bottom-controls button:focus-visible,.studio-gallery-viewport:focus-visible,.gallery-controls button:focus-visible{outline:3px solid var(--ink);outline-offset:4px}
[role="tabpanel"]{scroll-margin-top:125px}
@media(max-width:600px){
 .section-bottom-controls{flex-wrap:wrap;gap:12px}
 .section-bottom-controls p{order:-1;flex-basis:100%;text-align:left}
 .section-bottom-controls button{padding:10px 14px}
 body .faq-intro img[src*="dog"],body .faq-intro img[src*="ella"]{height:auto;max-height:200px;max-width:180px}
}

/* Desktop headings use the same tracks and gutters as their content. */
@media(min-width:861px){
 .recovery-why .section-heading{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(45px,7vw,100px)}
 .movement-page .recovery-why .section-heading{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:5vw}
 .studio-page .section-heading{grid-template-columns:repeat(2,minmax(0,1fr));gap:7vw}
 .studio-page .studio-labs .section-heading{max-width:1300px;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
 .studio-page .studio-labs .section-heading h2{grid-column:2/-1}
 .studio-page .studio-community .section-heading{max-width:1200px;gap:28px}
 .how-intro{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
 .how-intro h2{grid-column:2/-1}
 .pods-heading{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:0}
 .pods-heading>p{padding-left:32px}
 .movement-page .pods-heading{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}
 .strength-page .strength-format .pods-heading{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(28px,5vw,65px)}
 .strength-page .strength-format .pods-heading>p{padding-left:0}
 .section-heading>h2,.how-intro>h2,.pods-heading h2,.book-top h2{text-align:left;justify-self:start;width:100%}
}
@media(min-width:601px) and (max-width:860px){
 .studio-page .section-heading{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}
 .studio-page .studio-labs .section-heading{grid-template-columns:minmax(0,1fr)}
}
@media(min-width:861px) and (max-width:1100px){
 body:not(.movement-page) .recovery-why .section-heading{grid-template-columns:minmax(0,1fr);gap:28px}
}
@media(min-width:1001px){
 .recovery-book .book-top{grid-template-columns:minmax(260px,.65fr) minmax(0,1.35fr);gap:0}
 .recovery-book .book-top>p{padding-left:32px}
}

/* A tighter vertical rhythm without reducing text sizes or touch targets. */
@media screen {
 body .section.section{padding-bottom:clamp(48px,5vw,72px)}
 body .section:not(.recovery-hero):not(.training-hero):not(.info-intro){padding-top:clamp(48px,5vw,72px)}
 body .section .section-heading,body .section .how-intro,body .section .pods-heading,body .section .book-top,
 body .section .training-section-heading,body .section .gallery-heading,body .section .contact-heading{margin-bottom:32px}
 body .studio-section{padding-top:64px}
 body .studio-heading{padding-bottom:36px}
 body .final-cta{padding-block:72px}
 body .training-apply{min-height:0}
 body .training-hero,body .recovery-hero{min-height:0}
 body .hero-facts{margin-top:30px;padding-top:20px}
 body .evidence-note{margin-top:38px}
 body .booking-copy{min-height:0}
 body .pod-copy{padding:clamp(24px,3vw,38px)}
 body .pod-copy dl{margin-block:24px}
 body .policy-main{padding-block:48px 64px}
 body .policy-hero{padding-bottom:44px}
 footer#footer{padding-top:50px;row-gap:30px}
 @media(min-width:861px){
  body .lab-card{min-height:0}
  body:not(.movement-page) .pod-panel,body:not(.movement-page) .pod-media{min-height:480px}
 }
 @media(max-width:600px){
  body .section.section{padding-bottom:44px}
  body .section:not(.recovery-hero):not(.training-hero):not(.info-intro){padding-top:44px}
  body .section-heading,body .how-intro,body .pods-heading,body .book-top,
  body .training-section-heading,body .gallery-heading,body .contact-heading{margin-bottom:26px;row-gap:20px}
  body .studio-section{padding-top:44px}
  body .studio-heading{padding-bottom:28px}
  body .final-cta{padding-block:52px}
  body .policy-main{padding-block:36px 48px}
 }
}

@media screen{body .lab-section.section{padding-block:44px}body .section .pod-copy{padding:clamp(24px,3vw,38px)}body .section .booking-copy{min-height:0}}

/* Prelaunch accessibility and narrow-screen corrections. */
.skip-link{position:fixed;left:16px;top:12px;z-index:1000;transform:translateY(-180%);padding:12px 20px;background:#303843;color:#f3f0eb;border:2px solid #e4f98c;border-radius:12px;font:600 16px/1.4 Arial,sans-serif}
.skip-link:focus{transform:none}
:where(a,button,summary,[role="tab"],input,textarea,select):focus-visible{outline:3px solid #303843;outline-offset:4px;box-shadow:0 0 0 6px #f3f0eb}
#main-content:focus{outline:none}
.hero-video-card,.teacher-media{position:relative}
/* Clip decorative angled strips, without creating a horizontal page scroller. */
.home-page main,.training-page main{overflow-x:clip}
@supports not (overflow:clip){.movement-ticker,.training-ticker{transform:none}}
@media(max-width:600px){.training-sticker{max-width:calc(100% - 16px)}.training-hero-media{min-width:0}}
@media(max-width:1024px){body.site-menu-open{overflow:hidden}.nav-shell .menu-button{min-width:48px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.studio-gallery-viewport{scroll-behavior:auto}}
/* Retain the palette while meeting text contrast on smaller labels. */
.resource-button.recover,.benefit-grid article:nth-child(3) span{background:#c8b8ff}
.benefit-grid article:nth-child(2) span{color:#202833}
.training-page .facilitators .training-section-heading>h2{color:#7055b8}
.training-page .training-apply .kicker,.training-page .training-apply h2{color:#303843}
.strength-page .programme-card.purple,.strength-page .programme-card.lilac{background:#c8b8ff}
.article-body sup a{color:#493494}
.strength-page .how-steps li:nth-child(3){background:#c8b8ff}
.home-page .lab-tabs button:nth-child(3):hover,.home-page .lab-tabs button:nth-child(3).active{background:#c8b8ff}

.strength-page .benefit-grid article:nth-child(2) span{color:#202833}
.strength-page .recovery-book{background:#c8b8ff}
.booking-pricing-link{margin:0 0 24px}.booking-pricing-link a{display:inline-block;padding:10px 0;color:#303843;font-weight:600;text-underline-offset:4px}
.strength-page .session-steps li:nth-child(2)>span{color:#202833}

/* Round footer mark: three supplied colours, one second per frame. */
footer#footer .footer-logo { padding:0; background:transparent; border-radius:50%; }
footer#footer .footer-logo picture { display:block; }
footer#footer .footer-logo img { display:block; width:180px; max-width:100%; height:auto; aspect-ratio:1; object-fit:contain; border-radius:50%; }
