/* ============================================================
   SOAR — BLOCK STYLES (WP-09)
   Every block an editor can insert, designed for the article body
   (.art__b) of insights, basic pages and author pages. Layer 5 of
   the article CSS (spec 9.1), after elevated.css, fs.css, the
   article page style, /_gen/blocks-core (core layout only) and the
   per-block #block-supports rules.

   - One family. Only var(--font-*) or inherit, never a name.
   - elevated.css / fs.css tokens only; 2px radius (var(--radius)).
   - Paragraphs, h2/h3, lists, links, bold and the photo figure keep
     the article page's own rules, so migrated articles render as
     they always have. Everything else is designed here.
   - The editor loads this file too, with .art__b rescoped to its
     block list. Parts between soar:front-only and soar:end markers
     (page breakouts, the lightbox) are left out there.
   ============================================================ */

/* ---- layout primitives --------------------------------------
   WordPress 7 no longer ships these in the "base layout" bundle the
   publisher generates, so they live here. Zero specificity where a
   block's own settings (gap, wrap, justification) must win. */
:where(.art__b){--wp--style--global--content-size:760px;--wp--style--global--wide-size:1100px}
.art__b .is-layout-flex{display:flex}
:where(.art__b .is-layout-flex){flex-wrap:wrap;align-items:center;gap:24px}
.art__b .is-layout-flex>:is(*,div){margin:0}
.art__b .is-layout-grid{display:grid}
:where(.art__b .is-layout-grid){gap:24px}
.art__b .is-layout-grid>:is(*,div){margin:0}
:where(.art__b .is-layout-constrained)>:where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width:var(--wp--style--global--content-size);margin-left:auto;margin-right:auto}
:where(.art__b .is-layout-constrained)>.alignwide{max-width:var(--wp--style--global--wide-size)}
.art__b :is(.is-layout-flow,.is-layout-constrained)>.aligncenter{margin-left:auto!important;margin-right:auto!important}
.art__b :is(.wp-block-group,.wp-block-column,.wp-block-cover__inner-container,.wp-block-media-text__content,.wp-block-quote,.wp-block-details)>:first-child{margin-top:0}
.art__b :is(.wp-block-group,.wp-block-column,.wp-block-cover__inner-container,.wp-block-media-text__content,.wp-block-quote,.wp-block-details)>:last-child{margin-bottom:0}
/* anything after a floated photo or quote starts below it */
.art__b :is(h2,h3,h4,.wp-block-separator,.wp-block-group,.wp-block-columns,.wp-block-gallery,.wp-block-table,.wp-block-quote,.wp-block-cover,.wp-block-media-text,.wp-block-embed,.wp-block-buttons,.wp-block-details,.wp-block-file,.wp-block-footnotes){clear:both}
.art__b .has-text-align-left{text-align:left}
.art__b .has-text-align-center{text-align:center}
.art__b .has-text-align-right{text-align:right}

/* ---- text ---- */
.art__b p.is-style-lead{font-size:clamp(19px,1.5vw,21px);line-height:1.6;color:var(--c-ink);margin-bottom:1.2em}
.art__b h4{color:var(--c-ink);font-size:18px;font-weight:600;line-height:1.3;letter-spacing:var(--tracking-display);
  font-variation-settings:"wdth" var(--wd-display);margin:1.6em 0 .45em}
.art__b h4 strong{font-weight:inherit}
.art__b li>ul,.art__b li>ol{margin:.35em 0 .2em}
.art__b ol ol{list-style-type:lower-alpha}
.art__b ol ol ol{list-style-type:lower-roman}
.art__b sub,.art__b sup{font-size:.72em;line-height:0}
.art__b s{text-decoration-thickness:1px}
/* inline code: the site's one family, set off on a tint; never a monospace */
.art__b :is(code,kbd,samp,tt){font-family:var(--font-mono)}
.art__b :not(pre)>code{font-size:.9em;color:var(--c-ink);background:var(--c-surface-2);border-radius:var(--radius);padding:.12em .38em}

