/* src/styles/cbc-base.css */
:root{
  /* tracking ladder */
  --tr-wide:.16em;
  --tr-mid:.11em;
  --tr-tight:.07em;
  /* layout */
  --rail:64px;
  --gut:clamp(22px,4vw,56px);
  --maxw:1400px;
  --band-max:1180px;
  /* written by the hero parallax script; must exist for the initial paint */
  --px:0;
  --py:0;
  --sy:0;
  /* measured into place by the nav script; this is the pre-JS fallback and
     matches the desktop nav height (54px logo + 2x18px padding + 1px rule) */
  --nav-h:91px;
}
@media(max-width:900px){ :root{ --rail:0px; } }
/* `.rv` is scroll-reveal: opacity:0 until cbc-runtime.js adds `.in`. Site
   scripts do not load in the Instatic editor canvas, so there every .rv block
   would sit at opacity:0 forever — correctly sized but invisible, which reads
   as a broken page. The animation is a progressive enhancement, so default to
   visible and let the script animate from `.rv:not(.in)` when it is present. */
.rv{opacity:1;transform:none}
html.cbc-rv .rv{opacity:0;transform:translateY(26px)}
html.cbc-rv .rv.in{opacity:1;transform:none}
/* An <instatic-loop> renders its rows inside a wrapper div, so a grid
   container that loops its children ends up with a single block-level child
   and collapses to one column. `display:contents` removes the wrapper from
   layout so the cards become the grid's own items.

   Written as a descendant selector on purpose: the attribute form
   (`.work-grid > [data-instatic-loop]`) is valid CSS and renders fine, but
   Instatic parses published stylesheets through happy-dom, whose selector
   parser throws on it and takes the server process down mid-publish. */
.work-grid div,
.test-grid div,
.about-grid div{display:contents}
/* `.grid` / `.grid-3` / `.grid-2` and friends are simple single-class rules, so
   split_css routes them to the Selectors panel via site_apply_css. Panel rules
   are not emitted into the published stylesheet, so /blog/ and /services/ —
   which use `class="grid grid-3"` for their card rows — rendered with no grid
   at all. Re-emit them as file CSS, where they actually ship. */
.grid{display:grid;gap:18px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:980px){ .grid-3,.gal,.smap{grid-template-columns:repeat(2,1fr)} }
@media(max-width:620px){ .grid-3,.grid-2,.gal,.smap{grid-template-columns:1fr} }

.fonts-pending h1,
.fonts-pending h2,
.fonts-pending h3{letter-spacing:-.03em;word-spacing:-.02em}
:focus-visible{
  outline:2px solid var(--cbc-gold-lift);
  outline-offset:3px;
  border-radius:1px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--cbc-bg);color:var(--cbc-fg);
  font-family:var(--font-cbc-label);font-weight:400;font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block}
html,body{max-width:100%;overflow-x:clip}
@supports not (overflow:clip){ html,body{overflow-x:hidden} }
a{color:inherit;text-decoration:none}
h1,h2,h3{font-family:var(--font-cbc-display);font-weight:400;margin:0;line-height:.96}
/* `.split` is the two-column content/sidebar row (contact page, and others).
   Like .grid-3 it is a single-class rule, so it lives only in the Selectors
   panel and never shipped — and the source site gives it no breakpoint at all.
   Left as-is the 1.25fr/.75fr columns hold at every width: at 390px the content
   column computes to ~161px and the contact form inside collapses to ~107px. */
.split{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(28px,5vw,72px);align-items:start}
@media(max-width:860px){ .split{grid-template-columns:1fr} }

/* The contact panel. Single-class rules live only in the Selectors panel and
   are tree-shaken out of the published stylesheet — the same bug as .grid-3 and
   .split — so this has to ship as file CSS to take effect at all.

   The border was `dashed` while the contact form was a stand-in, to mark the
   block as a placeholder. The form is real now, so a dashed "unfinished" box
   reads as a rendering bug to anyone reviewing the page. */
.ghl{border:1px solid var(--cbc-rule);background:var(--cbc-bg-2);padding:clamp(26px,3.4vw,44px)}


