/* =========================================================
   Fernando Kuhn — Landing  ·  css/style.css
   Monocromático · preto/branco · editorial · alto nível
   ---------------------------------------------------------
   ESTRUTURA (módulos):
     1. Design tokens (:root)        6. Manifesto / Sobre
     2. Reset & base                 7. Serviços / Processo
     3. Grão · cursor · preloader    8. Stats / Marquee
     4. Navegação + logo (FK)        9. Contato / Footer
     5. Botões / Hero               10. Responsivo
   ========================================================= */

:root{
  --black:#000000;
  --bg:#050505;
  --white:#f4f4f2;
  --g-90:#e3e3e0;
  --g-60:#9a9a96;
  --g-40:#6a6a66;
  --g-25:#2c2c2a;
  --g-15:#1a1a18;
  --line:rgba(244,244,242,.12);
  --ease:cubic-bezier(.6,.01,.05,1);
  --pad:clamp(20px,5vw,80px);
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{
  background:var(--bg);
  color:var(--white);
  font-family:'Inter',system-ui,sans-serif;
  line-height:1.5;
  overflow-x:hidden;
}
body.loading{overflow:hidden;height:100vh}
a{color:inherit;text-decoration:none}
em{font-style:normal;color:var(--g-60)}
.mono{font-family:'Space Mono',monospace;font-weight:400;letter-spacing:.02em}
::selection{background:var(--white);color:var(--black)}

/* tipografia base de display */
h1,h2,h3,.display{font-family:'Sora',sans-serif;font-weight:800;letter-spacing:-.03em;line-height:.92}

/* ---------- grão / textura ---------- */
.grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1s steps(3) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}
  33%{transform:translate(-3%,2%)}
  66%{transform:translate(2%,-3%)}
}

/* ---------- cursor ---------- */
.cursor,.cursor-follow{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;border-radius:50%;mix-blend-mode:difference}
.cursor{width:7px;height:7px;background:var(--white);transform:translate(-50%,-50%)}
.cursor-follow{
  width:46px;height:46px;border:1px solid rgba(244,244,242,.6);
  transform:translate(-50%,-50%);transition:width .35s var(--ease),height .35s var(--ease),background .35s var(--ease),opacity .3s;
  display:grid;place-items:center;
}
.cursor-follow.grow{width:90px;height:90px;background:var(--white);border-color:transparent}
.cursor-follow.hide{opacity:0}
.cursor-label{font-family:'Space Mono',monospace;font-size:11px;color:var(--black);opacity:0;transition:opacity .3s;text-transform:uppercase}
.cursor-follow.grow .cursor-label{opacity:1}
@media (hover:none),(pointer:coarse){.cursor,.cursor-follow{display:none}}

/* ---------- preloader ---------- */
.preloader{position:fixed;inset:0;z-index:9500;background:var(--black);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px}
/* ---------- logo (monograma FK) ---------- */
.fk-mark{display:block;width:auto;color:var(--white)}
.fk-mark polygon{fill:currentColor}
.pre-mark{position:relative;display:flex;align-items:center;justify-content:center;color:var(--white)}
.pre-mark .fk-mark{position:relative;z-index:1;width:clamp(150px,30vw,300px);height:auto}
.pre-glow{position:absolute;left:50%;top:50%;width:min(64vw,560px);height:min(64vw,560px);transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(244,244,242,.17),rgba(244,244,242,.04) 46%,transparent 66%);animation:glowPulse 2.6s var(--ease) infinite;pointer-events:none}
@keyframes glowPulse{0%,100%{opacity:.5;transform:translate(-50%,-50%) scale(.9)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}
.pre-mark .fk-mark polygon{fill:transparent;stroke:currentColor;stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:fkDraw 1.15s cubic-bezier(.6,0,.25,1) forwards,fkFill .55s ease forwards}
.pre-mark .fk-mark polygon:nth-child(2){animation-delay:0s,.9s}
.pre-mark .fk-mark polygon:nth-child(3){animation-delay:.14s,1.04s}
.pre-mark .fk-mark polygon:nth-child(1){animation-delay:.28s,1.18s}
@keyframes fkDraw{to{stroke-dashoffset:0}}
@keyframes fkFill{to{fill:currentColor;stroke-width:0}}
.pre-count{font-family:'Space Mono',monospace;font-size:14px;color:var(--g-60);display:flex;gap:2px}
.pre-bar{width:min(240px,60vw);height:1px;background:var(--g-25);overflow:hidden}
.pre-bar span{display:block;height:100%;width:0;background:var(--white)}

/* ---------- nav ---------- */
.nav{
  position:fixed;top:0;left:0;width:100%;z-index:1000;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px var(--pad);mix-blend-mode:difference;
}
.brand{display:flex;align-items:center;gap:12px;font-weight:800}
.brand-mark{height:19px;width:auto;color:var(--white);display:block;flex:none;transition:transform .4s var(--ease)}
.brand:hover .brand-mark{transform:translateY(-2px)}
.brand-name{font-family:'Space Mono',monospace;font-size:12px;letter-spacing:.04em;color:var(--white)}
.nav-links{display:flex;gap:30px}
.nav-link{position:relative;font-family:'Space Mono',monospace;font-size:13px;display:inline-block;padding-bottom:4px}
.nav-link span{display:inline-block;transition:transform .45s var(--ease)}
.nav-link:hover span{transform:translateY(-3px)}
.nav-link::before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--white);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.nav-link:hover::before{transform:scaleX(1);transform-origin:left}
.foot-bottom a{transition:color .3s var(--ease)}
.foot-bottom a:hover{color:var(--white)}

