  :root{
    --graphite:#0A0B0D;
    --graphite-2:#131519;
    --graphite-3:#1B1E23;
    --off-white:#F3F2ED;
    --steel:#8A919B;
    --steel-dim:#2B2E33;
    --red:#E31C2D;
    --red-dim:#4A0F16;

    --sp-1:8px; --sp-2:16px; --sp-3:24px; --sp-4:40px;
    --sp-5:64px; --sp-6:96px; --sp-7:140px; --sp-8:200px;

    --f-display:'Space Grotesk', sans-serif;
    --f-body:'Inter', sans-serif;
    --f-mono:'IBM Plex Mono', monospace;
    --f-logo:'Poppins', sans-serif;

    --container: 1240px;
  }

  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--graphite);
    color:var(--off-white);
    font-family:var(--f-body);
    font-size:16px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    position:relative;
  }
  img{display:block; max-width:100%;}
  a{color:inherit; text-decoration:none;}
  ul{list-style:none;}
  button{font-family:inherit; cursor:pointer;}

  /* subtle film-grain texture over the whole page, gives it a printed / hand-graded feel */
  body::before{
    content:"";
    position:fixed;
    inset:0;
    z-index:999;
    pointer-events:none;
    opacity:0.05;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
    mix-blend-mode:overlay;
  }

  .wrap{
    max-width:var(--container);
    margin:0 auto;
    padding-left:var(--sp-3);
    padding-right:var(--sp-3);
  }
  @media(min-width:768px){
    .wrap{padding-left:var(--sp-5); padding-right:var(--sp-5);}
  }

  .eyebrow{
    font-family:var(--f-mono);
    font-size:11px;
    font-weight:600;
    letter-spacing:0.24em;
    text-transform:uppercase;
    color:var(--red);
    display:flex;
    align-items:center;
    gap:var(--sp-2);
  }
  .eyebrow::before{
    content:"";
    width:22px;
    height:1px;
    background:var(--red);
    display:block;
  }

  /* ---------- reusable photo treatment: graphite/red duotone grade ---------- */
  .photo-frame{
    position:relative;
    overflow:hidden;
    background:var(--graphite-2);
  }
  .photo-frame img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
    filter:saturate(1.08) contrast(1.06);
    transition:filter .5s ease, transform .8s ease;
  }
  .photo-frame .photo-overlay{
    position:absolute;
    inset:0;
    background:linear-gradient(165deg, rgba(227,28,45,0.16) 0%, rgba(10,11,13,0.02) 45%, rgba(10,11,13,0.42) 100%);
    mix-blend-mode:multiply;
    pointer-events:none;
  }
  .photo-frame .photo-tag{
    position:absolute;
    bottom:16px;
    left:16px;
    z-index:2;
    font-family:var(--f-mono);
    font-size:10px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:rgba(243,242,237,0.95);
    text-shadow:0 1px 4px rgba(0,0,0,0.85);
  }
  .photo-frame .photo-corner{
    position:absolute;
    top:16px;
    right:16px;
    z-index:2;
    width:16px;
    height:16px;
    border-top:1px solid rgba(243,242,237,0.65);
    border-right:1px solid rgba(243,242,237,0.65);
    filter:drop-shadow(0 1px 3px rgba(0,0,0,0.6));
  }
  .photo-frame:hover img{ filter:saturate(1.2) contrast(1.02); transform:scale(1.035); }

  /* ---------- NAV ---------- */
  .nav{
    position:fixed;
    top:0; left:0; right:0;
    z-index:100;
    border-bottom:1px solid var(--steel-dim);
    background:rgba(10,11,13,0.86);
    backdrop-filter:blur(10px);
  }
  .nav-inner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    height:76px;
  }
  .brand{
    display:flex;
    align-items:center;
    gap:10px;
  }
  .brand img{ height:22px; width:auto; }
  .brand-text{
    font-family:var(--f-logo);
    font-weight:600;
    font-size:19px;
    letter-spacing:-0.01em;
    line-height:1;
  }
  .nav-links{
    display:none;
    align-items:center;
    gap:var(--sp-5);
  }
  .nav-links a{
    font-family:var(--f-mono);
    font-size:12px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--steel);
    transition:color .2s ease;
  }
  .nav-links a:hover{ color:var(--off-white); }
  @media(min-width:900px){
    .nav-links{ display:flex; }
  }
  .btn{
    font-family:var(--f-mono);
    font-size:12px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    padding:12px 22px;
    border-radius:2px;
    display:inline-flex;
    align-items:center;
    gap:8px;
    white-space:nowrap;
  }
  .btn-primary{
    background:var(--red);
    color:var(--off-white);
    border:1px solid var(--red);
    transition:background .2s ease, border-color .2s ease;
  }
  .btn-primary:hover{ background:#c9101f; border-color:#c9101f; }
  .btn-ghost{
    background:transparent;
    color:var(--off-white);
    border:1px solid var(--steel-dim);
    transition:border-color .2s ease, background .2s ease;
  }
  .btn-ghost:hover{ border-color:var(--steel); background:var(--graphite-2); }
  .btn-arrow{ transition:transform .2s ease; }
  .btn:hover .btn-arrow{ transform:translateX(3px); }
  .btn:disabled{ opacity:0.6; cursor:not-allowed; }

  /* ---------- HERO ---------- */
  .hero{
    position:relative;
    min-height:92vh;
    display:flex;
    align-items:flex-end;
    overflow:hidden;
    border-bottom:1px solid var(--steel-dim);
  }
  .hero .photo-frame{ position:absolute; inset:0; z-index:0; }
  .hero .photo-frame img{ filter:saturate(1.05) contrast(1.1) brightness(0.62); }
  .hero .photo-frame .photo-overlay{
    background:linear-gradient(75deg, rgba(10,11,13,0.93) 16%, rgba(10,11,13,0.35) 55%, rgba(227,28,45,0.14) 100%);
  }
  .hero-mark{
    position:absolute;
    top:8%;
    right:2%;
    width:30vw;
    max-width:340px;
    opacity:0.5;
    z-index:1;
    pointer-events:none;
  }
  .hero-inner{
    position:relative;
    z-index:2;
    padding-top:calc(76px + var(--sp-6));
    padding-bottom:var(--sp-6);
    width:100%;
  }
  .hero .eyebrow{ margin-bottom:var(--sp-3); }
  .hero h1{
    font-family:var(--f-display);
    font-weight:700;
    font-size:clamp(42px, 8.4vw, 100px);
    line-height:0.98;
    letter-spacing:-0.02em;
    max-width:16ch;
  }
  .hero h1 span{ color:var(--red); }
  .hero-sub{
    font-family:var(--f-mono);
    font-size:clamp(13px,1.6vw,16px);
    letter-spacing:0.04em;
    color:var(--steel);
    margin-top:var(--sp-3);
    text-transform:uppercase;
  }
  .hero-copy{
    font-size:clamp(16px,1.9vw,19px);
    line-height:1.6;
    color:#C9C8C2;
    max-width:600px;
    margin-top:var(--sp-4);
  }
  /* shorter hero variant for interior/sub pages */
  .hero--page{ min-height:52vh; }
  .hero--page h1{ font-size:clamp(36px, 6vw, 68px); max-width:20ch; }
  .hero--page .hero-copy{ max-width:680px; }
  .hero--page .breadcrumb{
    font-family:var(--f-mono);
    font-size:11px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--steel);
    margin-bottom:var(--sp-3);
  }
  .hero--page .breadcrumb a{ color:var(--steel); transition:color .2s ease; }
  .hero--page .breadcrumb a:hover{ color:var(--off-white); }

  .hero-actions{
    display:flex;
    flex-wrap:wrap;
    gap:var(--sp-2);
    margin-top:var(--sp-5);
  }

  /* ---------- SECTION shell ---------- */
  .section{
    padding-top:var(--sp-7);
    padding-bottom:var(--sp-7);
    border-bottom:1px solid var(--steel-dim);
    position:relative;
  }
  .section-head{
    display:flex;
    flex-direction:column;
    gap:var(--sp-3);
    margin-bottom:var(--sp-6);
    max-width:760px;
  }
  .section-title{
    font-family:var(--f-display);
    font-weight:700;
    font-size:clamp(30px, 4.4vw, 52px);
    letter-spacing:-0.015em;
    line-height:1.05;
  }
  .section-copy{
    font-size:17px;
    color:#C9C8C2;
    line-height:1.65;
    max-width:640px;
  }

  /* ---------- SERVICE LIST — used on capability/about pages ---------- */
  .service-list{
    display:grid;
    grid-template-columns:1fr;
    gap:0;
    margin-top:var(--sp-5);
    border-top:1px solid rgba(10,11,13,0.14);
  }
  @media(min-width:700px){
    .service-list{ grid-template-columns:1fr 1fr; }
  }
  .service-item{
    padding:var(--sp-4) 0;
    border-bottom:1px solid rgba(10,11,13,0.14);
  }
  @media(min-width:700px){
    .service-item{ padding-right:var(--sp-4); }
    .service-item:nth-child(odd){ border-right:1px solid rgba(10,11,13,0.14); padding-right:var(--sp-4); }
    .service-item:nth-child(even){ padding-left:var(--sp-4); }
  }
  .service-item h4{
    font-family:var(--f-display);
    font-weight:600;
    font-size:18px;
    color:var(--graphite);
    margin-bottom:8px;
  }
  .service-item h4::before{ content:"— "; color:var(--red); }
  .service-item p{ color:#4B4F56; font-size:15px; line-height:1.6; }

  /* ---------- CAPABILITIES — alternating editorial rows ---------- */
  .cap-row{
    display:grid;
    grid-template-columns:1fr;
    gap:var(--sp-4);
    padding:var(--sp-5) 0;
    border-top:1px solid var(--steel-dim);
    align-items:center;
  }
  .cap-row:last-child{ border-bottom:1px solid var(--steel-dim); }
  @media(min-width:860px){
    .cap-row{ grid-template-columns:1fr 1fr; gap:var(--sp-6); }
    .cap-row.flip .cap-media{ order:2; }
    .cap-row.flip .cap-copy{ order:1; }
  }
  .cap-media{
    aspect-ratio:4/3;
    width:100%;
  }
  .cap-copy{ max-width:480px; }
  .cap-index{
    font-family:var(--f-mono);
    font-size:11px;
    letter-spacing:0.16em;
    text-transform:uppercase;
    color:var(--steel);
    margin-bottom:var(--sp-2);
  }
  .cap-verb{
    font-family:var(--f-display);
    font-weight:700;
    font-size:clamp(26px,3.4vw,38px);
    color:var(--red);
    line-height:1.05;
  }
  .cap-name{
    font-family:var(--f-display);
    font-weight:500;
    font-size:17px;
    color:var(--steel);
    margin-top:2px;
    margin-bottom:var(--sp-3);
  }
  .cap-desc{
    font-size:16px;
    color:#C9C8C2;
    line-height:1.65;
    margin-bottom:var(--sp-3);
  }
  .cap-link{
    font-family:var(--f-mono);
    font-size:11.5px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    display:inline-flex;
    align-items:center;
    gap:6px;
    color:var(--off-white);
  }

  /* ---------- PIPELINE ---------- */
  .pipeline{
    display:flex;
    flex-direction:column;
    gap:0;
    margin:var(--sp-6) 0;
    border:1px solid var(--steel-dim);
  }
  @media(min-width:900px){
    .pipeline{ flex-direction:row; }
  }
  .pipe-step{
    flex:1;
    padding:var(--sp-4) var(--sp-3);
    position:relative;
    border-bottom:1px solid var(--steel-dim);
  }
  @media(min-width:900px){
    .pipe-step{ border-bottom:none; border-right:1px solid var(--steel-dim); }
    .pipe-step:last-child{ border-right:none; }
  }
  .pipe-step:last-child{ border-bottom:none; }
  .pipe-num{
    font-family:var(--f-mono);
    font-size:11px;
    color:var(--red);
    letter-spacing:0.1em;
  }
  .pipe-label{
    font-family:var(--f-display);
    font-weight:600;
    font-size:16px;
    letter-spacing:0.03em;
    text-transform:uppercase;
    margin-top:var(--sp-2);
  }
  .pipe-arrow{
    position:absolute;
    right:-11px;
    top:50%;
    transform:translateY(-50%);
    width:22px;
    height:22px;
    background:var(--graphite);
    border:1px solid var(--steel-dim);
    border-radius:50%;
    display:none;
    align-items:center;
    justify-content:center;
    font-family:var(--f-mono);
    font-size:12px;
    color:var(--red);
    z-index:2;
  }
  @media(min-width:900px){
    .pipe-step:not(:last-child) .pipe-arrow{ display:flex; }
  }
  .pipeline-close{
    font-family:var(--f-display);
    font-weight:600;
    font-size:20px;
    margin-top:var(--sp-5);
    color:var(--off-white);
  }

  /* ---------- INDUSTRIES — photo cards ---------- */
  .industries-scroll{
    display:flex;
    gap:var(--sp-3);
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    padding-bottom:var(--sp-3);
    margin:0 calc(var(--sp-3) * -1);
    padding-left:var(--sp-3);
    padding-right:var(--sp-3);
  }
  @media(min-width:768px){
    .industries-scroll{ margin:0 calc(var(--sp-5) * -1); padding-left:var(--sp-5); padding-right:var(--sp-5); }
  }
  .industries-scroll::-webkit-scrollbar{ height:4px; }
  .industries-scroll::-webkit-scrollbar-thumb{ background:var(--steel-dim); }
  .ind-card{
    scroll-snap-align:start;
    flex:0 0 280px;
    height:360px;
    position:relative;
    border:1px solid var(--steel-dim);
  }
  .ind-card .photo-frame{ position:absolute; inset:0; }
  .ind-body{
    position:absolute;
    left:0; right:0; bottom:0;
    z-index:2;
    padding:var(--sp-3);
  }
  .ind-index{
    font-family:var(--f-mono);
    font-size:11px;
    color:var(--red);
    letter-spacing:0.1em;
    text-transform:uppercase;
  }
  .ind-title{
    font-family:var(--f-display);
    font-weight:600;
    font-size:20px;
    margin-top:var(--sp-2);
    margin-bottom:var(--sp-2);
  }
  .ind-desc{
    font-size:13.5px;
    color:#D9D8D3;
    line-height:1.55;
  }
  .ind-card .photo-frame img{ filter:saturate(1.1) contrast(1.06); }
  .ind-card .photo-overlay{
    background:linear-gradient(to top, rgba(10,11,13,0.92) 0%, rgba(10,11,13,0.3) 42%, rgba(10,11,13,0.02) 72%);
  }

  /* ---------- MISSION / HSEQ full-bleed photo band ---------- */
  .mission{
    position:relative;
    overflow:hidden;
  }
  .mission .photo-frame{ position:absolute; inset:0; z-index:0; }
  .mission .photo-frame img{ filter:saturate(1.05) contrast(1.12) brightness(0.5); }
  .mission .photo-frame .photo-overlay{
    background:linear-gradient(100deg, rgba(10,11,13,0.88) 28%, rgba(10,11,13,0.3) 68%, rgba(227,28,45,0.12) 100%);
  }
  .mission-inner{ position:relative; z-index:1; }
  .mission-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:var(--sp-6);
  }
  @media(min-width:900px){
    .mission-grid{ grid-template-columns:1fr 1fr; }
  }
  .mission-block .eyebrow{ margin-bottom:var(--sp-3); }
  .mission-block h3{
    font-family:var(--f-display);
    font-weight:700;
    font-size:clamp(24px,3vw,32px);
    line-height:1.15;
    margin-bottom:var(--sp-3);
  }
  .mission-block p{
    color:#C9C8C2;
    font-size:15.5px;
    line-height:1.7;
    margin-bottom:var(--sp-3);
  }
  .mission-line{
    font-family:var(--f-display);
    font-weight:500;
    font-size:15.5px;
    color:var(--off-white);
    border-left:2px solid var(--red);
    padding-left:var(--sp-2);
    margin:var(--sp-2) 0;
  }

  /* ---------- FOOTER ---------- */
  footer{
    padding-top:var(--sp-6);
    padding-bottom:var(--sp-4);
  }
  .footer-top{
    display:grid;
    grid-template-columns:1fr;
    gap:var(--sp-5);
    padding-bottom:var(--sp-5);
    border-bottom:1px solid var(--steel-dim);
  }
  @media(min-width:900px){
    .footer-top{ grid-template-columns:1.4fr 1fr 1fr 1fr; }
  }
  .footer-brand .brand{ margin-bottom:var(--sp-3); }
  .footer-brand p{
    color:var(--steel);
    font-size:14px;
    max-width:280px;
    line-height:1.6;
  }
  .footer-col h4{
    font-family:var(--f-mono);
    font-size:11px;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--steel);
    margin-bottom:var(--sp-3);
  }
  .footer-col a, .footer-col p{
    display:block;
    font-size:14px;
    color:#C9C8C2;
    margin-bottom:10px;
  }
  .footer-col a:hover{ color:var(--red); }
  .footer-bottom{
    display:flex;
    flex-direction:column;
    gap:var(--sp-2);
    padding-top:var(--sp-4);
    font-family:var(--f-mono);
    font-size:11px;
    color:var(--steel);
    letter-spacing:0.04em;
  }
  @media(min-width:700px){
    .footer-bottom{ flex-direction:row; justify-content:space-between; }
  }

  /* ---------- LIGHT SECTION VARIANT — print "spec sheet" break between dark chapters ---------- */
  .on-light{
    background:var(--off-white);
    color:var(--graphite);
    border-bottom:1px solid rgba(10,11,13,0.12);
  }
  .on-light .eyebrow{ color:var(--red); }
  .on-light .section-title{ color:var(--graphite); }
  .on-light .section-copy{ color:#4B4F56; }
  .on-light .cap-row{ border-top-color:rgba(10,11,13,0.14); }
  .on-light .cap-row:last-child{ border-bottom-color:rgba(10,11,13,0.14); }
  .on-light .cap-index{ color:#6B6F76; }
  .on-light .cap-name{ color:#6B6F76; }
  .on-light .cap-desc{ color:#3A3D42; }
  .on-light .cap-link{ color:var(--graphite); border-top-color:rgba(10,11,13,0.14); }
  .on-light .photo-frame{ background:#DEDCD3; }
  .on-light .pipeline{ border-color:rgba(10,11,13,0.18); }
  .on-light .pipe-step{ border-color:rgba(10,11,13,0.18); }
  .on-light .pipe-arrow{ background:var(--off-white); border-color:rgba(10,11,13,0.22); color:var(--red); }
  .on-light .pipe-label{ color:var(--graphite); }
  .on-light .pipeline-close{ color:var(--graphite); }

  /* ---------- CONTACT FORM ---------- */
  .contact-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:var(--sp-6);
  }
  @media(min-width:900px){
    .contact-grid{ grid-template-columns:1.6fr 1fr; }
  }
  .form-row{
    display:grid;
    grid-template-columns:1fr;
    gap:0 var(--sp-3);
  }
  @media(min-width:600px){
    .form-row{ grid-template-columns:1fr 1fr; }
  }
  .field{
    display:flex;
    flex-direction:column;
    gap:8px;
    margin-bottom:var(--sp-4);
  }
  .field label{
    font-family:var(--f-mono);
    font-size:11px;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:#6B6F76;
  }
  .field input, .field select, .field textarea{
    background:transparent;
    border:none;
    border-bottom:1px solid rgba(10,11,13,0.25);
    border-radius:0;
    padding:10px 2px;
    font-family:var(--f-body);
    font-size:15px;
    color:var(--graphite);
    outline:none;
    appearance:none;
    -webkit-appearance:none;
  }
  .field select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='%238A919B' d='M5 7l5 5 5-5z'/></svg>");
    background-repeat:no-repeat;
    background-position:right 2px center;
    background-size:14px;
    padding-right:22px;
  }
  .field textarea{ resize:vertical; min-height:120px; line-height:1.5; }
  .field input::placeholder, .field textarea::placeholder{ color:#A6A9AD; }
  .field input:focus, .field select:focus, .field textarea:focus{ border-bottom-color:var(--red); }
  .field input:invalid:not(:placeholder-shown), .field textarea:invalid:not(:placeholder-shown){ border-bottom-color:var(--red); }
  .enquiry-form .btn{ margin-top:var(--sp-2); border:none; }
  .enquiry-form .btn:hover{ background:#c9101f; }

  .form-success{
    display:none;
    padding:var(--sp-5) 0;
    max-width:480px;
  }
  .form-success.is-visible{ display:block; }
  .form-success h3{
    font-family:var(--f-display);
    font-weight:700;
    font-size:28px;
    margin:10px 0 12px;
    color:var(--graphite);
  }
  .form-success p{ color:#3A3D42; font-size:15px; line-height:1.6; }

  .form-error{
    display:none;
    margin-top:var(--sp-3);
    padding:12px 14px;
    border:1px solid rgba(227,28,45,0.35);
    background:rgba(227,28,45,0.06);
    color:#9C1420;
    font-size:14px;
    line-height:1.5;
  }
  .form-error.is-visible{ display:block; }

  .contact-aside{ display:flex; flex-direction:column; gap:var(--sp-5); }
  .aside-block{ padding-top:var(--sp-3); border-top:1px solid rgba(10,11,13,0.14); }
  .aside-link{
    display:block;
    font-family:var(--f-display);
    font-size:19px;
    font-weight:500;
    color:var(--graphite);
    margin-bottom:6px;
    transition:color .2s ease;
  }
  .aside-link:hover{ color:var(--red); }
  .aside-text{ font-size:15px; color:#3A3D42; line-height:1.6; max-width:240px; }

  /* ---------- reveal ---------- */
  .reveal{ opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }
  .reveal.is-visible{ opacity:1; transform:translateY(0); }
  @media (prefers-reduced-motion: reduce){
    .reveal{ opacity:1; transform:none; transition:none; }
    html{ scroll-behavior:auto; }
  }

  a:focus-visible, button:focus-visible{
    outline:2px solid var(--red);
    outline-offset:2px;
  }
