/* Geekonverse · canal de um desenvolvedor de jogos. Uma só página. */
@font-face{font-family:"Bricolage Grotesque";src:url("../fonts/bricolage-grotesque-latin-wght-normal.woff2") format("woff2");font-weight:200 800;font-display:swap}
@font-face{font-family:"Public Sans";src:url("../fonts/public-sans-latin-wght-normal.woff2") format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Silkscreen";src:url("../fonts/silkscreen-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap}

:root{
  --breu:#0e0a1c; --uva:#4a1fb8; --uva-esc:#33138a; --rosa:#ff4fa3; --menta:#36e2b4;
  --papel:#f4eef8; --branco:#fff; --suave:#5d5470;
  --max:1200px; --ease:cubic-bezier(.7,0,.2,1);
  --display:"Bricolage Grotesque",system-ui,sans-serif; --pixel:"Silkscreen",ui-monospace,monospace;
}
*{box-sizing:border-box;margin:0}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{background:var(--breu);color:var(--branco);font:400 1.0625rem/1.65 "Public Sans",system-ui,sans-serif;overflow-x:hidden}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img{max-width:100%}
:focus-visible{outline:3px solid var(--rosa);outline-offset:3px}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2.5rem);position:relative}
.pular{position:absolute;left:-999px;z-index:99}
.pular:focus{left:1rem;top:1rem;background:#fff;color:var(--breu);padding:.5rem 1rem}
.escondido{display:none}
.hud{display:inline-flex;align-items:center;gap:.6rem;font:400 .82rem/1 var(--pixel);letter-spacing:.02em}
.ponto{width:9px;height:9px;background:var(--menta);box-shadow:0 0 10px var(--menta);animation:pisca 1.6s steps(2) infinite}
@keyframes pisca{50%{opacity:.25}}

/* ---------- arranque (só com JS) ---------- */
.arranque{position:fixed;inset:0;z-index:100;display:grid;pointer-events:none}
.arranque i{background:var(--breu);outline:1px solid rgba(255,255,255,.04)}
.arranque__texto{position:fixed;inset:0;display:grid;place-content:center;justify-items:center;gap:1.2rem;z-index:101;font:400 clamp(1rem,2.4vw,1.4rem)/1 var(--pixel);color:var(--branco)}
.arranque__barra{width:min(320px,70vw);height:14px;border:2px solid var(--branco);padding:2px}
.arranque__barra b{display:block;height:100%;width:100%;background:var(--rosa);transform-origin:left;transform:scaleX(0)}

/* ---------- mira (cursor) ---------- */
.mira{position:fixed;left:0;top:0;width:22px;height:22px;margin:-11px 0 0 -11px;pointer-events:none;z-index:90;display:grid;place-items:center;font:400 .72rem/1 var(--pixel);color:var(--breu);transition:width .35s var(--ease),height .35s var(--ease),margin .35s var(--ease),background-color .35s}
.mira::before,.mira::after{content:"";position:absolute;background:var(--rosa);transition:opacity .2s}
.mira::before{width:2px;height:100%;left:50%;margin-left:-1px}
.mira::after{height:2px;width:100%;top:50%;margin-top:-1px}
.mira b{opacity:0;font-weight:400;transition:opacity .2s}
.mira.grande{width:96px;height:96px;margin:-48px 0 0 -48px;background:var(--rosa)}
.mira.grande::before,.mira.grande::after{opacity:0}
.mira.grande b{opacity:1}
@media (pointer:coarse){.mira{display:none}}

/* ---------- capa ---------- */
.capa{background:var(--uva);position:relative;isolation:isolate;overflow:hidden;min-height:100svh;display:flex;flex-direction:column}
.capa canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1}
.topo .wrap{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-block:1.2rem}
.marca{display:flex;align-items:center;gap:.6rem;font:800 1.2rem/1 var(--display);text-decoration:none}
.marca img{width:40px;height:40px;object-fit:contain}
.topo nav{display:flex;gap:1.7rem}
.topo nav a{text-decoration:none;font-weight:600;position:relative}
.topo nav a::after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:3px;background:var(--rosa);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease)}
.topo nav a:hover::after{transform:none;transform-origin:left}
.hero{flex:1;display:flex;flex-direction:column;justify-content:center;padding-block:2rem 5rem}
.hero .hud{color:#e6dcff;margin-bottom:1.6rem}
.hero h1{font:800 clamp(3.2rem,10vw,8.4rem)/.94 var(--display);letter-spacing:-.035em;max-width:11ch}
.hero__texto{max-width:34rem;margin-top:1.8rem;font-size:1.2rem;color:#e6dcff}
.acoes{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.2rem}
.btn{display:inline-block;padding:1rem 1.6rem;font-weight:700;text-decoration:none;border-radius:999px;border:2px solid transparent;position:relative;overflow:hidden;isolation:isolate;will-change:transform;cursor:pointer}
.btn::before{content:"";position:absolute;inset:0;border-radius:inherit;transform:translateY(101%);transition:transform .45s var(--ease);z-index:-1}
.btn:hover::before{transform:none}
.btn--cheio{background:var(--rosa);color:var(--breu)}
.btn--cheio::before{background:var(--branco)}
.btn--vazio{border-color:rgba(255,255,255,.75);color:var(--branco)}
.btn--vazio::before{background:var(--branco)}
.btn--vazio:hover{color:var(--uva)}
.btn--escuro{background:var(--breu);color:var(--branco)}
.btn--escuro::before{background:var(--uva)}
.rolar{position:absolute;left:50%;bottom:1.4rem;width:26px;height:42px;border:2px solid rgba(255,255,255,.7);border-radius:6px;transform:translateX(-50%)}
.rolar::after{content:"";position:absolute;left:50%;top:8px;width:6px;height:6px;margin-left:-3px;background:#fff;animation:rolar 1.8s steps(6) infinite}
@keyframes rolar{0%{opacity:0;transform:translateY(-4px)}40%{opacity:1}100%{opacity:0;transform:translateY(16px)}}

/* ---------- projetos: galeria horizontal ---------- */
.galeria{position:relative;overflow:hidden}
.pista{display:flex;flex-direction:column}
.painel{position:relative;padding-block:clamp(4rem,9vw,6rem)}
.painel .wrap{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
.painel--intro{background:var(--papel);color:var(--breu)}
.painel--intro .wrap{display:block}
.painel--intro h2{font:800 clamp(3.4rem,11vw,9.5rem)/.9 var(--display);letter-spacing:-.04em}
.painel--intro p{max-width:30rem;margin-top:1.5rem;font-size:1.15rem;color:var(--suave)}
.dica{display:none;margin-top:2.5rem;font-weight:700;align-items:center;gap:.8rem}
.dica svg{width:46px;animation:seta 1.6s var(--ease) infinite}
@keyframes seta{50%{transform:translateX(10px)}}
.painel--ilha{background:#0f2f3a}
.painel--grafite{background:#1a0b2b;isolation:isolate}
.painel--grafite::before{content:"";position:absolute;inset:0;z-index:-1;background:url("../img/grafite-city.webp") center/cover;opacity:.16}
.vista--video{background:#101114}
.vista--video video{display:block;width:100%;height:100%;object-fit:cover}
.painel--grafite .ver{color:#3df0ff}
.painel--assistente{background:#171c3a}
.painel--sites{background:#1f3fbf}

.janela{display:block;width:100%;padding:0;text-align:left;border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 30px 60px -30px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.08);text-decoration:none;transform-style:preserve-3d;will-change:transform;cursor:pointer}
.janela--obra,.janela--chat{cursor:default}
.barra{height:30px;background:#e8e3ee;display:flex;align-items:center;gap:7px;padding-inline:14px;color:#6b6478;font:400 .7rem/1 var(--pixel)}
.barra i{width:10px;height:10px;background:#c9c2d3}
.barra i:first-child{background:var(--rosa)}.barra i:nth-child(2){background:#f2c14e}.barra i:nth-child(3){background:var(--menta)}
.barra span{margin-left:.8rem}
.vista{display:block;aspect-ratio:16/10;overflow:hidden;position:relative;background:#111}
.vista img{display:block;width:100%;height:auto}
.vista--fixa img{height:100%;object-fit:cover;transform:scale(1.08);image-rendering:pixelated}

/* esboço do jogo novo */
.obra{background:#4a0c22}
.obra canvas{position:absolute;inset:0;width:100%;height:100%}
.obra__texto{position:absolute;left:8%;bottom:12%;font:400 clamp(1rem,2.2vw,1.5rem)/1.35 var(--pixel);color:#ffd5e6}
.obra__barra{display:block;width:12em;height:.8em;border:2px solid currentColor;padding:2px;margin-top:.6em}
.obra__barra i{display:block;height:100%;width:38%;background:var(--rosa);animation:carrega 3.2s steps(8) infinite}
@keyframes carrega{0%{width:8%}100%{width:96%}}

/* maquete do assistente */
.chat{display:flex;flex-direction:column;justify-content:flex-end;gap:.7rem;padding:7% 8%;background:#0f1330}
.msg{max-width:78%;padding:.75rem 1rem;border-radius:16px;font-size:clamp(.85rem,1.4vw,1rem);line-height:1.4}
.msg--eu{align-self:flex-end;background:var(--rosa);color:var(--breu);border-bottom-right-radius:4px}
.msg--bot{align-self:flex-start;background:#262c5c;color:#e7e9ff;border-bottom-left-radius:4px}
.msg--escreve{display:flex;gap:5px}
.msg--escreve i{width:7px;height:7px;background:#aab0ff;animation:salta 1.2s infinite}
.msg--escreve i:nth-child(2){animation-delay:.15s}.msg--escreve i:nth-child(3){animation-delay:.3s}
@keyframes salta{30%{transform:translateY(-5px)}60%{transform:none}}

.info .tipo{display:inline-block;font:400 .78rem/1 var(--pixel);padding:.45rem .8rem;border:2px solid currentColor;margin-bottom:1.2rem}
.info h3{font:800 clamp(2.2rem,4.4vw,3.6rem)/1 var(--display);letter-spacing:-.03em;margin-bottom:1rem}
.info p{max-width:28rem;opacity:.86}
.info dl{margin-top:1.3rem;display:grid;grid-template-columns:auto 1fr;gap:.3rem 1.2rem;font-size:.97rem}
.info dt{font-weight:700}
.info dd{opacity:.72;margin:0}
.ligacoes{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:1.6rem}
.ver{display:inline-flex;font-weight:700;text-decoration:none;border-bottom:2px solid currentColor;padding:0 0 2px;cursor:pointer;color:var(--rosa)}
.ver--leve{color:inherit;opacity:.8}
.painel--sites .ver{color:#f2c14e}
.progresso{position:absolute;left:0;bottom:0;height:6px;width:100%;background:var(--rosa);transform:scaleX(0);transform-origin:left;z-index:2;display:none}
@media (min-width:900px){
  .js-horizontal .pista{flex-direction:row;width:max-content;height:100vh}
  .js-horizontal .painel{width:100vw;height:100vh;display:flex;align-items:center;padding-block:0}
  .js-horizontal .painel--intro{width:80vw}
  .js-horizontal .dica{display:inline-flex}
  .js-horizontal .progresso{display:block}
}

/* ---------- devlog ---------- */
h2.titulo{font:800 clamp(2.6rem,7vw,5rem)/1 var(--display);letter-spacing:-.035em}
.devlog{background:var(--papel);color:var(--breu);padding-block:clamp(4.5rem,10vw,8rem)}
.devlog__cabeca{display:grid;grid-template-columns:1fr 1fr;gap:1rem 3rem;align-items:end;margin-bottom:2.4rem}
.devlog__cabeca p{color:var(--suave);max-width:28rem}
.filtros{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.6rem;border:0;padding:0}
.filtros legend{float:left;width:100%;margin-bottom:.6rem;font:400 .78rem/1 var(--pixel);color:var(--suave)}
.filtros button{font-weight:700;font-size:.95rem;padding:.5rem 1rem;border-radius:999px;border:2px solid var(--breu)}
.filtros button[aria-pressed="true"]{background:var(--breu);color:var(--papel)}
.registo{list-style:none;padding:0;border-top:2px solid var(--breu)}
.registo>li{border-bottom:2px solid var(--breu)}
.registo>li[hidden]{display:none}
.entrada summary{list-style:none;display:grid;grid-template-columns:9.5rem 1fr auto;gap:.4rem 1.6rem;align-items:baseline;padding:1.4rem .4rem;cursor:pointer;position:relative;isolation:isolate}
.entrada summary::-webkit-details-marker{display:none}
.entrada summary::before{content:"";position:absolute;inset:0;background:var(--uva);transform:scaleY(0);transform-origin:bottom;transition:transform .45s var(--ease);z-index:-1}
.entrada summary:hover::before,.entrada[open] summary::before{transform:none}
.entrada summary:hover,.entrada[open] summary{color:var(--branco)}
.entrada time{font:400 .8rem/1.4 var(--pixel)}
.entrada h3{font:700 clamp(1.4rem,2.6vw,2rem)/1.15 var(--display);letter-spacing:-.02em}
.entrada .etiqueta{grid-column:2;justify-self:start;font-size:.85rem;font-weight:700;opacity:.8}
.entrada .mais{grid-row:1;grid-column:3;font:400 1.4rem/1 var(--pixel);transition:transform .3s var(--ease)}
.entrada[open] .mais{transform:rotate(45deg)}
.entrada__corpo{display:grid;grid-template-columns:9.5rem 1fr;gap:1.6rem;padding:0 .4rem 2.2rem}
.texto{grid-column:2;max-width:42rem;font-size:1.05rem}
.texto>*+*{margin-top:1em}
.texto .resumo{font-size:1.2rem;font-weight:600}
.texto h2{font:700 1.6rem/1.2 var(--display);margin-top:1.6em}
.texto h3{font:700 1.3rem/1.2 var(--display);margin-top:1.4em}
.texto ul,.texto ol{padding-left:1.3em}
.texto li+li{margin-top:.35em}
.texto img{border-radius:8px;border:2px solid var(--breu)}
.texto a{color:var(--uva);font-weight:700}
.texto code{font-size:.92em;background:rgba(14,10,28,.08);padding:1px 6px;border-radius:4px}
.texto pre{overflow-x:auto;padding:1rem;border-radius:8px;background:var(--breu);color:var(--papel)}
.texto pre code{background:none;padding:0}
.texto blockquote{padding-left:1rem;border-left:4px solid var(--rosa);color:var(--suave)}
.vazio{padding:2rem .4rem;color:var(--suave)}

/* ---------- canais ---------- */
.canais{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(4.5rem,10vw,8rem);background:var(--breu)}
.canais__fundo{position:absolute;inset:-10% 0;z-index:-1}
.canais__fundo img{width:100%;height:100%;object-fit:cover;opacity:.3;filter:saturate(1.2)}
.canais__fundo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--breu) 25%,rgba(14,10,28,.4))}
.canais__intro{max-width:32rem;margin-top:1rem;color:#d9d2ea;font-size:1.15rem}
.redes{list-style:none;padding:0;margin-top:3rem;border-top:2px solid rgba(255,255,255,.25)}
.redes li{border-bottom:2px solid rgba(255,255,255,.25)}
.redes a{display:grid;grid-template-columns:1fr auto 46px;align-items:center;gap:1.5rem;padding:1.2rem .4rem;text-decoration:none;position:relative;isolation:isolate;overflow:hidden}
.redes a::before{content:"";position:absolute;inset:0;background:var(--rosa);transform:translateX(-101%);transition:transform .5s var(--ease);z-index:-1}
.redes a:hover::before,.redes a:focus-visible::before{transform:none}
.redes a:hover{color:var(--breu)}
.redes__nome{font:800 clamp(2.2rem,6vw,4.4rem)/1 var(--display);letter-spacing:-.03em}
.redes__nota{font:400 .8rem/1 var(--pixel)}
.redes svg{width:46px;transition:transform .4s var(--ease)}
.redes a:hover svg{transform:translateX(8px)}
.live{margin-top:2.4rem}
.live iframe{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:10px;background:#000}

/* ---------- contacto ---------- */
.contacto{background:var(--rosa);color:var(--breu);overflow:hidden;padding-block:clamp(4rem,9vw,7rem)}
.letreiro{overflow:hidden;white-space:nowrap;margin-bottom:3rem}
.letreiro div{display:inline-flex;font:800 clamp(4rem,13vw,11rem)/1 var(--display);letter-spacing:-.04em;will-change:transform}
.letreiro span{padding-right:.35em}
.letreiro svg{width:.55em;height:.55em;margin-right:.35em;align-self:center;color:var(--uva)}
.contacto__grelha{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
.contacto__grelha p{max-width:28rem;margin-top:1rem;font-size:1.15rem}
.formulario{display:grid;gap:1rem}
.formulario label{display:grid;gap:.35rem;font-weight:700}
.formulario input,.formulario textarea{font:inherit;color:var(--breu);background:rgba(255,255,255,.55);border:2px solid var(--breu);border-radius:8px;padding:.8rem 1rem}
.formulario textarea{resize:vertical}
.formulario button{justify-self:start}
.formulario__estado{font-weight:700;min-height:1.6em}

.rodape{background:var(--breu);color:#b9b0cc;font-size:.92rem;padding-block:1.6rem}
.rodape .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.6rem 1.6rem}
.rodape nav{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem}

@media (max-width:899px){
  .topo nav{gap:1rem;font-size:.95rem}
  .painel .wrap{grid-template-columns:1fr}
  .devlog__cabeca,.contacto__grelha{grid-template-columns:1fr}
  .entrada summary{grid-template-columns:1fr auto}
  .entrada time{grid-column:1}
  .entrada h3,.entrada .etiqueta{grid-column:1}
  .entrada .mais{grid-column:2;grid-row:1/span 3;align-self:center}
  .entrada__corpo{grid-template-columns:1fr}
  .texto{grid-column:1}
  .redes a{grid-template-columns:1fr 34px}
  .redes__nota{display:none}
  .redes svg{width:34px}
}
@media (max-width:560px){
  .topo .wrap{flex-direction:column;align-items:flex-start;gap:.8rem}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
