/*
Theme Name:   Brosborough 2026
Theme URI:    https://www.brosborough.com
Description:  Editorial portfolio child theme for Barron Rosborough. Built for Hello Elementor. Provides the design system, the filterable project grid, and the stat band components used across the site.
Author:       Barron Rosborough
Author URI:   https://www.brosborough.com
Template:     hello-elementor
Version:      1.0.0
Text Domain:  brosborough
*/

/* =========================================================
   1. DESIGN TOKENS
   Change a value here and it updates everywhere on the site.
   ========================================================= */
:root{
  --br-ink:#14110f;
  --br-ink-soft:#4a4441;
  --br-ink-faint:#8b8580;
  --br-paper:#f6f3ee;
  --br-paper-2:#efeae2;
  --br-card:#fffdfa;
  --br-signal:#e8442c;
  --br-line:#e0d9cf;
  --br-radius:2px;
  --br-serif:"Instrument Serif",Georgia,"Times New Roman",serif;
  --br-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --br-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

/* =========================================================
   2. BASE
   ========================================================= */
body.br-site{
  background:var(--br-paper);
  color:var(--br-ink);
  font-family:var(--br-sans);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
body.br-site h1,body.br-site h2,body.br-site h3,body.br-site h4{
  font-family:var(--br-serif);
  font-weight:400;
  letter-spacing:-.02em;
  line-height:1.08;
}

/* =========================================================
   3. TYPE UTILITIES
   Apply these as CSS classes on any Elementor widget.
   ========================================================= */
.br-eyebrow{
  font-family:var(--br-mono);
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--br-signal);
}
.br-display{
  font-family:var(--br-serif);
  font-weight:400;
  line-height:1.02;
  letter-spacing:-.02em;
  font-size:clamp(44px,6.6vw,92px);
  max-width:16ch;
}
.br-display em{font-style:italic;color:var(--br-signal)}
.br-h2{
  font-family:var(--br-serif);
  font-weight:400;
  font-size:clamp(32px,4.2vw,54px);
  line-height:1.08;
  letter-spacing:-.02em;
}
.br-lede{font-size:clamp(18px,2vw,21px);color:var(--br-ink-soft);max-width:60ch}
.br-invert,.br-invert h1,.br-invert h2,.br-invert h3{color:var(--br-paper)}
.br-invert p{color:#b8b1aa}

/* =========================================================
   4. BUTTONS
   ========================================================= */
.br-btn{
  display:inline-block;
  background:var(--br-ink);color:var(--br-paper);
  padding:11px 20px;border-radius:var(--br-radius);
  font-family:var(--br-sans);font-size:14px;font-weight:500;
  text-decoration:none;border:1px solid var(--br-ink);cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease;
}
.br-btn:hover{background:var(--br-signal);border-color:var(--br-signal);color:#fff}
.br-btn--ghost{background:transparent;color:var(--br-ink)}
.br-btn--ghost:hover{background:var(--br-ink);color:var(--br-paper);border-color:var(--br-ink)}
.br-btn--signal{background:var(--br-signal);border-color:var(--br-signal);color:#fff}
.br-btn--signal:hover{background:var(--br-paper);color:var(--br-ink);border-color:var(--br-paper)}
.br-btn--outline-light{background:transparent;border-color:#4a4441;color:var(--br-paper)}
.br-btn--outline-light:hover{background:var(--br-paper);color:var(--br-ink);border-color:var(--br-paper)}

/* Nav and menu widgets style their descendant links, which outranks a lone
   .br-btn class and turns light button text dark. Restate it at higher
   specificity so header CTAs stay legible. */
nav .br-btn,
.elementor-nav-menu .br-btn,
.elementor-widget-nav-menu a.br-btn,
header .br-btn{color:var(--br-paper)}
nav .br-btn:hover,
.elementor-nav-menu .br-btn:hover,
.elementor-widget-nav-menu a.br-btn:hover,
header .br-btn:hover{color:#fff}
nav .br-btn--ghost,
header .br-btn--ghost{color:var(--br-ink)}
nav .br-btn--ghost:hover,
header .br-btn--ghost:hover{color:var(--br-paper)}

/* Header CTA. Outlined and set in the nav's mono voice so it belongs to the
   header instead of sitting on top of it. Must come after the rules above. */
.br-btn--nav,
nav .br-btn--nav,
header .br-btn--nav,
.elementor-widget-nav-menu a.br-btn--nav{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--br-mono);
  font-size:10.5px;
  letter-spacing:.16em;
  text-transform:uppercase;
  padding:11px 15px 11px 17px;
  background:transparent;
  border:1px solid rgba(200,16,46,.4);
  color:var(--br-signal);
  position:relative;
}
.br-btn--nav::before,
.br-btn--nav::after{
  content:"";position:absolute;width:4px;height:4px;
  border:1px solid var(--br-signal);opacity:.55;transition:opacity .25s ease;
}
.br-btn--nav::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
.br-btn--nav::after{bottom:-1px;right:-1px;border-left:0;border-top:0}
.br-btn--nav svg{width:11px;height:11px;transition:transform .25s ease}
.br-btn--nav:hover,
nav .br-btn--nav:hover,
header .br-btn--nav:hover,
.elementor-widget-nav-menu a.br-btn--nav:hover{
  background:var(--br-signal);border-color:var(--br-signal);color:#fff;
  box-shadow:0 4px 16px rgba(200,16,46,.22);
}
.br-btn--nav:hover::before,
.br-btn--nav:hover::after{opacity:0}
.br-btn--nav:hover svg{transform:translateX(3px)}

/* =========================================================
   5. HERO META LIST  [br_meta]
   ========================================================= */
.br-meta{border-left:2px solid var(--br-signal);padding-left:20px;margin:0}
.br-meta dt{
  font-family:var(--br-mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--br-ink-faint);margin-bottom:3px;
}
.br-meta dd{font-size:15px;margin:0 0 18px;line-height:1.45}

/* =========================================================
   6. STAT BAND  [br_stats]
   ========================================================= */
.br-stats{background:var(--br-ink);color:var(--br-paper);padding:64px 0}
.br-stats__grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:36px;
  max-width:1180px;margin:0 auto;padding:0 32px;
}
.br-stat__n{
  font-family:var(--br-serif);font-size:clamp(38px,4.6vw,60px);
  line-height:1;letter-spacing:-.02em;color:var(--br-paper);
}
.br-stat__n b{color:var(--br-signal);font-weight:400}
.br-stat p{font-size:13.5px;color:#b8b1aa;margin:10px 0 0;line-height:1.5}
@media(max-width:860px){.br-stats__grid{grid-template-columns:repeat(2,1fr);gap:32px}}

/* =========================================================
   7. FILTERABLE WORK GRID  [br_work]
   ========================================================= */
.br-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.br-chip{
  font-family:var(--br-sans);font-size:14px;
  background:var(--br-card);border:1px solid var(--br-line);
  padding:11px 18px;border-radius:100px;cursor:pointer;
  color:var(--br-ink-soft);transition:all .16s ease;
}
.br-chip:hover{border-color:var(--br-ink);color:var(--br-ink)}
.br-chip[aria-pressed="true"]{
  background:var(--br-signal);border-color:var(--br-signal);color:#fff;
}
.br-filter-note{
  font-family:var(--br-mono);font-size:11px;color:var(--br-ink-faint);
  letter-spacing:.06em;min-height:18px;margin:0 0 24px;
}
.br-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:1000px){.br-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.br-cards{grid-template-columns:1fr}}

.br-card{
  background:var(--br-card);
  border:1px solid var(--br-line);
  border-radius:var(--br-radius);
  padding:26px 24px 22px;
  display:flex;flex-direction:column;
  text-decoration:none;color:inherit;
  position:relative;overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.br-card::after{
  content:"";position:absolute;left:0;top:0;height:3px;width:0;
  background:var(--br-signal);transition:width .3s ease;
}
.br-card:hover{
  transform:translateY(-3px);
  box-shadow:0 12px 34px rgba(20,17,15,.09);
  border-color:#cfc6b9;
}
.br-card:hover::after{width:100%}
.br-card[hidden]{display:none}
.br-card__k{
  font-family:var(--br-mono);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--br-ink-faint);margin-bottom:16px;
  display:flex;justify-content:space-between;gap:10px;
}
.br-card__t{
  font-family:var(--br-serif);font-weight:400;font-size:25px;
  line-height:1.15;letter-spacing:-.01em;margin:0 0 9px;
}
.br-card__d{font-size:14.5px;color:var(--br-ink-soft);line-height:1.55;flex:1;margin:0}
.br-card__r{
  margin-top:18px;padding-top:14px;border-top:1px solid var(--br-line);
  font-family:var(--br-mono);font-size:12px;color:var(--br-signal);letter-spacing:.02em;
}
.br-card--feature{grid-column:span 2;background:var(--br-ink);border-color:var(--br-ink)}
.br-card--feature .br-card__t{color:var(--br-paper);font-size:31px}
.br-card--feature .br-card__d{color:#b8b1aa}
.br-card--feature .br-card__k{color:#7d766f}
.br-card--feature .br-card__r{border-top-color:#332e2a}
@media(max-width:680px){.br-card--feature{grid-column:span 1}}
.br-empty{
  grid-column:1/-1;padding:48px 0;text-align:center;
  font-family:var(--br-mono);font-size:12px;color:var(--br-ink-faint);letter-spacing:.06em;
}

/* =========================================================
   8. PROCESS STEPS  [br_steps]
   ========================================================= */
.br-steps{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--br-line)}
.br-step{padding:30px 30px 30px 0;border-right:1px solid var(--br-line)}
.br-step:last-child{border-right:0}
.br-step__num{font-family:var(--br-mono);font-size:11px;color:var(--br-signal);letter-spacing:.14em;margin-bottom:14px}
.br-step h4{font-size:24px;margin:0 0 10px}
.br-step p{font-size:15px;color:var(--br-ink-soft);margin:0}
@media(max-width:860px){
  .br-steps{grid-template-columns:1fr}
  .br-step{border-right:0;border-bottom:1px solid var(--br-line);padding-right:0}
}

/* =========================================================
   9. LOGO PILLS  [br_logos]
   ========================================================= */
.br-logos{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px;padding:0;list-style:none}
.br-logo{
  font-family:var(--br-mono);font-size:11.5px;letter-spacing:.08em;
  border:1px solid var(--br-line);background:var(--br-card);
  padding:8px 13px;border-radius:100px;color:var(--br-ink-soft);
}

/* =========================================================
   10. AWARDS LIST  [br_awards]
   ========================================================= */
.br-awards{margin:36px 0 0;border-left:2px solid var(--br-signal);padding:0 0 0 20px;list-style:none}
.br-awards li{font-size:14.5px;color:var(--br-ink-soft);margin-bottom:7px}

/* =========================================================
   11. SECTION BACKGROUNDS
   Apply to any Elementor section via the CSS Classes field.
   ========================================================= */
.br-bg-ink{background:var(--br-ink)}
.br-bg-paper-2{background:var(--br-paper-2);border-top:1px solid var(--br-line);border-bottom:1px solid var(--br-line)}
.br-rule-top{border-top:1px solid var(--br-line)}
.br-rule-bottom{border-bottom:1px solid var(--br-line)}

/* =========================================================
   12. SCROLL REVEAL
   ========================================================= */
.br-reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.br-reveal.is-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .br-reveal{opacity:1;transform:none;transition:none}
  .br-card:hover{transform:none}
}
