  :root{
    --color-bg:#FAF7F0;
    --color-bg-alt:#F1ECDF;
    --color-panel:#FFFFFF;
    --color-ink:#1B2A4A;
    --color-ink-soft:#5B6478;
    --color-gold:#C9A227;
    --color-gold-dark:#9C7D1C;
    --color-red:#A13D3D;
    --color-green:#3E7C59;
    --color-border:#DCD3B8;
    --font-display:'Iowan Old Style','Palatino Linotype',Georgia,'Times New Roman',serif;
    --font-body:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
    --font-mono:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
  }

  *{box-sizing:border-box;}

  body{
    background-color:var(--color-bg);
    font-family:var(--font-body);
    color:var(--color-ink);
    -webkit-font-smoothing:antialiased;
  }

  ::selection{ background:var(--color-gold); color:#fff; }

  a{ color:var(--color-ink); }

  /* ---------- Cabecera ---------- */
  .header-band{
    background:linear-gradient(135deg,var(--color-ink) 0%,#233457 100%);
    color:#F4EFDE;
    padding:3.25rem 0 2.5rem;
    position:relative;
    overflow:hidden;
    border-bottom:6px solid var(--color-gold);
  }
  .header-band::before{
    content:"";
    position:absolute;
    inset:0;
    background-image:
      repeating-linear-gradient(115deg, rgba(244,239,222,0.035) 0 2px, transparent 2px 40px);
    pointer-events:none;
  }
  .eyebrow{
    font-family:var(--font-mono);
    letter-spacing:.14em;
    text-transform:uppercase;
    font-size:.72rem;
    color:var(--color-gold);
    border:1px solid rgba(201,162,39,.5);
    display:inline-block;
    padding:.28rem .7rem;
    border-radius:2px;
  }
  .header-title{
    font-family:var(--font-display);
    font-weight:700;
    font-size:clamp(2.1rem,4vw,3.2rem);
    margin:.65rem 0 .35rem;
    letter-spacing:-.01em;
  }
  .header-sub{
    color:#C9CEDB;
    max-width:620px;
    font-size:1.02rem;
  }

  /* Sello / signature element */
  .seal{
    width:130px;height:130px;
    border-radius:50%;
    border:2.5px solid var(--color-gold);
    display:flex;align-items:center;justify-content:center;
    position:relative;
    flex-shrink:0;
    transform:rotate(-8deg);
    background:radial-gradient(circle at 35% 30%, rgba(201,162,39,.15), transparent 70%);
  }
  .seal::before{
    content:"";
    position:absolute; inset:9px;
    border:1px dashed rgba(201,162,39,.55);
    border-radius:50%;
  }
  .seal-text{
    font-family:var(--font-mono);
    font-size:.62rem;
    letter-spacing:.09em;
    text-align:center;
    color:var(--color-gold);
    line-height:1.35;
    text-transform:uppercase;
  }
  .seal-text strong{ display:block; font-size:.95rem; color:#F4EFDE; letter-spacing:.05em; }

  /* mini-sello usado junto a preguntas de VeriFactu */
  .mini-seal{
    display:inline-flex;align-items:center;justify-content:center;
    width:26px;height:26px;border-radius:50%;
    border:1.5px solid var(--color-gold-dark);
    color:var(--color-gold-dark);
    font-family:var(--font-mono);
    font-size:.62rem;font-weight:700;
    flex-shrink:0;
  }

  /* ---------- Buscador ---------- */
  .search-wrap{
    background:var(--color-panel);
    border:1px solid var(--color-border);
    border-radius:10px;
    box-shadow:0 10px 30px -18px rgba(27,42,74,.35);
  }
  .search-input{
    border:none;
    background:transparent;
    font-size:1.05rem;
    padding:.85rem .5rem;
  }
  .search-input:focus{ box-shadow:none; outline:none; }
  #searchIcon{ color:var(--color-ink-soft); }
  #resultCount{
    font-family:var(--font-mono);
    font-size:.78rem;
    color:var(--color-ink-soft);
  }
  mark.hit{
    background:rgba(201,162,39,.35);
    color:inherit;
    padding:0 .1em;
    border-radius:2px;
  }

  /* ---------- Índice ---------- */
  .toc-card{
    background:var(--color-panel);
    border:1px solid var(--color-border);
    border-radius:10px;
    padding:1.25rem 1.35rem;
  }
  .toc-card h2{
    font-family:var(--font-display);
    font-size:1.05rem;
    margin-bottom:.9rem;
    display:flex; align-items:center; gap:.5rem;
  }
  .toc-cat{
    font-family:var(--font-mono);
    text-transform:uppercase;
    letter-spacing:.08em;
    font-size:.7rem;
    color:var(--color-gold-dark);
    margin:1.1rem 0 .45rem;
    border-bottom:1px solid var(--color-border);
    padding-bottom:.3rem;
  }
  .toc-cat:first-of-type{ margin-top:0; }
  .toc-link{
    display:block;
    font-size:.87rem;
    color:var(--color-ink-soft);
    padding:.3rem 0 .3rem .05rem;
    text-decoration:none;
    border-left:2px solid transparent;
    padding-left:.6rem;
    transition:color .15s, border-color .15s;
  }
  .toc-link:hover{ color:var(--color-ink); border-left-color:var(--color-gold); }

  @media (min-width:992px){
    .toc-sticky{ position:sticky; top:1.5rem; max-height:calc(100vh - 3rem); overflow-y:auto; }
  }

  /* ---------- Categorías de sección ---------- */
  .section-heading{
    font-family:var(--font-display);
    font-size:1.5rem;
    color:var(--color-ink);
    margin:2.4rem 0 1rem;
    padding-bottom:.5rem;
    border-bottom:2px solid var(--color-gold);
    display:flex; align-items:baseline; gap:.6rem;
    scroll-margin-top:1rem;
  }
  .section-heading .count-badge{
    font-family:var(--font-mono);
    font-size:.72rem;
    color:var(--color-ink-soft);
    font-weight:400;
  }
  .section-heading:first-child{ margin-top:0; }

  /* ---------- Acordeón FAQ ---------- */
  .accordion-item{
    background:var(--color-panel);
    border:1px solid var(--color-border);
    border-radius:8px !important;
    margin-bottom:.65rem;
    overflow:hidden;
    scroll-margin-top:5.5rem;
  }
  .accordion-button{
    font-family:var(--font-body);
    font-weight:600;
    font-size:.98rem;
    color:var(--color-ink);
    background:var(--color-panel);
    gap:.65rem;
  }
  .accordion-button:not(.collapsed){
    background:var(--color-bg-alt);
    color:var(--color-ink);
    box-shadow:inset 0 -1px 0 var(--color-border);
  }
  .accordion-button:focus{ box-shadow:0 0 0 3px rgba(201,162,39,.35); }
  .accordion-button::after{ flex-shrink:0; }
  .accordion-body{
    font-size:.95rem;
    color:#333c50;
    line-height:1.62;
  }
  .accordion-body p:last-child{ margin-bottom:0; }
  .accordion-body code{
    font-family:var(--font-mono);
    background:var(--color-bg-alt);
    padding:.1em .35em;
    border-radius:4px;
    color:var(--color-red);
    font-size:.85em;
  }

  .badge-tag{
    font-family:var(--font-mono);
    font-size:.63rem;
    letter-spacing:.05em;
    text-transform:uppercase;
    padding:.28rem .55rem;
    border-radius:20px;
    font-weight:700;
  }
  .badge-verifactu{ background:rgba(62,124,89,.12); color:var(--color-green); }
  .badge-facturae{ background:rgba(27,42,74,.1); color:var(--color-ink); }
  .badge-normativa{ background:rgba(161,61,61,.1); color:var(--color-red); }
  .badge-general{ background:rgba(201,162,39,.16); color:var(--color-gold-dark); }

  .faq-figure{
    background:var(--color-bg-alt);
    border:1px solid var(--color-border);
    border-radius:8px;
    padding:1rem;
    margin:.9rem 0;
  }
  .faq-figure figcaption{
    font-family:var(--font-mono);
    font-size:.72rem;
    color:var(--color-ink-soft);
    margin-top:.5rem;
    text-align:center;
  }

  .no-results{
    display:none;
    text-align:center;
    padding:3rem 1rem;
    color:var(--color-ink-soft);
  }
  .no-results.show{ display:block; }

  footer{
    border-top:1px solid var(--color-border);
    margin-top:3rem;
    padding:1.75rem 0;
    color:var(--color-ink-soft);
    font-size:.82rem;
  }
  footer .disclaimer{
    font-family:var(--font-mono);
    font-size:.72rem;
  }

  /* focus visibility */
  a:focus-visible, button:focus-visible, input:focus-visible{
    outline:2px solid var(--color-gold-dark);
    outline-offset:2px;
  }

  @media (prefers-reduced-motion:reduce){
    *{ transition:none !important; }
  }