/* src/styles/cbc-chrome.css */
.rail-rot:focus-visible{outline-offset:2px}
.rail a,.rail span{pointer-events:auto}
.rail-rot:hover{color:var(--cbc-fg-2)}
.nav.scrolled{background:rgba(7,7,10,.94);backdrop-filter:blur(16px);border-bottom-color:var(--cbc-rule)}
.nav-word b{font-family:"Cinzel",var(--font-cbc-display);font-weight:600;font-size:clamp(15px,1.5vw,19px);line-height:1;letter-spacing:.13em;text-transform:uppercase;color:var(--cbc-fg)}
.nav-word i{font-family:var(--font-cbc-label);font-style:normal;font-weight:400;font-size:clamp(8.5px,.78vw,10px);line-height:1;letter-spacing:.40em;text-transform:uppercase;color:var(--cbc-fg-3);text-indent:.40em}
.nav-mid a{
  font-size:var(--text-micro);letter-spacing:var(--tr-mid);text-transform:uppercase;
  color:var(--cbc-fg-2);transition:color .3s;position:relative;
}
.nav-mid a:hover,.nav-mid a[aria-current]{color:#fff}
.nav-mid a::after{
  content:"";position:absolute;left:0;bottom:-7px;width:0;height:1px;
  background:var(--cbc-gold);transition:width .35s cubic-bezier(.2,.8,.2,1);
}
.nav-mid a:hover::after{width:100%}
.nav-mid a[aria-current]::after{width:100%}
.phero-media img{width:100%;height:100%;object-fit:cover;object-position:62% 54%;filter:saturate(.85)}
.phero-media::before{
  content:"";position:absolute;inset:0;width:100%;
  background:
    linear-gradient(to right,rgba(4,4,6,.96) 0%,rgba(4,4,6,.9) 34%,rgba(4,4,6,.72) 58%,rgba(4,4,6,.5) 82%,rgba(4,4,6,.42) 100%);
  z-index:1;
}
.phero-media::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:58%;
  background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.55) 45%,rgba(7,7,10,.98) 100%);
  z-index:1;
}
.crumb a{color:var(--cbc-fg-3);transition:color .3s}
.crumb a:hover{color:#fff}
.crumb span{margin:0 10px;color:var(--cbc-fg-4)}
.phero h1{
  font-size:clamp(38px,6vw,86px);letter-spacing:-.015em;
  max-width:min(760px,62vw);margin-bottom:24px;
}
.phero h1 em{font-style:normal;color:var(--cbc-gold-lift)}
.phero h1 .ln{display:block;overflow:hidden}
.phero h1 .ln > span{display:block;animation:lineIn 1.25s cubic-bezier(.16,.84,.28,1) both}
.phero h1 .ln:nth-child(1) > span{animation-delay:.3s}
.phero h1 .ln:nth-child(2) > span{animation-delay:.45s}
.f-word b{font-family:"Cinzel",var(--font-cbc-display);font-weight:600;font-size:clamp(17px,1.7vw,21px);line-height:1;letter-spacing:.13em;text-transform:uppercase;color:var(--cbc-fg)}
.f-word i{font-family:var(--font-cbc-label);font-style:normal;font-weight:400;font-size:clamp(9px,.85vw,11px);line-height:1;letter-spacing:.40em;text-transform:uppercase;color:var(--cbc-fg-3);text-indent:.40em}
.phero,.hero,.cta,.pull{--band-max:1600px}
.phero-media,.hero-media,.cta-img,.pull-img{
  max-width:var(--band-max);
  left:50%;transform-origin:50% 50%;
  margin-inline:auto;right:auto;
  width:min(100%,var(--band-max));
  translate:-50% 0;
}
.nav-mid a:hover{color:#fff}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:22% 24%}
.hero-media::before{
  content:"";position:absolute;inset:0;width:80%;
  background:linear-gradient(to right,rgba(0,0,0,.95) 0%,rgba(0,0,0,.88) 34%,rgba(0,0,0,.66) 58%,rgba(0,0,0,.28) 82%,rgba(0,0,0,0) 100%);
  z-index:1;
}
.hero-media::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:62%;
  background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.55) 45%,rgba(7,7,10,.97) 100%);
  z-index:1;
}
.hero-kicker span{
  font-size:11px;letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--cbc-fg-3);
}
.hero h1{
  text-align:right;
  font-size:clamp(34px,5.1vw,74px);
  letter-spacing:-.01em;
  max-width:min(520px,44vw);
  margin-bottom:40px;
}
.hero h1 em{font-style:normal;color:var(--cbc-gold-lift)}
.hero-cap b{
  display:block;font-family:var(--font-cbc-label);font-weight:500;
  font-size:15px;letter-spacing:var(--tr-tight);text-transform:uppercase;color:#fff;margin-bottom:10px;
}
.hero-cap p{margin:0;font-size:var(--text-small);line-height:1.7;color:rgba(255,255,255,.8)}
.hero-count .now{font-size:clamp(38px,4.6vw,64px);color:#fff}
.hero-count .rule{width:42px;height:1px;background:rgba(255,255,255,.45);align-self:center}
.hero-count .all{font-size:clamp(20px,2.2vw,30px);color:rgba(255,255,255,.5)}
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln > span{
  display:block;
  animation:lineIn 1.25s cubic-bezier(.16,.84,.28,1) both;
}
.hero h1 .ln:nth-child(1) > span{animation-delay:.35s}
.hero h1 .ln:nth-child(2) > span{animation-delay:.50s}
.hero h1 .ln:nth-child(3) > span{animation-delay:.65s}
.hero-foot > *{animation:fadeUp 1.05s cubic-bezier(.16,.84,.28,1) both}
.hero-foot > *:nth-child(1){animation-delay:1.05s}
.hero-foot > *:nth-child(2){animation-delay:1.18s}
.hero-foot p{
  font-size:var(--text-small);line-height:1.75;color:var(--cbc-fg-3);
  margin:0;max-width:290px;letter-spacing:.02em;
}

/* src/styles/cbc-content.css */
.btn:focus-visible{outline-color:var(--cbc-gold);outline-offset:3px}
.label::before{content:"";width:24px;height:1px;background:var(--cbc-gold)}
.btn:hover{transform:translateY(-2px);background:var(--cbc-gold);color:var(--cbc-bg-2)}
.btn-ghost:hover{background:#fff;color:var(--cbc-bg-2);border-color:#fff}
.cred b{
  display:block;font-family:var(--font-cbc-display);font-size:clamp(20px,2.4vw,30px);
  line-height:1;color:#fff;margin-bottom:7px;
}
.cred span{font-size:10px;letter-spacing:var(--tr-tight);text-transform:uppercase;color:var(--cbc-fg-4)}
.intro-media img{width:100%;height:100%;object-fit:cover;object-position:center 10%}
.intro-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(7,7,10,.7) 0%,rgba(7,7,10,0) 44%);
}
.intro-tag small{font-size:10px;letter-spacing:var(--tr-tight);text-transform:uppercase;color:var(--cbc-fg-4);display:block}
.intro-tag b{font-family:var(--font-cbc-display);font-weight:400;font-size:20px;display:block;margin-top:5px}
.intro-body h2{font-size:clamp(30px,4vw,52px);margin-bottom:22px}
.intro-body p:not(.label){color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.85;margin:0 0 20px}
.intro-body p.first{color:var(--cbc-fg-2);font-size:var(--text-lead)}
.chapter h3{font-size:clamp(24px,2.7vw,36px);margin-bottom:16px;line-height:1.08}
.chapter p{margin:0;color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.85;max-width:760px}
.cta-img img{width:100%;height:100%;object-fit:cover;object-position:center 24%;opacity:.34}
.cta::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,var(--cbc-bg) 0%,rgba(7,7,10,.5) 48%,var(--cbc-bg) 100%)}
.cta .wrap{position:relative;z-index:2}
.cta h2{font-size:clamp(34px,5.6vw,80px);margin-bottom:22px}
.cta p:not(.label){max-width:500px;margin:0 auto 30px;color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.8}
.cta-phone:hover{color:var(--cbc-gold-lift)}
.cta-phone small{
  display:block;font-family:var(--font-cbc-label);font-size:10px;
  letter-spacing:var(--tr-mid);text-transform:uppercase;color:var(--cbc-fg-4);margin-bottom:8px;
}
.sub input{flex:1;min-width:0;background:transparent;border:0;padding:13px 16px;color:var(--cbc-fg);font-family:var(--font-cbc-label);font-size:var(--text-small)}
.sub input::placeholder{color:var(--cbc-fg-4)}
.sub input:focus{outline:none;background:rgba(255,255,255,.04)}
.sub button{
  background:#fff;border:0;padding:13px 20px;color:var(--cbc-bg-2);cursor:pointer;
  font-family:var(--font-cbc-label);font-weight:500;font-size:10px;letter-spacing:var(--tr-mid);
  text-transform:uppercase;transition:background .35s;
}
.sub button:hover{background:var(--cbc-gold)}
.prose h2{font-size:clamp(24px,2.8vw,38px);margin:48px 0 16px;line-height:1.12}
.prose h3{font-size:clamp(20px,2.2vw,27px);margin:34px 0 12px;line-height:1.2}
.prose p{color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.85;margin:0 0 18px}
.prose ul{margin:0 0 20px;padding-left:0;list-style:none}
.prose li{
  color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.85;
  margin:0 0 12px;padding-left:26px;position:relative;
}
.prose li::before{
  content:"";position:absolute;left:4px;top:.72em;
  width:7px;height:1px;background:var(--cbc-gold);
}
.prose a:not(.btn){color:var(--cbc-gold-lift);border-bottom:1px solid rgba(217,180,95,.4)}
.prose a:not(.btn):hover{border-bottom-color:var(--cbc-gold-lift)}
.prose .meta{
  font-size:var(--text-micro);letter-spacing:var(--tr-mid);text-transform:uppercase;
  color:var(--cbc-fg-4);margin-bottom:26px;
}
.card:hover{transform:translateY(-5px);border-color:var(--cbc-rule-2)}
.card-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.card:hover .card-img img{transform:scale(1.05)}
.card time,.card .kicker{
  font-size:10px;letter-spacing:var(--tr-mid);text-transform:uppercase;color:var(--cbc-fg-4);
}
.card h3{font-size:clamp(20px,2vw,25px);line-height:1.22;margin:12px 0 12px}
.card p{color:var(--cbc-fg-3);font-size:var(--text-small);line-height:1.7;margin:0 0 20px;flex:1}
.card .go{
  font-size:var(--text-micro);letter-spacing:var(--tr-mid);text-transform:uppercase;
  color:var(--cbc-gold-lift);display:inline-flex;gap:8px;align-items:center;
}
.gal figure{margin:0;position:relative;overflow:hidden;aspect-ratio:4/5;border:1px solid var(--cbc-rule)}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.gal figure:hover img{transform:scale(1.06)}
.gal figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:16px 18px;
  background:linear-gradient(to top,rgba(7,7,10,.92),rgba(7,7,10,0));
  font-size:var(--text-micro);letter-spacing:var(--tr-tight);text-transform:uppercase;color:var(--cbc-fg-2);
}
.work-card:hover{transform:translateY(-5px);border-color:var(--cbc-rule-2)}
.work-card .ph{position:relative;aspect-ratio:3/4;overflow:hidden}
.work-card img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.work-card:hover img{transform:scale(1.05)}
.work-card .meta{
  position:absolute;left:0;right:0;bottom:0;padding:40px 18px 16px;
  background:linear-gradient(to top,rgba(7,7,10,.94) 15%,rgba(7,7,10,0));
}
.work-card .meta b{
  display:block;font-family:var(--font-cbc-display);font-weight:400;
  font-size:19px;line-height:1.2;color:#fff;
}
.work-card .meta span{
  display:block;margin-top:6px;font-size:10px;letter-spacing:var(--tr-mid);
  text-transform:uppercase;color:var(--cbc-gold-lift);
}
.work-card.is-hidden{display:none}
.work-hero .shot{border:1px solid var(--cbc-rule);overflow:hidden}
.work-hero .shot img{width:100%;height:auto;display:block}
.work-facts li{
  display:flex;justify-content:space-between;gap:16px;
  padding:13px 0;border-bottom:1px solid var(--cbc-rule);font-size:var(--text-small);
}
.work-facts li span:first-child{color:var(--cbc-fg-4);letter-spacing:var(--tr-tight);text-transform:uppercase;font-size:10px}
.work-facts li span:last-child{color:var(--cbc-fg-2);text-align:right}
.glass-card:hover{
  border-color:rgba(255,255,255,.55);
  box-shadow:0 34px 80px rgba(0,0,0,.6);
}
.glass-card > *{transform:translateZ(26px)}
.glass-card .arw{align-self:flex-end;font-size:22px;color:rgba(255,255,255,.9);line-height:1}
.glass-card-img img{width:100%;height:100%;object-fit:cover}
.glass-card h3{
  font-family:var(--font-cbc-label);font-weight:500;font-size:15px;line-height:1.15;
  letter-spacing:-.01em;color:#fff;
}
.sec-head h2{font-size:clamp(34px,5vw,68px);margin-bottom:18px}
.sec-head p:not(.label){color:var(--cbc-fg-3);margin:0;font-size:var(--text-body);line-height:1.8;max-width:480px}

