/* ==========================================================================
   Laboratório Ivory — clearancecreatinina.com.br
   Hierarquia por espaço e régua tipográfica. Sem sombra, sem gradiente,
   sem cartão flutuante. Cor nunca é o único portador de significado.
   ========================================================================== */

@font-face {
  font-family: 'Instrument Sans';
  src: url('/fontes/instrument-sans-400.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Instrument Sans';
  src: url('/fontes/instrument-sans-600.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Fraunces';
  src: url('/fontes/fraunces-600.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/fontes/ibm-plex-mono-500.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}

:root {
  --marfim: #FAF7F2;
  --superficie: #FFFFFF;
  --tinta: #1B1F23;
  --secundario: #5C6570;
  --acento: #12626E;
  --regua: #DFD9CF;
  --regua-forte: #C7BFB2;
  --aviso-fundo: #FBF3E2;
  --aviso-regua: #C49A3A;
  --erro-fundo: #F9EDEB;
  --erro-regua: #8E2C2C;

  --g1: #2F7D5C; --g2: #4F7A3F; --g3a: #7A6B22;
  --g3b: #9A5A22; --g4: #98432A; --g5: #8E2C2C;

  /* Escala tipográfica, razão 1,25 (terça maior) a partir de 1rem */
  --t--1: 0.8rem;
  --t-0: 1rem;
  --t-1: 1.25rem;
  --t-2: 1.5625rem;
  --t-3: 1.953rem;
  --t-4: 2.441rem;

  --display: 'Fraunces', Georgia, 'Times New Roman', serif;
  --interface: 'Instrument Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Consolas, monospace;

  --largura: 44rem;
  --largura-larga: 60rem;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--marfim);
  color: var(--tinta);
  font-family: var(--interface);
  font-size: var(--t-0);
  line-height: 1.6;
  text-rendering: optimizeLegibility;
}

/* --- utilidades ------------------------------------------------------- */

.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

.pular {
  position: absolute; left: -999px; top: 0; z-index: 10;
  background: var(--acento); color: #fff; padding: 0.75rem 1rem;
}
.pular:focus { left: 0; }

:focus-visible {
  outline: 2px solid var(--acento);
  outline-offset: 2px;
}

.num { font-family: var(--mono); font-variant-numeric: tabular-nums; font-weight: 500; }

/* --- cabeçalho -------------------------------------------------------- */

.faixa {
  max-width: var(--largura-larga);
  margin-inline: auto;
  padding-inline: 1.25rem;
}

.topo {
  border-bottom: 1px solid var(--regua);
  background: var(--superficie);
}
.topo .faixa {
  display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem;
  align-items: baseline; padding-block: 0.875rem;
}

.marca {
  font-family: var(--mono); font-size: var(--t--1);
  letter-spacing: 0.02em; text-decoration: none; color: var(--tinta);
  padding-block: 0.5rem;
}
.marca-tld { color: var(--secundario); }

.topo nav ul {
  display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem;
  list-style: none; margin: 0; padding: 0;
}
.topo nav a {
  color: var(--secundario); text-decoration: none;
  font-size: var(--t--1); letter-spacing: 0.01em;
  display: inline-block; padding-block: 0.6875rem; min-height: 44px;
}
.topo nav a:hover { color: var(--acento); }
.topo nav a[aria-current='page'] { color: var(--tinta); border-bottom: 1px solid var(--acento); }

/* --- estrutura -------------------------------------------------------- */

main {
  max-width: var(--largura-larga);
  margin-inline: auto;
  padding: 1.5rem 1.25rem 4rem;
}

.trilha ol {
  display: flex; flex-wrap: wrap; gap: 0.5rem;
  list-style: none; margin: 0 0 1.5rem; padding: 0;
  font-size: var(--t--1); color: var(--secundario);
}
.trilha li + li::before { content: '/'; margin-right: 0.5rem; color: var(--regua-forte); }
.trilha a { color: var(--secundario); }

/* --- tipografia ------------------------------------------------------- */

h1 {
  font-family: var(--display); font-weight: 600;
  font-size: var(--t-4); line-height: 1.15;
  letter-spacing: -0.015em; margin: 0 0 1rem;
  max-width: 20ch;
}
h2 {
  font-family: var(--display); font-weight: 600;
  font-size: var(--t-2); line-height: 1.25;
  margin: 3rem 0 0.875rem; padding-top: 1.25rem;
  border-top: 1px solid var(--regua);
}
h3 {
  font-size: var(--t-1); font-weight: 600; line-height: 1.3;
  margin: 1.75rem 0 0.5rem;
}
h4 { font-size: var(--t-0); font-weight: 600; margin: 1.25rem 0 0.375rem; }

p, li { max-width: 68ch; }
p { margin: 0 0 1rem; }

a { color: var(--acento); text-underline-offset: 0.15em; }
a:hover { text-decoration-thickness: 2px; }

strong { font-weight: 600; }

.resposta-atomica {
  font-size: var(--t-1); line-height: 1.5;
  color: var(--tinta); max-width: 60ch;
  margin-bottom: 2rem;
}

.formula {
  font-family: var(--mono); font-size: var(--t--1);
  background: var(--superficie); border: 1px solid var(--regua);
  border-left: 3px solid var(--acento);
  padding: 1rem 1.125rem; margin: 1.25rem 0;
  overflow-x: auto; line-height: 1.7; max-width: none;
}
.formula p { margin: 0; max-width: none; }
.formula p + p { margin-top: 0.5rem; }

.exemplo-resolvido {
  border: 1px solid var(--regua); background: var(--superficie);
  padding: 1.125rem 1.25rem; margin: 1.5rem 0;
}
.exemplo-resolvido > :last-child { margin-bottom: 0; }
.exemplo-resolvido h3 { margin-top: 0; font-size: var(--t-0); }

/* --- tabelas ---------------------------------------------------------- */

.tabela-rolagem { overflow-x: auto; margin: 1.5rem 0; }

table {
  width: 100%; border-collapse: collapse;
  background: var(--superficie); font-size: 0.9375rem;
}
caption {
  text-align: left; font-size: var(--t--1); color: var(--secundario);
  padding-bottom: 0.625rem; caption-side: top;
}
th, td {
  text-align: left; padding: 0.625rem 0.875rem;
  border-bottom: 1px solid var(--regua); vertical-align: top;
}
thead th {
  font-size: var(--t--1); text-transform: uppercase;
  letter-spacing: 0.06em; font-weight: 600;
  border-bottom: 1px solid var(--regua-forte);
}
tbody th { font-weight: 600; }
td.numerico, th.numerico { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* --- calculadora ------------------------------------------------------ */

.calculadora {
  background: var(--superficie);
  border: 1px solid var(--regua);
  margin: 0 0 2.5rem;
}

.calculadora form { padding: 1.25rem; margin: 0; }

.grade {
  display: grid; gap: 1.125rem 1.25rem;
  grid-template-columns: 1fr;
  align-items: start;
}
@media (min-width: 40rem) {
  .grade { grid-template-columns: 1fr 1fr; }
}

.campo { margin-block: 0; min-width: 0; }
.grade + .campo, .campo-peso, .campo-sexo + .grade { margin-top: 1.25rem; }

label, legend {
  display: block; font-size: var(--t--1);
  text-transform: uppercase; letter-spacing: 0.06em;
  font-weight: 600; color: var(--secundario);
  margin-bottom: 0.375rem; padding: 0;
}
.unidade-rotulo { text-transform: none; letter-spacing: 0; font-weight: 400; }

input[type='text'], select {
  width: 100%; min-height: 44px;
  padding: 0.5rem 0.6875rem;
  font-family: var(--mono); font-size: 1rem;
  color: var(--tinta); background: var(--marfim);
  border: 1px solid var(--regua-forte); border-radius: 0;
}
input[type='text']:focus, select:focus { border-color: var(--acento); }

.composto { display: flex; }
.composto input { border-right: 0; }
.composto select { width: auto; flex: 0 0 auto; font-family: var(--interface); font-size: var(--t--1); }

.ajuda { font-size: var(--t--1); color: var(--secundario); margin: 0.375rem 0 0; }

fieldset { border: 0; padding: 0; margin: 0; }

.opcoes { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.opcoes-peso { flex-direction: column; gap: 0; }

.opcao {
  display: flex; align-items: center; gap: 0.625rem;
  min-height: 44px; padding: 0.5rem 0.75rem;
  border: 1px solid var(--regua-forte);
  margin: 0; text-transform: none; letter-spacing: 0;
  font-size: 1rem; font-weight: 400; color: var(--tinta);
  cursor: pointer; flex: 1 1 auto;
}
.opcoes-peso .opcao { border-bottom: 0; }
.opcoes-peso .opcao:last-child { border-bottom: 1px solid var(--regua-forte); }
.opcao:has(input:checked) { border-color: var(--acento); background: var(--marfim); }
.opcao span { display: flex; flex: 1; justify-content: space-between; gap: 1rem; align-items: baseline; }
.valor-peso {
  font-family: var(--mono); font-style: normal;
  font-variant-numeric: tabular-nums; color: var(--secundario);
}

input[type='radio'], input[type='checkbox'] { width: 1.125rem; height: 1.125rem; margin: 0; accent-color: var(--acento); flex: 0 0 auto; }

.formulas-peso {
  font-size: var(--t--1); color: var(--secundario);
  border-left: 2px solid var(--regua); padding-left: 0.875rem; margin-top: 0.875rem;
}
.formulas-peso p { margin-bottom: 0.5rem; }

.aviso-peso {
  font-size: var(--t--1); margin-top: 0.875rem;
  background: var(--aviso-fundo); border-left: 3px solid var(--aviso-regua);
  padding: 0.75rem 0.875rem; max-width: none;
}

.condicoes { margin: 1.25rem 0 0; border-top: 1px solid var(--regua); padding-top: 0.875rem; }
.condicoes summary {
  cursor: pointer; font-size: var(--t--1);
  text-transform: uppercase; letter-spacing: 0.06em;
  font-weight: 600; color: var(--secundario); min-height: 44px;
  display: flex; align-items: center;
}
.condicoes-ajuda { font-size: var(--t--1); color: var(--secundario); }
.condicoes-lista { display: grid; gap: 0.25rem; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); }
.condicao {
  display: flex; align-items: center; gap: 0.625rem;
  min-height: 44px; margin: 0; padding: 0.375rem 0;
  text-transform: none; letter-spacing: 0; font-weight: 400;
  font-size: 0.9375rem; color: var(--tinta); cursor: pointer;
}

.acoes {
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
  margin-top: 1.25rem; padding-top: 1.125rem; border-top: 1px solid var(--regua);
}
button {
  min-height: 44px; padding: 0.5rem 1rem;
  font-family: var(--interface); font-size: var(--t--1);
  letter-spacing: 0.02em; color: var(--tinta);
  background: var(--marfim); border: 1px solid var(--regua-forte);
  border-radius: 0; cursor: pointer;
}
button:hover { border-color: var(--acento); color: var(--acento); }
.acao-status { font-size: var(--t--1); color: var(--acento); flex: 1 1 100%; min-height: 1.4em; }

/* --- resultados: campos de laudo -------------------------------------- */

.resultado {
  border-top: 1px solid var(--regua-forte);
  padding: 1.25rem;
  background: var(--marfim);
}

.exemplo-rotulo {
  font-size: var(--t--1); color: var(--secundario);
  margin-bottom: 1.125rem; padding-bottom: 0.75rem;
  border-bottom: 1px dashed var(--regua-forte); max-width: none;
}

.cartoes { display: grid; gap: 0; }

.cartao {
  border-top: 1px solid var(--regua);
  padding: 1rem 0;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.25rem 1.5rem;
  align-items: baseline;
}
.cartao:first-child { border-top: 0; }

.cartao-rotulo {
  grid-column: 1; margin: 0;
  font-family: var(--interface); font-size: var(--t--1);
  text-transform: uppercase; letter-spacing: 0.07em;
  font-weight: 600; color: var(--secundario);
}
.cartao-valor {
  grid-column: 2; grid-row: 1; margin: 0; text-align: right; white-space: nowrap;
}
.cartao-valor .num { font-size: var(--t-3); line-height: 1.1; letter-spacing: -0.04em; }
.cartao-unidade { font-size: var(--t--1); color: var(--secundario); }
.cartao-finalidade, .cartao-nota, .cartao-formula {
  grid-column: 1 / -1; margin: 0; font-size: var(--t--1); max-width: 68ch;
}
.cartao-finalidade { color: var(--tinta); }
.cartao-nota { color: var(--secundario); }
.cartao-formula {
  font-family: var(--mono); color: var(--secundario);
  overflow-x: auto; padding-top: 0.375rem;
}
.cartao-vazio .cartao-valor { display: none; }
.cartao-kdigo .cartao-valor .num { font-size: var(--t-2); letter-spacing: 0; }

.cartoes-secundarios { margin-top: 1.25rem; border-top: 1px solid var(--regua-forte); }

/* --- barra KDIGO ------------------------------------------------------ */

.kdigo { margin-top: 1.5rem; }
.kdigo-titulo {
  font-size: var(--t--1); text-transform: uppercase; letter-spacing: 0.07em;
  font-weight: 600; color: var(--secundario); margin-bottom: 0.5rem;
}
.kdigo-barra {
  display: grid; grid-template-columns: repeat(6, 1fr);
  gap: 2px; list-style: none; margin: 0; padding: 0;
}
.faixa-kdigo {
  padding: 0.5rem 0.25rem; text-align: center;
  border-top: 3px solid currentColor;
  background: var(--superficie);
  font-size: var(--t--1); max-width: none;
}
.faixa-codigo { display: block; font-weight: 600; font-family: var(--mono); }
.faixa-valores { display: block; font-size: 0.75rem; color: var(--secundario); }

.faixa-g1 { color: var(--g1); }
.faixa-g2 { color: var(--g2); }
.faixa-g3a { color: var(--g3a); }
.faixa-g3b { color: var(--g3b); }
.faixa-g4 { color: var(--g4); }
.faixa-g5 { color: var(--g5); }

.faixa-atual { background: currentColor; }
.faixa-atual .faixa-codigo, .faixa-atual .faixa-valores { color: #fff; }

.kdigo-legenda { font-size: var(--t--1); margin-top: 0.625rem; color: var(--tinta); }

/* --- mensagens e alertas ---------------------------------------------- */

.mensagens { padding: 0.875rem 1rem; margin-bottom: 1.25rem; }
.mensagens ul { margin: 0.375rem 0 0; padding-left: 1.125rem; }
.mensagens li { font-size: 0.9375rem; }
.mensagens-titulo {
  margin: 0; font-size: var(--t--1); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.06em;
}
.mensagens-erro { background: var(--erro-fundo); border-left: 3px solid var(--erro-regua); }
.mensagens-erro .mensagens-titulo { color: var(--erro-regua); }
.mensagens-aviso { background: var(--aviso-fundo); border-left: 3px solid var(--aviso-regua); }
.mensagens-aviso .mensagens-titulo { color: #7A5C12; }

.incompleto { color: var(--secundario); font-size: 0.9375rem; margin: 0; }

.alertas { margin-top: 1.75rem; border-top: 1px solid var(--regua-forte); padding-top: 1rem; }
.alertas h3 {
  margin: 0 0 0.5rem; font-size: var(--t--1);
  text-transform: uppercase; letter-spacing: 0.07em; color: var(--secundario);
}
.alertas ul { margin: 0; padding-left: 1.125rem; }
.alertas li { font-size: 0.9375rem; margin-bottom: 0.5rem; }

.pesos-calculados { margin-top: 1.5rem; border-top: 1px solid var(--regua); padding-top: 0.875rem; }
.pesos-titulo {
  font-size: var(--t--1); text-transform: uppercase; letter-spacing: 0.07em;
  font-weight: 600; color: var(--secundario); margin-bottom: 0.375rem;
}
.pesos-calculados ul { list-style: none; margin: 0; padding: 0; }
.pesos-calculados li {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: 0.3125rem 0; border-bottom: 1px solid var(--regua); font-size: 0.9375rem;
}
.pesos-calculados .num { color: var(--tinta); }
.pesos-aviso { font-size: var(--t--1); color: var(--secundario); margin-top: 0.5rem; }

/* --- blocos de confiança, autoria, relacionadas ----------------------- */

.confianca {
  border-left: 3px solid var(--acento);
  background: var(--superficie); border-top: 1px solid var(--regua);
  border-right: 1px solid var(--regua); border-bottom: 1px solid var(--regua);
  padding: 1rem 1.125rem; margin: 2rem 0;
}
.confianca p { font-size: 0.9375rem; margin-bottom: 0.5rem; }
.confianca p:last-child { margin-bottom: 0; }

.autoria { margin-top: 3.5rem; border-top: 1px solid var(--regua-forte); padding-top: 1.25rem; }
.autoria h2 { border: 0; padding-top: 0; margin-top: 0; font-size: var(--t-1); }
.autoria p { font-size: 0.9375rem; margin-bottom: 0.5rem; }
.autoria-nome { font-weight: 600; }
.datas {
  display: grid; gap: 0.25rem 2rem; margin: 1rem 0 0;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  font-size: var(--t--1);
}
.datas div { display: flex; gap: 0.5rem; justify-content: space-between; border-bottom: 1px solid var(--regua); padding-bottom: 0.25rem; }
.datas dt { color: var(--secundario); }
.datas dd { margin: 0; font-family: var(--mono); font-variant-numeric: tabular-nums; }

.relacionadas ul { list-style: none; margin: 0; padding: 0; }
.relacionadas li { border-bottom: 1px solid var(--regua); padding: 0.625rem 0; font-size: 0.9375rem; }

.referencias ol { padding-left: 1.375rem; }
.referencias li { font-size: 0.9375rem; margin-bottom: 0.75rem; }
.ref-nota { display: block; color: var(--secundario); font-size: var(--t--1); }

.faq-item { border-top: 1px solid var(--regua); padding-top: 0.25rem; }
.faq-item h3 { font-size: var(--t-0); }

/* --- rodapé ----------------------------------------------------------- */

.rodape {
  border-top: 1px solid var(--regua-forte);
  background: var(--superficie);
  padding-block: 2rem 2.5rem;
  font-size: var(--t--1); color: var(--secundario);
}
.rodape p { max-width: 68ch; }
.rodape-autor { color: var(--tinta); }
.rodape-links { display: flex; flex-wrap: wrap; gap: 0.25rem 1.25rem; list-style: none; margin: 1rem 0 0; padding: 0; }
.rodape-links a { display: inline-block; padding-block: 0.6875rem; min-height: 44px; }
.rodape-impressao { display: none; }

/* --- impressão -------------------------------------------------------- */

@media print {
  .topo, .rodape-links, .no-print, .pular, .trilha, .condicoes, .acoes { display: none !important; }
  body { background: #fff; font-size: 11pt; }
  main { padding: 0; max-width: none; }
  .calculadora, .resultado, table, .confianca { background: #fff; border-color: #999; }
  .cartao, .faq-item, h2 { break-inside: avoid; }
  h2 { break-after: avoid; }
  .rodape-impressao { display: block; }
  .rodape { border-top: 1px solid #999; padding-block: 0.75rem; }
  a { color: inherit; text-decoration: none; }
  .referencias a::after { content: ' (' attr(href) ')'; font-size: 9pt; word-break: break-all; }
}

/* --- movimento e tema ------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --marfim: #16181B;
    --superficie: #1D2024;
    --tinta: #ECE8E1;
    --secundario: #A6ADB6;
    --acento: #5FBCC8;
    --regua: #2E3238;
    --regua-forte: #454B53;
    --aviso-fundo: #2C2517;
    --aviso-regua: #C49A3A;
    --erro-fundo: #2C1B1A;
    --erro-regua: #D97B72;

    --g1: #58B98D; --g2: #86B96C; --g3a: #C0A94A;
    --g3b: #D08F54; --g4: #D4795A; --g5: #DE7A73;
  }
  .faixa-atual .faixa-codigo, .faixa-atual .faixa-valores { color: #16181B; }
  .mensagens-aviso .mensagens-titulo { color: #E0BC66; }
}