/* ---------- scroll spy · rail vertical (mesma ideia do "ROLE" do hero) ---------- */
.spy{position:fixed;right:clamp(14px,2.6vw,34px);top:50%;transform:translateY(-50%);z-index:90;display:flex;flex-direction:column;gap:16px;align-items:flex-end;opacity:0;visibility:hidden;transition:opacity .6s var(--ease),visibility .6s;mix-blend-mode:difference}
.spy.show{opacity:1;visibility:visible}
.spy-item{display:flex;align-items:center;gap:11px;text-decoration:none}
.spy-label{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--white);opacity:0;transform:translateX(8px);transition:opacity .4s var(--ease),transform .4s var(--ease)}
.spy-tick{width:16px;height:1.5px;background:var(--g-40);transition:width .4s var(--ease),background .4s var(--ease)}
.spy-item:hover .spy-label,.spy-item.active .spy-label{opacity:1;transform:none}
.spy-item:hover .spy-tick{width:26px;background:var(--white)}
.spy-item.active .spy-tick{width:38px;background:var(--white)}
@media(max-width:760px){.spy{display:none}}
.nav-cta{border:1px solid var(--white);border-radius:999px;padding:11px 22px;font-family:'Space Mono',monospace;font-size:13px;position:relative;overflow:hidden}
.nav-cta span{position:relative;z-index:1;transition:color .45s var(--ease)}
.nav-cta::before{content:"";position:absolute;inset:0;background:var(--white);transform:translateY(101%);transition:transform .45s var(--ease)}
.nav-cta:hover::before{transform:translateY(0)}
.nav-cta:hover span{color:var(--black)}

/* ---------- HERO ---------- */
.hero{min-height:100svh;position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--pad) clamp(28px,4vw,56px)}
.hero-watermark{position:absolute;top:48%;left:50%;transform:translate(-50%,-50%);font-family:'Sora';font-weight:800;font-size:min(46vw,640px);letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1px rgba(244,244,242,.06);z-index:0;pointer-events:none;user-select:none}
.hero-grid{position:relative;z-index:2;width:100%}
.hero-eyebrow{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--g-60);margin-bottom:clamp(20px,4vw,40px)}
.dotline{width:48px;height:1px;background:var(--g-40);display:inline-block}
.hero-title{font-size:clamp(2.7rem,13vw,12rem);text-transform:uppercase;line-height:1.05}
.hero-title .line{display:block;overflow:hidden}
.hero-title .outline{color:transparent;-webkit-text-stroke:1.4px var(--white)}
.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-top:clamp(26px,4vw,48px);flex-wrap:wrap}
.hero-sub{max-width:42ch;font-size:clamp(1rem,1.5vw,1.2rem);color:var(--g-90)}
.hero-meta{display:flex;flex-direction:column;gap:4px;text-align:right;font-size:12px;color:var(--g-60)}
.scroll-cue{position:absolute;right:var(--pad);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;z-index:2}
.scroll-cue .mono{font-size:10px;color:var(--g-60);writing-mode:vertical-rl}
.scroll-track{width:1px;height:70px;background:var(--g-25);position:relative;overflow:hidden}
.scroll-thumb{position:absolute;top:0;left:0;width:100%;height:30%;background:var(--white);animation:scrollMove 2.2s var(--ease) infinite}
@keyframes scrollMove{0%{transform:translateY(-100%)}100%{transform:translateY(330%)}}
/* hero no mobile: sobe o conteúdo (sem o vão entre header e hero) e dispensa o full-height */
@media(max-width:640px){
  .hero{min-height:auto;justify-content:flex-start;padding-top:clamp(96px,14vh,130px);padding-bottom:clamp(48px,9vh,72px)}
  .scroll-cue{display:none}
}

