/* LOOM Carbon · theme styles · designed and developed by Ryan Ward Meghraoui */

/* ==========================================================================
   01 · Base
   ========================================================================== */
:root{
  color-scheme: light;

  --paper:    #FFFFFF;
  --tint:     #F7F4FD;
  --tint-2:   #EDE9FA;
  --shell:    #FFFFFF;

  --ink:      #140E21;
  --ink-2:    #37304A;
  --mute:     #6A6380;

  --accent:   #5637D6;
  --accent-2: #4830B8;
  --accent-1: #EDE9FC;
  --orbit:    var(--accent);

  --hair:     rgba(20,14,33,.13);
  --hair-2:   rgba(20,14,33,.07);
  --on-img:   #FFFFFF;
  --on-img-m: rgba(255,255,255,.78);

  --gutter: clamp(20px, 5vw, 88px);
  --max: 1440px;
  --sec: clamp(104px, 12.5vw, 216px);
  --r: clamp(14px, 1.6vw, 26px);
  --hdr-h: clamp(62px, 6.4vw, 84px);

  --ease:   cubic-bezier(.32,.72,0,1);
  --ease-s: cubic-bezier(.22,1,.36,1);
  --ease-o: cubic-bezier(.16,.84,.24,1);

  --f-tag: 10.5px;
  --f-xs:  11.5px;
  --f-sm:  clamp(13px, 1.02vw, 14.5px);
  --f-bd:  clamp(16px, 1.22vw, 18.5px);
  --f-ld:  clamp(19px, 1.75vw, 26px);
  --f-h3:  clamp(22px, 2.1vw, 30px);
  --f-h2:  clamp(32px, 4.4vw, 66px);
  --f-h1:  clamp(40px, 6.6vw, 104px);
  --f-fig: clamp(38px, 5.4vw, 84px);

  --z-grain: 60;
  --z-nav:   80;
  --z-menu:  90;
  --z-intro: 100;

  --arrow-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23FFFFFF' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 L17 7'/%3E%3Cpath d='M8.5 7 H17 V15.5'/%3E%3C/g%3E%3C/svg%3E");
  --arrow-dark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23140E21' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 L17 7'/%3E%3Cpath d='M8.5 7 H17 V15.5'/%3E%3C/g%3E%3C/svg%3E");
  --orbit-violet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' fill='none' stroke='%235637D6' stroke-width='2.6'%3E%3Ccircle cx='50' cy='50' r='48.5' transform='rotate(-233 50 50)' stroke-dasharray='238.7 66.1'/%3E%3Ccircle cx='50' cy='50' r='40.2' transform='rotate(-228.5 50 50)' stroke-dasharray='204.9 47.7'/%3E%3Ccircle cx='50' cy='50' r='31.8' transform='rotate(-224 50 50)' stroke-dasharray='167.6 32.3'/%3E%3Ccircle cx='50' cy='50' r='23.5' transform='rotate(-219.5 50 50)' stroke-dasharray='128 19.7'/%3E%3C/svg%3E");
  --orbit-lilac: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' fill='none' stroke='%23CBBEF2' stroke-width='2.6'%3E%3Ccircle cx='50' cy='50' r='48.5' transform='rotate(-233 50 50)' stroke-dasharray='238.7 66.1'/%3E%3Ccircle cx='50' cy='50' r='40.2' transform='rotate(-228.5 50 50)' stroke-dasharray='204.9 47.7'/%3E%3Ccircle cx='50' cy='50' r='31.8' transform='rotate(-224 50 50)' stroke-dasharray='167.6 32.3'/%3E%3Ccircle cx='50' cy='50' r='23.5' transform='rotate(-219.5 50 50)' stroke-dasharray='128 19.7'/%3E%3C/svg%3E");
}

*,*::before,*::after{ box-sizing:border-box; }
html{ overflow-x:clip; scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Geist',ui-sans-serif,system-ui,sans-serif;
  font-size:var(--f-bd);
  font-weight:340;
  line-height:1.6;
  letter-spacing:-.006em;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
  counter-reset: step;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:4px; border-radius:6px; }
mark{ background:none; color:inherit; }

.wp-site-blocks{ padding:0; }
.wp-site-blocks > *{ margin-block:0; }
main.site-main{ display:block; }

.wrap{ width:100%; max-width:var(--max); margin-inline:auto; padding-inline:var(--gutter); }
.sec{ padding-block:var(--sec); position:relative; }
.sec--tint{ background:var(--tint); }
.sec--white{ background:var(--shell); }
section[id], .wp-block-cover[id]{ scroll-margin-top:clamp(84px,9vw,110px); }
.hr{ border:0; border-top:1px solid var(--hair); margin:0; }

.vh, .screen-reader-text{ position:absolute !important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0; }

.split{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(30px,4vw,84px); align-items:start; }
@media (max-width:880px){ .split{ grid-template-columns:1fr; gap:28px; } }
@media (min-width:881px){ .split > :first-child h2{ font-size:clamp(30px,3.3vw,46px); } }

h1,h2,h3,h4,h5,h6{
  font-family:'Fraunces',ui-serif,Georgia,serif;
  font-variation-settings:'opsz' 144;
  font-weight:380; margin:0; text-wrap:balance; color:inherit;
}
h1{ font-size:var(--f-h1); line-height:.97; letter-spacing:-.032em; }
h2{ font-size:var(--f-h2); line-height:1.03; letter-spacing:-.026em; }
h3{ font-size:var(--f-h3); line-height:1.12; letter-spacing:-.018em; font-weight:400; }
h4{ font-size:clamp(19px,1.6vw,23px); line-height:1.2; letter-spacing:-.014em; font-weight:450; }
h5,h6{ font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; font-weight:500; }
.hl{ color:var(--accent); }
.ital{ font-style:italic; color:var(--accent); }

p{ margin:0 0 1.05em; max-width:64ch; }
p:last-child{ margin-bottom:0; }
.lede, .is-style-loom-lede{ font-size:var(--f-ld); line-height:1.4; font-weight:330; color:var(--ink-2); max-width:34ch; letter-spacing:-.018em; }
.muted{ color:var(--mute); }
.small{ font-size:var(--f-sm); line-height:1.56; }
.src, .is-style-loom-label{ font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); }
.fig{
  font-family:'Fraunces',ui-serif,Georgia,serif;
  font-variation-settings:'opsz' 144; font-weight:360;
  line-height:.94; letter-spacing:-.035em; font-variant-numeric:tabular-nums lining-nums; display:block;
}

.tag, .is-style-loom-tag{
  --o: clamp(60px, 6.6vw, 100px);
  display:grid; grid-template-columns:var(--o) auto; justify-content:start;
  align-items:center; column-gap:clamp(14px,1.6vw,26px);
  counter-increment: step;
  font-family:'Geist',ui-sans-serif,system-ui,sans-serif;
  font-weight:360;
  font-size:clamp(26px, 3vw, 46px); line-height:1.04; letter-spacing:-.035em;
  text-transform:none; text-wrap:balance;
  color:var(--accent); margin:0 0 clamp(22px,2.6vw,36px);
  max-width:none;
}
.tag::before, .is-style-loom-tag::before{
  content:''; grid-area:1/1; width:var(--o); height:var(--o);
  background:var(--orbit-violet) center/contain no-repeat;
}
.tag::after, .is-style-loom-tag::after{
  content: counter(step, decimal-leading-zero);
  grid-area:1/1; justify-self:center;
  font-weight:500; font-size:calc(var(--o) * .27); line-height:1;
  letter-spacing:-.02em; font-variant-numeric:tabular-nums;
  color:var(--ink);
}
.tag.tag--plain{ counter-increment:none; }
.tag.tag--plain::after{ content:none; }
.on-img .tag, .on-img .is-style-loom-tag{ color:var(--on-img); }
.on-img .tag::before, .on-img .is-style-loom-tag::before{ background-image:var(--orbit-lilac); }
.on-img .tag::after, .on-img .is-style-loom-tag::after{ color:var(--on-img); }

