/* ---------------------------------------------------------------------------
   LUMARIO Blog — folha propria do blog.
   Carrega DEPOIS de /forum/forum.css e reaproveita os tokens, a nav, os botoes,
   o avatar, o rail e o rodape de la. Aqui ficam so os componentes que o forum
   nao tem: capa de post, grade do indice e a tipografia de artigo (.prose).

   Vale pro indice (/blog) E pras paginas de post (/blog/<slug>) — uma folha so,
   pra capa e artigo nunca divergirem de cor, raio ou espacamento.
   --------------------------------------------------------------------------- */

/* --- Layout --------------------------------------------------------------- */
.blog-layout{display:grid;grid-template-columns:1fr 320px;gap:28px;max-width:1200px;margin:0 auto;padding:28px}
.blog-layout .main{min-width:0}

/* Volta pro indice, na nav da pagina de POST. Regra PROPRIA de proposito: se
   ficasse dentro de .nav-search (que o forum esconde abaixo de 860px), o link
   sumiria justo no celular, onde voltar e mais necessario. Abaixo de 860px so
   o rotulo some — a seta continua tocavel. */
.nav-back{display:flex;align-items:center;gap:9px;color:var(--ink-3);font-size:14px;font-weight:600;min-width:0;transition:color .15s}
.nav-back:hover{color:var(--ink)}
.nav-back .material-symbols-rounded{font-size:20px}

/* --- Hero do indice ------------------------------------------------------- */
.blog-hero{padding:40px 32px;background:linear-gradient(135deg,rgba(167,139,250,0.14),rgba(236,72,153,0.09),rgba(249,115,22,0.06));border:1px solid var(--border);border-radius:24px;margin-bottom:24px;overflow:hidden;position:relative}
.blog-hero::after{content:'';position:absolute;right:-60px;top:-60px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(236,72,153,0.18),transparent 70%);pointer-events:none}
.blog-kicker{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;color:var(--purple);background:rgba(167,139,250,0.12);border:1px solid rgba(167,139,250,0.25);padding:5px 12px;border-radius:999px;margin-bottom:16px}
.blog-kicker .material-symbols-rounded{font-size:15px}
.blog-hero h1{font-size:40px;font-weight:900;letter-spacing:-1.8px;line-height:1.02;max-width:560px}
.blog-hero p{font-size:15.5px;color:var(--ink-2);margin-top:12px;max-width:540px;line-height:1.6}

/* --- Filtro de categorias -------------------------------------------------- */
.cat-bar{display:flex;align-items:center;gap:8px;margin-bottom:22px;flex-wrap:wrap}
.cat-pill{padding:8px 16px;border-radius:999px;font-size:13.5px;font-weight:600;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--border);transition:color .15s,border-color .15s,background .15s;white-space:nowrap}
.cat-pill:hover{color:var(--ink);border-color:var(--border-2)}
.cat-pill.active{color:#fff;background:var(--grad-h);border-color:transparent;box-shadow:0 4px 14px rgba(139,92,246,0.35)}
.cat-pill .n{opacity:.7;font-weight:700;margin-left:2px}

/* --- Capa gradiente (arte propria, sem banco de imagem) -------------------- */
.cover{position:relative;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,var(--a),var(--b));display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cover::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 25% 20%,rgba(255,255,255,0.22),transparent 55%),radial-gradient(circle at 80% 90%,rgba(0,0,0,0.25),transparent 50%)}
.cover .glyph{font-size:64px;color:rgba(255,255,255,0.92);position:relative;z-index:1;font-variation-settings:"FILL" 1,"wght" 400}
.cover .cover-cat{position:absolute;top:12px;left:12px;z-index:2;font-size:11px;font-weight:800;letter-spacing:.3px;color:#fff;background:rgba(7,7,10,0.42);backdrop-filter:blur(6px);padding:4px 11px;border-radius:999px;border:1px solid rgba(255,255,255,0.22)}

/* --- Post em destaque ------------------------------------------------------ */
.featured{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;padding:20px;background:linear-gradient(135deg,rgba(167,139,250,0.07),var(--surface));border:1px solid rgba(167,139,250,0.22);border-radius:24px;margin-bottom:28px;transition:transform .2s,border-color .2s}
.featured:hover{transform:translateY(-3px);border-color:rgba(167,139,250,0.4)}
.featured .cover{min-height:230px}
.featured .cover .glyph{font-size:84px}
.featured-body{display:flex;flex-direction:column;justify-content:center;min-width:0}
.featured-flag{display:inline-flex;align-items:center;gap:5px;align-self:flex-start;font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--pink);background:rgba(236,72,153,0.12);padding:4px 11px;border-radius:999px;margin-bottom:12px}
.featured-flag .material-symbols-rounded{font-size:14px}
.featured h2{font-size:26px;font-weight:800;letter-spacing:-0.6px;line-height:1.2;margin-bottom:10px}
.featured:hover h2{color:var(--purple)}
.featured .excerpt{margin-bottom:18px}
.featured .excerpt p{font-size:14.5px;color:var(--ink-3);line-height:1.6}

