:root{
    --ink:#241026;
    --purple:#4b1b5c;
    --purple-deep:#2a1038;
    --purple-soft:#6c3182;
    --magenta:#b23a73;
    --gold:#c79a3d;
    --gold-ink:#8a651f; /* darker gold for text on light backgrounds, passes WCAG AA */
    --gold-soft:#e4c777;
    --cream:#f6efe1;
    --paper:#fffbf3;
    --line:rgba(36,16,38,0.12);
    --shadow:0 30px 60px -30px rgba(42,16,56,0.35);
    --ease:cubic-bezier(.22,1,.36,1);
  }

  *,*::before,*::after{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--cream);
    color:var(--ink);
    font-family:'Work Sans',sans-serif;
    font-size:16px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
  }

  h1,h2,h3,h4{
    font-family:'Fraunces',serif;
    margin:0;
    color:var(--ink);
    font-weight:500;
  }
  p{margin:0;}
  a{color:inherit; text-decoration:none;}
  img{max-width:100%;display:block;}
  ul{margin:0;padding:0;list-style:none;}
  button{font-family:inherit;cursor:pointer;}

  ::selection{background:var(--gold-soft); color:var(--ink);}

  :focus-visible{
    outline:2px solid var(--gold);
    outline-offset:3px;
  }

  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding:0 32px;
  }
  @media (max-width:640px){ .wrap{padding:0 20px;} }

  .eyebrow-free-label{ /* intentionally unused, kept out per design guidance */ }

  /* ---------- Buttons ---------- */
  .btn{
    position:relative;
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:14px 28px;
    border-radius:999px;
    font-size:0.95rem;
    font-weight:500;
    border:1.5px solid var(--ink);
    background:transparent;
    color:var(--ink);
    overflow:hidden;
    transition:color .45s var(--ease), border-color .45s var(--ease), transform .25s var(--ease);
    isolation:isolate;
  }
  .btn::before{
    content:"";
    position:absolute;
    inset:0;
    background:var(--ink);
    transform:translateY(101%);
    transition:transform .45s var(--ease);
    z-index:-1;
    border-radius:inherit;
  }
  .btn:hover::before{transform:translateY(0);}
  .btn:hover{color:var(--paper);}
  .btn:active{transform:scale(.96);}
  .btn.primary{
    background:var(--ink);
    color:var(--paper);
    border-color:var(--ink);
  }
  .btn.primary::before{background:var(--magenta); border-color:var(--magenta);}
  .btn.primary:hover{color:var(--paper); border-color:var(--magenta);}
  .btn.ghost-light{
    border-color:rgba(255,251,243,0.55);
    color:var(--paper);
  }
  .btn.ghost-light::before{background:var(--paper);}
  .btn.ghost-light:hover{color:var(--ink);}

  /* Hero CTAs get a little idle life of their own: a slow breathing glow and a soft light sweep, so the hero keeps moving even before anyone touches it. */
  .hero-actions .btn{ position:relative; }
  .hero-actions .btn::after{
    content:"";
    position:absolute;
    top:-60%; left:-30%;
    width:26%; height:220%;
    background:linear-gradient(120deg, transparent, rgba(255,255,255,0.4), transparent);
    transform:skewX(-20deg) translateX(-260%);
    animation:heroBtnShine 4.6s ease-in-out infinite;
    pointer-events:none;
    z-index:0;
  }
  .hero-actions .btn:nth-child(2)::after{ animation-delay:1.3s; }
  @keyframes heroBtnShine{
    0%, 58%{ transform:skewX(-20deg) translateX(-260%); }
    82%{ transform:skewX(-20deg) translateX(360%); }
    100%{ transform:skewX(-20deg) translateX(360%); }
  }
  .hero-actions .btn.primary{
    animation:heroPulseGlow 2.8s ease-in-out infinite;
  }
  @keyframes heroPulseGlow{
    0%,100%{ box-shadow:0 0 0 0 rgba(199,154,61,0); }
    50%{ box-shadow:0 0 22px 5px rgba(199,154,61,0.4); }
  }
  .hero-actions .btn.ghost-light{
    animation:heroPulseBorder 2.8s ease-in-out infinite 1.4s;
  }
  @keyframes heroPulseBorder{
    0%,100%{ border-color:rgba(255,251,243,0.55); }
    50%{ border-color:rgba(255,251,243,0.95); }
  }
  @media (prefers-reduced-motion: reduce){
    .hero-actions .btn::after,
    .hero-actions .btn.primary,
    .hero-actions .btn.ghost-light{ animation:none !important; }
  }

  /* ---------- Nav ---------- */
  header.site-nav{
    position:fixed;
    top:0; left:0; right:0;
    z-index:200;
    padding:22px 0;
    transition:padding .4s var(--ease), background .4s var(--ease), box-shadow .4s var(--ease);
  }
  header.site-nav .wrap{
    display:flex;
    align-items:center;
    justify-content:space-between;
  }
  header.site-nav.scrolled{
    padding:12px 0;
    background:rgba(246,239,225,0.92);
    backdrop-filter:blur(10px);
    box-shadow:0 10px 30px -20px rgba(36,16,38,0.4);
  }
  .brand{
    display:flex;
    align-items:center;
    gap:12px;
  }
  .brand img{
    width:44px; height:44px;
    border-radius:50%;
    object-fit:cover;
    box-shadow:0 4px 14px rgba(36,16,38,0.25);
    transition:transform .5s var(--ease);
  }
  .brand:hover img{transform:rotate(-8deg) scale(1.05);}
  .brand-text{
    display:flex;
    flex-direction:column;
    line-height:1.15;
  }
  .brand-text strong{
    font-family:'Fraunces',serif;
    font-size:1.05rem;
    letter-spacing:.02em;
    color:var(--paper);
    transition:color .4s var(--ease);
  }
  .brand-text span{
    font-size:0.68rem;
    color:rgba(255,251,243,0.75);
    transition:color .4s var(--ease);
  }
  header.site-nav.scrolled .brand-text strong{color:var(--ink);}
  header.site-nav.scrolled .brand-text span{color:var(--purple);}

  nav.main-links{display:flex; gap:2px; align-items:center;}
  nav.main-links a{
    position:relative;
    padding:9px 16px;
    font-size:0.92rem;
    color:rgba(255,251,243,0.88);
    transition:color .35s;
  }
  header.site-nav.scrolled nav.main-links a{color:var(--ink);}
  nav.main-links a::after{
    content:"";
    position:absolute;
    left:16px; right:16px; bottom:5px;
    height:1.5px;
    background:currentColor;
    transform:scaleX(0);
    transform-origin:left;
    transition:transform .4s var(--ease);
    opacity:.7;
  }
  nav.main-links a:hover::after{transform:scaleX(1);}
  nav.main-links a.cta{
    margin-left:8px;
    padding:9px 20px;
    border-radius:999px;
    border:1.3px solid rgba(255,251,243,0.6);
  }
  nav.main-links a.cta::after{display:none;}
  header.site-nav.scrolled nav.main-links a.cta{border-color:var(--ink);}
  nav.main-links a.cta:hover{background:var(--paper); color:var(--ink);}
  header.site-nav.scrolled nav.main-links a.cta:hover{background:var(--ink); color:var(--paper);}

  .burger{
    display:none;
    width:26px; height:20px;
    position:relative;
    background:none; border:none;
    z-index:2;
  }
  .burger span{
    position:absolute; left:0; right:0; height:2px;
    background:var(--paper);
    transition:all .35s var(--ease);
  }
  header.site-nav.scrolled .burger span{background:var(--ink);}
  .burger span:nth-child(1){top:0;}
  .burger span:nth-child(2){top:9px;}
  .burger span:nth-child(3){top:18px;}
  .burger.open span:nth-child(1){transform:translateY(9px) rotate(45deg);}
  .burger.open span:nth-child(2){opacity:0;}
  .burger.open span:nth-child(3){transform:translateY(-9px) rotate(-45deg);}
  /* Once open the burger has become an X sitting over the dark drawer, so force it white regardless of the scrolled/light nav state underneath */
  .burger.open span{background:var(--paper) !important;}

  .nav-backdrop{
    position:fixed;
    inset:0;
    background:rgba(24,9,32,0.55);
    opacity:0;
    visibility:hidden;
    transition:opacity .45s var(--ease), visibility .45s;
    z-index:190;
  }
  .nav-backdrop.open{opacity:1; visibility:visible;}

  @media (max-width:880px){
    nav.main-links{
      position:fixed;
      top:0; right:0;
      height:100vh;
      width:min(78vw,320px);
      background:var(--purple-deep);
      flex-direction:column;
      align-items:flex-start;
      justify-content:center;
      gap:6px;
      padding:40px;
      transform:translateX(100%);
      transition:transform .55s var(--ease);
      box-shadow:-20px 0 60px -20px rgba(0,0,0,0.4);
    }
    nav.main-links.open{transform:translateX(0);}
    nav.main-links a{
      color:var(--paper) !important;
      font-size:1.05rem;
      width:100%;
      opacity:0;
      transform:translateX(28px);
      transition:opacity .45s var(--ease), transform .45s var(--ease);
    }
    /* Staggered on the way in; the same per-link delay also staggers the way out, since it's read off the same rule either direction */
    nav.main-links a:nth-child(1){transition-delay:.06s;}
    nav.main-links a:nth-child(2){transition-delay:.12s;}
    nav.main-links a:nth-child(3){transition-delay:.18s;}
    nav.main-links a:nth-child(4){transition-delay:.24s;}
    nav.main-links a:nth-child(5){transition-delay:.3s;}
    nav.main-links a:nth-child(6){transition-delay:.36s;}
    nav.main-links.open a{opacity:1; transform:translateX(0);}
    nav.main-links a.cta{border-color:rgba(255,251,243,0.5) !important; margin-top:14px;}
    .burger{display:block;}
  }

  /* ---------- Hero ---------- */
  .hero{
    position:relative;
    height:100svh;
    min-height:560px;
    overflow:hidden;
    display:flex;
    align-items:flex-end;
    color:var(--paper);
  }
  @media (min-width:881px){
    .hero{ padding-top:120px; }
  }
  .hero-bg{
    position:absolute;
    inset:-8% -8% -8% -8%;
    overflow:hidden;
    will-change:transform;
  }
  .hero-bg-inner{
    position:absolute;
    inset:-14%;
    background-image:linear-gradient(180deg, rgba(42,16,56,0.55) 0%, rgba(42,16,56,0.55) 45%, rgba(24,9,32,0.92) 100%), url('../assets/hero-assembly.jpg');
    background-size:cover;
    background-position:center 28%;
    animation:heroZoomPan 26s ease-in-out infinite;
    will-change:transform;
  }
  @keyframes heroZoomPan{
    0%   { transform:scale(1)     translate(0%, 0%); }
    20%  { transform:scale(1.09)  translate(-1.6%, -1%); }
    40%  { transform:scale(1.14)  translate(-0.6%, 1.4%); }
    60%  { transform:scale(1.08)  translate(1.6%, 0.8%); }
    80%  { transform:scale(1.13)  translate(0.8%, -1.4%); }
    100% { transform:scale(1)     translate(0%, 0%); }
  }
  @media (prefers-reduced-motion: reduce){
    .hero-bg-inner{ animation:none; }
  }
  @media (max-width:700px){
    .hero-bg-inner{
      background-image:linear-gradient(180deg, rgba(42,16,56,0.55) 0%, rgba(42,16,56,0.55) 45%, rgba(24,9,32,0.92) 100%), url('../assets/hero-assembly-mobile.jpg');
    }
  }
  .hero-content{
    position:relative;
    z-index:2;
    padding-bottom:88px;
    width:100%;
  }
  .hero-crest-watermark{
    position:absolute;
    top:-40px; right:-30px;
    width:280px;
    height:280px;
    object-fit:cover;
    opacity:.08;
    z-index:1;
    pointer-events:none;
  }
  .hero-tag{
    font-size:0.95rem;
    color:var(--gold-soft);
    margin-bottom:18px;
    font-family:'Fraunces',serif;
    font-style:italic;
  }
  .hero h1{
    font-size:clamp(2.6rem, 7vw, 5.6rem);
    font-style:italic;
    font-weight:400;
    line-height:1.05;
    color:var(--paper);
  }
  .hero h1 .type-line{
    display:block;
    overflow:hidden;
    white-space:nowrap;
    width:0;
    max-width:100%;
    border-right:0.055em solid var(--gold-soft);
    padding-right:2px;
  }
  .hero h1 .type-line.run{
    animation:
      typeReveal var(--dur, 1s) steps(var(--steps, 20), end) forwards var(--delay, 0s),
      caretBlink .85s step-end infinite var(--delay, 0s);
  }
  .hero h1 .type-line.done{
    border-right-color:transparent;
  }
  @keyframes typeReveal{
    to{ width:var(--w, 100%); }
  }
  @keyframes caretBlink{
    50%{ border-color:transparent; }
  }
  @media (prefers-reduced-motion: reduce){
    .hero h1 .type-line{ width:var(--w, auto); border-right-color:transparent; animation:none; }
  }
  .hero-anim{
    opacity:0;
    transform:translateY(16px);
    animation:heroFadeUp .9s var(--ease) forwards;
    animation-delay:var(--d, 0s);
  }
  @keyframes heroFadeUp{
    to{ opacity:1; transform:translateY(0); }
  }
  .hero-sub{
    margin-top:24px;
    max-width:520px;
    font-size:1.08rem;
    color:rgba(255,251,243,0.86);
  }
  .hero-sub strong{color:var(--paper); font-weight:600;}
  .hero-meta{
    margin-top:8px;
    font-size:0.88rem;
    color:rgba(255,251,243,0.6);
    letter-spacing:.02em;
  }
  .hero-actions{
    margin-top:36px;
    display:flex;
    gap:16px;
    flex-wrap:wrap;
  }
  .scroll-cue{
    position:absolute;
    bottom:28px; left:32px;
    z-index:2;
    display:flex;
    align-items:center;
    gap:10px;
    color:rgba(255,251,243,0.7);
    font-size:0.78rem;
  }
  .scroll-cue .line{
    width:1px; height:34px;
    background:rgba(255,251,243,0.5);
    position:relative;
    overflow:hidden;
  }
  .scroll-cue .line::after{
    content:"";
    position:absolute;
    left:0; top:-100%; width:100%; height:100%;
    background:var(--gold);
    animation:cue 2.2s ease-in-out infinite;
  }
  @keyframes cue{ 0%{top:-100%;} 60%{top:100%;} 100%{top:100%;} }
  @media (max-width:640px){ .scroll-cue{display:none;} }

  /* ---------- Sections generic ---------- */
  section{position:relative;}
  .section-pad{padding:120px 0;}
  @media (max-width:640px){ .section-pad{padding:80px 0;} }

  .kicker{
    font-family:'Fraunces',serif;
    font-style:italic;
    color:var(--magenta);
    font-size:1.05rem;
    margin-bottom:10px;
    display:block;
  }
  .section-head{
    max-width:640px;
    margin-bottom:56px;
  }
  .section-head h2{
    font-size:clamp(1.9rem, 4vw, 3rem);
    line-height:1.08;
  }
  .section-head .underline-draw{
    display:block;
    margin-top:14px;
    width:120px;
  }
  .underline-draw .draw{
    fill:none;
    stroke:var(--gold);
    stroke-width:3;
    stroke-linecap:round;
    stroke-dasharray:220;
    stroke-dashoffset:220;
    transition:stroke-dashoffset 1.3s var(--ease);
  }
  .in-view .underline-draw .draw{stroke-dashoffset:0;}

  .underline-draw .shimmer{
    fill:none;
    stroke:var(--gold-soft);
    stroke-width:3;
    stroke-linecap:round;
    stroke-dasharray:8 42;
    stroke-dashoffset:0;
    opacity:0;
  }
  .in-view .underline-draw .shimmer{
    animation:shimmerTravel 3.2s linear 1.3s infinite, shimmerFadeIn .5s ease 1.3s forwards;
  }
  @keyframes shimmerTravel{ to{ stroke-dashoffset:-100; } }
  @keyframes shimmerFadeIn{ to{ opacity:.85; } }

  .underline-draw .nib{
    fill:var(--gold);
    offset-path:path('M2 8 Q 30 2, 60 7 T 118 6');
    offset-distance:0%;
    opacity:0;
  }
  .in-view .underline-draw .nib{
    animation:nibTravel 1.3s var(--ease) forwards;
  }
  @keyframes nibTravel{
    0%{ offset-distance:0%; opacity:1; }
    88%{ opacity:1; }
    100%{ offset-distance:100%; opacity:0; }
  }
  @media (prefers-reduced-motion: reduce){
    .underline-draw .shimmer, .underline-draw .nib{ animation:none !important; opacity:0 !important; }
  }

  .section-head p.lede{
    margin-top:18px;
    font-size:1.05rem;
    color:rgba(36,16,38,0.75);
  }

  .reveal{
    opacity:0;
    transform:translateY(28px);
    transition:opacity .9s var(--ease), transform .9s var(--ease);
  }
  .in-view.reveal{opacity:1; transform:translateY(0);}

  /* Executive cards march in from alternating sides as they cross into view */
  .side-reveal{
    opacity:0;
    transition:opacity .8s var(--ease), transform .8s var(--ease);
  }
  .side-reveal.from-left{ transform:translateX(-52px); }
  .side-reveal.from-right{ transform:translateX(52px); }
  .side-reveal.in-view{ opacity:1; transform:translateX(0); }
  .role-grid .role-card:nth-child(1){transition-delay:0s;}
  .role-grid .role-card:nth-child(2){transition-delay:.08s;}
  .role-grid .role-card:nth-child(3){transition-delay:.16s;}
  .role-grid .role-card:nth-child(4){transition-delay:.24s;}
  .role-grid .role-card:nth-child(5){transition-delay:.32s;}
  .role-grid .role-card:nth-child(6){transition-delay:.4s;}
  .role-grid .role-card:nth-child(7){transition-delay:.48s;}
  .role-grid .role-card:nth-child(8){transition-delay:.56s;}
  @media (max-width:640px){
    /* On narrow single-column layouts the left/right swing reads as sideways jitter more than intent, so ease it back */
    .side-reveal.from-left{ transform:translateX(-24px); }
    .side-reveal.from-right{ transform:translateX(24px); }
  }

  /* ---------- Anthem section ---------- */
  .anthem-section{
    background:var(--purple-deep);
    color:var(--paper);
    position:relative;
    overflow:hidden;
  }
  .anthem-section::before{
    content:"";
    position:absolute;
    inset:0;
    background:radial-gradient(ellipse at 15% 20%, rgba(199,154,61,0.14), transparent 55%),
               radial-gradient(ellipse at 85% 80%, rgba(178,58,115,0.18), transparent 55%);
  }
  .anthem-section .section-head h2{color:var(--paper);}
  .anthem-section .section-head p.lede{color:rgba(255,251,243,0.72);}
  .anthem-grid{
    display:grid;
    grid-template-columns:1.1fr 0.9fr;
    gap:32px;
    position:relative;
    z-index:1;
  }
  @media (max-width:900px){ .anthem-grid{grid-template-columns:1fr;} }

  .anthem-card{
    background:var(--paper);
    color:var(--ink);
    border-radius:6px;
    padding:40px;
    box-shadow:var(--shadow);
    position:relative;
    border:1px solid rgba(199,154,61,0.4);
  }
  .anthem-card::before{
    content:"";
    position:absolute;
    inset:10px;
    border:1px solid rgba(199,154,61,0.35);
    pointer-events:none;
  }
  .anthem-card h3{
    font-size:1.4rem;
    font-style:italic;
    color:var(--purple);
    margin-bottom:22px;
  }
  .anthem-stanza{
    margin-bottom:20px;
    font-size:0.98rem;
  }
  .anthem-stanza:last-child{margin-bottom:0;}
  .anthem-stanza .num{
    display:inline-block;
    font-family:'Fraunces',serif;
    font-style:italic;
    color:var(--gold-ink);
    margin-right:6px;
  }
  .anthem-stanza p{white-space:pre-line; color:rgba(36,16,38,0.86);}


  /* ---------- About ---------- */
  .about-section{background:var(--cream);}
  .about-layout{
    display:grid;
    grid-template-columns:0.85fr 1.15fr;
    gap:64px;
    align-items:start;
  }
  @media (max-width:900px){ .about-layout{grid-template-columns:1fr; gap:40px;} }

  .about-sticky{position:sticky; top:110px;}
  @media (max-width:900px){ .about-sticky{position:static;} }
  .about-frame{
    position:relative;
    border-radius:4px;
    overflow:hidden;
    box-shadow:var(--shadow);
  }
  .about-frame img{
    width:100%;
    height:auto;
    display:block;
    aspect-ratio:4/3;
    object-fit:cover;
    filter:grayscale(0.15) contrast(1.02);
    transition:transform .8s var(--ease);
  }
  .about-frame:hover img{transform:scale(1.04);}
  .about-frame figcaption{
    padding:16px 20px;
    background:var(--ink);
    color:rgba(255,251,243,0.75);
    font-size:0.82rem;
  }
  .stat-strip{
    margin-top:28px;
    display:flex;
    border:1px solid var(--line);
    border-radius:4px;
    overflow:hidden;
  }
  .stat-strip div{
    flex:1;
    padding:18px 14px;
    text-align:center;
    border-left:1px solid var(--line);
  }
  .stat-strip div:first-child{border-left:none;}
  .stat-strip strong{
    display:block;
    font-family:'Fraunces',serif;
    font-size:1.5rem;
    color:var(--purple);
  }
  .stat-strip span{font-size:0.72rem; color:rgba(36,16,38,0.6);}

  .about-copy p{
    margin-bottom:18px;
    color:rgba(36,16,38,0.82);
    font-size:1.02rem;
    max-width:62ch;
  }
  .about-copy h4{
    font-size:1.15rem;
    margin:34px 0 12px;
    color:var(--purple);
    font-style:italic;
  }

  .timeline{
    margin-top:44px;
    position:relative;
    padding-left:28px;
  }
  .timeline::before{
    content:"";
    position:absolute;
    left:6px; top:6px; bottom:6px;
    width:1.5px;
    background:var(--line);
  }
  .timeline-fill{
    position:absolute;
    left:6px; top:6px; width:1.5px;
    background:var(--gold);
    height:0%;
    transition:height .2s linear;
  }
  .timeline-item{
    position:relative;
    padding-bottom:34px;
  }
  .timeline-item:last-child{padding-bottom:0;}
  .timeline-item::before{
    content:"";
    position:absolute;
    left:-28px; top:3px;
    width:11px; height:11px;
    border-radius:50%;
    background:var(--paper);
    border:2px solid var(--purple);
  }
  .timeline-item strong{
    display:block;
    font-family:'Fraunces',serif;
    color:var(--purple);
    margin-bottom:4px;
  }
  .timeline-item p{color:rgba(36,16,38,0.72); font-size:0.94rem; max-width:52ch;}

  .values-grid{
    margin-top:20px;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
  }
  @media (max-width:760px){ .values-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:480px){ .values-grid{grid-template-columns:1fr;} }
  .value-card{
    background:var(--paper);
    padding:28px 24px;
    transition:background .4s var(--ease), transform .4s var(--ease);
  }
  .value-card:hover{
    background:var(--purple-deep);
    transform:translateY(-4px);
  }
  .value-card:hover h5, .value-card:hover p{color:var(--paper);}
  .value-card:hover svg *{stroke:var(--gold-soft);}
  .value-card svg{width:30px; height:30px; margin-bottom:14px;}
  .value-card svg *{stroke:var(--purple); transition:stroke .4s;}
  .value-card h5{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-size:1.08rem;
    margin-bottom:8px;
    transition:color .4s;
  }
  .value-card p{font-size:0.86rem; color:rgba(36,16,38,0.68); transition:color .4s;}

  /* ---------- Executive ---------- */
  .exec-section{background:var(--paper);}
  .exec-intro{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:48px;
    margin-bottom:64px;
  }
  @media (max-width:860px){ .exec-intro{grid-template-columns:1fr;} }
  .exec-intro p{color:rgba(36,16,38,0.8); margin-bottom:14px;}
  .exec-intro .rule-block{
    border-left:2px solid var(--gold);
    padding-left:22px;
  }
  .exec-intro .rule-block p{font-style:italic; font-family:'Fraunces',serif; color:var(--purple); font-size:1.15rem;}

  .role-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:22px;
  }
  @media (max-width:900px){ .role-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:480px){ .role-grid{grid-template-columns:1fr;} }
  .role-card{
    border:1px solid var(--line);
    border-radius:6px;
    padding:26px 20px;
    text-align:center;
    background:var(--cream);
    transition:transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s;
    position:relative;
    overflow:hidden;
  }
  .role-card:hover{
    transform:translateY(-6px);
    box-shadow:var(--shadow);
    border-color:var(--gold);
  }
  .role-badge{
    width:56px; height:56px;
    margin:0 auto 14px;
    border-radius:50%;
    background:var(--purple);
    display:flex; align-items:center; justify-content:center;
  }
  .role-badge svg{width:24px; height:24px;}
  .role-badge svg *{stroke:var(--gold-soft);}
  .role-card h5{font-family:'Fraunces',serif; font-size:1.02rem; margin-bottom:6px;}
  .role-card span{font-size:0.78rem; color:rgba(36,16,38,0.55);}

  .sets-heading{
    margin-top:80px;
    margin-bottom:30px;
  }
  .sets-heading h3{
    font-size:1.6rem;
    font-style:italic;
    color:var(--purple);
  }
  .sets-heading p{margin-top:10px; color:rgba(36,16,38,0.7); max-width:60ch;}

  .set-grid{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:16px;
    perspective:1000px;
  }
  @media (max-width:900px){ .set-grid{grid-template-columns:repeat(3,1fr);} }
  @media (max-width:560px){ .set-grid{grid-template-columns:repeat(2,1fr);} }
  .set-card{
    height:150px;
    position:relative;
  }
  .set-inner{
    position:absolute; inset:0;
    transform-style:preserve-3d;
    transition:transform .7s var(--ease);
  }
  .set-card:hover .set-inner, .set-card.flipped .set-inner{transform:rotateY(180deg);}
  .set-face{
    position:absolute; inset:0;
    backface-visibility:hidden;
    border-radius:6px;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    text-align:center;
    padding:12px;
  }
  .set-front{
    background:var(--purple-deep);
    color:var(--paper);
  }
  .set-front strong{font-family:'Fraunces',serif; font-size:1.25rem; font-style:italic;}
  .set-front span{font-size:0.72rem; color:rgba(255,251,243,0.6); margin-top:6px;}
  .set-back{
    background:var(--gold);
    color:var(--purple-deep);
    transform:rotateY(180deg);
    font-size:0.8rem;
    font-weight:500;
  }

  /* ---------- Projects ---------- */
  .projects-section{background:var(--cream);}
  .projects-intro p{max-width:70ch; color:rgba(36,16,38,0.8); margin-bottom:16px;}

  .compare{
    margin:56px 0 72px;
    position:relative;
    aspect-ratio:16/10;
    max-height:520px;
    border-radius:8px;
    overflow:hidden;
    box-shadow:var(--shadow);
    cursor:ew-resize;
    user-select:none;
    touch-action:none;
  }
  .compare img{
    position:absolute; inset:0;
    width:100%; height:100%;
    object-fit:cover;
  }
  .compare-after{clip-path: inset(0 0 0 50%);}
  .compare-handle{
    position:absolute;
    top:0; bottom:0; left:50%;
    width:2px;
    background:var(--paper);
    transform:translateX(-1px);
  }
  .compare-handle::before{
    content:"";
    position:absolute;
    top:50%; left:50%;
    width:46px; height:46px;
    border-radius:50%;
    background:var(--paper);
    transform:translate(-50%,-50%);
    box-shadow:0 6px 20px rgba(0,0,0,0.3);
  }
  .compare-handle::after{
    content:"↔";
    position:absolute;
    top:50%; left:50%;
    transform:translate(-50%,-58%);
    color:var(--purple);
    font-size:1.3rem;
    font-weight:600;
  }
  .compare-label{
    position:absolute;
    bottom:16px;
    padding:6px 14px;
    border-radius:999px;
    background:rgba(36,16,38,0.72);
    color:var(--paper);
    font-size:0.78rem;
    letter-spacing:.02em;
  }
  .compare-label.before{left:16px;}
  .compare-label.after{right:16px;}

  .project-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:24px;
    margin-bottom:64px;
  }
  @media (max-width:860px){ .project-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:560px){ .project-grid{grid-template-columns:1fr;} }
  .project-card{
    display:block;
    position:relative;
    border-radius:8px;
    overflow:hidden;
    aspect-ratio:4/3;
    box-shadow:0 18px 40px -24px rgba(36,16,38,0.4);
    cursor:pointer;
    border:none;
    padding:0;
    margin:0;
    width:100%;
    background:none;
    font:inherit;
    text-align:left;
  }
  .project-card img{
    width:100%; height:100%; object-fit:cover;
    transition:transform .7s var(--ease);
  }
  .project-card:hover img, .project-card:focus-visible img{transform:scale(1.08);}
  .project-overlay{
    position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 30%, rgba(36,16,38,0.85) 100%);
    display:flex;
    align-items:flex-end;
    padding:20px;
    opacity:1;
  }
  .project-overlay > span{
    transition:transform .4s var(--ease);
  }
  .project-card:hover .project-overlay > span, .project-card:focus-visible .project-overlay > span{transform:translateY(-3px);}
  .project-overlay span strong{
    display:block;
    font-family:'Fraunces',serif;
    font-style:italic;
    color:var(--paper);
    font-size:1.15rem;
  }
  .project-overlay span span{color:rgba(255,251,243,0.75); font-size:0.82rem;}

  .award-feature{
    display:grid;
    grid-template-columns:0.9fr 1.1fr;
    gap:40px;
    align-items:center;
    background:var(--paper);
    border:1px solid rgba(199,154,61,0.5);
    border-radius:10px;
    padding:36px;
  }
  @media (max-width:860px){ .award-feature{grid-template-columns:1fr;} }
  .award-feature img{
    width:100%;
    height:auto;
    display:block;
    aspect-ratio:3/2;
    object-fit:cover;
    border-radius:6px;
  }
  .award-feature h4{
    color:var(--purple);
    font-size:1.5rem;
    font-style:italic;
    margin-bottom:14px;
  }
  .award-feature p{color:rgba(36,16,38,0.78);}
  .award-badge{
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-top:18px;
    font-size:0.8rem;
    color:var(--gold-ink);
    letter-spacing:.02em;
  }

  /* ---------- Blog ---------- */
  .blog-section{background:var(--purple-deep); color:var(--paper);}
  .blog-section .section-head h2{color:var(--paper);}
  .blog-section .section-head p.lede{color:rgba(255,251,243,0.7);}
  .blog-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:22px;
  }
  @media (max-width:900px){ .blog-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:560px){ .blog-grid{grid-template-columns:1fr;} }
  .blog-card{
    background:rgba(255,251,243,0.05);
    border:1px solid rgba(255,251,243,0.14);
    border-radius:8px;
    padding:28px 22px;
    transition:transform .45s var(--ease), background .45s var(--ease), border-color .45s;
  }
  .blog-card:hover{
    transform:translateY(-6px);
    background:rgba(255,251,243,0.09);
    border-color:var(--gold);
  }
  .blog-card .tag{
    font-size:0.72rem;
    color:var(--gold-soft);
    letter-spacing:.03em;
  }
  .blog-card h4{
    margin-top:14px;
    font-size:1.2rem;
    font-style:italic;
    color:var(--paper);
  }
  .blog-card p{
    margin-top:10px;
    font-size:0.88rem;
    color:rgba(255,251,243,0.68);
  }
  .blog-card .read{
    display:inline-block;
    margin-top:18px;
    font-size:0.82rem;
    color:var(--paper);
    border-bottom:1px solid rgba(255,251,243,0.4);
    padding-bottom:2px;
    transition:border-color .3s;
  }
  .blog-card:hover .read{border-color:var(--gold);}

  /* ---------- Contact ---------- */
  .contact-section{background:var(--cream);}
  .contact-layout{
    display:grid;
    grid-template-columns:0.9fr 1.1fr;
    gap:56px;
  }
  @media (max-width:900px){
    .contact-layout{grid-template-columns:1fr;}
    /* Heading, then the form immediately, with the address/socials following after on mobile */
    .contact-form{order:-1;}
  }
  .contact-info h4{
    font-size:1.1rem;
    color:var(--purple);
    margin:26px 0 8px;
    font-style:italic;
  }
  .contact-info h4:first-child{margin-top:0;}
  .contact-info p, .contact-info a{color:rgba(36,16,38,0.78); font-size:0.98rem;}
  .contact-info a:hover{color:var(--magenta);}
  .socials{
    display:flex;
    gap:14px;
    margin-top:10px;
  }
  .socials a{
    width:40px; height:40px;
    border-radius:50%;
    border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
    transition:all .35s var(--ease);
  }
  .socials a:hover{
    background:var(--purple);
    border-color:var(--purple);
  }
  .socials a:hover svg *{stroke:var(--paper);}
  .socials svg{width:17px; height:17px;}
  .socials svg *{stroke:var(--purple); transition:stroke .35s;}

  .social-list{margin-top:10px;}
  .social-list li{
    display:flex;
    align-items:center;
    gap:12px;
    margin-bottom:12px;
  }
  .social-list li:last-child{margin-bottom:0;}
  .social-list a[aria-label]{
    width:38px; height:38px;
    flex:none;
    border-radius:50%;
    border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
    transition:all .35s var(--ease);
  }
  .social-list a[aria-label]:hover{background:var(--purple); border-color:var(--purple);}
  .social-list a[aria-label]:hover svg *{stroke:var(--paper);}
  .social-list a[aria-label] svg{width:16px; height:16px;}
  .social-list a[aria-label] svg *{stroke:var(--purple); transition:stroke .35s;}
  .social-list li > a:not([aria-label]){
    font-size:0.92rem;
    color:rgba(36,16,38,0.78);
    border-bottom:1px solid transparent;
    transition:color .3s, border-color .3s;
  }
  .social-list li > a:not([aria-label]):hover{color:var(--magenta); border-color:var(--magenta);}

  .contact-form{
    background:var(--paper);
    padding:36px;
    border-radius:10px;
    box-shadow:var(--shadow);
  }
  .field{
    position:relative;
    margin-bottom:26px;
  }
  .field input, .field textarea{
    width:100%;
    border:none;
    border-bottom:1.5px solid var(--line);
    background:transparent;
    padding:10px 2px;
    font-family:'Work Sans',sans-serif;
    font-size:1rem;
    color:var(--ink);
    resize:vertical;
  }
  .field textarea{min-height:100px;}
  .field input:focus, .field textarea:focus{outline:none;}
  .field label{
    position:absolute;
    left:2px; top:10px;
    color:rgba(36,16,38,0.5);
    font-size:1rem;
    pointer-events:none;
    transition:all .3s var(--ease);
  }
  .field input:focus + label,
  .field input:not(:placeholder-shown) + label,
  .field textarea:focus + label,
  .field textarea:not(:placeholder-shown) + label{
    top:-14px;
    font-size:0.75rem;
    color:var(--magenta);
  }
  .field .field-line{
    position:absolute; left:0; bottom:0; height:1.5px; width:0;
    background:var(--magenta);
    transition:width .4s var(--ease);
  }
  .field input:focus ~ .field-line, .field textarea:focus ~ .field-line{width:100%;}

  /* ---------- Footer ---------- */
  footer{
    background:var(--ink);
    color:rgba(255,251,243,0.6);
    padding:56px 0 30px;
  }
  .footer-top{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    flex-wrap:wrap;
    gap:32px;
    padding-bottom:34px;
    border-bottom:1px solid rgba(255,251,243,0.12);
  }
  .footer-brand{display:flex; align-items:center; gap:12px;}
  .footer-brand img{width:44px; height:44px; object-fit:cover; border-radius:50%;}
  .footer-brand strong{color:var(--paper); font-family:'Fraunces',serif; font-style:italic; display:block;}
  .footer-links{display:flex; gap:40px; flex-wrap:wrap;}
  .footer-links div strong{
    display:block;
    color:var(--paper);
    font-family:'Fraunces',serif;
    font-style:italic;
    margin-bottom:12px;
    font-size:0.95rem;
  }
  .footer-links a{
    display:block;
    font-size:0.86rem;
    padding:4px 0;
    color:rgba(255,251,243,0.6);
    transition:color .3s, padding-left .3s;
  }
  .footer-links a:hover{color:var(--gold-soft); padding-left:4px;}
  .footer-bottom{
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:10px;
    padding-top:24px;
    font-size:0.78rem;
  }

  /* ---------- Back to top ---------- */
  .to-top{
    position:fixed;
    right:26px; bottom:26px;
    width:48px; height:48px;
    border-radius:50%;
    background:var(--ink);
    border:none;
    display:flex; align-items:center; justify-content:center;
    z-index:150;
    opacity:0; visibility:hidden;
    transform:translateY(10px);
    transition:all .4s var(--ease);
  }
  .to-top.show{opacity:1; visibility:visible; transform:translateY(0);}
  .to-top svg{width:18px; height:18px;}
  .to-top:hover{background:var(--magenta); transform:translateY(-3px);}
  @media (max-width:640px){
    .to-top{ width:42px; height:42px; right:16px; bottom:16px; }
    .to-top svg{ width:16px; height:16px; }
  }

  /* ---------- Lightbox ---------- */
  .lightbox{
    position:fixed; inset:0;
    background:rgba(24,9,32,0.92);
    z-index:400;
    display:flex; align-items:center; justify-content:center;
    padding:40px;
    opacity:0; visibility:hidden;
    transition:opacity .4s var(--ease), visibility .4s;
  }
  .lightbox.open{opacity:1; visibility:visible;}
  .lightbox img{
    max-width:min(900px,90vw);
    max-height:82vh;
    border-radius:6px;
    box-shadow:0 30px 80px rgba(0,0,0,0.5);
    transform:scale(.92);
    transition:transform .4s var(--ease);
  }
  .lightbox.open img{transform:scale(1);}
  .lightbox-caption{
    position:absolute;
    bottom:36px;
    color:var(--paper);
    font-size:0.9rem;
    text-align:center;
    width:100%;
    left:0;
  }
  .lightbox-close{
    position:absolute;
    top:28px; right:32px;
    background:none; border:none;
    color:var(--paper);
    font-size:1.8rem;
    line-height:1;
  }