/* src/styles/cbc-forms.css */
/* Contact + newsletter form styling.

   The site had no form CSS at all — every form here is new. Written against
   the same --cbc-* framework tokens as the rest of the site so it inherits the
   dark ground and gold accent rather than restating them.

   Unstyled form controls in a dark theme are the worst case: browsers paint
   them with a light system background, so an unstyled input is a white slab on
   a near-black page. Hence the explicit background/colour on every control. */

.cform {
  display: grid;
  gap: 16px;
  max-width: 560px;
  margin: 0;
}

.cform .f-row {
  display: grid;
  gap: 7px;
  margin: 0;
}

.cform label {
  font-family: var(--font-cbc-label, inherit);
  font-size: var(--text-micro);
  letter-spacing: var(--tr-mid);
  text-transform: uppercase;
  color: var(--cbc-fg-3);
}

.cform input,
.cform select,
.cform textarea {
  width: 100%;
  padding: 13px 15px;
  background: var(--cbc-bg-3);
  border: 1px solid var(--cbc-rule);
  border-radius: 3px;
  color: var(--cbc-fg);
  font: inherit;
  font-size: var(--text-small);
  line-height: 1.5;
  /* Safari otherwise ignores the background above on select and date inputs. */
  -webkit-appearance: none;
  appearance: none;
  transition: border-color .2s ease, background .2s ease;
}