/* ---- photos -------------------------------------------------
   A photo is today's .art__fig: a paper-grey plate, the picture
   centred, never taller than the screen. */
.art__b .wp-block-image:where(:not(.wp-block-gallery .wp-block-image)){margin:1.6em 0;border-radius:var(--radius);overflow:hidden;background:var(--c-surface-2)}
.art__b .wp-block-image:where(:not(.wp-block-gallery .wp-block-image)) img{display:block;width:auto;max-width:100%;max-height:min(560px,70vh);height:auto;margin:0 auto}
.art__b .wp-block-image:where(:not(.wp-block-gallery .wp-block-image))>a{display:block}
.art__b .wp-block-image:where(:not(.wp-block-gallery .wp-block-image)) figcaption{margin:0;padding:10px 14px 12px;font-size:13.5px;line-height:1.5;color:var(--c-muted);text-align:left}
.art__b .wp-block-image.alignleft{float:left;max-width:min(50%,360px);margin:.35em 1.6em 1em 0}
.art__b .wp-block-image.alignright{float:right;max-width:min(50%,360px);margin:.35em 0 1em 1.6em}
.art__b .wp-block-image.aligncenter{display:table;margin-left:auto;margin-right:auto}
.art__b .wp-block-image.aligncenter figcaption{display:table-caption;caption-side:bottom;background:var(--c-surface-2);border-radius:0 0 var(--radius) var(--radius)}
.art__b .wp-block-image:is(.alignwide,.alignfull) img{width:100%;height:auto;max-height:min(80vh,760px);object-fit:cover}
.art__b a[data-lightbox]{cursor:zoom-in}
.art__b a[data-lightbox]:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
@media(max-width:600px){
  .art__b .wp-block-image:is(.alignleft,.alignright){float:none;max-width:none;margin:1.6em 0}
}

/* ---- galleries: 1-4 columns, two on phones (core), cropped or not ---- */
.art__b .wp-block-gallery.has-nested-images{--wp--style--unstable-gallery-gap:12px;gap:12px;margin:1.8em 0}
.art__b .wp-block-gallery.has-nested-images figure.wp-block-image{border-radius:var(--radius);overflow:hidden;background:var(--c-surface-2)}
.art__b .wp-block-gallery.has-nested-images figure.wp-block-image:has(figcaption)::before{content:none}
.art__b .wp-block-gallery.has-nested-images figure.wp-block-image figcaption{padding:30px 12px 10px;font-size:13px;line-height:1.4;text-align:left;text-shadow:none;
  background:linear-gradient(0deg,rgba(9,17,30,.78),rgba(9,17,30,0))}
.art__b .wp-block-gallery.has-nested-images>figcaption{margin:2px 0 0;font-size:13.5px;line-height:1.5;color:var(--c-muted);text-align:left}

/* ---- quote: the testimonial idiom, and Plain ---- */
.art__b .wp-block-quote{margin:2em 0;padding:0;border:0;quotes:none}
.art__b .wp-block-quote:not(.is-style-plain)::before{content:"";display:block;width:56px;height:3px;background:var(--c-primary);margin:0 0 clamp(16px,1.6vw,22px)}
/* a separator right above already sets the quote off: one rule, not two */
.art__b .wp-block-separator+.wp-block-quote:not(.is-style-plain)::before{display:none}
.art__b .wp-block-quote:not(.is-style-plain) p{margin:0 0 .55em;max-width:46ch;color:var(--c-ink);
  font-family:var(--font-display);font-variation-settings:"wdth" var(--wd-display);font-weight:500;
  font-size:clamp(19px,1.9vw,24px);line-height:1.45;letter-spacing:var(--track-display,-0.012em)}
