:root{
  --soma-primary:#131527;
  --soma-secondary:#0D7C68;
  --soma-periwinkle:#CCD5FF;
  --soma-base:#F2F0EF;
  --soma-beige:#EAE4D4;
  --soma-text:#545454;
  --soma-white:#FFFFFF;

  --soma-primary-deep:#0C0E1C;
  --soma-secondary-deep:#0A6354;
  --soma-line:rgba(19,21,39,.12);
  --soma-line-inverse:rgba(255,255,255,.20);
  --soma-white-70:rgba(255,255,255,.74);
  --soma-white-50:rgba(255,255,255,.50);
  --soma-white-12:rgba(255,255,255,.12);
  --soma-shadow:rgba(19,21,39,.08);

  --soma-font-display:"Cormorant",Georgia,serif;
  --soma-font-body:"Raleway",system-ui,sans-serif;

  --soma-t-hero:clamp(2.375rem,1.05rem + 5.3vw,5rem);
  --soma-t-quote:clamp(2.125rem,1.35rem + 3.1vw,4rem);
  --soma-t-h2:clamp(2rem,1.45rem + 2.2vw,3.25rem);
  --soma-t-h3:clamp(1.625rem,1.55rem + .35vw,2rem);
  --soma-t-h4:clamp(1.375rem,1.3rem + .3vw,1.625rem);
  --soma-t-lead:clamp(1.1875rem,1.12rem + .3vw,1.4375rem);
  --soma-t-body:clamp(1.0625rem,1.03rem + .15vw,1.1875rem);
  --soma-t-small:clamp(.9375rem,.92rem + .07vw,1rem);
  --soma-t-label:clamp(.8125rem,.8rem + .05vw,.875rem);
  --soma-t-stat:clamp(2.5rem,1.7rem + 3.2vw,4rem);

  --soma-lh-display:1.05;
  --soma-lh-lead:1.6;
  --soma-lh-body:1.7;
  --soma-ls-label:.18em;
  --soma-ls-tight:.14em;

  --soma-r-lg:24px;
  --soma-r-md:16px;
  --soma-r-sm:10px;
  --soma-r-pill:999px;

  --soma-gutter:clamp(1.25rem,.4rem + 3.4vw,4.5rem);
  --soma-section:clamp(3.5rem,1.9rem + 6.4vw,7.5rem);
  --soma-gap:clamp(1rem,.75rem + 1vw,1.75rem);
  --soma-gap-lg:clamp(1.25rem,.4rem + 3.4vw,3.5rem);

  --soma-ease:cubic-bezier(.2,.7,.2,1);
  --soma-dur-slow:.8s;
  --soma-dur-lift:.35s;
  --soma-dur-btn:.2s;
}

.soma-display,
.soma-page h1,.soma-page h2,.soma-page h3,.soma-page h4{
  font-family:var(--soma-font-display);
  font-weight:600;
  line-height:var(--soma-lh-display);
  color:var(--soma-primary);
  margin:0;
}
.soma-page h1{font-size:var(--soma-t-hero);letter-spacing:-.01em;line-height:1.02}
.soma-page h2{font-size:var(--soma-t-h2)}
.soma-page h3{font-size:var(--soma-t-h3);line-height:1.15}
.soma-page h4{font-size:var(--soma-t-h4);line-height:1.2}

.soma-page{
  font-family:var(--soma-font-body);
  /* Regular, not Light. Raleway 300 has thin stems and low stroke contrast;
     past about forty-five that is what reads as "small" even when the
     measurement says otherwise. 400 is already loaded, so this costs nothing
     and changes no dimension of the layout. */
  font-weight:400;
  font-size:var(--soma-t-body);
  line-height:var(--soma-lh-body);
  color:var(--soma-text);
  background:var(--soma-base);
}
.soma-lead{font-size:var(--soma-t-lead);line-height:var(--soma-lh-lead);color:var(--soma-text)}
.soma-small{font-size:var(--soma-t-small);color:var(--soma-text)}
.soma-eyebrow{
  font-size:var(--soma-t-label);
  font-weight:600;
  letter-spacing:var(--soma-ls-label);
  text-transform:uppercase;
  color:var(--soma-secondary);
}
.soma-eyebrow--tight{letter-spacing:var(--soma-ls-tight)}
.soma-eyebrow--invert{color:var(--soma-periwinkle)}