/* --- Grade de posts -------------------------------------------------------- */
.grid-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;letter-spacing:-0.2px;margin:4px 0 16px}
.grid-title .material-symbols-rounded{font-size:19px;color:var(--purple)}
.post-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.post{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:20px;overflow:hidden;transition:transform .2s,border-color .2s}
.post:hover{transform:translateY(-3px);border-color:rgba(167,139,250,0.32)}
.post .cover{border-radius:0;height:150px}
.post .cover .glyph{font-size:52px}
.post-body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.post h3{font-size:16.5px;font-weight:700;letter-spacing:-0.3px;line-height:1.32;margin-bottom:8px}
.post:hover h3{color:var(--purple)}
.post .excerpt{margin-bottom:14px;flex:1}
.post .excerpt p{font-size:13px;color:var(--ink-3);line-height:1.55}

/* ATENCAO: `-webkit-line-clamp` NAO funciona em FLEX ITEM — o item e blockified
   e o corte e ignorado (o texto curto so PARECE cortado). Por isso o <p> vive
   dentro de um .excerpt wrapper: o wrapper e o flex item, o <p> corta. Medido no
   Chrome em 2026-09-23: como filho direto, 62px (3 linhas); dentro do wrapper,
   40px (as 2 linhas pedidas). Ao mexer aqui, manter o wrapper. */
.clamp-2,.clamp-3{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.clamp-2{-webkit-line-clamp:2;line-clamp:2}
.clamp-3{-webkit-line-clamp:3;line-clamp:3}

/* Cartao inteiro clicavel sem aninhar <a>: o link do titulo cobre o cartao. */
.post-item{position:relative}
.post-link::after{content:'';position:absolute;inset:0;z-index:3}
.post-item:focus-within{border-color:rgba(167,139,250,0.55)}
.post-link:focus-visible{outline:none}
.post-item:has(.post-link:focus-visible){outline:2px solid var(--purple);outline-offset:3px}

/* Rodape de meta do post (autor + tempo de leitura) */
.post-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-4)}
.post-meta .avatar{width:26px;height:26px;font-size:11px}
.post-meta .by{font-weight:600;color:var(--ink-2)}
.post-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--ink-4);flex-shrink:0}
.read-time{display:inline-flex;align-items:center;gap:4px;margin-left:auto}
.read-time .material-symbols-rounded{font-size:14px}

.no-results{display:none;padding:48px 16px;text-align:center;color:var(--ink-3);background:var(--surface);border:1px solid var(--border);border-radius:18px}
.no-results .material-symbols-rounded{font-size:34px;color:var(--ink-4);display:block;margin:0 auto 10px}

/* --- Rail ------------------------------------------------------------------ */
.about-card p{font-size:13px;color:var(--ink-2);line-height:1.6}
.rail-list{display:flex;flex-direction:column}
.rail-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--border)}
.rail-row:first-child{border-top:0;padding-top:0}
.rail-rank{font-size:18px;font-weight:900;letter-spacing:-1px;background:var(--grad-h);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1;min-width:20px}
.rail-info{min-width:0}
.rail-info a{font-size:13px;font-weight:600;line-height:1.35;color:var(--ink);display:block}
.rail-row:hover .rail-info a{color:var(--purple)}
.rail-info span{font-size:11px;color:var(--ink-4)}
.follow-card .btn{margin-top:6px}
.follow-card .btn-ig{background:linear-gradient(135deg,#F97316,#EC4899,#8B5CF6);color:#fff}

/* --- UX: barra de leitura, voltar-ao-topo, toast, reveal ------------------- */
.read-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:200;background:var(--grad-h);box-shadow:0 0 12px rgba(139,92,246,0.55);transition:width .08s linear;pointer-events:none}
.to-top{position:fixed;right:22px;bottom:22px;z-index:150;width:46px;height:46px;border-radius:50%;background:var(--grad-h);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(139,92,246,0.45);opacity:0;transform:translateY(14px) scale(.9);pointer-events:none;transition:opacity .25s,transform .25s}
.to-top.show{opacity:1;transform:none;pointer-events:auto}
.to-top:hover{transform:translateY(-2px)}
.to-top .material-symbols-rounded{font-size:24px}
#toastRoot{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--bg-1);border:1px solid var(--border-2);border-radius:999px;padding:12px 20px;font-size:13px;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,0.45);display:flex;align-items:center;gap:8px;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;max-width:90vw}
.toast.show{opacity:1;transform:none}
.toast .material-symbols-rounded{font-size:18px;color:var(--purple);flex-shrink:0}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}