/* ---------- MANIFESTO ---------- */
.manifesto{padding:clamp(110px,18vw,240px) var(--pad)}
.statement{font-family:'Sora';font-weight:700;font-size:clamp(1.6rem,4.4vw,4rem);line-height:1.08;letter-spacing:-.02em;max-width:20ch}
.statement .dim{color:var(--g-40)}
.statement span{display:inline}

/* ---------- SOBRE / EXPERIÊNCIA ---------- */
.about{padding:clamp(60px,9vw,120px) 0}
.about-body{padding:0 var(--pad);display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,5vw,72px);align-items:start}
.about-lead{font-family:'Sora',sans-serif;font-weight:700;font-size:clamp(1.4rem,2.5vw,2.25rem);line-height:1.16;letter-spacing:-.02em}
.about-lead .dim{display:block;margin-top:20px;color:var(--g-40);font-size:.62em;font-weight:600;line-height:1.45}
.sectors-wrap .mono{display:block;font-size:12px;color:var(--g-60);margin-bottom:20px}
.sectors{list-style:none;display:flex;flex-wrap:wrap;gap:10px}
.sectors li{border:1px solid var(--line);border-radius:999px;padding:11px 20px;font-family:'Space Mono',monospace;font-size:13px;color:var(--g-90);transition:background .4s var(--ease),color .4s var(--ease),border-color .4s var(--ease)}
.sectors li:hover{background:var(--white);color:var(--black);border-color:var(--white)}
@media(max-width:760px){.about-body{grid-template-columns:1fr;gap:34px}}

/* ---------- section head ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;padding:0 var(--pad);margin-bottom:clamp(30px,5vw,70px);border-bottom:1px solid var(--line);padding-bottom:24px;flex-wrap:wrap;gap:16px}
.sec-head .mono{font-size:12px;color:var(--g-60)}
.sec-title{font-size:clamp(2.2rem,7vw,6rem);text-transform:uppercase}

/* ---------- SERVIÇOS ---------- */
.services{padding:clamp(60px,9vw,120px) 0}
.svc-list{list-style:none}
.svc{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(16px,4vw,60px);padding:clamp(26px,3.4vw,46px) var(--pad);border-bottom:1px solid var(--line);cursor:pointer;overflow:hidden}
.svc::before{content:"";position:absolute;inset:0;background:var(--white);transform:translateY(101%);transition:transform .55s var(--ease);z-index:0}
.svc>*{position:relative;z-index:1;transition:color .5s var(--ease)}
.svc-n{font-size:13px;color:var(--g-40);align-self:start;padding-top:8px}
.svc-t{font-size:clamp(1.7rem,4.6vw,3.4rem);font-weight:700;text-transform:uppercase;letter-spacing:-.02em}
.svc-d{max-width:42ch;color:var(--g-60);font-size:clamp(.92rem,1.3vw,1.05rem);margin-top:14px;overflow:hidden;transition:max-height .55s var(--ease),opacity .4s var(--ease),margin .55s var(--ease)}
.svc-plus{font-family:'Sora';font-weight:400;font-size:clamp(1.6rem,4vw,2.6rem);transition:transform .55s var(--ease)}
/* Efeitos de hover SÓ em dispositivos com mouse. No touch a descrição fica sempre
   visível e o texto NÃO escurece ao tocar (evita texto preto sobre fundo escuro). */
