/**
 * Celthrac Deep Signal — base layer.
 * Self-hosted fonts, reset, global typography, accessibility hardening, and
 * token-backed utility classes. Consumes tokens.css only (no hex literals).
 */

/* ---------------------------------------------------------------- Fonts --- */
/* Self-hosted (GDPR-safe, no third-party round-trip). Weights trimmed to those
   actually used: Inter 400/600/700, Inter Tight 700/800, JetBrains Mono 400/700. */

@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/Inter-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/Inter-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/Inter-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Inter Tight'; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/InterTight-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'Inter Tight'; font-style: normal; font-weight: 800; font-display: swap; src: url(../fonts/InterTight-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/JetBrainsMono-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/JetBrainsMono-latin.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* ----------------------------------------------------------- Reset/base --- */

.ds-theme,
.ds-theme *,
.ds-theme *::before,
.ds-theme *::after { box-sizing: border-box; }

body.ds-theme {
  margin: 0;
  background: var(--cx-charcoal);
  color: var(--cx-n300);
  font-family: var(--cx-fbody);
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.ds-theme h1, .ds-theme h2, .ds-theme h3 {
  font-family: var(--cx-fhead);
  color: var(--cx-white);
  line-height: 1.1;
  margin: 0 0 var(--cx-space-5);
  font-weight: 700;
  letter-spacing: -.01em;
}
.ds-theme h1 { font-size: var(--cx-h1); }
.ds-theme h2 { font-size: var(--cx-h2); }
.ds-theme h3 { font-size: var(--cx-h3); margin-bottom: var(--cx-space-3); }
.ds-theme p  { margin: 0 0 16px; }

.ds-theme a { color: var(--cx-accent); }
.ds-theme a:hover { color: var(--cx-accent-hover); }

/* ------------------------------------------------------------- Utilities --- */
/* Token-backed helpers that replace the static inline styles / section fields. */

.ds-wrap { max-width: var(--cx-maxw); margin: 0 auto; padding: 0 var(--cx-gutter); }
.ds-sec  { padding: var(--cx-sec-y) 0; position: relative; }
.ds-bg-1 { background: var(--cx-charcoal); }
.ds-bg-2 { background: var(--cx-charcoal-2); }

.ds-mt-4 { margin-top: var(--cx-space-6); }   /* 20 */
.ds-mt-5 { margin-top: var(--cx-space-7); }   /* 24 */
.ds-mt-6 { margin-top: var(--cx-space-9); }   /* 34 */

/* ----------------------------------------------------- A11y / motion ------ */

@media (prefers-reduced-motion: reduce) {
  .ds-theme *,
  .ds-theme *::before,
  .ds-theme *::after { transition: none !important; animation: none !important; }
}

@media (max-width: 900px) {
  .ds-sec { padding: var(--cx-sec-y-sm) 0; }
}

/* Two-column split (cx-two): viz/steps, etc. */
.ds-two{display:grid;grid-template-columns:1.02fr .98fr;gap:40px;align-items:center;margin-top:34px;}
@media (max-width:900px){.ds-two{grid-template-columns:1fr;}}

/* ---- Atoms & layout utilities (always loaded; used by templates + components) ---- */
.ds-eyebrow{font-family:var(--cx-fmono);font-size:.8rem;letter-spacing:.18em;color:var(--cx-accent);text-transform:uppercase;display:block;margin-bottom:18px;}
.ds-sub{font-size:1.05rem;color:var(--cx-n500);max-width:820px;}
.ds-lead{font-size:1.22rem;color:var(--cx-white);max-width:760px;}
.ds-grid{display:grid;gap:20px;}
.ds-grid--2{grid-template-columns:repeat(2,1fr);}
.ds-grid--3{grid-template-columns:repeat(3,1fr);}
.ds-grid--4{grid-template-columns:repeat(4,1fr);}
@media (max-width:900px){.ds-grid--3,.ds-grid--2{grid-template-columns:1fr;}.ds-grid--4{grid-template-columns:1fr 1fr;}}
/* Buttons */
.ds-btnrow{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px;}
.ds-btn{display:inline-flex;align-items:center;gap:10px;padding:14px 24px;font-family:var(--cx-fbody);font-weight:700;font-size:1rem;text-decoration:none;border-radius:var(--cx-radius-sm);transition:transform var(--cx-dur) var(--cx-ease),background var(--cx-dur) var(--cx-ease);}
.ds-btn:hover{transform:translateY(-2px);}
.ds-btn--primary{background:var(--cx-accent);color:var(--cx-white);box-shadow:0 10px 30px -10px var(--cx-accent-glow);}
.ds-btn--primary:hover{background:var(--cx-accent-hover);color:var(--cx-white);}
.ds-btn--ghost{background:transparent;color:var(--cx-white);border:1px solid var(--cx-n700);}
.ds-btn--ghost:hover{border-color:var(--cx-accent);color:var(--cx-white);}
/* Pills */
.ds-pills{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px;}
.ds-pill{display:inline-block;border:1px solid var(--cx-n700);border-radius:var(--cx-radius-pill);padding:9px 18px;color:var(--cx-white);font-size:.92rem;font-weight:600;}
.ds-pill.is-on{border-color:var(--cx-accent);}

/* Step list (also used by ds_step paragraphs rendered outside the SDC) */
.ds-steplist{display:flex;flex-direction:column;gap:6px;}
.ds-step{display:flex;gap:16px;align-items:flex-start;padding:18px 0;border-bottom:1px solid var(--cx-n700);}
.ds-step__num{font-family:var(--cx-fmono);color:var(--cx-accent);font-size:1.05rem;min-width:40px;}
.ds-step h3{font-family:var(--cx-fhead);color:var(--cx-white);font-size:1.05rem;line-height:1.6;letter-spacing:normal;margin:0 0 4px;}
.ds-step p{font-size:.95rem;color:var(--cx-n500);margin:0;}

/* Section caption + split/columns + handoff (paragraph-rendered inner blocks) */
.ds-src{font-family:var(--cx-fmono);font-size:.72rem;line-height:1.7;color:var(--cx-n500);margin-top:16px;}
.ds-split{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:30px;}
@media (max-width:900px){.ds-split{grid-template-columns:1fr;}}
.ds-col-t{font-family:var(--cx-fmono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cx-accent);margin-bottom:14px;display:block;}
.ds-col ul{list-style:none;padding:0;margin:0;}
.ds-col li{padding:9px 0 9px 22px;position:relative;color:var(--cx-n300);font-size:.96rem;}
.ds-col li::before{content:'';position:absolute;left:0;top:16px;width:7px;height:7px;border-radius:50%;background:var(--cx-accent);}
.ds-handoff{text-align:center;color:var(--cx-n500);font-family:var(--cx-fmono);font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;margin:26px 0;}
.ds-rich h3{margin-top:0;}

/* Referenced-paragraph fields: let the Drupal field wrapper dissolve so nested
   paragraphs become direct grid/flex children. */
.ds-grid > .field,
.ds-grid > .field > .field__item,
.ds-steplist > .field,
.ds-steplist > .field > .field__item { display: contents; }

/* CTA footnote */
.ds-note{font-family:var(--cx-fmono);font-size:.78rem;color:var(--cx-n500);margin-top:20px;}
.ds-note a{color:var(--cx-accent);}

/* Webform mount (CTA contact form) */
.ds-form-mount{max-width:640px;margin:32px auto 0;text-align:left;}
.ds-form-mount label{display:block;font-family:var(--cx-fmono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--cx-n500);margin-bottom:6px;}
.ds-form-mount input[type='text'],.ds-form-mount input[type='email'],.ds-form-mount input[type='tel'],.ds-form-mount textarea,.ds-form-mount select{width:100%;background:transparent;border:0;border-bottom:1px solid rgba(255,255,255,.22);border-radius:0;padding:12px 0 10px;color:var(--cx-white);font-family:var(--cx-fbody);font-size:1.05rem;transition:border-color var(--cx-dur) var(--cx-ease);}
.ds-form-mount input:focus,.ds-form-mount textarea:focus,.ds-form-mount select:focus{outline:none;border-bottom-color:var(--cx-accent);}
.ds-form-mount select{-webkit-appearance:none;appearance:none;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="8"><path fill="%238a8a8a" d="M0 0h12L6 8z"/></svg>');background-repeat:no-repeat;background-position:right 2px center;padding-right:22px;}
.ds-form-mount textarea{min-height:120px;resize:vertical;}
.ds-form-mount .form-item,.ds-form-mount .js-form-item{margin-bottom:20px;}
.ds-form-mount ::placeholder{color:var(--cx-n500);}
.ds-form-mount .webform-button--submit,.ds-form-mount input[type='submit'],.ds-form-mount button[type='submit']{display:inline-block;background:var(--cx-accent);color:var(--cx-white);border:0;font-weight:700;padding:14px 28px;border-radius:var(--cx-radius-sm);cursor:pointer;font-family:var(--cx-fbody);font-size:1rem;margin-top:10px;box-shadow:0 10px 30px -10px var(--cx-accent-glow);transition:transform var(--cx-dur) var(--cx-ease);}
.ds-form-mount .webform-button--submit:hover,.ds-form-mount input[type='submit']:hover{transform:translateY(-2px);background:var(--cx-accent-hover);}

/* Teaser card (node-listing views) */
.ds-card--teaser h3{margin:6px 0 8px;}
.ds-card--teaser h3 a{color:var(--cx-white);text-decoration:none;}
.ds-card--teaser h3 a:hover{color:var(--cx-accent);}
.ds-card__media img{width:100%;height:auto;border-radius:var(--cx-radius-md);margin-bottom:14px;display:block;}

/* ---- Responsive hardening (prevent horizontal overflow on phones) ---- */
.ds-main{overflow-x:clip;}
.ds-card,.ds-viz,.ds-front{min-width:0;}
.ds-bars{max-width:100%;overflow-x:auto;}
@media (max-width:560px){
  .ds-wrap{padding:0 18px;}
  .ds-btnrow{flex-direction:column;align-items:stretch;}
  .ds-btn{justify-content:center;}
  .ds-hero{padding:88px 0 56px;}
  .ds-front{padding:24px 20px;}
}

/* Centered CTA section */
.ds-cta-center{text-align:center;}
.ds-cta-center .ds-btnrow{justify-content:center;}
.ds-cta-center .ds-sub,.ds-cta-center .ds-lead{margin-left:auto;margin-right:auto;}

/* Prose (rich-text bodies from structured fields) */
.ds-prose{color:var(--cx-n300);font-size:1.02rem;}
.ds-prose--article{max-width:760px;}
.ds-prose h2{margin-top:1.4em;}
.ds-prose h3{margin-top:1.2em;}
.ds-prose p{margin:0 0 16px;}
.ds-prose ul,.ds-prose ol{margin:0 0 16px;padding-left:0;list-style:none;}
.ds-prose ul li{position:relative;padding:6px 0 6px 22px;color:var(--cx-n300);}
.ds-prose ul li::before{content:'';position:absolute;left:0;top:15px;width:7px;height:7px;border-radius:50%;background:var(--cx-accent);}
.ds-prose ol{counter-reset:c;}
.ds-prose ol li{counter-increment:c;position:relative;padding:6px 0 6px 30px;}
.ds-prose ol li::before{content:counter(c);position:absolute;left:0;top:6px;font-family:var(--cx-fmono);color:var(--cx-accent);font-size:.85rem;}
.ds-prose a{color:var(--cx-accent);}
.ds-prose strong{color:var(--cx-white);}

/* Fix: .ds-theme a{color} was overriding button label color (orange-on-orange).
   Raise specificity so button text colors win. */
.ds-theme a.ds-btn--primary,
.ds-theme a.ds-btn--primary:hover{color:var(--cx-white);}
.ds-theme a.ds-btn--ghost,
.ds-theme a.ds-btn--ghost:hover{color:var(--cx-white);}
.ds-theme a.ds-btn{text-decoration:none;}

/* Same fix for the cx-* bridge buttons used by the self-contained body
   designs (e.g. Solutions/155): their unscoped .cx-btn-* color rules lose to
   .ds-theme a on specificity, blanking the label (orange-on-orange). */
.ds-theme a.cx-btn-primary,
.ds-theme a.cx-btn-primary:hover,
.ds-theme a.cx-btn-ghost,
.ds-theme a.cx-btn-ghost:hover{color:var(--cx-white);}
.ds-theme a.cx-btn{text-decoration:none;}

/* Theme header wordmark is an <a>, so .ds-theme a turns the whole logo orange.
   Restore the body-design look: white CEL·RAC with the orange TH (em) + chevron. */
.ds-theme a.ds-nav-logo,
.ds-theme a.ds-nav-logo:hover{color:var(--cx-white);text-decoration:none;}
.ds-theme a.ds-nav-logo em{color:var(--cx-accent);}

/* Card "Explore" link */
.ds-card-link{font-family:var(--cx-fmono);font-size:.8rem;letter-spacing:.06em;color:var(--cx-accent);text-decoration:none;}
.ds-card-link:hover{color:var(--cx-accent-hover);}
.ds-card .ds-card__body p:last-child{margin-bottom:0;}

/* A11y: keep skip-links (base theme + theme) hidden until focused. On the
   full-bleed landing pages the Bootstrap utility CSS that normally hides
   .visually-hidden-focusable isn't in scope, so define it here globally. */
.visually-hidden-focusable:not(:focus):not(:focus-within),
a[href='#main-content']:not(:focus):not(:focus-within){
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ---------------------------------------------------------------------------
 * Industries grid — injected on the Industries page (node--112) so every
 * industry detail page is reachable. Dark, token-styled to sit inside the
 * cinematic industries narrative.
 * ------------------------------------------------------------------------- */
.ds-ind-section{background:var(--cx-charcoal);padding:96px 0;border-top:1px solid var(--cx-n800);}
.ds-ind-section .ds-ind-wrap{max-width:1200px;margin:0 auto;padding:0 32px;}
.ds-ind-eyebrow{font-family:var(--cx-fmono);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--cx-accent);}
.ds-ind-h2{font-family:var(--cx-fhead);font-weight:800;font-size:clamp(1.8rem,4vw,2.6rem);color:var(--cx-white);margin:.4rem 0 2.4rem;letter-spacing:-.01em;}
.ds-ind-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
@media (max-width:1024px){.ds-ind-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.ds-ind-grid{grid-template-columns:1fr;}}
.ds-ind-card{display:flex;flex-direction:column;gap:12px;padding:24px;background:var(--cx-card);border:1px solid var(--cx-n800);border-radius:10px;text-decoration:none;transition:border-color .25s,transform .25s,background .25s;}
.ds-ind-card:hover{border-color:var(--cx-accent);transform:translateY(-3px);background:var(--cx-card-hover);}
.ds-ind-card__icon{display:inline-flex;width:44px;height:44px;color:var(--cx-accent);}
.ds-ind-card__icon svg{width:100%;height:100%;}
.ds-ind-card__title{font-family:var(--cx-fhead);font-weight:700;font-size:1.15rem;color:var(--cx-white);margin:0;}
.ds-ind-card__desc{font-size:.85rem;line-height:1.5;color:var(--cx-n500);margin:0;}
.ds-ind-card__more{margin-top:auto;font-family:var(--cx-fmono);font-size:.74rem;letter-spacing:.06em;color:var(--cx-accent);}
.ds-ind-card__more .chev{transition:transform .25s;display:inline-block;}
.ds-ind-card:hover .ds-ind-card__more .chev{transform:translateX(4px);}