.art__b .wp-block-quote cite{display:block;margin-top:14px;font-style:normal;font-size:14px;font-weight:600;line-height:1.4;letter-spacing:.01em;color:var(--c-ink)}
.art__b .wp-block-quote.is-style-plain{padding-left:clamp(16px,1.8vw,22px);border-left:2px solid var(--c-border)}
.art__b .wp-block-quote.is-style-plain p{margin:0 0 .8em;color:var(--c-ink)}
.art__b .wp-block-quote.is-style-plain cite{margin-top:4px;font-size:13.5px;color:var(--c-muted)}

/* ---- pull statement ---- */
.art__b .wp-block-pullquote{margin:2.2em 0;padding:clamp(22px,2.4vw,30px) 0;border-top:1px solid var(--c-ink);border-bottom:1px solid var(--c-border);text-align:left}
.art__b .wp-block-pullquote blockquote{margin:0;padding:0;border:0}
.art__b .wp-block-pullquote p{margin:0;max-width:30ch;color:var(--c-ink);text-wrap:balance;
  font-family:var(--font-display);font-variation-settings:"wdth" var(--wd-display);font-weight:600;
  font-size:clamp(24px,2.6vw,32px);line-height:1.22;letter-spacing:var(--tracking-display)}
.art__b .wp-block-pullquote p+p{margin-top:.5em}
.art__b .wp-block-pullquote cite{display:block;margin-top:16px;font-style:normal;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted)}
.art__b .wp-block-pullquote:is(.alignleft,.alignright){width:min(42%,320px);padding:18px 0}
.art__b .wp-block-pullquote:is(.alignleft,.alignright) p{font-size:clamp(20px,2vw,24px)}
.art__b .wp-block-pullquote.alignleft{float:left;margin:.4em 1.8em 1em 0}
.art__b .wp-block-pullquote.alignright{float:right;margin:.4em 0 1em 1.8em}
@media(max-width:600px){
  .art__b .wp-block-pullquote:is(.alignleft,.alignright){float:none;width:auto;margin:2em 0}
}

/* ---- tables: hairline rows, 600-weight heads, Stripes, sideways scroll on phones ---- */
/* size and cell padding at zero specificity: fs.css's phone rules for article tables (QA, <=600px) keep winning */
.art__b .wp-block-table{margin:1.8em 0;overflow-x:auto;overscroll-behavior-x:contain}
:where(.art__b .wp-block-table) table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5}
.art__b .wp-block-table table.has-fixed-layout{table-layout:fixed}
:where(.art__b .wp-block-table) :is(th,td){padding:11px 16px 11px 0;text-align:left;vertical-align:top;border:0;overflow-wrap:break-word}
:where(.art__b .wp-block-table) :is(th,td):last-child{padding-right:0}
.art__b .wp-block-table :is(th,td):empty{padding:0}
.art__b .wp-block-table th{font-weight:600;color:var(--c-ink)}
.art__b .wp-block-table thead tr:has(>:not(:empty)){border-bottom:1px solid var(--c-ink)}
.art__b .wp-block-table tbody tr{border-bottom:1px solid var(--c-border)}
.art__b .wp-block-table tfoot tr{border-top:1px solid var(--c-ink)}
.art__b .wp-block-table tfoot td{font-weight:600;color:var(--c-ink)}
.art__b .wp-block-table.is-style-stripes tbody tr{border-bottom:0}
.art__b .wp-block-table.is-style-stripes tbody tr:nth-child(odd){background:var(--c-surface-2)}
.art__b .wp-block-table.is-style-stripes :is(th,td):first-child{padding-left:14px}
.art__b .wp-block-table.is-style-stripes :is(th,td):last-child{padding-right:14px}
.art__b .wp-block-table figcaption{margin:10px 0 0;font-size:13.5px;line-height:1.5;color:var(--c-muted);text-align:left}

