/* components.css , shared content components for inner hubs (articles grid,
   category cards, sections). Consumes the fj-shell token aliases (--c-*). */
.section{padding:32px 0;border-top:1px solid var(--c-border)}
.section:first-of-type{border-top:0;padding-top:8px}
.section__head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:20px}
.section__title{margin:0;font-size:1.4rem;font-weight:800;letter-spacing:-.015em;color:var(--c-text)}
.section__more{font-size:.92rem;font-weight:700;color:var(--c-accent);text-decoration:none}
.section__more:hover{text-decoration:underline}

/* ===== NEWS CARD (componente unico: home, /artigos, /categoria) =====
   Vertical, portado fielmente do ocalendario /feriados (jfhub-card):
   hero 16/9 + badge + icone, corpo com titulo, linha azul (categoria) e CTA. */
.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.news-card{position:relative;display:flex;flex-direction:column;background:var(--c-surface);border:1px solid var(--c-border);border-radius:18px;overflow:hidden;text-decoration:none;color:inherit;box-shadow:0 1px 2px rgba(15,23,42,.04),0 14px 34px -14px rgba(15,23,42,.08);transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease;min-height:100%}
.news-card:hover{transform:translateY(-4px);box-shadow:0 1px 2px rgba(15,23,42,.06),0 26px 54px -16px rgba(15,23,42,.18);border-color:color-mix(in srgb,var(--c-accent) 30%,var(--c-border));text-decoration:none;color:inherit}
.news-card__hero{position:relative;aspect-ratio:16/9;overflow:hidden;background:radial-gradient(400px 200px at 90% 10%,rgba(255,255,255,.35),transparent 60%),linear-gradient(135deg,var(--c-accent) 0,#0a3fb0 100%)}
.news-card__hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.news-card:hover .news-card__hero-img{transform:scale(1.04)}
.news-card__hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 40%,rgba(0,0,0,.28) 100%);pointer-events:none}
.news-card__icon{position:absolute;left:14px;bottom:14px;z-index:2;width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.95);color:var(--c-accent);display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;box-shadow:0 6px 16px -6px rgba(0,0,0,.3)}
.news-card__badge{position:absolute;right:12px;top:12px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;background:rgba(255,255,255,.95);color:var(--c-accent);box-shadow:0 4px 10px -4px rgba(0,0,0,.3)}
.news-card__badge i{font-size:.66rem}
.news-card__body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:8px;flex:1}
.news-card__title{font-size:1.18rem;font-weight:800;color:var(--c-text);margin:0;letter-spacing:-.015em;line-height:1.25}
.news-card__cat{font-size:.92rem;color:var(--c-accent);font-weight:700;margin:0}
.news-card__cta{margin-top:auto;padding-top:10px;font-size:.88rem;font-weight:700;color:var(--c-accent);display:inline-flex;align-items:center;gap:6px}
.news-card__cta i{font-size:.74rem;transition:gap .2s ease,transform .2s ease}
.news-card:hover .news-card__cta i{transform:translateX(4px)}
body.dark-mode .news-card{background:#111827;border-color:rgba(148,163,184,.18)}
body.dark-mode .news-card__title{color:#e5eef9}

.article-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:transform .15s,box-shadow .15s,border-color .15s}
.card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(15,23,42,.1);border-color:#94a3b8}
.card__media{display:block;aspect-ratio:16/9;background:var(--c-surface-2)}
.card__media img{width:100%;height:100%;object-fit:cover;display:block}
.card__body{padding:18px;display:flex;flex-direction:column;gap:8px}
.card__badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--c-accent)}
.card__title{font-size:1.08rem;margin:0;font-weight:800;line-height:1.3}
.card__title a{color:var(--c-text);text-decoration:none}
.card__title a:hover{color:var(--c-accent)}
.card__desc{margin:0;color:var(--c-text-soft);font-size:.94rem;line-height:1.55}

.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.cat-card{display:flex;align-items:flex-end;min-height:110px;padding:16px;border-radius:12px;background:var(--c-surface);border:1px solid var(--c-border);border-left:4px solid var(--accent,var(--c-accent));color:var(--c-text);font-weight:700;text-decoration:none;transition:.15s}
.cat-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(15,23,42,.1)}

.hub-head h1{margin:.2em 0 .3em;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800;letter-spacing:-.02em}
.hub-head__eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;font-weight:800;margin:0}

.author-block{background:var(--c-surface-2);border-radius:12px;padding:28px;margin-block:32px}
.author-block__body{max-width:760px}

/* callouts editoriais (E16, antecipado do plano para o artigo de teste) */
.callout{border-radius:12px;padding:16px 18px;border:1px solid;margin:22px 0;font-size:.9rem}
.callout b{display:block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.callout p{margin:0;color:var(--c-text-soft)}
.callout--info{background:rgba(10,93,255,.07);border-color:rgba(10,93,255,.2)}
.callout--info b{color:var(--c-accent)}
.callout--ok{background:rgba(48,209,88,.08);border-color:rgba(48,209,88,.3)}
.callout--ok b{color:#1d9d44}
.callout--warn{background:rgba(255,159,10,.09);border-color:rgba(255,159,10,.3)}
.callout--warn b{color:#b45309}
body.dark-mode .callout--warn b{color:#fbbf24}
body.dark-mode .callout--ok b{color:#6ee7b7}

/* bloco de fonte oficial (E17) */
.lawref{border:1px solid var(--c-border);background:var(--c-surface-2);border-radius:12px;padding:14px 18px;margin:24px 0}
.lawref figcaption{font-size:.74rem;font-weight:700}
.lawref cite{font-style:normal;font-family:ui-monospace,'SF Mono',Consolas,monospace;color:var(--c-accent)}
.lawref blockquote{margin:6px 0 0;font-size:.9rem;color:var(--c-text-soft);line-height:1.6}
.lawref a{font-weight:600}

/* tabela com wrapper (E18) */
.table-wrap{overflow-x:auto;margin:24px 0;border-radius:12px;border:1px solid var(--c-border);box-shadow:0 1px 2px rgba(13,18,32,.05)}
.table-wrap table{width:100%;border-collapse:separate;border-spacing:0;background:var(--c-surface);font-size:.9rem;min-width:520px}
.table-wrap th{text-align:left;padding:12px 16px;background:var(--c-surface-2);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--c-muted)}
.table-wrap td{padding:12px 16px;border-top:1px solid var(--c-border);color:var(--c-text-soft)}
.table-wrap tr:hover td{background:rgba(10,93,255,.05)}
.table-wrap code{font-family:ui-monospace,'SF Mono',Consolas,monospace;font-size:.85em;background:var(--c-surface-2);padding:2px 7px;border-radius:6px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(1px,1px,1px,1px)!important;white-space:nowrap!important}

/* magazine/minimal home variants */
.mini-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}
.mini-list__item{padding:22px 0;border-top:1px solid var(--c-border)}
.mini-list__title{font-size:1.25rem;font-weight:800;color:var(--c-text);text-decoration:none}
.mini-list__cat{display:inline-block;margin-left:12px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--c-accent)}
.mini-list__desc{margin:.4em 0 0;color:var(--c-text-soft)}