.cform textarea {
  resize: vertical;
  min-height: 120px;
}

/* The appearance reset above removes the native dropdown arrow, so draw one.
   Inline SVG as a data URI keeps it a background image — no extra request, and
   no icon font to load for a single glyph. */
.cform select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%23b78f3b' d='M1 1.5 6 6.5l5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 15px center;
  background-size: 11px;
  padding-right: 40px;
}

/* The options list is painted by the OS, not the page, so it does not inherit
   any of the above — set it explicitly or it renders black-on-black on some
   platforms. */
.cform select option {
  background: var(--cbc-bg-3);
  color: var(--cbc-fg);
}

.cform ::placeholder {
  color: var(--cbc-fg-4);
  opacity: 1; /* Firefox dims placeholders by default on top of the colour. */
}

.cform input:hover,
.cform select:hover,
.cform textarea:hover {
  border-color: var(--cbc-rule-2);
}

.cform input:focus,
.cform select:focus,
.cform textarea:focus {
  outline: none;
  border-color: var(--cbc-gold);
  background: var(--cbc-bg-2);
}

.cform input:focus-visible,
.cform select:focus-visible,
.cform textarea:focus-visible {
  outline: 2px solid var(--cbc-gold);
  outline-offset: 2px;
}

/* Chrome paints autofilled fields with an opaque light yellow that cannot be
   overridden by `background`. A long inset shadow in the field colour is the
   standard way to cover it. */