/* ===========================================================================
   PAGINA DE ARTIGO (/blog/<slug>)
   =========================================================================== */

.crumbs{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-4);margin-bottom:18px;flex-wrap:wrap}
.crumbs a{color:var(--ink-3)}
.crumbs a:hover{color:var(--purple)}
.crumbs .material-symbols-rounded{font-size:15px;opacity:.6}

.article-head{margin-bottom:26px}
.article-cat{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--purple);background:rgba(167,139,250,0.12);border:1px solid rgba(167,139,250,0.25);padding:5px 12px;border-radius:999px;margin-bottom:16px}
.article-cat .material-symbols-rounded{font-size:15px}
.article-head h1{font-size:38px;font-weight:900;letter-spacing:-1.5px;line-height:1.08;margin-bottom:14px}
.article-dek{font-size:17px;color:var(--ink-2);line-height:1.6;max-width:640px}
.article-meta{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-4);margin-top:20px;flex-wrap:wrap}
.article-meta .by{font-weight:600;color:var(--ink-2)}
.article-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--ink-4);flex-shrink:0}
.share-inline{margin-left:auto;display:flex;gap:8px}
.share-inline button{width:34px;height:34px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);color:var(--ink-3);display:flex;align-items:center;justify-content:center;transition:color .2s,border-color .2s}
.share-inline button:hover{color:var(--ink);border-color:var(--border-2)}
.share-inline .material-symbols-rounded{font-size:18px}

.article-cover{height:210px;border-radius:20px;margin-bottom:28px}
.article-cover .glyph{font-size:88px}

/* Resumo rapido — o que o leitor leva mesmo se nao ler tudo */
.tldr{background:linear-gradient(135deg,rgba(167,139,250,0.10),rgba(236,72,153,0.05));border:1px solid rgba(167,139,250,0.25);border-radius:18px;padding:20px 22px;margin-bottom:30px}
.tldr h2{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:var(--purple);margin-bottom:12px}
.tldr h2 .material-symbols-rounded{font-size:17px}
.tldr ul{list-style:none;display:flex;flex-direction:column;gap:9px}
.tldr li{position:relative;padding-left:22px;font-size:14.5px;color:var(--ink-2);line-height:1.55}
.tldr li::before{content:'';position:absolute;left:4px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--grad-h)}

/* --- Tipografia de corpo --------------------------------------------------- */
.prose{font-size:16.5px;line-height:1.75;color:var(--ink-2);max-width:68ch}
.prose > * + *{margin-top:20px}
.prose h2{font-size:25px;font-weight:800;letter-spacing:-0.7px;line-height:1.22;color:var(--ink);margin-top:46px;scroll-margin-top:86px}
.prose h3{font-size:18.5px;font-weight:700;letter-spacing:-0.3px;color:var(--ink);margin-top:32px;scroll-margin-top:86px}
.prose h2 + p,.prose h3 + p{margin-top:12px}
.prose a{color:var(--purple);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:rgba(167,139,250,0.45);transition:text-decoration-color .2s}
.prose a:hover{text-decoration-color:var(--purple)}
.prose strong{color:var(--ink);font-weight:700}
.prose ul,.prose ol{padding-left:22px;display:flex;flex-direction:column;gap:10px}
.prose li{line-height:1.65}
.prose li::marker{color:var(--purple)}
.prose blockquote{border-left:3px solid var(--purple);padding:2px 0 2px 20px;font-size:17.5px;font-weight:500;color:var(--ink);line-height:1.6}
.prose hr{border:0;height:1px;background:var(--border);margin-top:40px}

/* Caixa de nota/atencao dentro do corpo */
.note{display:flex;gap:14px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--purple);border-radius:14px;padding:16px 18px;font-size:14.5px;line-height:1.6;color:var(--ink-2)}
.note .material-symbols-rounded{font-size:21px;color:var(--purple);flex-shrink:0;margin-top:1px}
.note.warn{border-left-color:var(--yellow)}
.note.warn .material-symbols-rounded{color:var(--yellow)}
.note b{color:var(--ink)}