@media (hover:hover) and (pointer:fine){
  .svc-d{max-height:0;opacity:0;margin-top:0}
  .svc:hover .svc-d{max-height:120px;opacity:1;margin-top:14px}
  .svc:hover::before{transform:translateY(0)}
  .svc:hover *{color:var(--black)}
  .svc:hover .svc-plus{transform:rotate(135deg)}
}
@media(max-width:680px){
  .svc{grid-template-columns:auto 1fr;gap:10px 18px}
  .svc-plus{grid-row:1;grid-column:2;justify-self:end}
  .svc-d{grid-column:1/-1;max-height:none;opacity:1;margin-top:6px}
}

/* ---------- navegação mobile ---------- */
@media(max-width:760px){
  .nav{padding:18px var(--pad)}
  .nav-links,.brand-name{display:none}
  .nav-cta{padding:9px 18px;font-size:12px}
}

/* ---------- PROCESSO ---------- */
.process{padding:clamp(60px,9vw,120px) 0}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.step{background:var(--bg);padding:clamp(28px,3vw,48px) clamp(20px,2.4vw,36px);min-height:clamp(220px,26vw,340px);display:flex;flex-direction:column;transition:background .5s var(--ease)}
.step:hover{background:#0d0d0c}
.step-n{font-size:13px;color:var(--g-40);margin-bottom:auto}
.step h3{font-size:clamp(1.3rem,2.2vw,1.9rem);font-weight:700;margin-bottom:10px}
.step p{color:var(--g-60);font-size:.95rem}
@media(max-width:820px){.steps{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.steps{grid-template-columns:1fr}}

/* ---------- STATS ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}
.stat{background:var(--bg);padding:clamp(46px,7vw,96px) var(--pad);display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.stat-v{font-family:'Sora';font-weight:800;font-size:clamp(3.4rem,9vw,8rem);line-height:.9;letter-spacing:-.04em}
.stat-v i{font-style:normal;color:var(--g-40)}
.stat-l{font-size:11px;color:var(--g-60)}
@media(max-width:740px){.stats{grid-template-columns:1fr}}

/* ---------- MARQUEE ---------- */
.marquee{padding:clamp(40px,6vw,80px) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;white-space:nowrap}
.marquee-track{display:inline-flex;will-change:transform}
.marquee-track span{font-family:'Sora';font-weight:800;font-size:clamp(2.4rem,7vw,6rem);text-transform:uppercase;letter-spacing:-.02em;color:transparent;-webkit-text-stroke:1px var(--white);padding-right:.3em}

/* ---------- MARCAS ATENDIDAS (marquee de logos) ---------- */
.brands{padding:clamp(50px,7vw,90px) 0;border-top:1px solid var(--line)}
.brands-head{padding:0 var(--pad);margin-bottom:clamp(26px,4vw,46px)}
.brands-head .mono{font-size:12px;color:var(--g-60)}
.brands-title{font-family:'Sora';font-weight:800;font-size:clamp(1.6rem,3.4vw,2.6rem);letter-spacing:-.02em;margin-top:10px}
.brands-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.brands-track{display:flex;align-items:center;gap:clamp(40px,6vw,88px);width:max-content;animation:brandScroll 34s linear infinite}
.brands-marquee:hover .brands-track{animation-play-state:paused}
@keyframes brandScroll{to{transform:translateX(-50%)}}
.brand-item{display:inline-flex;align-items:center;gap:14px;flex:none;opacity:.55;transition:opacity .4s var(--ease)}
.brand-item:hover{opacity:1}
.brand-mk{height:30px;width:auto;filter:brightness(0) invert(1)}
.brand-nm{font-family:'Space Mono',monospace;font-weight:700;font-size:clamp(15px,1.6vw,18px);color:var(--white);white-space:nowrap;letter-spacing:.01em}

/* ---------- FAQ ---------- */
.faq{padding:clamp(60px,9vw,120px) 0}
.faq-list{padding:0 var(--pad);border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:clamp(20px,2.6vw,30px) 0}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:focus-visible{outline:1px solid var(--g-40);outline-offset:6px}
.faq-q{font-family:'Sora',sans-serif;font-weight:700;font-size:clamp(1.05rem,2.1vw,1.55rem);letter-spacing:-.02em;color:var(--white);transition:color .3s var(--ease)}
.faq-item:hover .faq-q{color:var(--g-90)}
.faq-ic{position:relative;width:17px;height:17px;flex:none}
.faq-ic::before,.faq-ic::after{content:"";position:absolute;background:var(--white);transition:transform .4s var(--ease)}
.faq-ic::before{top:50%;left:0;width:100%;height:1.5px;transform:translateY(-50%)}
.faq-ic::after{left:50%;top:0;width:1.5px;height:100%;transform:translateX(-50%)}
.faq-item[open] .faq-ic::after{transform:translateX(-50%) scaleY(0)}
.faq-a{color:var(--g-60);font-size:clamp(.95rem,1.4vw,1.08rem);line-height:1.6;max-width:72ch;margin:0;padding:0 0 clamp(22px,2.6vw,30px)}

/* ---------- CONTATO ---------- */
.contact{min-height:96svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:clamp(80px,12vw,160px) var(--pad);gap:clamp(20px,3vw,38px)}
.contact .mono{font-size:12px;color:var(--g-60)}
.contact-title{font-size:clamp(3.2rem,14vw,13rem);text-transform:uppercase;line-height:.86}
.contact-title .line{display:block;overflow:hidden}
.contact-title .outline{color:transparent;-webkit-text-stroke:1.4px var(--white)}
.contact-btn{margin-top:10px;width:clamp(150px,22vw,220px);height:clamp(150px,22vw,220px);border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;position:relative;overflow:hidden}
.contact-btn::before{content:"";position:absolute;inset:0;background:var(--white);transform:scale(0);border-radius:50%;transition:transform .55s var(--ease)}
.contact-btn:hover::before{transform:scale(1)}
.contact-btn-in{position:relative;z-index:1;font-family:'Space Mono',monospace;font-size:clamp(13px,1.4vw,15px);max-width:60%;line-height:1.4;transition:color .5s var(--ease)}
.contact-btn-in i{font-style:normal}
.contact-btn:hover .contact-btn-in{color:var(--black)}
.contact-links{display:flex;gap:30px;flex-wrap:wrap;justify-content:center;margin-top:8px}

/* ---------- FOOTER ---------- */
.footer{padding:clamp(40px,6vw,70px) var(--pad);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:clamp(40px,8vw,90px)}
.foot-top{display:flex;align-items:center;gap:24px}
.brand-mark.big{height:clamp(38px,5vw,56px)}
.foot-mark{display:inline-flex;cursor:pointer;position:relative;transition:transform .4s var(--ease)}
.foot-mark:hover{transform:translateY(-5px)}
.foot-mark .fk-mark{position:relative;z-index:1}
.foot-glow{position:absolute;left:50%;top:50%;width:190%;height:280%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(244,244,242,.22),rgba(244,244,242,.05) 45%,transparent 68%);opacity:0;transition:opacity .5s var(--ease);pointer-events:none;z-index:0}
.foot-mark:hover .foot-glow{opacity:1}
.foot-mark.to-draw .fk-mark polygon{fill:transparent;stroke:currentColor;stroke-width:9;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}
.foot-mark.drawing .fk-mark polygon{animation:fkDraw 1s cubic-bezier(.6,0,.25,1) forwards,fkFill .5s ease forwards}
.foot-mark.drawing .fk-mark polygon:nth-child(2){animation-delay:0s,.72s}
.foot-mark.drawing .fk-mark polygon:nth-child(3){animation-delay:.12s,.84s}
.foot-mark.drawing .fk-mark polygon:nth-child(1){animation-delay:.24s,.96s}
.foot-name{display:flex;flex-direction:column;gap:4px}
.foot-name strong{font-family:'Space Mono',monospace;font-weight:700;font-size:14px;letter-spacing:.02em;color:var(--white)}
.foot-name .mono{font-size:12px;color:var(--g-60)}
.foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:11px;color:var(--g-40)}

/* ---------- estados de animação ---------- */
.word-mask{display:inline-block;overflow:hidden;vertical-align:top}
.word{display:inline-block;will-change:transform}
.reveal-up{opacity:0;transform:translateY(28px)}
body.loading .hero *{pointer-events:none}

@media (prefers-reduced-motion:reduce){
  .grain,.scroll-thumb,.pre-glow,.brands-track{animation:none}
  .reveal-up{opacity:1;transform:none}
  .pre-mark .fk-mark polygon{fill:currentColor;stroke-width:0;animation:none}
}