.cform input:-webkit-autofill,
.cform input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 100px var(--cbc-bg-3) inset;
  -webkit-text-fill-color: var(--cbc-fg);
}

.cform button[type="submit"] {
  justify-self: start;
  cursor: pointer;
  border: 0;
}

.cform button[disabled] {
  opacity: .55;
  cursor: progress;
}

/* base.form-message nodes. The runtime keeps success/error hidden until a
   submit resolves, then unhides the matching one and writes the text into it.
   The kind lives in the attribute's own value — there is no separate data-kind
   attribute — so these selectors match on it directly. Without styling here the
   confirmation arrives as unstyled body copy and is easy to miss. */
.cform [data-instatic-form-message] {
  font-size: var(--text-small);
  line-height: 1.7;
  margin: 0;
}

.cform [data-instatic-form-message="error"] {
  color: #e2827a;
}

.cform [data-instatic-form-message="success"] {
  color: var(--cbc-gold-lift);
  border-left: 2px solid var(--cbc-gold);
  padding-left: 14px;
}

/* Instatic's runtime does not mark individual failed controls (no aria-invalid,
   no per-field error node) — it only sets form-level state and fills the error
   message. So field-level invalid styling is left to the browser's own
   constraint validation below rather than styled against attributes that are
   never written. */