/* Pill buttons: links with .cta, and Button blocks with a LOOM style */
.cta,
.wp-block-button.cta > .wp-block-button__link,
.wp-block-button[class*="is-style-loom-"] > .wp-block-button__link{
  display:inline-flex; align-items:center; gap:13px;
  padding:12px 12px 12px 26px; border-radius:999px; border:0;
  font-family:'Geist',ui-sans-serif,system-ui,sans-serif;
  font-size:var(--f-sm); font-weight:450; line-height:1.3; letter-spacing:-.006em;
  background:var(--ink); color:var(--paper); text-decoration:none;
  transition:transform .55s var(--ease), background .55s var(--ease), color .55s var(--ease), box-shadow .55s var(--ease);
}
.wp-block-button.cta > .wp-block-button__link::after,
.wp-block-button[class*="is-style-loom-"] > .wp-block-button__link::after,
.cta--arrow::after{
  content:''; width:28px; height:28px; border-radius:999px; flex:none;
  background:rgba(255,255,255,.18) var(--arrow-light) center/13px 13px no-repeat;
  transition:transform .55s var(--ease), background-color .55s var(--ease);
}
.cta:hover,
.wp-block-button.cta > .wp-block-button__link:hover,
.wp-block-button[class*="is-style-loom-"] > .wp-block-button__link:hover{ background:var(--accent-2); color:#FFFFFF; }
.cta:active,
.wp-block-button > .wp-block-button__link:active{ transform:scale(.975); }
.wp-block-button.cta > .wp-block-button__link:hover::after,
.wp-block-button[class*="is-style-loom-"] > .wp-block-button__link:hover::after{ transform:translate(3px,-1px) scale(1.06); background-color:rgba(255,255,255,.3); }

.wp-block-button.cta--accent > .wp-block-button__link,
.wp-block-button.is-style-loom-violet > .wp-block-button__link{ background:var(--accent); color:#FFFFFF; }
.wp-block-button.cta--accent > .wp-block-button__link:hover,
.wp-block-button.is-style-loom-violet > .wp-block-button__link:hover{ background:var(--accent-2); }
.wp-block-button.cta--accent > .wp-block-button__link::after,
.wp-block-button.is-style-loom-violet > .wp-block-button__link::after{ background-color:rgba(255,255,255,.22); }

.wp-block-button.cta--line > .wp-block-button__link,
.wp-block-button.is-style-loom-outline > .wp-block-button__link{ background:transparent; color:var(--ink); box-shadow:inset 0 0 0 1px var(--hair); }
.wp-block-button.cta--line > .wp-block-button__link::after,
.wp-block-button.is-style-loom-outline > .wp-block-button__link::after{ background-color:rgba(20,14,33,.08); background-image:var(--arrow-dark); }
.wp-block-button.cta--line > .wp-block-button__link:hover,
.wp-block-button.is-style-loom-outline > .wp-block-button__link:hover{ background:var(--ink); color:var(--paper); }
.wp-block-button.cta--line > .wp-block-button__link:hover::after,
.wp-block-button.is-style-loom-outline > .wp-block-button__link:hover::after{ background-color:rgba(255,255,255,.18); background-image:var(--arrow-light); }
.on-img .wp-block-button.cta--line > .wp-block-button__link,
.on-img .wp-block-button.is-style-loom-outline > .wp-block-button__link{ color:var(--on-img); box-shadow:inset 0 0 0 1px rgba(255,255,255,.5); }
.on-img .wp-block-button.cta--line > .wp-block-button__link::after,
.on-img .wp-block-button.is-style-loom-outline > .wp-block-button__link::after{ background-color:rgba(255,255,255,.2); background-image:var(--arrow-light); }
.on-img .wp-block-button.cta--line > .wp-block-button__link:hover,
.on-img .wp-block-button.is-style-loom-outline > .wp-block-button__link:hover{ background:var(--on-img); color:#140E21; }
.on-img .wp-block-button.cta--line > .wp-block-button__link:hover::after,
.on-img .wp-block-button.is-style-loom-outline > .wp-block-button__link:hover::after{ background-color:rgba(20,14,33,.14); background-image:var(--arrow-dark); }

.wp-block-buttons{ display:flex; flex-wrap:wrap; gap:10px; }
.wp-block-buttons > .wp-block-button{ margin:0; }

/* ==========================================================================
   02 · Header (template part + Navigation block)
   ========================================================================== */
.hdr{
  position:fixed; top:0; left:0; right:0; z-index:var(--z-nav);
  padding-top:env(safe-area-inset-top, 0px);
  margin:0 !important;
}
.hdr::before{
  content:''; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:color-mix(in srgb, var(--paper) 86%, transparent); box-shadow:0 1px 0 var(--hair-2);
  -webkit-backdrop-filter:saturate(1.6) blur(16px); backdrop-filter:saturate(1.6) blur(16px);
  opacity:0; transition:opacity .7s var(--ease);
}
.hdr.is-deep::before{ opacity:1; }
.hdr.is-flat::before{ opacity:0; }
.admin-bar .hdr{ top:32px; }
@media (max-width:782px){ .admin-bar .hdr{ top:46px; } }
@media (max-width:600px){ .admin-bar .hdr{ top:0; } .admin-bar.is-scrolled-past-adminbar .hdr{ top:0; } }

.hdr__in{ display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:clamp(14px,1.6vw,22px); }
.brand{ position:relative; z-index:2; display:block; margin:0;
  width:clamp(118px,10.4vw,158px); color:var(--on-img); transition:color .7s var(--ease), opacity .45s var(--ease); }
.brand a{ display:block; color:inherit; }

.wm{ display:block; width:100%; height:auto; overflow:visible; }
.wm .wm__c{ font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-weight:400;
  font-size:35.6px; letter-spacing:8.5px; fill:currentColor; opacity:.74; }
.orbit{ stroke:var(--orbit,#5637D6) !important; }

.hdr.is-deep .brand{ color:var(--ink); }
.hero__wm, .hdr:not(.is-deep) .brand{ --orbit:#CBBEF2; }
html.bh .hdr .brand{ opacity:0; }
.hdr.is-flat .hdr__prog{ background:none; }

.hdr .nav{ margin:0; font-family:'Geist',ui-sans-serif,system-ui,sans-serif; }
.hdr .nav .wp-block-navigation__container{ gap:clamp(14px,1.8vw,28px); align-items:center; }
.hdr .nav .wp-block-navigation-item__content{ font-size:14px; padding:0; color:var(--on-img); opacity:.88; transition:color .7s var(--ease), opacity .4s var(--ease); }
.hdr .nav .wp-block-navigation-item__content:hover{ opacity:1; }
.hdr.is-deep .nav .wp-block-navigation-item__content{ color:var(--ink-2); }
.hdr .nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content{ opacity:1; }

.hdr .nav .wp-block-navigation-item.cta{ display:inline-flex; padding:0; background:none; border-radius:0; }
.hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content{
  display:inline-flex; align-items:center; gap:13px; opacity:1;
  padding:9px 9px 9px 20px; border-radius:999px; font-size:13px; font-weight:450;
  background:var(--on-img); color:#140E21; transition:background .55s var(--ease), color .55s var(--ease);
}
.hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content::after{
  content:''; width:25px; height:25px; border-radius:999px; flex:none;
  background:rgba(20,14,33,.1) var(--arrow-dark) center/12px 12px no-repeat;
  transition:transform .55s var(--ease), background-color .55s var(--ease);
}
.hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content:hover{ background:var(--accent); color:#FFFFFF; }
.hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content:hover::after{ background-color:rgba(255,255,255,.26); background-image:var(--arrow-light); transform:translate(3px,-1px) scale(1.06); }
.hdr.is-deep .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content{ background:var(--ink); color:#FFFFFF; }
.hdr.is-deep .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content::after{ background-color:rgba(255,255,255,.2); background-image:var(--arrow-light); }
.hdr.is-deep .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content:hover{ background:var(--accent); }

/* Burger and full-screen menu */
.hdr .nav .wp-block-navigation__responsive-container-open{ width:44px; height:44px; margin-right:-11px; align-items:center; justify-content:center; color:var(--on-img); transition:color .7s var(--ease); }
.hdr.is-deep .nav .wp-block-navigation__responsive-container-open{ color:var(--ink); }
.hdr .nav .wp-block-navigation__responsive-container-open svg,
.hdr .nav .wp-block-navigation__responsive-container-close svg{ width:26px; height:26px; }
@media (min-width:600px) and (max-width:940px){
  .hdr .nav .wp-block-navigation__responsive-container-open:not(.always-shown){ display:flex; }
  .hdr .nav .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){ display:none; }
}
@media (min-width:941px){
  .hdr .nav .wp-block-navigation__responsive-container-open:not(.always-shown){ display:none; }
}
.hdr .nav .wp-block-navigation__responsive-container.is-menu-open{
  background:var(--paper) !important; color:var(--ink) !important;
  padding:clamp(96px,17vh,150px) var(--gutter) clamp(40px,8vh,80px) !important;
}
.hdr .nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{ padding-top:0; align-items:stretch; }
.hdr .nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{ gap:clamp(2px,1.2vh,10px); align-items:stretch; width:100%; }
.hdr .nav .is-menu-open .wp-block-navigation-item{ width:100%; }
.hdr .nav .is-menu-open .wp-block-navigation-item:not(.cta) > .wp-block-navigation-item__content{
  display:block; width:100%; opacity:1;
  font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:400;
  font-size:clamp(30px,8.4vw,46px); line-height:1.12; letter-spacing:-.032em;
  color:var(--ink) !important; padding-block:clamp(8px,1.4vh,14px); border-bottom:1px solid var(--hair-2);
}
.hdr .nav .is-menu-open .wp-block-navigation-item.cta{ width:auto; align-self:flex-start; margin-top:clamp(20px,3.2vh,34px); }
.hdr .nav .is-menu-open .wp-block-navigation-item.cta > .wp-block-navigation-item__content{
  background:var(--accent) !important; color:#FFFFFF !important; padding:12px 12px 12px 26px; font-size:var(--f-sm);
}
.hdr .nav .is-menu-open .wp-block-navigation-item.cta > .wp-block-navigation-item__content::after{ width:28px; height:28px; background-color:rgba(255,255,255,.22); background-image:var(--arrow-light); }
.hdr .nav .wp-block-navigation__responsive-container-close{ position:fixed; top:calc(clamp(14px,1.6vw,22px) + env(safe-area-inset-top, 0px)); right:calc(var(--gutter) - 11px); width:44px; height:44px; display:flex; align-items:center; justify-content:center; color:var(--ink); z-index:100002; }
.admin-bar .hdr .nav .wp-block-navigation__responsive-container-close{ top:calc(clamp(14px,1.6vw,22px) + 32px); }
@media (max-width:782px){ .admin-bar .hdr .nav .wp-block-navigation__responsive-container-close{ top:calc(clamp(14px,1.6vw,22px) + 46px); } }
html.has-modal-open .hdr .brand{ color:var(--ink); --orbit:var(--accent); opacity:1 !important; z-index:100001; }
html.has-modal-open .hdr__prog{ opacity:0; }

.hdr__prog{
  position:absolute; left:0; right:0; bottom:0; height:2px; overflow:hidden; margin:0;
  background:transparent; transition:background .7s var(--ease);
}
.hdr.is-deep .hdr__prog{ background:var(--hair-2); }
.hdr__prog span{
  display:block; height:100%; width:100%; transform:scaleX(0); transform-origin:0 50%;
  background:var(--on-img); will-change:transform;
}
.hdr.is-deep .hdr__prog span{ background:var(--accent); }

/* Inner pages: the header sits on light backgrounds from the start */
.loom-inner .hdr .brand{ color:var(--ink); --orbit:var(--accent); }
.loom-inner .hdr .nav .wp-block-navigation-item__content{ color:var(--ink-2); }
.loom-inner .hdr .nav .wp-block-navigation__responsive-container-open{ color:var(--ink); }
.loom-inner .hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content{ background:var(--ink); color:#FFFFFF; }
.loom-inner .hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content::after{ background-color:rgba(255,255,255,.2); background-image:var(--arrow-light); }
.loom-inner .hdr .nav .wp-block-navigation-item.cta > .wp-block-navigation-item__content:hover{ background:var(--accent); }
.loom-inner .hdr__prog span{ background:var(--accent); }

/* ==========================================================================
   03 · Hero (LOOM hero block)
   ========================================================================== */
.stage{ position:relative; height:250svh; background:#08080A; }
.hero{
  position:sticky; top:0; height:100svh; overflow:hidden; isolation:isolate;
  display:grid; place-items:center; color:var(--on-img);
  --p:1;
}
html.sx .hero{ --p:0; }

.hero__bg{ position:absolute; inset:0; z-index:0; }
.hero__bg img{ width:100%; height:100%; object-fit:cover;
  transform:scale(1.16); filter:blur(26px) saturate(.7) brightness(.62); }
.hero__bg::after{ content:''; position:absolute; inset:0; background:rgba(8,8,10,.34); }

.hero__media{
  position:absolute; inset:0; z-index:1; background:#0B0B0E;
  --ix: calc((1 - var(--p)) * max(0px, 50vw - min(44vw, 390px)));
  --iy: calc((1 - var(--p)) * 21svh);
  --ir: calc((1 - var(--p)) * 26px);
  -webkit-clip-path: inset(var(--iy) var(--ix) round var(--ir));
          clip-path: inset(var(--iy) var(--ix) round var(--ir));
  will-change:clip-path;
}
.hero__still, .hero__v{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.hero__still{ transform-origin:58% 62%; animation:drift 34s var(--ease-s) infinite alternate; }
@keyframes drift{ from{ transform:scale(1.04) translate3d(0,0,0); } to{ transform:scale(1.15) translate3d(-1.4%,-1.6%,0); } }

.hero__media::after{
  content:''; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(120% 96% at 50% 48%, rgba(8,8,10,0) 24%, rgba(8,8,10,.2) 60%, rgba(8,8,10,.62) 100%),
    linear-gradient(180deg, rgba(8,8,10,.42) 0%, rgba(8,8,10,.02) 30%, rgba(8,8,10,.34) 68%, rgba(8,8,10,.8) 100%);
  opacity:calc(.55 + var(--p) * .45);
}

.hero__wm{
  position:relative; z-index:2; display:flex; align-items:flex-end; justify-content:center;
  --wmw: clamp(200px, 34vw, 430px);
  gap: calc(var(--wmw) * .085);
  color:var(--on-img); pointer-events:none;
  filter:drop-shadow(0 2px 26px rgba(8,8,10,.6));
}
.hero__wm .wm-l{ flex:none; width:var(--wmw); height:auto; overflow:visible;
  transform:translate3d(calc(var(--p) * -23vw), 0, 0); }
.hero__wm .wm-c{
  flex:none; font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-weight:400;
  font-size: calc(var(--wmw) * .0944);
  letter-spacing: calc(var(--wmw) * .0225);
  line-height:1; opacity:.82; padding-bottom:calc(var(--wmw) * .012);
  transform:translate3d(calc(var(--p) * 23vw), 0, 0);
}

.hero__tag{
  position:absolute; z-index:2; left:50%; top:calc(50% + clamp(74px,11svh,130px));
  transform:translateX(-50%); margin:0; white-space:nowrap; max-width:92vw; text-align:center;
  font-size:var(--f-xs); letter-spacing:.34em; text-transform:uppercase;
  color:rgba(255,255,255,.9); text-shadow:0 1px 14px rgba(8,8,10,.9);
  opacity:calc(1 - var(--p) * 2.4);
}
.hero__cue{ position:absolute; z-index:2; left:50%; bottom:clamp(18px,3.2vh,36px); transform:translateX(-50%);
  display:grid; justify-items:center; gap:8px; color:var(--on-img-m); margin:0;
  font-size:var(--f-xs); letter-spacing:.26em; text-transform:uppercase; pointer-events:none;
  opacity:calc(1 - var(--p) * 1.6); }
.hero__cue svg{ width:13px; height:13px; animation:nudge 2.4s var(--ease-s) infinite; }
@keyframes nudge{ 0%,100%{ transform:translateY(0); opacity:.45 } 50%{ transform:translateY(5px); opacity:1 } }

@media (max-width:700px){
  .stage{ height:210svh; }
  .hero__media{ --iy: calc((1 - var(--p)) * 21svh); --ix: calc((1 - var(--p)) * 7vw); }
  .hero__wm{ --wmw: clamp(150px, 46vw, 300px); }
  .hero__wm .wm-l{ transform:translate3d(calc(var(--p) * -13vw), 0, 0); }
  .hero__wm .wm-c{ transform:translate3d(calc(var(--p) * 13vw), 0, 0); }
  .hero__tag{ white-space:normal; max-width:78vw; letter-spacing:.24em; line-height:1.5;
    top:calc(50% + clamp(62px,9svh,104px)); }
}
@media (prefers-reduced-motion: reduce){
  .stage{ height:auto; }
  .hero{ position:relative; --p:1; }
  html.sx .hero{ --p:1; }
  .hero__still{ animation:none; transform:scale(1.04); }
  .hero__v{ display:none; }
  .hero__cue svg{ animation:none; }
}

html.hv .hero__still{ z-index:1; transition:opacity .9s var(--ease-s); }
html.hv .hero__media::after{ z-index:2; }
html.hv .hero__media.is-playing .hero__still{
  opacity:0; visibility:hidden; animation-play-state:paused;
  transition:opacity .9s var(--ease-s), visibility 0s linear .9s;
}
.hero__media.no-video .hero__v{ display:none; }
.hero__v{ pointer-events:none; }
.hero__v::-webkit-media-controls-start-playback-button{ display:none !important; -webkit-appearance:none; }

.hero__play{
  position:absolute; z-index:3; right:var(--gutter); bottom:clamp(18px,3.2vh,36px);
  display:inline-flex; align-items:center; gap:12px; margin:0;
  padding:7px 20px 7px 7px; border:0; border-radius:999px; cursor:pointer;
  font:inherit; font-size:var(--f-xs); letter-spacing:.26em; text-transform:uppercase;
  color:var(--on-img); background:rgba(8,8,10,.4);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.34);
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  -webkit-tap-highlight-color:transparent;
  transition:background .5s var(--ease), box-shadow .5s var(--ease);
}
.hero__play[hidden]{ display:none; }
.hero__play svg{ width:34px; height:34px; flex:none; padding:10px 9px 10px 11px; box-sizing:border-box;
  border-radius:999px; background:var(--on-img); color:#140E21; }
.hero__play:hover{ background:rgba(8,8,10,.58); box-shadow:inset 0 0 0 1px rgba(255,255,255,.62); }
@media (max-width:700px){
  .hero__play{ padding:6px; }
  .hero__play svg{ width:40px; height:40px; padding:12px 11px 12px 13px; }
  .hero__play span{ position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden;
    clip:rect(0 0 0 0); white-space:nowrap; }
}

/* ==========================================================================
   04 · Section blocks
   ========================================================================== */

/* Photo bands (Cover blocks with .bleed) */
.wp-block-cover.bleed{
  display:block; position:relative; isolation:isolate; overflow:hidden;
  min-height:0; padding:0; color:var(--on-img); align-items:initial;
}
.wp-block-cover.bleed.sec{ padding-block:var(--sec); }
.wp-block-cover.bleed > .wp-block-cover__image-background{ z-index:0; }
.wp-block-cover.bleed > .wp-block-cover__background{ z-index:1; opacity:1; }
.wp-block-cover.bleed > .wp-block-cover__inner-container{ position:relative; z-index:2; width:100%; color:var(--on-img); }
.bleed h2, .bleed h3{ color:var(--on-img); }
.bleed .muted, .bleed .small.muted{ color:var(--on-img-m); }
.bleed .lede, .bleed .is-style-loom-lede{ color:var(--on-img); }
.bleed .src, .bleed .is-style-loom-label{ color:var(--on-img-m); }
.bleed p{ color:inherit; }

.figs{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(20px,2.6vw,44px); }
.figs > *{ border-top:1.5px solid var(--ink); padding-top:clamp(14px,1.6vw,22px); }
.figs .fig{ font-size:clamp(32px,3.9vw,58px); margin:0 0 12px; }
.figs .t{ display:block; font-size:var(--f-sm); color:var(--mute); max-width:24ch; margin:0; }
@media (max-width:860px){ .figs{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:460px){ .figs{ grid-template-columns:1fr; } }

.pair{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(28px,4vw,72px); align-items:center; }
.pair--flip > .pair__img{ order:2; }
@media (max-width:880px){ .pair{ grid-template-columns:1fr; gap:28px; } .pair--flip > .pair__img{ order:0; } }
.pair__img{ border-radius:var(--r); overflow:hidden; background:var(--tint-2); }
.pair__img .wp-block-image{ margin:0; height:100%; }
.pair__img .wp-block-image img,
.pair__img > img{ width:100%; height:100%; object-fit:cover; aspect-ratio:4/3; }
.pair__img--tall .wp-block-image img,
.pair__img--tall > img{ aspect-ratio:3/4; }
.pair .fig{ margin-bottom:12px; }

.pair__frame{ display:grid; place-items:center; aspect-ratio:1/1; padding:clamp(14px,2vw,30px); }
.pair__frame .wp-block-image{ width:100%; display:flex; justify-content:center; height:auto; }
.pair__img .pair__frame .wp-block-image img{ width:min(100%,560px); height:auto; object-fit:contain; aspect-ratio:auto; }

ul.stack, .is-style-loom-stack{ margin:0; padding:0; display:grid; }
.stack > li, .is-style-loom-stack > li{ list-style:none; padding-block:clamp(16px,1.8vw,24px); border-top:1px solid var(--hair); display:block; margin:0; }
.stack > li:first-child, .is-style-loom-stack > li:first-child{ padding-top:0; border-top:0; }
.stack .k, .stack strong, .is-style-loom-stack strong{ display:block; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--accent-2); font-weight:400; margin-bottom:6px; }
.bleed .stack > li, .bleed .is-style-loom-stack > li{ border-color:rgba(255,255,255,.22); }
.bleed .stack .k, .bleed .stack strong, .bleed .is-style-loom-stack strong{ color:#CFC5F7; }

.cmp{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(26px,3.4vw,60px); }
@media (max-width:880px){ .cmp{ grid-template-columns:1fr; gap:34px; } }
.cmp > *{ margin:0; display:grid; gap:14px; align-content:start; border-top:1.5px solid var(--ink); padding-top:clamp(16px,1.8vw,24px); }
.cmp .cmp__cap{ font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); margin:0; }
.chart{ display:grid; gap:10px; }
.chart .row{ display:grid; gap:6px; }
.chart .lbl{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; }
.chart .lbl span{ color:var(--mute); letter-spacing:.14em; text-transform:uppercase; font-size:var(--f-tag); }
.chart .lbl b{ font-weight:500; font-size:var(--f-sm); color:var(--ink); font-variant-numeric:tabular-nums; }
.chart .track{ height:7px; border-radius:999px; background:#E0DAF4; overflow:hidden; }
.chart .bar{ height:100%; border-radius:999px; background:#8577CE; min-width:5px; transform-origin:left center; }
.chart .row--lead .bar{ background:var(--accent); }
.chart .row--lead .lbl b{ color:var(--accent-2); }
.cmp .note{ font-size:var(--f-sm); color:var(--mute); margin:0; }

/* Facilities accordion (Group blocks) */
.acc{ display:flex; gap:3px; height:clamp(340px,40vw,560px); border-radius:var(--r); overflow:hidden; background:var(--tint-2); }
.acc__item{ position:relative; flex:1 1 0%; min-width:0; overflow:hidden; cursor:pointer; transition:flex-grow .9s var(--ease); }
.acc__item > .wp-block-image{ position:absolute; inset:0; margin:0; }
.acc__item > .wp-block-image img, .acc__item > img{ width:100%; height:100%; object-fit:cover; }
.acc__item::after{ content:''; position:absolute; inset:0; pointer-events:none; background:linear-gradient(190deg,rgba(8,8,10,.1),rgba(8,8,10,.76)); opacity:.94; transition:opacity .9s var(--ease); }
.acc__tab{ position:absolute; z-index:2; left:clamp(12px,1.2vw,18px); bottom:clamp(16px,1.6vw,24px); margin:0; writing-mode:vertical-rl; transform:rotate(180deg); white-space:nowrap; font-size:var(--f-xs); letter-spacing:.2em; text-transform:uppercase; color:#fff; transition:opacity .6s var(--ease); }
.acc__cap{ position:absolute; z-index:2; left:clamp(18px,1.9vw,30px); right:clamp(18px,1.9vw,30px); bottom:clamp(18px,1.9vw,28px); color:#fff; opacity:0; transform:translateY(10px); transition:opacity .7s var(--ease) .1s, transform .7s var(--ease) .1s; }
.acc__cap .acc__t{ display:block; font-size:var(--f-xs); letter-spacing:.2em; text-transform:uppercase; font-weight:500; margin:0; color:#fff; }
.acc__cap .acc__d{ display:block; font-size:var(--f-sm); color:rgba(255,255,255,.76); margin:6px 0 0; max-width:36ch; }
.acc__item.is-open{ flex-grow:2.8; }
.acc__item.is-open::after{ opacity:.78; }
.acc__item.is-open .acc__tab{ opacity:0; }
.acc__item.is-open .acc__cap{ opacity:1; transform:none; }
@media (hover:hover){
  .acc:hover .acc__item{ flex-grow:1; }
  .acc:hover .acc__item .acc__tab{ opacity:1; }
  .acc:hover .acc__item .acc__cap{ opacity:0; transform:translateY(10px); }
  .acc:hover .acc__item:hover{ flex-grow:2.8; }
  .acc:hover .acc__item:hover::after{ opacity:.78; }
  .acc:hover .acc__item:hover .acc__tab{ opacity:0; }
  .acc:hover .acc__item:hover .acc__cap{ opacity:1; transform:none; }
}
.acc__item:focus-visible{ flex-grow:2.8; outline:2px solid var(--accent); outline-offset:-3px; }
.acc__item:focus-visible .acc__tab{ opacity:0; }
.acc__item:focus-visible .acc__cap{ opacity:1; transform:none; }
@media (max-width:820px){
  .acc{ flex-direction:column; height:auto; }
  .acc__item{ flex:none; aspect-ratio:16/10; cursor:default; }
  .acc__item .acc__tab{ display:none; }
  .acc__item .acc__cap{ opacity:1; transform:none; }
  .acc__item::after{ opacity:.82; }
}

/* Photo plates (Image blocks with a caption) */
.plates{ display:grid; gap:clamp(40px,5vw,86px); }
.wp-block-image.plate-x{ display:grid; gap:0; margin:0; }
.wp-block-image.plate-x img{ width:100%; object-fit:cover; display:block; border-radius:var(--r); background:var(--tint-2); }
.wp-block-image.plate-x--tall img{ height:clamp(420px,62vw,820px); }
.wp-block-image.plate-x--wide img{ height:clamp(300px,42vw,620px); }
.wp-block-image.plate-x--half img{ height:clamp(300px,38vw,560px); }
.wp-block-image.plate-x--strip img{ height:auto; aspect-ratio:1600 / 412; }
.wp-block-image.plate-x figcaption,
.cap{
  display:flex; gap:14px; align-items:baseline; text-align:left;
  margin:clamp(14px,1.6vw,22px) 0 0; padding-top:clamp(12px,1.4vw,18px);
  border-top:1px solid var(--hair); font-size:var(--f-sm); color:var(--ink);
}
.cap__i{ font-size:var(--f-xs); letter-spacing:.2em; text-transform:uppercase; color:var(--accent-2); font-variant-numeric:tabular-nums; }
.cap__t{ font-size:var(--f-sm); color:var(--ink); }

.duo-x{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(14px,1.8vw,30px); }
@media (max-width:760px){ .duo-x{ grid-template-columns:1fr; gap:clamp(30px,5vw,46px); } }

/* Product panels (Cover blocks with .panel) */
.panels{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2px; }
@media (max-width:880px){ .panels{ grid-template-columns:1fr; gap:2px; } }
.wp-block-cover.panel{
  position:relative; isolation:isolate; overflow:hidden; margin:0;
  display:flex; flex-direction:column; justify-content:flex-end; align-items:flex-start;
  color:var(--on-img); min-height:clamp(420px,52vw,720px); padding:clamp(24px,2.8vw,44px);
}
.wp-block-cover.panel > .wp-block-cover__image-background{ z-index:0; }
.wp-block-cover.panel > .wp-block-cover__background{ z-index:1; opacity:1; }
.wp-block-cover.panel > .wp-block-cover__inner-container{ position:relative; z-index:2; width:100%; margin:0; color:var(--on-img); }
.panel .n{ display:block; font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:300;
  font-size:clamp(40px,4.4vw,68px); line-height:1; letter-spacing:-.04em; color:#CBBEF2;
  margin:0 0 clamp(14px,1.8vw,24px); font-variant-numeric:tabular-nums; max-width:none; }
.panel .y{ font-size:var(--f-xs); letter-spacing:.2em; text-transform:uppercase; color:var(--on-img-m); margin:0 0 10px; }
.panel h3{ font-size:clamp(26px,2.6vw,38px); margin:0 0 12px; color:var(--on-img); }
.panel p{ font-size:var(--f-sm); color:rgba(255,255,255,.84); margin:0; max-width:34ch; }
.panel .how{ color:#CBBEF2; line-height:1.45; margin:0 0 14px; padding-top:12px; border-top:1px solid rgba(203,190,242,.32); }

/* ==========================================================================
   05 · Ring diagram
   ========================================================================== */
.ring{ width:100%; max-width:540px; height:auto; display:block; margin-inline:auto; overflow:visible; }
.ring .chain{ fill:none; stroke:rgba(20,14,33,.26); stroke-width:1.7; stroke-linecap:round; }
.ring .loop{ fill:none; stroke:var(--accent); stroke-width:3.4; stroke-linecap:round; }
.ring .loop-h{ fill:var(--accent); }
.ring .leak{ fill:none; stroke:var(--mute); stroke-width:1.2; stroke-dasharray:2.5 5; stroke-linecap:round; }
.ring .leak-h{ fill:var(--mute); }
.ring .nd{ fill:rgba(20,14,33,.34); }
.ring .nd--end{ fill:var(--accent); }
.ring .lbl text, .ring .leak-l{
  font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-size:11px; font-weight:400;
  letter-spacing:.17em; fill:var(--mute);
}
.ring .leak-l{ letter-spacing:.14em; }
.ring .mk{ font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:400; font-size:21px;
  letter-spacing:.2em; fill:var(--accent); }
.ring .mk2{ font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-size:10.5px;
  letter-spacing:.19em; fill:var(--mute); }
@media (max-width:540px){ .ring .lbl text, .ring .leak-l{ font-size:12.5px; } }

/* ==========================================================================
   06 · Partners, quote, people
   ========================================================================== */
.pgroup{ border-top:1px solid var(--hair); padding-top:clamp(16px,1.8vw,24px); }
.pgroup + .pgroup{ margin-top:clamp(30px,3.4vw,46px); }
.pgroup__head{ margin:0 0 clamp(16px,2vw,24px);
  font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); }
.mq{ position:relative; overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent); }
.mq__track{ display:flex; flex-wrap:nowrap; width:max-content; }
.mq.is-running .mq__track{ animation:mq 42s linear infinite; will-change:transform; }
.mq--rev.is-running .mq__track{ animation-direction:reverse; }
.mq:hover .mq__track, .mq:focus-within .mq__track{ animation-play-state:paused; }
@keyframes mq{ to{ transform:translate3d(-50%,0,0); } }
.mq__track > *{ flex:none; width:clamp(78px,6.6vw,104px); margin:0 clamp(20px,2.4vw,40px) 0 0; }

.wp-block-image.bub{ display:grid; justify-items:center; gap:10px; text-align:center; }
.wp-block-image.bub a{ display:block; width:100%; }
.wp-block-image.bub img{
  width:100%; height:auto; aspect-ratio:1; border-radius:999px; overflow:hidden; background:#fff; object-fit:cover;
  box-shadow:0 0 0 1px var(--hair), 0 12px 26px -18px rgba(20,14,33,.4);
  transition:transform .55s var(--ease), box-shadow .55s var(--ease);
}
.wp-block-image.bub figcaption{ margin:0; font-size:var(--f-xs); line-height:1.3; color:var(--mute); text-align:center; transition:color .5s var(--ease); }
.wp-block-image.bub a:hover img, .wp-block-image.bub a:focus-visible img{
  transform:translateY(-4px); box-shadow:0 0 0 1px var(--accent), 0 18px 34px -18px rgba(20,14,33,.5); }
.wp-block-image.bub:has(a:hover) figcaption, .wp-block-image.bub:has(a:focus-visible) figcaption{ color:var(--accent); }
@media (prefers-reduced-motion: reduce){
  .mq .mq__track{ animation:none !important; flex-wrap:wrap; width:100%; row-gap:20px; }
  .mq{ -webkit-mask-image:none; mask-image:none; }
}

.qb{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,4fr); gap:clamp(28px,3.6vw,68px); align-items:stretch; margin:0; padding:0; border:0; }
@media (max-width:880px){ .qb{ grid-template-columns:1fr; gap:26px; } }
.qb .qb__q{ font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:400; font-size:clamp(23px,3vw,46px);
  line-height:1.14; letter-spacing:-.032em; max-width:22ch; margin:0; align-self:center; color:var(--on-img); }
.qb__by{ display:grid; align-content:end; justify-items:start; gap:5px;
  padding-left:clamp(22px,2.6vw,44px); border-left:1px solid rgba(255,255,255,.3); }
@media (max-width:880px){ .qb__by{ padding-left:0; border-left:0; border-top:1px solid rgba(255,255,255,.3); padding-top:24px; } }
.qb__by .wp-block-image{ margin:0 0 10px; }
.qb__by img{ width:72px; height:72px; border-radius:999px; object-fit:cover; }
.qb__nm{ font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:500; font-size:20px; letter-spacing:-.02em; color:var(--on-img); margin:0; }
.qb__rl{ font-size:var(--f-sm); color:rgba(255,255,255,.88); max-width:28ch; margin:0; }
.qb__co{ font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:#D6CCFA; margin:5px 0 0; }
.qb cite{ display:none; }

.people{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(22px,2.6vw,40px) clamp(18px,2vw,32px); }
@media (max-width:1000px){ .people{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:540px){ .people{ grid-template-columns:1fr; } }
.person{ display:grid; gap:12px; align-content:start; }
.person .ph{ margin:0; }
.person .ph img, .person img.ph{ width:100%; height:auto; aspect-ratio:1; border-radius:var(--r); object-fit:cover; background:var(--tint-2); }
.person .nm{ font-family:'Fraunces',ui-serif,Georgia,serif; font-weight:500; font-size:19px; line-height:1.18; letter-spacing:-.02em; margin:0; }
.person .rl{ font-size:var(--f-tag); letter-spacing:.16em; text-transform:uppercase; color:var(--accent-2); margin:0; }
.person .bio{ font-size:var(--f-sm); color:var(--mute); margin:0; }
.adv{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr)); gap:clamp(20px,2.4vw,36px); }
.adv .person{ grid-template-columns:56px 1fr; gap:15px; align-items:start; }
.adv .ph img, .adv .ph.tbc{ width:56px; height:56px; aspect-ratio:1; border-radius:999px; }
.adv .tx{ display:grid; gap:3px; }

.tbc{ display:grid; place-items:center; flex:none; border-radius:999px; border:1px dashed currentColor; }
.tbc svg{ width:54%; height:54%; }
.qb__by .tbc{ width:72px; height:72px; margin-bottom:10px; color:#D6CCFA; background:rgba(255,255,255,.07); }
.person .ph.tbc{ color:var(--accent-2); border-color:rgba(72,48,184,.42); }

/* ==========================================================================
   07 · Impact and footer
   ========================================================================== */
.impact{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(20px,3vw,52px); }
@media (max-width:820px){ .impact{ grid-template-columns:1fr; gap:28px; } }
.impact > *{ border-top:1.5px solid rgba(255,255,255,.5); padding-top:clamp(16px,1.8vw,24px); }
.impact .fig{ font-size:var(--f-fig); margin:0 0 12px; }
.impact .t{ display:block; font-size:var(--f-sm); color:var(--on-img-m); max-width:26ch; margin:0; }

.ftr{ background:var(--tint); padding-block:clamp(58px,6.6vw,100px) clamp(28px,3.2vw,44px); margin:0 !important; }
.ftr .brand, .ftr__brand .brand{ color:var(--ink); --orbit:var(--accent); }
.ftr__top{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,3fr) minmax(0,3fr); gap:clamp(30px,4vw,72px); align-items:start; }
@media (max-width:820px){ .ftr__top{ grid-template-columns:1fr 1fr; gap:38px 24px; } .ftr__brand{ grid-column:1/-1; } }
@media (max-width:460px){ .ftr__top{ grid-template-columns:1fr; gap:30px; } }
.ftr__line{ margin:clamp(16px,2vw,24px) 0 0; font-size:var(--f-sm); color:var(--mute); max-width:30ch; }
.ftr__col{ display:grid; gap:9px; align-content:start; justify-items:start; }
.ftr__col p{ margin:0; font-size:var(--f-sm); line-height:1.6; }
.ftr__h{ margin:0 0 5px !important; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); }
.ftr__col a{ font-size:var(--f-sm); color:var(--ink-2); transition:color .45s var(--ease); }
.ftr__col a:hover{ color:var(--accent-2); }
.ftr__meta{ margin:0; font-size:var(--f-sm); color:var(--mute); }
.ftr__rule{ height:1px; background:var(--hair-2); border:0; margin:clamp(36px,4.2vw,62px) 0 clamp(18px,2vw,26px); opacity:1; width:100%; max-width:none; }
.ftr__btm{ display:flex; flex-wrap:wrap; gap:12px 36px; justify-content:space-between; align-items:baseline; }
.ftr__btm p{ margin:0; font-size:var(--f-xs); line-height:1.5; color:var(--mute); max-width:64ch; }
.ftr__btm a{ color:inherit; text-decoration:underline; text-decoration-color:transparent; text-underline-offset:3px; transition:color .2s, text-decoration-color .2s; }
.ftr__btm a:hover, .ftr__btm a:focus-visible{ color:var(--accent-2); text-decoration-color:currentColor; }
.ftr__cr{ white-space:nowrap; }
.ftr__pp{ white-space:nowrap; }
@media (max-width:560px){ .ftr__cr, .ftr__pp{ display:block; margin-top:2px; } .ftr__sep{ display:none; } }

/* ==========================================================================
   08 · Motion
   ========================================================================== */
.intro{ position:fixed; inset:0; z-index:var(--z-intro); background:var(--paper); display:grid; place-items:center;
  animation:introOut .62s var(--ease) 1.05s forwards; }
.intro__mark{ width:min(52vw,420px); color:var(--ink);
  opacity:0; animation:wmIn .78s var(--ease-o) .12s forwards; }
@keyframes wmIn{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
@keyframes introOut{ to{ opacity:0; visibility:hidden; } }

html.js .reveal{
  opacity:0; transform:translateY(52px);
  transition:opacity .9s var(--ease-s), transform .9s var(--ease-s);
}
html.js .reveal.in{ opacity:1; transform:none; }
html.js .reveal[data-d="1"], html.js .reveal.d1{ transition-delay:.07s; }
html.js .reveal[data-d="2"], html.js .reveal.d2{ transition-delay:.14s; }
html.js .reveal[data-d="3"], html.js .reveal.d3{ transition-delay:.21s; }

html.js .wp-block-cover.zoom > .wp-block-cover__image-background{ transform:scale(1.06); transition:transform 1.4s var(--ease-s); }
html.js .wp-block-cover.zoom.in > .wp-block-cover__image-background{ transform:none; }
html.js .chart .bar{ transform:scaleX(0); transition:transform 1.1s var(--ease-s) .28s; }
html.js .reveal.in .chart .bar{ transform:scaleX(1); }

html.js .tag::before, html.js .is-style-loom-tag::before{ transform:rotate(-140deg) scale(.86); opacity:0;
  transition:transform 1.9s var(--ease-s) .12s, opacity .8s var(--ease-s) .12s; }
html.js .reveal.in .tag::before,
html.js .tag.reveal.in::before,
html.js .reveal.in .is-style-loom-tag::before,
html.js .is-style-loom-tag.reveal.in::before{ transform:none; opacity:1; }
html.js .tag:not(.reveal):not(.reveal .tag)::before{ transform:none; opacity:1; }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .intro{ display:none; }
  html.js .reveal, html.js .wp-block-cover.zoom > .wp-block-cover__image-background{ opacity:1; transform:none; filter:none; transition:none; }
  *{ transition-duration:.01ms !important; }
}

/* ==========================================================================
   09 · Utilities
   ========================================================================== */
.wrap--center{ display:grid !important; justify-items:center !important; text-align:center !important; gap:clamp(22px,2.6vw,34px) !important; }
.wrap--center > *{ margin-inline:auto; }
.cta-row{ display:flex !important; flex-wrap:wrap !important; gap:10px !important; justify-content:center !important; }

.u-m-0{ margin:0 !important; }
.u-mt-10{ margin-top:10px !important; }
.u-mt-16{ margin-top:16px !important; }
.u-mt-18{ margin-top:18px !important; }
.u-mt-18-30{ margin-top:clamp(18px,2.2vw,30px) !important; }
.u-mt-20{ margin-top:20px !important; }
.u-mt-22{ margin-top:22px !important; }
.u-mt-24{ margin-top:24px !important; }
.u-mt-26-40{ margin-top:clamp(26px,3vw,40px) !important; }
.u-mt-26-44{ margin-top:clamp(26px,3vw,44px) !important; }
.u-mt-30-48{ margin-top:clamp(30px,3.6vw,48px) !important; }
.u-mt-34-62{ margin-top:clamp(34px,4.2vw,62px) !important; }
.u-mt-36-68{ margin-top:clamp(36px,4.4vw,68px) !important; }
.u-mt-38-70{ margin-top:clamp(38px,4.6vw,70px) !important; }
.u-mt-40-74{ margin-top:clamp(40px,4.8vw,74px) !important; }
.u-mt-40-76{ margin-top:clamp(40px,4.8vw,76px) !important; }
.u-mt-44-78{ margin-top:clamp(44px,5vw,78px) !important; }
.u-mt-44-84{ margin-top:clamp(44px,5.2vw,84px) !important; }
.u-mt-44-86{ margin-top:clamp(44px,5.4vw,86px) !important; }
.u-mt-48-88{ margin-top:clamp(48px,5.6vw,88px) !important; }
.u-mt-56-104{ margin-top:clamp(56px,6.4vw,104px) !important; }
.u-mb-20-30{ margin-bottom:clamp(20px,2.4vw,30px) !important; }
.u-py-56-104{ padding-block:clamp(56px,6.4vw,104px) !important; }
.u-py-90-180{ padding-block:clamp(90px,11vw,180px) !important; }
.u-py-110-210{ padding-block:clamp(110px,13vw,210px) !important; }
.u-pb-0{ padding-bottom:0 !important; }

.u-mw-14{ max-width:14ch !important; }
.u-mw-15{ max-width:15ch !important; }
.u-mw-16{ max-width:16ch !important; }
.u-mw-17{ max-width:17ch !important; }
.u-mw-18{ max-width:18ch !important; }
.u-mw-19{ max-width:19ch !important; }
.u-mw-20{ max-width:20ch !important; }
.u-mw-22{ max-width:22ch !important; }
.u-mw-40{ max-width:40ch !important; }
.u-mw-42{ max-width:42ch !important; }
.u-mw-44{ max-width:44ch !important; }
.u-mw-48{ max-width:48ch !important; }

.u-fs-fig{ font-size:var(--f-fig) !important; }
.u-fs-xs{ font-size:var(--f-xs) !important; }
.u-fs-17{ font-size:17px !important; }
.u-fs-46-82{ font-size:clamp(46px,5.6vw,82px) !important; }
.u-fw-360{ font-weight:360 !important; }

.u-c-accent{ color:var(--accent) !important; }
.u-c-lilac{ color:#CFC5F7 !important; }
.u-bg-tint{ background:var(--tint) !important; }
.u-ai-start{ align-items:start !important; }

.u-w-3{ width:3% !important; }
.u-w-15{ width:15% !important; }
.u-w-28{ width:28% !important; }
.u-w-85{ width:85% !important; }
.u-w-100{ width:100% !important; }

.has-lilac-color{ color:#CFC5F7 !important; }

.editor-only{ display:none !important; }

/* ==========================================================================
   10 · Pages, News and posts
   ========================================================================== */
.page-hero{ background:var(--tint); padding-block:calc(var(--hdr-h) + clamp(56px,7vw,120px)) clamp(48px,6vw,96px); }
.page-hero .tag{ margin-bottom:clamp(18px,2.2vw,30px); }
.page-hero h1, .page-hero .wp-block-post-title, .page-hero .wp-block-query-title{ font-size:clamp(40px,5.6vw,88px); line-height:1; letter-spacing:-.032em; max-width:18ch; margin:0; }
.page-hero .lede{ margin:clamp(18px,2.2vw,28px) 0 0; max-width:46ch; }
.page-hero__meta{ display:flex; flex-wrap:wrap; gap:6px 18px; align-items:baseline; margin:0 0 clamp(16px,2vw,26px); font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--accent-2); }
.page-hero__meta > *{ margin:0; }
.page-hero__meta a{ color:inherit; }
.page-hero__meta .wp-block-post-terms a + a::before{ content:''; }
.page-hero--legal h1, .page-hero--legal .wp-block-post-title{ font-size:clamp(36px,4.6vw,68px); }
.page-hero__updated{ margin:clamp(16px,2vw,24px) 0 0; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); }
.page-hero__updated .wp-block-post-date{ display:inline; }

.page-body{ padding-block:clamp(56px,7vw,112px) clamp(80px,9vw,150px); }
.page-body--flush{ padding-top:0; }

/* Long-form content (posts and standard pages) */
.prose{ font-size:var(--f-bd); line-height:1.7; color:var(--ink-2); }
.prose > *{ margin-block:0; }
.prose > * + *{ margin-top:1.15em; }
.prose > :where(h2,h3,h4) + *{ margin-top:.6em; }
.prose > * + :where(h2){ margin-top:1.9em; }
.prose > * + :where(h3,h4){ margin-top:1.6em; }
.prose > .is-style-loom-lede, .prose > .lede{ max-width:var(--wp--style--global--content-size, 720px); }
.prose h2{ font-size:clamp(28px,3vw,42px); line-height:1.1; color:var(--ink); }
.prose h3{ font-size:clamp(22px,2.1vw,30px); color:var(--ink); }
.prose h4{ color:var(--ink); }
.prose a:where(:not(.wp-element-button)){ color:var(--accent); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; }
.prose a:where(:not(.wp-element-button)):hover{ color:var(--accent-2); }
.prose strong{ font-weight:550; color:var(--ink); }
.prose ul:not(.stack):not(.is-style-loom-stack), .prose ol{ padding-left:1.2em; }
.prose li + li{ margin-top:.4em; }
.prose li::marker{ color:var(--accent); }
.prose .wp-block-image img{ border-radius:var(--r); height:auto; }
.prose .wp-block-image figcaption, .prose figcaption{ margin-top:10px; font-size:var(--f-sm); color:var(--mute); text-align:left; }
.prose .alignwide{ max-width:1296px; }
.prose .alignfull{ width:100vw; max-width:100vw; margin-left:calc(50% - 50vw) !important; margin-right:0; }
.prose .wp-block-cover.alignfull{ border-radius:0; }
.prose blockquote:not(.qb), .prose .wp-block-pullquote{
  margin-inline:0; padding:0 0 0 clamp(18px,2vw,28px); border-left:2px solid var(--accent);
  font-family:'Fraunces',ui-serif,Georgia,serif; font-size:clamp(21px,2vw,28px); line-height:1.3; letter-spacing:-.02em; color:var(--ink);
}
.prose .wp-block-pullquote{ border:0; padding:0; text-align:left; }
.prose blockquote cite, .prose .wp-block-pullquote cite{ display:block; margin-top:12px; font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; font-style:normal; color:var(--mute); }
.prose hr, .prose .wp-block-separator{ border:0; border-top:1px solid var(--hair); margin-block:2em; opacity:1; }
.prose table{ width:100%; border-collapse:collapse; font-size:var(--f-sm); }
.prose th, .prose td{ text-align:left; padding:10px 12px; border-bottom:1px solid var(--hair); vertical-align:top; }
.prose th{ font-weight:500; color:var(--ink); }
.prose .wp-block-table figcaption{ text-align:left; }
.prose code{ font-size:.9em; background:var(--tint); padding:.1em .35em; border-radius:4px; }
.prose .wp-block-details{ border-top:1px solid var(--hair); padding-block:18px; }
.prose .wp-block-details:last-child{ border-bottom:1px solid var(--hair); }
.prose .wp-block-details + .wp-block-details{ margin-top:0; }
.prose .wp-block-details summary{ cursor:pointer; font-family:'Fraunces',ui-serif,Georgia,serif; font-size:clamp(19px,1.7vw,24px); line-height:1.25; color:var(--ink); list-style-position:outside; }
.prose .wp-block-details[open] summary{ color:var(--accent-2); }
.prose .wp-block-details > :not(summary){ margin-top:12px; }
.prose .has-tint-background-color{ border-radius:var(--r); padding:clamp(20px,2.4vw,32px); }
.legal-note{ background:var(--tint); border-radius:var(--r); padding:clamp(18px,2vw,26px) clamp(20px,2.4vw,32px); font-size:var(--f-sm); color:var(--ink-2); }
.legal-note p{ margin:0; }

/* Sections dropped into a post stay full width */
.prose > .sec, .prose > .wp-block-cover.bleed, .prose > .panels{ width:100vw; max-width:100vw; margin-left:calc(50% - 50vw) !important; }

/* Post layout */
.post-cover{ margin:0 0 clamp(36px,4.4vw,64px); }
.post-cover img{ width:100%; height:auto; max-height:640px; object-fit:cover; border-radius:var(--r); }
.post-foot{ max-width:720px; margin:clamp(48px,5vw,72px) auto 0; padding-top:clamp(18px,2vw,26px); border-top:1px solid var(--hair); display:grid; gap:18px; }
.post-foot .wp-block-post-terms{ display:flex; flex-wrap:wrap; gap:8px; font-size:var(--f-sm); }
.post-foot .wp-block-post-terms a{ padding:6px 14px; border-radius:999px; box-shadow:inset 0 0 0 1px var(--hair); color:var(--ink-2); }
.post-foot .wp-block-post-terms a:hover{ box-shadow:inset 0 0 0 1px var(--accent); color:var(--accent); }
.post-foot .wp-block-post-terms__separator{ display:none; }
.post-nav{ display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.post-nav .post-navigation-link-next{ text-align:right; justify-self:end; }
.post-nav a{ font-family:'Fraunces',ui-serif,Georgia,serif; font-size:clamp(17px,1.5vw,21px); line-height:1.25; color:var(--ink); }
.post-nav a:hover{ color:var(--accent); }
.post-nav .post-navigation-link__label{ display:block; margin-bottom:6px; font-family:'Geist',ui-sans-serif,system-ui,sans-serif; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--mute); }

/* News cards */
.news-grid .wp-block-post-template{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(36px,4vw,64px) clamp(20px,2.4vw,40px); margin:0; padding:0; list-style:none; }
@media (max-width:980px){ .news-grid .wp-block-post-template{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px){ .news-grid .wp-block-post-template{ grid-template-columns:1fr; } }
.news-grid .wp-block-post-template > li{ margin:0; display:grid; gap:12px; align-content:start; }
.news-card__img{ margin:0 0 6px; overflow:hidden; border-radius:var(--r); background:var(--tint-2); aspect-ratio:4/3; }
.news-card__img img{ width:100%; height:100%; object-fit:cover; transition:transform 1.1s var(--ease-s); }
.news-grid li:hover .news-card__img img{ transform:scale(1.04); }
.news-card__date{ margin:0; font-size:var(--f-xs); letter-spacing:.16em; text-transform:uppercase; color:var(--accent-2); }
.news-grid .wp-block-post-title{ font-size:clamp(21px,1.9vw,27px); line-height:1.16; letter-spacing:-.018em; margin:0; }
.news-grid .wp-block-post-title a:hover{ color:var(--accent); }
.news-grid .wp-block-post-excerpt{ margin:0; font-size:var(--f-sm); color:var(--mute); }
.news-grid .wp-block-post-excerpt__excerpt{ margin:0; }
.news-grid .wp-block-post-excerpt__more-text{ display:none; }
.news-grid .wp-block-query-pagination{ margin-top:clamp(48px,5vw,80px); gap:14px; font-size:var(--f-sm); justify-content:center; }
.news-grid .wp-block-query-pagination a:hover{ color:var(--accent); }
.news-grid .wp-block-query-pagination-numbers .current{ color:var(--accent); font-weight:500; }
.news-empty{ padding:clamp(28px,3vw,44px); border-radius:var(--r); background:var(--tint); color:var(--ink-2); }
.news-empty p{ margin:0; }

/* Search and 404 */
.wp-block-search .wp-block-search__inside-wrapper{ border:0; padding:0; gap:10px; }
.wp-block-search .wp-block-search__input{ border:1px solid var(--hair); border-radius:999px; padding:12px 20px; font:inherit; font-size:var(--f-sm); background:#fff; color:var(--ink); min-width:0; }
.wp-block-search .wp-block-search__input:focus{ outline:2px solid var(--accent); outline-offset:2px; }
.wp-block-search .wp-block-search__button{ margin:0; border:0; border-radius:999px; padding:12px 24px; background:var(--ink); color:#fff; font:inherit; font-size:var(--f-sm); font-weight:450; cursor:pointer; transition:background .4s var(--ease); }
.wp-block-search .wp-block-search__button:hover{ background:var(--accent-2); }
.page-hero .wp-block-search{ margin-top:clamp(22px,2.6vw,34px); max-width:560px; }