.soma-section{padding:var(--soma-section) var(--soma-gutter)}
.soma-section--white{background:var(--soma-white)}
.soma-section--base{background:var(--soma-base)}
.soma-section--dark{background:var(--soma-primary);color:var(--soma-white)}
.soma-grid{display:flex;flex-wrap:wrap;gap:var(--soma-gap)}
.soma-stack{display:flex;flex-direction:column}

.soma-card{
  display:flex;flex-direction:column;
  border-radius:var(--soma-r-lg);
  overflow:hidden;
  background:var(--soma-white);
  color:var(--soma-primary);
}
.soma-card__body{display:flex;flex-direction:column;gap:10px;padding:24px 26px 28px}
.soma-media{display:flex;overflow:hidden}
.soma-media img{width:100%;height:100%;object-fit:cover;display:block}

.soma-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:18px 30px;
  border:0;border-radius:var(--soma-r-pill);
  font-family:var(--soma-font-body);font-size:1rem;font-weight:600;line-height:1;
  background:var(--soma-secondary);color:var(--soma-white);
  cursor:pointer;text-decoration:none;
  transition:transform var(--soma-dur-btn) ease,background var(--soma-dur-btn) ease;
}
.soma-btn:hover,.soma-btn:focus-visible{background:var(--soma-secondary-deep);color:var(--soma-white);transform:translateY(-2px)}
.soma-btn--outline{
  background:transparent;color:var(--soma-primary);
  border:1.5px solid var(--soma-primary);
}
.soma-btn--outline:hover,.soma-btn--outline:focus-visible{background:var(--soma-base);color:var(--soma-primary)}
.soma-btn--light{background:var(--soma-white);color:var(--soma-primary)}
.soma-btn--light:hover,.soma-btn--light:focus-visible{background:var(--soma-periwinkle);color:var(--soma-primary)}
.soma-btn--sm{padding:13px 22px;font-size:.875rem}
.soma-chip{
  display:inline-flex;align-items:center;gap:6px;
  padding:7px 12px;border-radius:var(--soma-r-pill);
  background:var(--soma-base);color:var(--soma-primary);
  font-size:var(--soma-t-label);font-weight:600;
}

@keyframes soma-rise-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes soma-draw{from{stroke-dashoffset:1400}to{stroke-dashoffset:0}}
@keyframes soma-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.55}}
@keyframes soma-slow-zoom{from{transform:scale(1)}to{transform:scale(1.06)}}

.soma-rise{animation:soma-rise-in var(--soma-dur-slow) var(--soma-ease) both}
.soma-rise--2{animation:soma-rise-in var(--soma-dur-slow) .15s var(--soma-ease) both}
.soma-rise--3{animation:soma-rise-in var(--soma-dur-slow) .3s var(--soma-ease) both}
.soma-rise--4{animation:soma-rise-in var(--soma-dur-slow) .45s var(--soma-ease) both}

.soma-lift{transition:transform var(--soma-dur-lift) ease,box-shadow var(--soma-dur-lift) ease}
.soma-lift:hover,.soma-lift:focus-within{transform:translateY(-6px);box-shadow:0 22px 48px rgba(19,21,39,.14)}

.soma-draw{stroke-dasharray:1400;animation:soma-draw 2.6s .4s ease-out both}
.soma-pulse{transform-origin:center;transform-box:fill-box;animation:soma-pulse 2.4s ease-in-out infinite}
.soma-zoom{animation:soma-slow-zoom 14s ease-out both}

@media (prefers-reduced-motion:reduce){
  .soma-rise,.soma-rise--2,.soma-rise--3,.soma-rise--4,
  .soma-draw,.soma-pulse,.soma-zoom{animation:none}
  .soma-lift,.soma-btn{transition:none}
  .soma-lift:hover,.soma-lift:focus-within{transform:none}
  .soma-btn:hover,.soma-btn:focus-visible{transform:none}
}