.cform input:user-invalid,
.cform select:user-invalid,
.cform textarea:user-invalid {
  border-color: #e2827a;
}

/* Consent checkboxes.

   A2P 10DLC carrier review requires two separate boxes (transactional vs
   marketing), neither pre-checked, neither required to submit. That means the
   copy beside them is a full sentence, not a field name — so these labels must
   escape the uppercase micro-type `.cform label` rule above, which is meant for
   short field captions and renders sentences unreadable. */
.cform .f-consent label {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  cursor: pointer;
  /* reset the field-caption treatment */
  font-family: inherit;
  font-size: var(--text-small);
  letter-spacing: normal;
  text-transform: none;
  color: var(--cbc-fg-3);
  line-height: 1.6;
}

/* `appearance: none` on the shared input rule would strip the tick, and the
   width:100% would stretch the box across the row — so the checkbox opts out
   of both and keeps its native control. */
.cform .f-consent input[type="checkbox"] {
  appearance: auto;
  -webkit-appearance: checkbox;
  width: 16px;
  height: 16px;
  min-height: 0;
  padding: 0;
  margin: 2px 0 0;
  border: 0;
  background: none;
  accent-color: var(--cbc-gold);
  flex: none;
  cursor: pointer;
}

.cform .f-consent label:hover {
  color: var(--cbc-fg-2);
}

.cform .f-fine {
  margin: -4px 0 0;
  font-size: var(--text-micro);
  line-height: 1.6;
  color: var(--cbc-fg-4);
}

.cform .f-fine a {
  color: var(--cbc-fg-3);
  text-decoration: underline;
}

@media (max-width: 620px) {
  .cform {
    max-width: none;
  }
}

/* Footer newsletter (`.sub`). It keeps its own existing layout — this only
   places the status messages, which are new. The form is display:flex, so a
   message div would otherwise line up as a third column beside the input and
   the button; forcing 100% flex-basis pushes it onto its own row underneath. */
.sub {
  flex-wrap: wrap;
}

.sub [data-instatic-form-message] {
  flex: 0 0 100%;
  margin-top: 10px;
  font-size: var(--text-micro);
  line-height: 1.6;
  color: var(--cbc-gold-lift);
}

.sub [data-instatic-form-message="error"] {
  color: #e2827a;
}