/* Passo a passo numerado */
.steps{list-style:none;padding:0;counter-reset:step;display:flex;flex-direction:column;gap:14px}
.steps li{counter-increment:step;position:relative;padding-left:46px;font-size:15.5px;line-height:1.65}
.steps li::before{content:counter(step);position:absolute;left:0;top:-1px;width:30px;height:30px;border-radius:50%;background:var(--grad-h);color:#fff;font-size:13.5px;font-weight:800;display:flex;align-items:center;justify-content:center}
.steps li b{color:var(--ink)}

/* Tabela */
.prose table{width:100%;border-collapse:collapse;font-size:14.5px}
.prose th,.prose td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:top}
.prose th{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-4)}
.prose td b{color:var(--ink)}
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:14px;background:var(--surface)}

/* --- CTA de fim de artigo -------------------------------------------------- */
.article-cta{margin-top:48px;padding:28px;border-radius:22px;background:linear-gradient(135deg,rgba(139,92,246,0.16),rgba(236,72,153,0.10),rgba(249,115,22,0.06));border:1px solid rgba(167,139,250,0.3);text-align:center}
.article-cta h2{font-size:22px;font-weight:800;letter-spacing:-0.5px;margin-bottom:8px}
.article-cta p{font-size:14.5px;color:var(--ink-2);line-height:1.6;max-width:460px;margin:0 auto 20px}
.article-cta .btn-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* --- Leia tambem ----------------------------------------------------------- */
.related{margin-top:46px}
.related .grid-title{margin-bottom:14px}
.related-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.related-card{display:flex;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px;transition:transform .2s,border-color .2s}
.related-card:hover{transform:translateY(-2px);border-color:rgba(167,139,250,0.35)}
.related-card .cover{width:56px;height:56px;border-radius:13px}
.related-card .cover .glyph{font-size:26px}
.related-card .rc-body{min-width:0}
.related-card strong{display:block;font-size:14px;font-weight:700;line-height:1.35;letter-spacing:-0.2px}
.related-card:hover strong{color:var(--purple)}
.related-card span{font-size:11.5px;color:var(--ink-4)}

/* --- Sumario do rail ("Neste artigo") -------------------------------------- */
.toc{display:flex;flex-direction:column;gap:2px;max-height:min(46vh,420px);overflow-y:auto}
.toc a{font-size:13px;line-height:1.4;color:var(--ink-3);padding:7px 10px;border-radius:9px;border-left:2px solid transparent;transition:color .15s,background .15s,border-color .15s}
.toc a:hover{color:var(--ink);background:var(--surface-2)}
.toc a.active{color:var(--purple);border-left-color:var(--purple);background:rgba(167,139,250,0.08);font-weight:600}
.rail-sticky{position:sticky;top:90px;align-self:start;display:flex;flex-direction:column;gap:16px}

/* --- Responsivo ------------------------------------------------------------ */
@media(max-width:1000px){
  .blog-layout{grid-template-columns:1fr;padding:20px}
  .blog-layout .rail,.rail-sticky{position:static}
  .featured{grid-template-columns:1fr}
  .featured .cover{min-height:170px}
}
@media(max-width:860px){
  .nav-search{display:none}
  .nav-back .txt{display:none}
  .nav-back{width:42px;height:42px;justify-content:center;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);gap:0}
}
@media(max-width:680px){
  .blog-layout{padding:16px}
  .blog-hero{padding:28px 20px;border-radius:20px}
  .blog-hero h1{font-size:29px;letter-spacing:-1.2px}
  .blog-hero p{font-size:14.5px}
  .post-grid,.related-grid{grid-template-columns:1fr}
  .article-head h1{font-size:28px;letter-spacing:-1px}
  .article-dek{font-size:15.5px}
  .article-cover{height:150px}
  .article-cover .glyph{font-size:62px}
  .prose{font-size:16px}
  .prose h2{font-size:22px;margin-top:38px}
  .prose h3{font-size:17.5px}
  .share-inline{margin-left:0;width:100%;margin-top:4px}
  .article-cta{padding:22px 18px}
  .to-top{right:14px;bottom:14px}
}

/* Acessibilidade: quem pediu menos movimento nao recebe nenhum. */
@media(prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .featured:hover,.post:hover,.related-card:hover,.btn-primary:hover,.to-top:hover{transform:none}
  .read-progress{transition:none}
}
