/* ============ TOKENS ============ */
:root{
  --bg:#f3f5f8;
  --tile:#ffffff;
  --line:#e3e7ee;
  --ink:#0f1a2b;
  --ink-2:#46546b;
  --ink-3:#7a869a;

  /* Azul da logo GBE, só como acento */
  --brand:#1361c7;
  --brand-deep:#0b3f9e;
  --brand-soft:#e8f0fc;

  --font:"DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:"IBM Plex Mono", ui-monospace, Consolas, monospace;

  --r-tile:22px;
  --ease:cubic-bezier(.22,.8,.3,1);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top:80px; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
}

body{
  margin:0; background:var(--bg); color:var(--ink-2);
  font-family:var(--font); font-size:1rem; line-height:1.6;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; }
:focus-visible{ outline:2px solid var(--brand); outline-offset:3px; border-radius:8px; }

.wrap{ width:min(1180px, 92vw); margin-inline:auto; }

h1,h2,h3{ color:var(--ink); margin:0 0 .6rem; letter-spacing:-.025em; text-wrap:balance; }
h1{ font-size:clamp(2.4rem, 5.2vw, 4rem); line-height:1.04; font-weight:700; letter-spacing:-.04em; }
h2{ font-size:clamp(1.8rem, 3.4vw, 2.6rem); line-height:1.1; font-weight:700; letter-spacing:-.035em; }
h3{ font-size:1.05rem; line-height:1.3; font-weight:700; letter-spacing:-.015em; }
p{ margin:0; }

.eyebrow{
  display:inline-block; font:600 .74rem/1 var(--font);
  letter-spacing:.14em; text-transform:uppercase; color:var(--brand);
  margin-bottom:1rem;
}
.lede{ font-size:1.06rem; color:var(--ink-2); max-width:56ch; }