/* src/styles/cbc-misc.css */
@keyframes lineIn{
  from{transform:translateY(108%) rotateX(38deg);opacity:0;filter:blur(7px)}
  to  {transform:none;opacity:1;filter:blur(0)}
}
@keyframes fadeUp{from{transform:translateY(26px);opacity:0}to{transform:none;opacity:1}}
main{margin-left:var(--rail)}
section{padding:clamp(72px,9vw,132px) 0}
.pull-img img{width:100%;height:100%;object-fit:cover;opacity:.2}
.pull::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,var(--cbc-bg) 0%,rgba(7,7,10,.55) 50%,var(--cbc-bg) 100%)}
.pull .wrap{position:relative;z-index:2;text-align:center}
.pull blockquote{
  margin:0 auto;max-width:900px;
  font-family:var(--font-cbc-display);font-size:clamp(24px,3.6vw,50px);
  line-height:1.24;color:#fff;
}
.pull blockquote em{font-style:normal;color:var(--cbc-gold-lift)}
.pull cite{
  display:block;margin-top:28px;font-style:normal;
  font-size:10px;letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--cbc-fg-4);
}
.mv:hover{transform:translateY(-6px);border-color:rgba(255,255,255,.5);box-shadow:0 30px 70px rgba(0,0,0,.5)}
.mv .arw{position:absolute;top:24px;right:26px;font-size:20px;color:rgba(255,255,255,.55)}
.mv small{font-size:10px;letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--cbc-gold-lift);display:block;margin-bottom:14px}
.mv h3{font-size:clamp(24px,2.6vw,32px);margin-bottom:16px;line-height:1.1}
.mv p{margin:0;color:var(--cbc-fg-3);font-size:var(--text-body);line-height:1.85}
footer{background:var(--cbc-bg-2);border-top:1px solid var(--cbc-rule);padding:clamp(60px,7vw,94px) 0 0;margin-left:var(--rail)}
footer h4{font-size:10px;letter-spacing:var(--tr-mid);text-transform:uppercase;color:var(--cbc-fg);margin:0 0 20px;font-weight:500}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:11px;font-size:var(--text-small);color:var(--cbc-fg-3)}
footer a:hover{color:#fff}
.socials a{
  width:38px;height:38px;border:1px solid var(--cbc-rule-2);
  display:grid;place-items:center;color:var(--cbc-fg-3);
  transition:background .35s,color .35s,border-color .35s;
}
.socials a:hover{background:#fff;color:var(--cbc-bg-2);border-color:#fff}
.socials svg{width:15px;height:15px;fill:currentColor}
.rv.in{opacity:1;transform:none}
.filters button{
  background:transparent;border:1px solid var(--cbc-rule);color:var(--cbc-fg-3);
  padding:10px 18px;font-family:var(--font-cbc-label);font-size:var(--text-micro);
  letter-spacing:var(--tr-mid);text-transform:uppercase;cursor:pointer;
  transition:border-color .35s,color .35s,background .35s;
}
.filters button:hover{color:#fff;border-color:var(--cbc-rule-2)}
.filters button[aria-pressed="true"]{background:#fff;color:var(--cbc-bg-2);border-color:#fff}
.ghl-tag::before{content:"";width:6px;height:6px;background:var(--cbc-gold-lift);border-radius:50%}
.ghl h3{font-size:clamp(20px,2.2vw,26px);margin-bottom:12px}
.ghl > p{color:var(--cbc-fg-3);font-size:var(--text-small);line-height:1.8;margin:0 0 22px;max-width:520px}
.ghl code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;
  background:rgba(255,255,255,.06);padding:2px 7px;color:var(--cbc-fg-2);
}
.fake .row{display:grid;gap:14px;grid-template-columns:1fr 1fr}
.fake label{
  display:block;font-size:10px;letter-spacing:var(--tr-mid);
  text-transform:uppercase;color:var(--cbc-fg-4);margin-bottom:7px;
}
.fake input,.fake select,.fake textarea{
  width:100%;background:rgba(255,255,255,.04);border:1px solid var(--cbc-rule);
  padding:13px 14px;color:var(--cbc-fg);font-family:var(--font-cbc-label);font-size:var(--text-small);
}
.fake input:focus,.fake select:focus,.fake textarea:focus{outline:none;border-color:var(--cbc-gold)}
.fake textarea{min-height:110px;resize:vertical}
.fake .btn{justify-content:center;margin-top:4px;opacity:.55;cursor:not-allowed}
.hours li{
  display:flex;gap:10px;justify-content:space-between;
  font-size:var(--text-small);color:var(--cbc-fg-3);margin-bottom:9px;
}
.hours li span{color:var(--cbc-fg-4);white-space:nowrap}
.cinfo div small{
  display:block;font-size:10px;letter-spacing:var(--tr-mid);
  text-transform:uppercase;color:var(--cbc-fg-4);margin-bottom:8px;
}
.cinfo div a,.cinfo div p{
  font-family:var(--font-cbc-display);font-size:clamp(18px,1.9vw,23px);
  color:var(--cbc-fg);margin:0;line-height:1.35;
}
.cinfo div a:hover{color:var(--cbc-gold-lift)}
.smap h2{font-size:clamp(19px,2vw,24px);margin-bottom:18px}
.smap ul{list-style:none;margin:0;padding:0}
.smap li{margin-bottom:11px}
.smap a{color:var(--cbc-fg-3);font-size:var(--text-small);transition:color .3s}
.smap a:hover{color:#fff}
@keyframes cardIn{
  from{opacity:0;transform:translate3d(40px,30px,0) rotateY(-12deg)}
  to  {opacity:1}
}
.about-media img{width:100%;height:100%;object-fit:cover;object-position:center 12%}
.about-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(7,7,10,.72) 0%,rgba(7,7,10,0) 46%);
}
.about-tag small{font-size:10px;letter-spacing:var(--tr-tight);text-transform:uppercase;color:var(--cbc-fg-4);display:block}
.about-tag b{font-family:var(--font-cbc-display);font-weight:400;font-size:19px;display:block;margin-top:5px}
.about-body h2{font-size:clamp(32px,4.4vw,58px);margin-bottom:22px}
.about-body p:not(.label){color:var(--cbc-fg-3);margin:0 0 22px;font-size:var(--text-body);line-height:1.85}
.svc:hover{padding-left:18px}
.svc:hover .svc-name{color:var(--cbc-gold-lift)}
.svc:hover .svc-thumb{opacity:1;transform:translateY(-50%) scale(1)}
.svc-thumb img{width:100%;height:100%;object-fit:cover}
.svc:hover .svc-arw{color:#fff;transform:translate(4px,-4px)}
.quote:hover{background:var(--cbc-bg-3)}
.quote p{font-family:var(--font-cbc-display);font-size:19px;line-height:1.45;margin:0 0 26px;flex:1;color:var(--cbc-fg-2)}
.who img{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:none}
.who b{display:block;font-size:13px;font-weight:400;color:var(--cbc-fg)}
.who em{display:block;font-style:normal;font-size:10px;letter-spacing:var(--tr-tight);text-transform:uppercase;color:var(--cbc-fg-4);margin-top:2px}
.post:hover{padding-left:18px}
.post time{font-size:10px;letter-spacing:var(--tr-mid);text-transform:uppercase;color:var(--cbc-fg-4)}
.post h3{font-family:var(--font-cbc-display);font-size:clamp(22px,2.1vw,27px);line-height:1.2;transition:color .4s}
.post:hover h3{color:var(--cbc-gold-lift)}
.post .svc-arw{font-size:16px}

/* src/styles/cbc-responsive.css */
@media(max-width:1024px){ .f-grid{grid-template-columns:1fr 1fr} }
@media(max-width:900px){
  :root{--rail:0px}
  .rail{display:none}
  .nav{left:0}
  .phero,main,footer{margin-left:0}
  .nav-mid{
    position:fixed;inset:var(--nav-h,85px) 0 auto 0;flex-direction:column;align-items:flex-start;gap:0;
    background:var(--cbc-bg);border-bottom:1px solid var(--cbc-rule);
    padding:8px var(--gut) 24px;display:none;
  }
  .nav-mid.open{display:flex}
  .nav-mid a{padding:14px 0;width:100%;font-size:12px}
  .nav-mid a::after{display:none}
  .nav-toggle{display:block}
  .nav > .btn{display:none}
  .nav-mid .btn{display:inline-flex;justify-content:center;width:100%;margin-top:16px;color:var(--cbc-bg-2)}.nav-mid .btn:hover{color:var(--cbc-bg-2)}
  
  .phero{min-height:auto;padding-bottom:8px}
  .crumb{padding-top:calc(var(--nav-h,85px) + 14px);padding-bottom:26px}
  .phero-inner{padding-block:8px 30px}
  .phero h1{max-width:none;font-size:clamp(34px,9vw,54px);margin-bottom:20px}
  .phero-lede{max-width:none}
  .phero-base{padding-top:32px}
  .creds{gap:20px 34px}
  .phero-media::before{
    width:100%;
    background:linear-gradient(to bottom,rgba(4,4,6,.9) 0%,rgba(4,4,6,.82) 45%,rgba(4,4,6,.7) 75%,rgba(4,4,6,.6) 100%);
  }
  .phero-media img{object-position:62% 50%}
  .intro-grid{grid-template-columns:1fr}
  .intro-media{max-width:420px;aspect-ratio:1/1}
  .chapter{grid-template-columns:56px 1fr;gap:16px}
  .creds{gap:22px}
}
@media(max-width:620px){
  .f-grid{grid-template-columns:1fr;gap:36px}
  .sub{flex-wrap:wrap}
  .cred b{font-size:19px}
}
@media(min-width:901px){ .nav-mid .btn{display:none} }
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .rv{opacity:1;transform:none}
  .phero-media,.phero-inner,.phero-base{transform:none!important}
  .phero-media{inset:0}
  .phero h1 .ln > span,.phero-lede,.crumb,.phero-base{opacity:1!important;filter:none!important}
}
@media(max-width:980px){
  .work-grid{grid-template-columns:repeat(2,1fr)}
  .work-hero{grid-template-columns:1fr}
}
@media(max-width:1180px){
  .glass-card{width:186px;height:186px}
  .svc-thumb{display:none}
}