:root{
    --bg:#0a0a0a;
    --bg-2:#121110;
    --fg:#f5f1e8;
    --muted:#9c9585;
    --accent:#c9a227;
    --accent-soft:rgba(201,162,39,0.14);
    --thread-red:#8b2e28;
    --line:rgba(245,241,232,0.14);
    --line-strong:rgba(245,241,232,0.28);
    --max:1120px;
  }

  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--bg);
    color:var(--fg);
    font-family:'Inter', sans-serif;
    font-size:16px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }

  ::selection{ background:var(--accent); color:#0a0a0a; }

  a{ color:inherit; text-decoration:none; }

  h1,h2,h3{
    font-family:'Big Shoulders Display', sans-serif;
    font-weight:800;
    letter-spacing:0.01em;
    line-height:0.98;
    text-transform:none;
  }

  .mono{
    font-family:'IBM Plex Mono', monospace;
  }

  .eyebrow{
    font-family:'IBM Plex Mono', monospace;
    font-size:0.72rem;
    letter-spacing:0.18em;
    text-transform:uppercase;
    color:var(--accent);
    display:flex;
    align-items:center;
    gap:0.6rem;
  }
  .eyebrow::before{
    content:"";
    width:18px;
    height:1px;
    background:var(--accent);
    display:inline-block;
  }

  /* ---------- measuring-tape rule (signature element) ---------- */
  .tape{
    position:fixed;
    top:0; left:36px;
    width:34px;
    height:100vh;
    border-right:1px solid var(--line);
    z-index:5;
    pointer-events:none;
    display:none;
  }
  .tape-inner{
    position:relative;
    height:400vh;
    width:100%;
    background-image: repeating-linear-gradient(
      to bottom,
      var(--line) 0px, var(--line) 1px,
      transparent 1px, transparent 40px
    );
    animation: tapeScroll 40s linear infinite;
  }
  .tape span{
    position:absolute;
    left:8px;
    font-family:'IBM Plex Mono', monospace;
    font-size:0.55rem;
    color:var(--muted);
    transform: translateY(-50%);
  }
  @keyframes tapeScroll{
    from{ transform:translateY(0); }
    to{ transform:translateY(-50%); }
  }
  @media(min-width:900px){
    .tape{ display:block; }
    body{ padding-left:90px; }
  }

  /* ---------- header ---------- */
  header{
    position:sticky; top:0;
    z-index:10;
    background:rgba(10,10,10,0.86);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .nav-wrap{
    max-width:var(--max);
    margin:0 auto;
    padding:1.1rem 1.5rem;
    display:flex;
    align-items:center;
    justify-content:space-between;
  }
  .logo{
    font-family:'Big Shoulders Display', sans-serif;
    font-weight:800;
    font-size:1.5rem;
    letter-spacing:0.02em;
  }
  .logo .nine{ font-style:italic; font-weight:700; }
  nav ul{
    list-style:none;
    display:flex;
    gap:2rem;
  }
  nav a{
    font-family:'IBM Plex Mono', monospace;
    font-size:0.78rem;
    letter-spacing:0.05em;
    text-transform:uppercase;
    color:var(--muted);
    transition:color 0.2s;
  }
  nav a:hover{ color:var(--fg); }
  .nav-toggle{ display:none; background:none; border:none; color:var(--fg); font-size:1.4rem; cursor:pointer; }

  @media(max-width:760px){
    nav{ display:none; }
    .nav-toggle{ display:block; }
    nav.open{
      display:block;
      position:absolute;
      top:100%; left:0; right:0;
      background:var(--bg);
      border-bottom:1px solid var(--line);
      padding:1rem 1.5rem 1.5rem;
    }
    nav.open ul{ flex-direction:column; gap:1.2rem; }
  }

  section{
    max-width:var(--max);
    margin:0 auto;
    padding:6rem 1.5rem;
    border-bottom:1px solid var(--line);
  }
  section:last-of-type{ border-bottom:none; }

  /* ---------- hero ---------- */
  .hero{ padding-top:5.5rem; padding-bottom:6.5rem; }
  .hero h1{
    font-size:clamp(2.4rem, 6.4vw, 4.4rem);
    margin:1.4rem 0 1.6rem;
    max-width:14ch;
  }
  .hero h1 .accent{ color:var(--accent); }
  .hero p.lede{
    font-size:1.15rem;
    color:var(--muted);
    max-width:52ch;
    margin-bottom:2.4rem;
  }
  .btn{
    display:inline-flex;
    align-items:center;
    gap:0.6rem;
    background:var(--accent);
    color:#0a0a0a;
    font-family:'IBM Plex Mono', monospace;
    font-weight:500;
    font-size:0.85rem;
    letter-spacing:0.03em;
    text-transform:uppercase;
    padding:0.95rem 1.6rem;
    border-radius:2px;
    transition:transform 0.15s ease, background 0.15s ease;
  }
  .btn:hover{ transform:translateY(-2px); background:#dcb845; }
  .btn.ghost{
    background:transparent;
    color:var(--fg);
    border:1px solid var(--line-strong);
  }
  .btn.ghost:hover{ border-color:var(--accent); color:var(--accent); background:transparent; transform:translateY(-2px); }
  .hero-actions{ display:flex; gap:1rem; flex-wrap:wrap; }

  /* ---------- ficha tecnica (problem) ---------- */
  .ficha{
    border:1px solid var(--line);
    background:var(--bg-2);
  }
  .ficha-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    padding:1.1rem 1.5rem;
    border-bottom:1px solid var(--line);
  }
  .ficha-head .mono{ font-size:0.72rem; color:var(--muted); letter-spacing:0.08em; }
  .ficha-row{
    display:grid;
    grid-template-columns: 160px 1fr;
    gap:1rem;
    padding:1.4rem 1.5rem;
    border-bottom:1px solid var(--line);
  }
  .ficha-row:last-child{ border-bottom:none; }
  .ficha-label{
    font-family:'IBM Plex Mono', monospace;
    font-size:0.78rem;
    letter-spacing:0.06em;
    color:var(--accent);
    text-transform:uppercase;
    padding-top:0.15rem;
  }
  .ficha-value{ font-size:1.05rem; color:var(--fg); }
  .ficha-value strong{ color:var(--fg); font-weight:600; }

  h2{
    font-size:clamp(1.9rem, 4vw, 2.7rem);
    margin:1rem 0 2.5rem;
    max-width:16ch;
  }

  /* ---------- steps ---------- */
  .steps{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
  }
  .step{
    background:var(--bg);
    padding:2.2rem 1.8rem;
  }
  .step .num{
    font-family:'IBM Plex Mono', monospace;
    color:var(--accent);
    font-size:0.85rem;
    margin-bottom:1.2rem;
    display:block;
  }
  .step h3{
    font-size:1.35rem;
    margin-bottom:0.8rem;
    text-transform:none;
  }
  .step p{ color:var(--muted); font-size:0.95rem; }

  @media(max-width:800px){
    .steps{ grid-template-columns:1fr; }
  }

  /* ---------- diferenciais table ---------- */
  table.diff{
    width:100%;
    border-collapse:collapse;
    font-size:0.95rem;
  }
  table.diff th{
    text-align:left;
    font-family:'IBM Plex Mono', monospace;
    font-size:0.72rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--muted);
    padding:0.9rem 1rem;
    border-bottom:1px solid var(--line-strong);
  }
  table.diff td{
    padding:1.1rem 1rem;
    border-bottom:1px solid var(--line);
    vertical-align:top;
    color:var(--muted);
  }
  table.diff tr.highlight td{
    color:var(--fg);
    background:var(--accent-soft);
    font-weight:500;
  }
  table.diff tr.highlight td:first-child{ border-left:2px solid var(--accent); }

  /* ---------- icp / platforms ---------- */
  .icp-grid{
    display:grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap:3rem;
    align-items:start;
  }
  .icp-grid p{ color:var(--muted); max-width:48ch; }
  .platforms{ display:flex; flex-direction:column; gap:0.9rem; margin-top:1.6rem; }
  .platform-tag{
    display:flex;
    align-items:center;
    gap:0.8rem;
    font-family:'IBM Plex Mono', monospace;
    font-size:0.85rem;
    letter-spacing:0.03em;
    border:1px solid var(--line);
    padding:0.85rem 1.1rem;
  }
  .platform-tag .dot{ width:6px; height:6px; background:var(--accent); border-radius:50%; flex-shrink:0; }
  @media(max-width:760px){ .icp-grid{ grid-template-columns:1fr; } }

  /* ---------- authority ---------- */
  .authority{
    display:flex;
    gap:2.5rem;
    align-items:flex-start;
  }
  .authority .mark{
    font-family:'Big Shoulders Display', sans-serif;
    font-weight:800;
    font-size:3.5rem;
    color:var(--accent);
    font-style:italic;
    line-height:1;
  }
  .authority p{ color:var(--muted); font-size:1.05rem; max-width:56ch; }
  .authority p + p{ margin-top:1rem; }
  @media(max-width:600px){ .authority{ flex-direction:column; gap:1rem; } }

  /* ---------- contact ---------- */
  .contact{ text-align:left; }
  .contact h2{ max-width:20ch; }
  .contact-row{
    display:flex;
    flex-wrap:wrap;
    gap:1rem;
    margin-top:2rem;
  }
  .contact-detail{
    margin-top:2.5rem;
    display:flex;
    flex-wrap:wrap;
    gap:2.5rem;
  }
  .contact-detail div{ font-family:'IBM Plex Mono', monospace; font-size:0.85rem; }
  .contact-detail span{ display:block; color:var(--muted); font-size:0.7rem; text-transform:uppercase; letter-spacing:0.08em; margin-bottom:0.4rem; }

  footer{
    max-width:var(--max);
    margin:0 auto;
    padding:2.5rem 1.5rem 3.5rem;
    display:flex;
    justify-content:space-between;
    align-items:center;
    flex-wrap:wrap;
    gap:1rem;
  }
  footer .mono{ color:var(--muted); font-size:0.75rem; }

  /* ---------- floating whatsapp button ---------- */
  .wa-float{
    position:fixed;
    right:1.4rem;
    bottom:1.4rem;
    z-index:20;
    width:56px;
    height:56px;
    border-radius:50%;
    background:#25D366;
    display:flex;
    align-items:center;
    justify-content:center;
    box-shadow:0 6px 18px rgba(0,0,0,0.45), 0 0 0 1px rgba(245,241,232,0.08);
    transition:transform 0.2s ease, box-shadow 0.2s ease, opacity 0.3s ease;
    opacity:0;
    transform:translateY(16px) scale(0.9);
    pointer-events:none;
  }
  .wa-float.visible{
    opacity:1;
    transform:translateY(0) scale(1);
    pointer-events:auto;
  }
  .wa-float:hover{
    transform:translateY(-3px) scale(1.05);
    box-shadow:0 10px 22px rgba(0,0,0,0.5), 0 0 0 1px rgba(245,241,232,0.14);
  }
  .wa-float svg{ width:28px; height:28px; }
  .wa-tooltip{
    position:absolute;
    right:68px;
    top:50%;
    transform:translateY(-50%);
    background:var(--bg-2);
    border:1px solid var(--line);
    color:var(--fg);
    font-family:'IBM Plex Mono', monospace;
    font-size:0.78rem;
    padding:0.5rem 0.8rem;
    border-radius:3px;
    white-space:nowrap;
    opacity:0;
    pointer-events:none;
    transition:opacity 0.2s ease;
  }
  .wa-float:hover .wa-tooltip{ opacity:1; }
  @media(max-width:600px){
    .wa-float{ right:1rem; bottom:1rem; width:52px; height:52px; }
    .wa-tooltip{ display:none; }
  }
  @media (prefers-reduced-motion: reduce){
    .wa-float{ transition:none; }
  }

  [data-reveal]{
    opacity:0;
    transform:translateY(18px);
    transition:opacity 0.7s ease, transform 0.7s ease;
  }
  [data-reveal].in{ opacity:1; transform:translateY(0); }

  @media (prefers-reduced-motion: reduce){
    [data-reveal]{ opacity:1; transform:none; transition:none; }
    .tape-inner{ animation:none; }
    html{ scroll-behavior:auto; }
  }

  /* ---------- image components (shared: index + sobre-nós) ---------- */
  .img-frame{
    position:relative;
    overflow:hidden;
    border:1px solid var(--line);
    background:var(--bg-2);
  }
  .img-frame img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
    filter:grayscale(12%) contrast(1.05) brightness(0.92);
    transition:transform 0.6s ease, filter 0.6s ease;
  }
  .img-frame:hover img{ transform:scale(1.03); filter:grayscale(0%) contrast(1.05) brightness(0.98); }
  .img-caption{
    position:absolute;
    left:0; right:0; bottom:0;
    padding:1.2rem 1.2rem 0.9rem;
    background:linear-gradient(to top, rgba(10,10,10,0.88), transparent);
    font-family:'IBM Plex Mono', monospace;
    font-size:0.68rem;
    letter-spacing:0.07em;
    text-transform:uppercase;
    color:var(--muted);
  }

  /* page banner (used at top of sobre-nos) */
  .page-hero{
    position:relative;
    height:52vh;
    min-height:340px;
    max-height:520px;
    display:flex;
    align-items:flex-end;
    border-bottom:1px solid var(--line);
    overflow:hidden;
  }
  .page-hero img{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    filter:grayscale(30%) brightness(0.42) contrast(1.05);
  }
  .page-hero::after{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(to top, rgba(10,10,10,0.95) 0%, rgba(10,10,10,0.35) 55%, rgba(10,10,10,0.15) 100%);
  }
  .page-hero-content{
    position:relative;
    z-index:2;
    max-width:var(--max);
    margin:0 auto;
    padding:0 1.5rem 3rem;
    width:100%;
  }
  .page-hero-content h1{
    font-size:clamp(2.2rem, 5.5vw, 3.6rem);
    max-width:16ch;
  }

  .back-link{
    display:inline-flex;
    align-items:center;
    gap:0.5rem;
    font-family:'IBM Plex Mono', monospace;
    font-size:0.75rem;
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--muted);
    transition:color 0.2s;
  }
  .back-link:hover{ color:var(--accent); }

  /* split: image + text side by side */
  .split{
    display:grid;
    grid-template-columns:0.9fr 1.1fr;
    gap:3rem;
    align-items:center;
  }
  .split.reverse{ grid-template-columns:1.1fr 0.9fr; }
  .split.reverse .split-img{ order:2; }
  .split-img .img-frame{ aspect-ratio:4/5; }
  .split p{ color:var(--muted); }
  .split p + p{ margin-top:1rem; }
  @media(max-width:800px){
    .split, .split.reverse{ grid-template-columns:1fr; }
    .split.reverse .split-img{ order:0; }
    .split-img .img-frame{ aspect-ratio:16/10; }
  }

  /* gallery grid (3 images, varied heights) */
  .gallery{
    display:grid;
    grid-template-columns:1.2fr 1fr;
    grid-template-rows:1fr 1fr;
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
    height:520px;
  }
  .gallery .img-frame{ border:none; }
  .gallery .g1{ grid-row:1 / 3; }
  .gallery .g2{ grid-row:1; }
  .gallery .g3{ grid-row:2; }
  @media(max-width:760px){
    .gallery{ grid-template-columns:1fr; grid-template-rows:auto; height:auto; }
    .gallery .g1, .gallery .g2, .gallery .g3{ grid-row:auto; height:260px; }
  }

  /* values list (sobre-nos) */
  .values-list{ display:grid; grid-template-columns:repeat(2, 1fr); gap:2rem 3rem; margin-top:1rem; }
  .values-list li{ list-style:none; }
  .values-list .v-num{ font-family:'IBM Plex Mono', monospace; color:var(--accent); font-size:0.78rem; display:block; margin-bottom:0.5rem; }
  .values-list h3{ font-size:1.2rem; margin-bottom:0.5rem; text-transform:none; }
  .values-list p{ color:var(--muted); font-size:0.92rem; }
  @media(max-width:700px){ .values-list{ grid-template-columns:1fr; } }