.skip-link{ position:absolute; left:-999px; top:0; z-index:200; background:var(--brand); color:#fff; padding:.75rem 1.25rem; border-radius:0 0 8px 0; }
.skip-link:focus{ left:0; }

/* ============ BOTÕES ============ */
.btn{
  display:inline-flex; align-items:center; gap:.5rem;
  font:600 .9rem/1 var(--font); padding:.9rem 1.3rem; border-radius:999px;
  text-decoration:none; border:1px solid transparent; cursor:pointer;
  transition:background .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.btn-primary{ background:var(--brand); color:#fff; }
.btn-primary:hover{ background:var(--brand-deep); transform:translateY(-1px); }
.btn-ghost{ background:var(--tile); border-color:var(--line); color:var(--ink); }
.btn-ghost:hover{ border-color:var(--ink-3); }

/* ============ HEADER — ilha central ============ */
header.site{
  position:sticky; top:0; z-index:100;
  background:rgba(243,245,248,.92);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.nav-wrap{
  display:flex; align-items:center; justify-content:space-between;
  padding:1.1rem 0;
}

.brand{
  display:flex; align-items:center; gap:.6rem;
  text-decoration:none; flex-shrink:0;
}
.brand img{ height:80px; width:auto; }

/* ilha central */
.nav{
  background:#fff;
  border:1px solid var(--line);
  border-radius:999px;
  padding:8px 10px;
  display:flex; align-items:center;
  box-shadow:0 1px 8px -4px rgba(15,26,43,.18);
  position:relative;
}
.nav-links{
  display:flex; align-items:center; gap:0;
  list-style:none; margin:0; padding:0;
  position:relative;
}
.nav-links .nav-pill{
  position:absolute; top:50%; transform:translateY(-50%);
  height:40px; border-radius:999px;
  background:var(--brand-soft);
  transition:left .22s cubic-bezier(.34,1.3,.64,1), width .22s cubic-bezier(.34,1.3,.64,1), opacity .15s;
  pointer-events:none; opacity:0;
}
.nav-links a{
  position:relative; z-index:1;
  text-decoration:none; color:var(--ink-2);
  font-size:1rem; font-weight:500;
  padding:.65rem 1.3rem; border-radius:999px;
  transition:color .18s; white-space:nowrap;
}
.nav-links a:hover{ color:var(--brand); }

/* placeholder para equilibrar o lado direito */
.nav-cta{ width:80px; }

.menu-toggle{
  display:none; background:#fff; border:1px solid var(--line); border-radius:999px;
  padding:.4rem .85rem; color:var(--ink); cursor:pointer;
  font-size:.85rem; font-weight:500; gap:.4rem; align-items:center;
}

/* ============ HERO ============ */
.hero{ padding-block:clamp(2.5rem, 7vw, 5rem) clamp(1.5rem, 4vw, 2.5rem); }
.hero-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(1.5rem, 4vw, 3rem); align-items:center; }
.hero h1 .accent-text{ color:var(--brand); }
.hero .lede{ margin-top:1.2rem; }
.hero-actions{ display:flex; gap:.7rem; margin-top:2rem; flex-wrap:wrap; }

.logo-tile{
  background:var(--tile); border:1px solid var(--line); border-radius:30px;
  padding:clamp(1.8rem, 5vw, 3rem) clamp(1.5rem, 4vw, 2.6rem);
  display:grid; justify-items:center; gap:1.3rem; text-align:center;
}
.logo-tile img{ width:min(100%, 340px); height:auto; }
.logo-tile span{ font-size:.82rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); font-weight:600; }

/* composição do topo: projetos reais em janela, celular e cartão */
.hero-visual{
  position:relative; aspect-ratio:1/.98; width:100%;
  border-radius:30px; border:1px solid var(--line); overflow:hidden;
  background:
    radial-gradient(70% 60% at 85% 10%, #dbe8fb 0, transparent 70%),
    linear-gradient(160deg, #eef3fb, #ffffff 70%);
}
.hero-visual img{ width:100%; height:auto; display:block; }
.hv-browser, .hv-card, .hv-phone{ position:absolute; background:#fff; box-shadow:0 28px 44px -26px rgba(15,26,43,.45); }
.hv-browser{ left:6%; top:8%; width:80%; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.hv-bar{ display:flex; gap:5px; padding:8px 10px; border-bottom:1px solid var(--line); background:#fafbfd; }
.hv-bar i{ width:7px; height:7px; border-radius:50%; background:#d9dee7; display:block; }
.hv-card{ left:5%; bottom:7%; width:46%; border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.hv-phone{ right:6%; bottom:6%; width:27%; padding:4px; border-radius:20px; background:#0f1a2b; }
.hv-phone img{ border-radius:16px; }

/* ============ SEÇÕES ============ */
section{ padding-block:clamp(2rem, 5vw, 3.5rem); }
.section-head{ max-width:62ch; margin-bottom:clamp(1.6rem, 4vw, 2.4rem); }

.reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.is-visible{ opacity:1; transform:none; }

/* ============ BENTO ============ */
.bento{
  display:grid; grid-template-columns:repeat(4, 1fr); gap:14px;
  grid-auto-rows:minmax(150px, auto);
}
.tile{
  background:var(--tile); border:1px solid var(--line); border-radius:var(--r-tile);
  padding:clamp(1.2rem, 2.4vw, 1.6rem); position:relative; overflow:hidden;
  display:flex; flex-direction:column;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease), transform .25s var(--ease);
}
.tile:hover{ border-color:#cdd6e4; box-shadow:0 14px 34px -22px rgba(15,26,43,.3); transform:translateY(-2px); }
.t-wide{ grid-column:span 2; }
.t-full{ grid-column:span 4; }
.tile p{ font-size:.9rem; color:var(--ink-2); line-height:1.5; }
.tile .ico{
  width:40px; height:40px; border-radius:12px; display:grid; place-items:center;
  background:var(--brand-soft); color:var(--brand); margin-bottom:1rem;
}

/* sobre */
#sobre .t-text{ grid-column:span 2; grid-row:span 2; justify-content:center; padding:clamp(1.6rem, 3.4vw, 2.6rem); }
#sobre .t-text h2{ margin-bottom:1rem; }
.mini{ justify-content:flex-end; }
.mini b{ font-size:clamp(1.8rem, 3vw, 2.2rem); font-weight:700; letter-spacing:-.04em; color:var(--ink); line-height:1.1; display:block; margin-bottom:.4rem; }

/* projetos / clientes */
.proj{ padding:0; }
.proj-body{ padding:clamp(1.2rem, 2.4vw, 1.6rem); display:flex; flex-direction:column; gap:.2rem; }
.proj figure{ margin:0; }
.proj-img{ border-bottom:1px solid var(--line); background:#f6f7f9; overflow:hidden; }
.proj-img img{ width:100%; height:auto; transition:transform .6s cubic-bezier(.22,.8,.3,1); }
.proj:hover .proj-img img{ transform:scale(1.04); }

/* spotlight — facho de luz seguindo o mouse */
.proj{
  --sx: 50%; --sy: 50%;
  background-image: radial-gradient(600px circle at var(--sx) var(--sy),
    rgba(19,97,199,.07) 0%, transparent 65%);
  background-clip: padding-box;
}
.proj::before{
  content:""; position:absolute; inset:-1px; border-radius:inherit; z-index:0;
  background: radial-gradient(400px circle at var(--sx) var(--sy),
    rgba(19,97,199,.35) 0%, transparent 70%);
  opacity:0; transition:opacity .3s ease; pointer-events:none;
}
.proj:hover::before{ opacity:1; }
.proj > *{ position:relative; z-index:1; }
.proj .cap{ font-family:var(--mono); font-size:.68rem; color:var(--ink-3); letter-spacing:.02em; padding:.6rem clamp(1.2rem, 2.4vw, 1.6rem) 0; }
.tag{
  align-self:flex-start; font:600 .7rem/1 var(--font); letter-spacing:.09em; text-transform:uppercase;
  padding:.4rem .7rem; border-radius:999px; background:var(--brand-soft); color:var(--brand); margin-bottom:.8rem;
}
.proj h3{ font-size:1.12rem; margin-bottom:.4rem; }
.feat{ list-style:none; margin:.7rem 0 0; padding:0; display:grid; gap:.35rem; }
.feat li{ font-size:.88rem; color:var(--ink-2); display:flex; gap:.6rem; }
.feat li::before{ content:""; width:12px; height:1px; background:var(--brand); margin-top:.85em; flex:none; }
.stack{ margin-top:.8rem; font-family:var(--mono); font-size:.72rem; color:var(--ink-3); }
.visit{ display:inline-block; margin-top:.7rem; font-size:.88rem; font-weight:600; color:var(--brand); text-decoration:none; }
.visit:hover{ color:var(--brand-deep); text-decoration:underline; }

.phones{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:10px; padding:clamp(1.2rem, 2.4vw, 1.6rem) clamp(1.2rem, 2.4vw, 1.6rem) 0; }
.phones figure{ margin:0; }
.phones img{ width:100%; height:auto; border:1px solid var(--line); border-radius:16px; background:#f6f7f9; }
.phones figcaption{ font-family:var(--mono); font-size:.66rem; color:var(--ink-3); margin-top:.45rem; }

.others{ display:grid; grid-template-columns:repeat(2, 1fr); gap:1.4rem; }
.others h3{ font-size:1rem; margin-bottom:.3rem; }

.note{ margin:1.2rem auto 0; max-width:62ch; text-align:center; font-size:.85rem; color:var(--ink-3); }

/* ============ CONTATO ============ */
.contact{
  background:var(--ink); color:#c4cddc; border-radius:30px;
  padding:clamp(2.2rem, 6vw, 4rem) clamp(1.5rem, 5vw, 3rem); text-align:center;
}
.contact .eyebrow{ color:#8fb8f0; }
.contact h2{ color:#fff; max-width:20ch; margin-inline:auto; }
.contact .lede{ color:#c4cddc; margin:1rem auto 0; }
.contact-channels{ display:flex; justify-content:center; gap:.7rem; margin-top:2rem; flex-wrap:wrap; }
.channel{
  display:flex; align-items:center; gap:.6rem; text-decoration:none; font-size:.92rem; font-weight:500;
  color:#fff; padding:.75rem 1.15rem; border-radius:999px; border:1px solid rgba(255,255,255,.2);
  transition:border-color .2s, background .2s;
}
.channel:hover{ border-color:#fff; background:rgba(255,255,255,.06); }
.channel.main{ background:transparent; border-color:rgba(255,255,255,.2); color:#fff; }
.channel.main:hover{ border-color:#fff; background:rgba(255,255,255,.06); }

/* ============ FOOTER ============ */
footer.site{ padding-block:2rem 2.4rem; }
.footer-grid{ display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; }
.footer-brand{ display:flex; align-items:center; gap:.8rem; }
.footer-brand img{ height:24px; width:auto; }
.footer-text{ color:var(--ink-3); font-size:.85rem; }
.footer-social{ display:flex; gap:.5rem; }
.footer-social a{
  width:38px; height:38px; border-radius:50%; display:grid; place-items:center;
  background:var(--tile); border:1px solid var(--line); color:var(--ink-2); text-decoration:none;
  transition:border-color .2s, color .2s;
}
.footer-social a:hover{ border-color:var(--brand); color:var(--brand); }

.wa-float{
  position:fixed; right:clamp(1rem, 3vw, 1.8rem); bottom:clamp(1rem, 3vw, 1.8rem); z-index:150;
  width:54px; height:54px; border-radius:50%; background:#25D366; color:#fff;
  display:grid; place-items:center; text-decoration:none;
  box-shadow:0 10px 24px -8px rgba(37,211,102,.55);
  transition:background .2s, transform .2s var(--ease);
}
.wa-float:hover{ background:#1ebe5a; transform:translateY(-2px); }

/* ============ RESPONSIVO ============ */
@media (max-width: 960px){
  .nav-cta{ width:auto; }
  .nav{ display:none; }
  .menu-toggle{ display:flex; }
  .hero-grid{ grid-template-columns:1fr; }
  .hero-visual{ order:-1; max-width:460px; margin-inline:auto; }
  .bento{ grid-template-columns:repeat(2, 1fr); }
  .t-wide, .t-full, #sobre .t-text{ grid-column:span 2; grid-row:auto; }
}
@media (max-width: 600px){
  .bento{ grid-template-columns:1fr; }
  .t-wide, .t-full, #sobre .t-text{ grid-column:auto; }
  #sobre .bento{ grid-template-columns:1fr 1fr; }
  #sobre .t-text{ grid-column:span 2; }
  .others{ grid-template-columns:1fr; }
  .footer-grid{ flex-direction:column; text-align:center; }
}

.nav-links[data-open="true"]{
  display:flex; position:fixed; top:80px; left:1rem; right:1rem; margin:0;
  flex-direction:column; align-items:flex-start; background:var(--tile); border:1px solid var(--line);
  border-radius:22px; padding:1.3rem 1.5rem 1.5rem; gap:1rem; z-index:200;
  box-shadow:0 8px 32px -8px rgba(15,26,43,.18);
}
