:root{
    --bg: #0a0a0a;
    --bg-raise: #121212;
    --bg-card: #141311;
    --ink: #f2f0ec;
    --ink-dim: #96938d;
    --hairline: #242320;
    --seal: #c1272d;
    --seal-bright: #e0362f;
    --seal-dim: rgba(193,39,45,0.14);
    --gold: #b08d4f;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:'IBM Plex Sans', sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    cursor:default;
  }
  a{color:inherit; text-decoration:none;}
  .display{font-family:'Space Grotesk', sans-serif;}
  .mono{font-family:'IBM Plex Mono', monospace; letter-spacing:0.02em;}
  ::selection{background:var(--seal); color:#fff;}

  @media (prefers-reduced-motion: reduce){
    *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important;}
  }

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

  .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}

  /* ---------- GRAIN OVERLAY ---------- */
  .grain{
    position:fixed; inset:0; z-index:9998; pointer-events:none;
    opacity:0.05; mix-blend-mode:overlay;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  }
  .vignette{
    position:fixed; inset:0; z-index:9997; pointer-events:none;
    background:radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,0.55) 130%);
  }

  /* ---------- CURSOR ---------- */
  .ink-cursor{
    position:fixed; top:0; left:0; width:26px; height:26px; border-radius:50%;
    border:1px solid var(--seal); pointer-events:none; z-index:9999;
    transform:translate(-50%,-50%); transition:width .25s ease, height .25s ease, background .25s ease, opacity .25s ease;
    mix-blend-mode:difference;
  }
  .ink-cursor.hover{width:54px; height:54px; background:var(--seal); opacity:0.85;}
  @media (max-width:900px), (hover:none){ .ink-cursor{display:none;} }

  /* ---------- STAMP LOADER ---------- */
  .stamp-loader{
    position:fixed; inset:0; z-index:10000; background:var(--bg);
    display:flex; align-items:center; justify-content:center;
    transition:opacity .6s ease .3s, visibility .6s ease .3s;
  }
  .stamp-loader.done{opacity:0; visibility:hidden;}
  .loader-seal{
    width:120px; height:120px; border:3px solid var(--seal); border-radius:10px;
    display:flex; align-items:center; justify-content:center;
    font-family:'IBM Plex Mono', monospace; font-size:52px; color:var(--seal);
    transform:scale(2.6) rotate(-14deg); opacity:0;
    animation:stampDown .55s cubic-bezier(.2,.9,.3,1.3) forwards .15s;
  }
  @keyframes stampDown{
    0%{transform:scale(2.6) rotate(-14deg); opacity:0;}
    60%{transform:scale(0.94) rotate(-4deg); opacity:1;}
    80%{transform:scale(1.06) rotate(-6deg);}
    100%{transform:scale(1) rotate(-5deg); opacity:1;}
  }

  @media (max-width:900px), (hover:none){ .ink-cursor{display:none;} }

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

  /* ---------- HEADER ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:100;
    padding:22px 0;
    background:rgba(10,10,10,0.82);
    backdrop-filter:blur(10px);
    border-bottom:1px solid transparent;
    transition:border-color .3s ease;
  }
  header.scrolled{border-bottom-color:var(--hairline);}
  header .wrap{display:flex; align-items:center; justify-content:space-between;}
  .logo{display:flex; align-items:center; gap:10px; font-size:18px; font-weight:600;}
  .logo-mark{
    width:26px; height:26px; border:1.5px solid var(--seal); border-radius:3px;
    display:flex; align-items:center; justify-content:center;
    font-size:11px; color:var(--seal); font-weight:600; font-family:'IBM Plex Mono',monospace;
  }
  nav{display:flex; gap:36px; align-items:center;}
  nav a{
    font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:var(--ink-dim);
    transition:color .2s ease; position:relative;
  }
  nav a:not(.nav-cta)::after{
    content:''; position:absolute; left:0; bottom:-4px; width:0; height:1px; background:var(--seal);
    transition:width .25s ease;
  }
  nav a:not(.nav-cta):hover::after{width:100%;}
  nav a:hover{color:var(--ink);}
  .nav-cta{
    border:1px solid var(--ink); padding:9px 18px; border-radius:2px;
    font-size:13px; text-transform:uppercase; letter-spacing:0.08em; color:var(--ink) !important;
    transition:background .2s ease, color .2s ease;
  }
  .nav-cta:hover{background:var(--ink); color:var(--bg) !important;}
  .nav-toggle{display:none;}

  /* ---------- HERO ---------- */
  .hero{
    min-height:100vh;
    display:flex; flex-direction:column; justify-content:center;
    padding-top:120px; padding-bottom:60px;
    position:relative;
  }
  .hero-eyebrow{
    display:flex; align-items:center; gap:10px;
    font-size:12px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:0.14em;
    margin-bottom:28px;
    opacity:0; animation:fadeUp .7s ease forwards .9s;
  }
  .hero-eyebrow::before{ content:''; width:24px; height:1px; background:var(--seal); }
  h1{
    font-size:clamp(40px, 7vw, 86px);
    font-weight:700; line-height:1.02; letter-spacing:-0.02em; max-width:940px;
    opacity:0; animation:fadeUp .8s ease forwards 1.05s;
  }
  h1 .accent{color:var(--seal); font-style:italic; font-weight:500; position:relative;}
  .hero-sub{
    margin-top:28px; font-size:18px; color:var(--ink-dim); max-width:560px;
    opacity:0; animation:fadeUp .8s ease forwards 1.2s;
  }
  .hero-actions{
    margin-top:44px; display:flex; gap:16px; align-items:center; flex-wrap:wrap;
    opacity:0; animation:fadeUp .8s ease forwards 1.35s;
  }
  .btn-primary{
    background:var(--seal); color:#fff; padding:17px 32px; border-radius:2px;
    font-size:14px; font-weight:500; text-transform:uppercase; letter-spacing:0.06em;
    display:inline-block; position:relative; overflow:hidden;
    transition:transform .15s ease-out;
  }
  .btn-primary span{position:relative; z-index:2;}
  .btn-primary::before{
    content:''; position:absolute; inset:0; background:var(--seal-bright);
    transform:translateY(100%); transition:transform .3s ease;
  }
  .btn-primary:hover::before{transform:translateY(0);}
  .btn-ghost{
    color:var(--ink-dim); font-size:14px; padding:17px 6px;
    border-bottom:1px solid var(--hairline);
    transition:color .2s ease, border-color .2s ease;
  }
  .btn-ghost:hover{color:var(--ink); border-color:var(--ink);}

  .marquee-wrap{
    margin-top:100px; border-top:1px solid var(--hairline); padding-top:0;
    overflow:hidden; position:relative;
    opacity:0; animation:fadeUp .8s ease forwards 1.5s;
  }
  .marquee-track{
    display:flex; gap:56px; white-space:nowrap; width:max-content;
    animation:marquee 26s linear infinite; padding:22px 0;
  }
  .marquee-track span{font-size:13px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:0.1em; display:flex; align-items:center; gap:16px;}
  .marquee-track span strong{color:var(--ink); font-weight:500;}
  .marquee-track span::after{content:'⌘'; color:var(--seal); font-size:10px; margin-left:16px;}
  @keyframes marquee{ from{transform:translateX(0);} to{transform:translateX(-50%);} }

  @keyframes fadeUp{ from{opacity:0; transform:translateY(18px);} to{opacity:1; transform:translateY(0);} }

  .seal-ambient{ position:absolute; right:-60px; top:14%; width:380px; height:380px; opacity:0.045; pointer-events:none; }
  .seal-ambient svg{width:100%; height:100%;}

  /* ---------- SECTION LABELS ---------- */
  .section{padding:150px 0;}
  .section-tight{padding:90px 0;}
  .sec-label{
    display:flex; align-items:center; gap:12px;
    font-size:12px; color:var(--seal); text-transform:uppercase; letter-spacing:0.14em;
    margin-bottom:18px;
  }
  .sec-label::before{content:''; width:18px; height:1px; background:var(--seal);}
  .sec-title{ font-size:clamp(30px, 4vw, 50px); font-weight:600; letter-spacing:-0.01em; max-width:660px; }
  .sec-desc{color:var(--ink-dim); font-size:16px; max-width:480px; margin-top:18px;}
  .sec-header-row{
    display:flex; justify-content:space-between; align-items:flex-end; gap:40px;
    margin-bottom:70px; flex-wrap:wrap;
  }

  /* ---------- SERVICES GRID ---------- */
  .services-grid{ border-top:1px solid var(--hairline); }
  .service-row{
    display:grid; grid-template-columns:100px 1fr 280px 40px; align-items:center; gap:24px;
    padding:32px 0; border-bottom:1px solid var(--hairline);
    transition:background .25s ease, padding-left .25s ease; cursor:default;
  }
  .service-row:hover{background:var(--bg-raise); padding-left:14px;}
  .service-code{ font-size:13px; color:var(--seal); font-weight:500; }
  .service-name{ font-size:25px; font-weight:600; letter-spacing:-0.01em; }
  .service-desc{color:var(--ink-dim); font-size:14px; line-height:1.6;}
  .service-arrow{ color:var(--ink-dim); font-size:20px; text-align:right; transition:transform .25s ease, color .25s ease; }
  .service-row:hover .service-arrow{transform:translateX(6px); color:var(--seal);}
  @media (max-width:760px){
    .service-row{grid-template-columns:1fr; gap:8px; padding:24px 0;}
    .service-row:hover{padding-left:0;}
    .service-arrow{display:none;}
  }

  /* ---------- STATS STRIP ---------- */
  .stamp-strip{
    border-top:1px solid var(--hairline); border-bottom:1px solid var(--hairline);
    display:flex; justify-content:space-between; padding:60px 0; flex-wrap:wrap; gap:40px;
  }
  .stamp-item{display:flex; align-items:center; gap:18px;}
  .stamp-icon{
    width:54px; height:54px; border:1.5px solid var(--seal); border-radius:4px;
    display:flex; align-items:center; justify-content:center; color:var(--seal);
    font-size:12px; font-weight:600; flex-shrink:0; transform:rotate(-6deg);
  }
  .stamp-text .num{font-size:30px; font-weight:700; display:block;}
  .stamp-text .label{font-size:12px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:0.08em;}

  /* ---------- WORK / PORTFOLIO ---------- */
  .work-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:2px; background:var(--hairline); border:1px solid var(--hairline); }
  .work-card{
    background:var(--bg-card); position:relative; overflow:hidden;
    padding:0; aspect-ratio:4/3; display:flex; flex-direction:column; justify-content:flex-end;
  }
  .work-visual{ position:absolute; inset:0; opacity:0.9; transition:transform .6s cubic-bezier(.2,.8,.2,1); }
  .work-card:hover .work-visual{ transform:scale(1.06); }
  .work-overlay{
    position:relative; z-index:2; padding:28px; background:linear-gradient(0deg, rgba(10,10,10,0.92) 15%, rgba(10,10,10,0) 100%);
  }
  .work-tag{ font-size:11px; color:var(--seal); text-transform:uppercase; letter-spacing:0.1em; margin-bottom:8px; display:block; }
  .work-title{ font-size:22px; font-weight:600; }
  .work-metric{ font-size:13px; color:var(--ink-dim); margin-top:6px; }
  @media (max-width:760px){ .work-grid{grid-template-columns:1fr;} }

  /* ---------- APPROACH ---------- */
  .approach-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:1px; background:var(--hairline); border:1px solid var(--hairline); }
  .approach-card{ background:var(--bg); padding:46px 32px; transition:background .3s ease; }
  .approach-card:hover{ background:var(--bg-raise); }
  .approach-num{font-size:13px; color:var(--seal); margin-bottom:20px;}
  .approach-title{font-size:21px; font-weight:600; margin-bottom:12px;}
  .approach-body{color:var(--ink-dim); font-size:14px; line-height:1.65;}
  @media (max-width:760px){ .approach-grid{grid-template-columns:1fr;} }

  /* ---------- TESTIMONIAL MARQUEE ---------- */
  .quote-strip{ border-top:1px solid var(--hairline); overflow:hidden; padding:70px 0; }
  .quote-track{ display:flex; gap:80px; width:max-content; animation:marquee 40s linear infinite; }
  .quote-item{ display:flex; align-items:center; gap:24px; white-space:nowrap; }
  .quote-item p{ font-size:22px; font-family:'Space Grotesk', sans-serif; font-style:italic; color:var(--ink); }
  .quote-item span{ font-size:12px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:0.08em; }
  .quote-item .divider{ width:1px; height:28px; background:var(--hairline); }

  /* ---------- CONTACT ---------- */
  .contact-section{ padding:150px 0; position:relative; }
  .contact-inner{ text-align:left; max-width:720px; }
  .contact-title{ font-size:clamp(34px, 5.5vw, 64px); font-weight:700; letter-spacing:-0.02em; line-height:1.05; }
  .contact-title .accent{color:var(--seal); font-style:italic; font-weight:500;}
  .contact-sub{color:var(--ink-dim); font-size:17px; margin-top:22px; max-width:480px;}
  .contact-methods{ margin-top:48px; display:flex; gap:16px; flex-wrap:wrap; }
  .contact-email{
    font-size:clamp(22px,3vw,30px); font-weight:600; border-bottom:1px solid var(--hairline);
    padding-bottom:14px; display:inline-block; transition:border-color .2s ease, color .2s ease;
  }
  .contact-email:hover{border-color:var(--seal); color:var(--seal);}

  /* ---------- FOOTER ---------- */
  footer{ border-top:1px solid var(--hairline); padding:36px 0; }
  footer .wrap{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; }
  .footer-note{font-size:12px; color:var(--ink-dim);}
  .footer-links{display:flex; gap:28px;}
  .footer-links a{font-size:12px; color:var(--ink-dim); text-transform:uppercase; letter-spacing:0.06em;}
  .footer-links a:hover{color:var(--ink);}

  /* ---------- reveal on scroll ---------- */
  .reveal{opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease;}
  .reveal.in{opacity:1; transform:translateY(0);}
  .stagger.in > *{ animation:none; }

  @media (max-width:600px){
    .wrap{padding:0 20px;}
    nav{position:fixed; top:0; right:-100%; width:78%; height:100vh; background:var(--bg);
      flex-direction:column; justify-content:center; gap:30px; transition:right .35s ease;
      border-left:1px solid var(--hairline);}
    nav.open{right:0;}
    .nav-cta{display:none;}
    .nav-toggle{ display:block; background:none; border:none; color:var(--ink); font-size:22px; cursor:pointer; z-index:200; }
    .sec-header-row{margin-bottom:44px;}
  }