/* ---- question and answer (details): the FAQ row, native, no script ---- */
.art__b .wp-block-details{margin:0;border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border)}
.art__b .wp-block-details+.wp-block-details{border-top:0}
.art__b :not(.wp-block-details)+.wp-block-details{margin-top:1.6em}
.art__b .wp-block-details:has(+:not(.wp-block-details)){margin-bottom:1.6em}
.art__b .wp-block-details>summary{display:flex;justify-content:space-between;align-items:baseline;gap:24px;list-style:none;cursor:pointer;
  padding:clamp(18px,2vw,24px) 0;font-size:clamp(17px,1.6vw,20px);font-weight:600;line-height:1.35;
  letter-spacing:var(--tracking-display);color:var(--c-ink);text-wrap:balance}
.art__b .wp-block-details>summary::-webkit-details-marker{display:none}
.art__b .wp-block-details>summary::marker{content:""}
.art__b .wp-block-details>summary::after{content:"+";flex:none;font-weight:500;color:var(--c-accent-text,#A4520A);transition:transform .3s ease}
.art__b .wp-block-details[open]>summary::after{transform:rotate(45deg)}
.art__b .wp-block-details>summary:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.art__b .wp-block-details>:not(summary){max-width:66ch;font-size:16px;line-height:1.66;color:var(--c-muted)}
.art__b .wp-block-details>p{margin:0 0 14px}
.art__b .wp-block-details>:not(summary):last-child{margin-bottom:clamp(20px,2.2vw,26px)}

/* ---- preformatted, code, verse: the same family on a paper panel ---- */
.art__b :is(.wp-block-preformatted,.wp-block-code,.wp-block-verse){margin:1.6em 0;padding:clamp(16px,1.8vw,22px) clamp(18px,2vw,24px);
  font-family:var(--font-mono);font-size:15px;line-height:1.6;color:var(--c-ink);background:var(--c-surface-2);
  border-radius:var(--radius);white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4}
.art__b .wp-block-code code{display:block;font:inherit;font-family:inherit;color:inherit;background:none;padding:0;white-space:inherit}
.art__b .wp-block-verse{font-size:16.5px;line-height:1.75}

/* ---- footnotes ---- */
.art__b .wp-block-footnotes{margin:2.4em 0 0;padding:18px 0 0 1.2em;border-top:1px solid var(--c-border);font-size:14px;line-height:1.6;color:var(--c-muted)}
.art__b .wp-block-footnotes li{margin:.4em 0}
.art__b .wp-block-footnotes a{text-decoration:none}
.art__b sup.fn a,.art__b .fn a{text-decoration:none;font-weight:600;padding:0 .08em}

/* ---- separators: short rule (default), full hairline (Wide Line), dots ---- */
.art__b .wp-block-separator{clear:both;height:0;margin:2.4em auto;border:0;opacity:1}
.art__b .wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:56px;border-top:3px solid var(--c-primary)}
.art__b .wp-block-separator.is-style-wide{width:100%;border-top:1px solid var(--c-border)}
.art__b .wp-block-separator.is-style-dots{width:auto;height:auto;border:0;line-height:1;text-align:center;background:none!important}
.art__b .wp-block-separator.is-style-dots::before{content:"\00b7\00b7\00b7";font-family:var(--font-body);font-size:28px;font-weight:600;
  letter-spacing:1em;padding-left:1em;color:var(--c-accent-text,#A4520A)}

/* ---- spacer: Small / Medium / Large presets ---- */
.art__b .wp-block-spacer{clear:both;margin:0}

/* ---- buttons: Fill is the site's primary button, Outline its text link ---- */
.art__b .wp-block-buttons{margin:1.8em 0;gap:14px 26px}
.art__b .wp-block-buttons>.wp-block-button{margin:0}
.art__b .wp-block-button .btn{text-decoration:none}
.art__b .wp-block-button .btn--primary,.art__b .wp-block-button .btn--primary:hover{color:var(--c-on-accent)}
.art__b .wp-block-button .tlink{text-decoration:none;font-size:15px}
.art__b .wp-block-buttons.is-vertical{flex-direction:column;align-items:flex-start}

/* ---- columns: side by side from 782px, stacked below (core) ---- */
.art__b .wp-block-columns{margin:1.8em 0;gap:clamp(20px,3vw,36px)}
.art__b .wp-block-column .wp-block-image:where(:not(.wp-block-gallery .wp-block-image)){margin:0 0 1em}

/* ---- groups: Panel, Callout, Navy panel, and the palette backgrounds ---- */
.art__b .wp-block-group{margin:1.8em 0}
.art__b .wp-block-group:is(.has-background,.is-style-panel,.is-style-navy){padding:clamp(22px,2.6vw,34px) clamp(22px,2.8vw,36px);border-radius:var(--radius)}
.art__b .wp-block-group.is-style-panel{background:var(--c-surface-2)}
.art__b .wp-block-group.is-style-callout{padding:2px 0 2px clamp(18px,2vw,24px);border-left:3px solid var(--c-accent)}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color){background:var(--c-primary-strong);color:var(--on-ink,#EAF0F7)}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color) :is(h2,h3,h4,strong,b,cite,summary){color:#fff}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color) a:not(.btn){color:#fff}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color) .tlink .ar{color:var(--gold,var(--c-accent))}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color) :is(.wp-block-separator.is-style-wide,.wp-block-details,.wp-block-table tbody tr){border-color:var(--ink-line,rgba(255,255,255,.14))}
.art__b .wp-block-group:is(.is-style-navy,.has-navy-background-color) .wp-block-details>:not(summary){color:var(--on-ink-dim,#9DB0C6)}

/* ---- cover: a photo under an ink-navy overlay, white text, fixed height ---- */
.art__b .wp-block-cover{margin:2em 0;min-height:clamp(260px,30vw,400px)!important;padding:clamp(24px,3vw,44px);border-radius:var(--radius);color:#fff}
.art__b .wp-block-cover .wp-block-cover__background{background-color:var(--c-primary-strong)!important;background-image:none!important}
.art__b .wp-block-cover .wp-block-cover__background:is(.has-background-dim-0,.has-background-dim-10,.has-background-dim-20,.has-background-dim-30,.has-background-dim-40){opacity:.5}
.art__b .wp-block-cover .wp-block-cover__inner-container,.art__b .wp-block-cover.is-light .wp-block-cover__inner-container{color:#fff}
.art__b .wp-block-cover :is(h2,h3,h4,strong,b){color:#fff}
.art__b .wp-block-cover p{color:rgba(255,255,255,.9)}
.art__b .wp-block-cover a:not(.btn){color:#fff}
.art__b .wp-block-cover .tlink .ar{color:var(--gold,var(--c-accent))}

/* ---- media & text: stacks under 760px ---- */
.art__b .wp-block-media-text{margin:2em 0}
.art__b .wp-block-media-text__media :is(img,video){border-radius:var(--radius)}
.art__b .wp-block-media-text>.wp-block-media-text__content{padding:0 0 0 clamp(20px,3vw,36px)}
.art__b .wp-block-media-text.has-media-on-the-right>.wp-block-media-text__content{padding:0 clamp(20px,3vw,36px) 0 0}
@media(max-width:759px){
  .art__b .wp-block-media-text.is-stacked-on-mobile{grid-template-columns:100%!important}
  .art__b .wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__media{grid-column:1;grid-row:1}
  .art__b .wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__content,
  .art__b .wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right>.wp-block-media-text__content{grid-column:1;grid-row:2;padding:18px 0 0}
}

/* ---- video, audio, embeds (YouTube, Vimeo in a 16:9 frame) ---- */
.art__b :is(.wp-block-video,.wp-block-embed){margin:1.8em 0}
.art__b .wp-block-video video{display:block;width:100%;height:auto;border-radius:var(--radius);background:#0a1322}
.art__b .wp-block-embed__wrapper{position:relative;background:#0a1322;border-radius:var(--radius);overflow:hidden}
.art__b .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper{aspect-ratio:16/9}
.art__b .wp-block-embed iframe{display:block;border:0;max-width:100%}
.art__b .wp-block-embed.wp-has-aspect-ratio iframe{position:absolute;inset:0;width:100%;height:100%}
.art__b .wp-block-audio{margin:1.6em 0}
.art__b .wp-block-audio audio{display:block;width:100%;min-width:0}
.art__b :is(.wp-block-video,.wp-block-audio,.wp-block-embed)>figcaption{margin:10px 0 0;font-size:13.5px;line-height:1.5;color:var(--c-muted);text-align:left}
.art__b .wp-block-embed-link{overflow-wrap:anywhere}

/* ---- file download row ---- */
.art__b .wp-block-file{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;margin:1.6em 0;
  padding:16px 20px;border:1px solid var(--c-border);border-radius:var(--radius);background:var(--c-surface)}
.art__b .wp-block-file a{text-decoration:none}
.art__b .wp-block-file a:not(.wp-block-file__button){color:var(--c-ink);font-weight:600;overflow-wrap:anywhere}
.art__b .wp-block-file .wp-block-file__button{flex:none;font-size:14px}

/* ---- social links: logos only, ink on hairline squares (.ashare) ---- */
.art__b .wp-block-social-links{display:flex;flex-wrap:wrap;gap:10px;margin:1.6em 0;padding:0;list-style:none}
.art__b .wp-block-social-links .wp-social-link{margin:0;padding:0;border-radius:var(--radius)!important;background:none!important;color:var(--c-ink)!important;width:auto;height:auto}
.art__b .wp-block-social-links .wp-social-link a{box-sizing:border-box;width:40px;height:40px;padding:0!important;display:grid;place-items:center;
  border:1px solid var(--c-border);border-radius:var(--radius);color:var(--c-ink)!important;background:none!important;text-decoration:none}
.art__b .wp-block-social-links .wp-social-link a:hover{border-color:var(--c-ink)}
.art__b .wp-block-social-links .wp-social-link a:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
.art__b .wp-block-social-links .wp-social-link svg{width:17px;height:17px;fill:currentColor}
.art__b .wp-block-social-links .wp-block-social-link-label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---- captions everywhere share one voice ---- */
.art__b .wp-element-caption a{color:inherit}

/* soar:front-only — breakouts and the lightbox; the editor lays these out itself */
.art__b>.alignwide{width:min(1100px,100vw - 2 * var(--pad,24px));max-width:none;margin-left:calc(50% - min(550px,50vw - var(--pad,24px)))}
.art__b>.alignfull{width:100vw;max-width:none;margin-left:calc(50% - 50vw);border-radius:0}
.art__b>.alignfull :is(img,video){border-radius:0}
body:has(.art__b>.alignfull){overflow-x:clip}

/* the site lightbox (as on /projects/), for photos linked to "Media file" */
.lbx{padding:0;border:0;background:transparent;max-width:min(1200px,94vw);width:94vw;overflow:visible}
.lbx::backdrop{background:rgba(5,10,20,.88)}
.lbx__bar{display:flex;align-items:center;gap:14px;color:#fff;padding:0 0 10px}
.lbx__t{flex:1;font-size:15px;font-weight:600}
.lbx__n{font-size:13px;color:rgba(255,255,255,.7)}
.lbx__x{all:unset;cursor:pointer;font-size:30px;line-height:1;color:#fff;padding:0 4px}
.lbx__stage{position:relative;aspect-ratio:16/10;max-height:80vh;background:#05090f;border-radius:var(--radius);overflow:hidden}
.lbx__stage img{width:100%;height:100%;object-fit:contain;display:block}
.lbx__nav{all:unset;cursor:pointer;position:absolute;top:50%;margin-top:-26px;width:52px;height:52px;display:grid;place-items:center;
  font-size:40px;color:#fff;background:rgba(9,17,30,.6);border-radius:50%}
.lbx__prev{left:-8px}
.lbx__next{right:-8px}
.lbx.one .lbx__nav{display:none}
.lbx :is(.lbx__x,.lbx__nav):focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}
@media(max-width:700px){.lbx__prev{left:6px}.lbx__next{right:6px}}
/* soar:end */
