/* ==========================================================================
   NorTK Documentation Editorial Theme (sphinx_rtd_theme override)
   Identidad: Infraestructura Crítica, Soberanía Digital y Claridad Editorial
   Diseño Editorial Formal: Tipografía Amable, Legibilidad y Amplitud Fluida
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@500;600;700;800;900&family=Red+Hat+Text:ital,wght@0,400;0,500;0,600;0,700;1,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap');

:root {
   /* Paleta Corporativa NorTK */
   --nortk-bg-night: #080b11;
   --nortk-bg-sidebar: #0e1420;
   --nortk-bg-sidebar-active: #151f30;
   --nortk-bg-subnav: #0b1018;
   --nortk-card-bg: #121a28;

   /* Colores de Lectura Editorial */
   --nortk-text-title: #0a0e17;
   --nortk-text-body: #1e293b;
   --nortk-text-muted: #64748b;
   --nortk-text-light: #f8fafc;
   --nortk-border-soft: #e2e8f0;
   --nortk-border-subtle: #f1f5f9;

   /* Acentos de Marca */
   --nortk-green: #00ff41;       /* Verde terminal */
   --nortk-green-glow: rgba(0, 255, 65, 0.22);
   --nortk-indigo: #4f46e5;      /* Índigo formal */
   --nortk-cyan: #06b6d4;        /* Cyan tecnológico */
   --nortk-sapphire: #0284c7;    /* Azul zafiro para enlaces */
   --nortk-amber: #d97706;       /* Ámbar advertencias */
   --nortk-red: #dc2626;         /* Rojo alertas críticas */

   /* Tipografías Oficiales */
   --nortk-font-display: 'Red Hat Display', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
   --nortk-font-text: 'Red Hat Text', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
   --nortk-font-mono: 'JetBrains Mono', "Fira Code", monospace;
}

/* --------------------------------------------------------------------------
   Lienzo Principal y Medida de Lectura Editorial
   -------------------------------------------------------------------------- */
.wy-nav-content-wrap {
   background-color: #ffffff !important;
   min-height: 100vh !important;
}

.wy-nav-content {
   max-width: 1400px !important;
   width: 100% !important;
   height: auto !important;
   margin: 0 !important;
   padding: 2.2rem 3.5rem 5rem 3.5rem !important;
   background: #ffffff !important;
}

/* --------------------------------------------------------------------------
   Tipografía Editorial de Alto Confort Visual
   -------------------------------------------------------------------------- */
body, .rst-content {
   font-family: var(--nortk-font-text);
   color: var(--nortk-text-body);
   font-size: 16.5px;
   line-height: 1.68;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
}

/* Acotación editorial para párrafos y listas (anchura óptima de lectura) */
.rst-content p,
.rst-content > ul,
.rst-content > ol,
.rst-content .admonition p {
   max-width: 90ch;
}

/* Encabezados Jerárquicos */
h1, h2, h3, h4, h5, h6 {
   font-family: var(--nortk-font-display);
   color: var(--nortk-text-title);
   letter-spacing: -0.02em;
   text-transform: none !important; /* Prohibición estricta de mayúsculas sostenidas */
}

.rst-content h1 {
   font-weight: 800 !important;
   font-size: 2.15rem !important;
   letter-spacing: -0.03em !important;
   line-height: 1.25 !important;
   border-bottom: 2px solid var(--nortk-border-soft) !important;
   padding-bottom: 0.55rem !important;
   margin-top: 0.5rem !important;
   margin-bottom: 1.2rem !important;
}

.rst-content h2 {
   font-size: 1.5rem !important;
   font-weight: 700 !important;
   letter-spacing: -0.02em !important;
   line-height: 1.3 !important;
   border-bottom: 1px solid var(--nortk-border-subtle) !important;
   padding-bottom: 0.4rem !important;
   margin-top: 2.2rem !important;
   margin-bottom: 0.85rem !important;
}

.rst-content h3 {
   font-size: 1.22rem !important;
   font-weight: 700 !important;
   line-height: 1.35 !important;
   margin-top: 1.6rem !important;
   margin-bottom: 0.55rem !important;
}

.rst-content p {
   font-size: 1.02rem !important;
   line-height: 1.68 !important;
   color: #334155 !important;
   margin-bottom: 1rem !important;
}

.rst-content ul,
.rst-content ol {
   margin-bottom: 1rem !important;
}

.rst-content ul > li,
.rst-content ol > li {
   font-size: 1.02rem !important;
   line-height: 1.62 !important;
   color: #334155 !important;
   margin-bottom: 0.35rem !important;
}

.rst-content strong,
.rst-content b {
   color: #0f172a !important;
   font-weight: 600 !important;
}

/* Enlaces editoriales */
.rst-content a {
   color: var(--nortk-sapphire) !important;
   text-decoration: none !important;
   font-weight: 500 !important;
   transition: color 0.15s ease, text-decoration 0.15s ease !important;
}

.rst-content a:hover {
   color: #0369a1 !important;
   text-decoration: underline !important;
}

/* Enlaces del toctree interno */
.rst-content .toctree-wrapper p.caption {
   font-family: var(--nortk-font-display) !important;
   font-weight: 700 !important;
   font-size: 1.15rem !important;
   color: var(--nortk-text-title) !important;
   margin-top: 1.8rem !important;
   margin-bottom: 0.75rem !important;
   padding-bottom: 0.35rem !important;
   border-bottom: 1px solid var(--nortk-border-soft) !important;
   text-transform: none !important;
}

.rst-content .toctree-wrapper ul {
   margin-top: 0.5rem !important;
   margin-bottom: 1.5rem !important;
   padding-left: 1.5rem !important;
}

.rst-content .toctree-wrapper li {
   margin-bottom: 0.4rem !important;
   line-height: 1.58 !important;
}

/* Ancla de enlace al encabezado */
.rst-content .headerlink {
   color: #cbd5e1 !important;
   font-weight: normal !important;
   padding-left: 0.4rem !important;
   transition: color 0.15s ease !important;
}

.rst-content .headerlink:hover {
   color: var(--nortk-sapphire) !important;
   text-decoration: none !important;
}

/* --------------------------------------------------------------------------
   Miga de Pan (Breadcrumbs)
   -------------------------------------------------------------------------- */
.wy-breadcrumbs {
   margin-bottom: 1.25rem !important;
   padding-bottom: 0.6rem !important;
   border-bottom: 1px solid var(--nortk-border-subtle) !important;
}

.wy-breadcrumbs li {
   font-size: 0.88rem !important;
   color: var(--nortk-text-muted) !important;
}

.wy-breadcrumbs li a {
   color: #475569 !important;
   font-weight: 500 !important;
   transition: color 0.15s ease !important;
}

.wy-breadcrumbs li a:hover {
   color: var(--nortk-sapphire) !important;
}

/* --------------------------------------------------------------------------
   Barra Lateral (Sidebar NorTK Midnight)
   -------------------------------------------------------------------------- */
.wy-nav-side {
   background-color: var(--nortk-bg-sidebar) !important;
   box-shadow: 3px 0 16px rgba(0, 0, 0, 0.22);
}

.wy-side-nav-search {
   background-color: var(--nortk-bg-night) !important;
   border-bottom: 1px solid rgba(99, 102, 241, 0.18);
   padding: 1.5rem 1.35rem 1.2rem 1.35rem !important;
   text-align: center;
}

.wy-side-nav-search > a {
   color: var(--nortk-text-light) !important;
   font-family: var(--nortk-font-display) !important;
   font-weight: 700 !important;
   font-size: 0.98rem !important;
   letter-spacing: -0.01em !important;
   display: block !important;
   margin-bottom: 0.65rem !important;
   text-transform: none !important;
}

.wy-side-nav-search img.logo {
   max-width: 108px !important;
   max-height: 82px !important;
   width: auto !important;
   height: auto !important;
   margin: 0.3rem auto 0.8rem auto !important;
   display: block !important;
   filter: drop-shadow(0 2px 10px var(--nortk-green-glow));
}

.wy-side-nav-search input[type="text"] {
   background-color: #111724 !important;
   border: 1px solid rgba(255, 255, 255, 0.14) !important;
   color: #f8fafc !important;
   font-family: var(--nortk-font-text) !important;
   border-radius: 6px !important;
   padding: 0.55rem 0.85rem !important;
   font-size: 0.88rem !important;
   box-shadow: none !important;
   width: 100% !important;
   transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

.wy-side-nav-search input[type="text"]::placeholder {
   color: #64748b !important;
}

.wy-side-nav-search input[type="text"]:focus {
   border-color: var(--nortk-green) !important;
   box-shadow: 0 0 0 2px var(--nortk-green-glow) !important;
   outline: none !important;
}

/* --------------------------------------------------------------------------
   Encabezados de Grupo en el Menú (Separación Equilibrada y Amable)
   -------------------------------------------------------------------------- */
.wy-menu-vertical p.caption {
   color: #38bdf8 !important;
   font-family: var(--nortk-font-display) !important;
   font-weight: 700 !important;
   font-size: 0.85rem !important;
   letter-spacing: 0.04em !important;
   text-transform: none !important; /* Prohibidas mayúsculas sostenidas */
   margin: 2.2rem 0 1rem 0 !important;
   padding: 1rem 1.35rem 0.5rem 1.35rem !important;
   border-top: 1px solid rgba(255, 255, 255, 0.09) !important;
}

.wy-menu-vertical p.caption:first-child {
   border-top: none !important;
   margin-top: 1.25rem !important;
   padding-top: 0 !important;
}

.wy-menu-vertical p.caption span.caption-text {
   display: block !important;
   padding-bottom: 0.35rem !important;
   border-bottom: 1px solid rgba(56, 189, 248, 0.22) !important;
}

/* Espaciado de listas del menú */
.wy-menu-vertical ul {
   margin-bottom: 1.6rem !important;
}

.wy-menu-vertical li.toctree-l1 {
   margin-bottom: 0.25rem !important;
}

.wy-menu-vertical li.toctree-l1:first-child {
   margin-top: 0.65rem !important; /* Separación amplia respecto al título superior */
}

/* Enlaces base del menú */
.wy-menu-vertical a {
   color: #cbd5e1 !important;
   font-size: 0.88rem !important;
   padding: 0.5rem 1.35rem !important;
   border: none !important;
   border-left: 4px solid transparent !important;
   line-height: 1.45 !important;
   transition: color 0.15s ease, background-color 0.15s ease !important;
}

.wy-menu-vertical a:hover {
   background-color: rgba(99, 102, 241, 0.14) !important;
   color: #ffffff !important;
   border-left: 4px solid rgba(99, 102, 241, 0.5) !important;
}

/* --------------------------------------------------------------------------
   Menú Activo y Submenús
   -------------------------------------------------------------------------- */
.wy-menu-vertical li.current {
   background: transparent !important;
}

.wy-menu-vertical li.current > a,
.wy-menu-vertical li.on a {
   background-color: var(--nortk-bg-sidebar-active) !important;
   color: #ffffff !important;
   border-left: 4px solid var(--nortk-green) !important;
   font-weight: 700 !important;
   padding: 0.55rem 1.35rem !important;
}

/* Contenedor del submenú abierto */
.wy-menu-vertical li.current ul {
   background-color: var(--nortk-bg-subnav) !important;
   padding: 0.4rem 0 !important;
   margin: 0 0 0.5rem 1.35rem !important;
   border-left: 2px solid rgba(99, 102, 241, 0.3) !important;
}

/* Enlaces del submenú (toctree-l2) */
.wy-menu-vertical li.current li.toctree-l2 {
   background: transparent !important;
   margin: 0 !important;
}

.wy-menu-vertical li.current li.toctree-l2 a {
   color: #94a3b8 !important;
   background: transparent !important;
   border: none !important;
   font-size: 0.84rem !important;
   padding: 0.35rem 0.85rem 0.35rem 1rem !important;
   display: block !important;
   line-height: 1.4 !important;
   transition: color 0.15s ease, background-color 0.15s ease !important;
}

.wy-menu-vertical li.current li.toctree-l2 a:hover {
   color: #ffffff !important;
   background-color: rgba(99, 102, 241, 0.2) !important;
}

/* Subsección activa */
.wy-menu-vertical li.current li.toctree-l2.current > a {
   color: var(--nortk-green) !important;
   font-weight: 600 !important;
   background-color: rgba(0, 255, 65, 0.1) !important;
}

/* Botón expandir/colapsar */
.wy-menu-vertical span.toctree-expand {
   color: #64748b !important;
}

.wy-menu-vertical li.current > a span.toctree-expand {
   color: #94a3b8 !important;
}

/* --------------------------------------------------------------------------
   Bloques de Código y Terminal
   -------------------------------------------------------------------------- */
.rst-content code,
.rst-content tt.literal {
   font-family: var(--nortk-font-mono) !important;
   font-size: 0.88em !important;
   background-color: #f1f5f9 !important;
   color: #0f172a !important;
   border: 1px solid #cbd5e1 !important;
   padding: 0.15em 0.42em !important;
   border-radius: 4px !important;
}

.rst-content div[class^='highlight'] pre,
.rst-content .highlight pre {
   font-family: var(--nortk-font-mono) !important;
   font-size: 0.89rem !important;
   line-height: 1.55 !important;
   background-color: #0a0e17 !important;
   color: #e2e8f0 !important;
   border: 1px solid #1e293b !important;
   border-radius: 8px !important;
   padding: 0.95rem 1.25rem !important;
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12) !important;
}

.rst-content .highlight {
   background: transparent !important;
   margin-bottom: 1.25rem !important;
}

/* --------------------------------------------------------------------------
   Admoniciones Corporativas (Cajas Editoriales de Aviso)
   -------------------------------------------------------------------------- */
.rst-content .admonition {
   border-radius: 8px !important;
   border: 1px solid var(--nortk-border-soft) !important;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03) !important;
   margin-bottom: 1.25rem !important;
   overflow: hidden !important;
}

.rst-content .admonition .admonition-title {
   font-family: var(--nortk-font-display) !important;
   font-weight: 700 !important;
   font-size: 0.92rem !important;
   letter-spacing: 0.01em !important;
   padding: 0.48rem 1rem !important;
   text-transform: none !important; /* Prohibidas mayúsculas sostenidas */
}

.rst-content .admonition p {
   padding: 0 1rem !important;
   margin-bottom: 0.75rem !important;
}

.rst-content .admonition p:last-child {
   margin-bottom: 0.75rem !important;
}

/* Nota */
.rst-content .admonition.note {
   border-left: 5px solid var(--nortk-cyan) !important;
}
.rst-content .admonition.note .admonition-title {
   background-color: rgba(6, 182, 212, 0.08) !important;
   color: #0891b2 !important;
}

/* Consejo / Tip */
.rst-content .admonition.tip,
.rst-content .admonition.hint {
   border-left: 5px solid #10b981 !important;
}
.rst-content .admonition.tip .admonition-title,
.rst-content .admonition.hint .admonition-title {
   background-color: rgba(16, 185, 129, 0.08) !important;
   color: #059669 !important;
}

/* Importante */
.rst-content .admonition.important {
   border-left: 5px solid var(--nortk-indigo) !important;
}
.rst-content .admonition.important .admonition-title {
   background-color: rgba(79, 70, 229, 0.08) !important;
   color: #4f46e5 !important;
}

/* Advertencia / Warning */
.rst-content .admonition.warning {
   border-left: 5px solid var(--nortk-amber) !important;
}
.rst-content .admonition.warning .admonition-title {
   background-color: rgba(217, 119, 6, 0.09) !important;
   color: #b45309 !important;
}

/* Precaución / Peligro */
.rst-content .admonition.caution,
.rst-content .admonition.danger,
.rst-content .admonition.error {
   border-left: 5px solid var(--nortk-red) !important;
}
.rst-content .admonition.caution .admonition-title,
.rst-content .admonition.danger .admonition-title,
.rst-content .admonition.error .admonition-title {
   background-color: rgba(220, 38, 38, 0.08) !important;
   color: #dc2626 !important;
}

/* --------------------------------------------------------------------------
   Tablas Editoriales Formales
   -------------------------------------------------------------------------- */
.rst-content table.docutils {
   border: 1px solid var(--nortk-border-soft) !important;
   border-radius: 8px !important;
   overflow: hidden !important;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03) !important;
   margin-bottom: 1.5rem !important;
   width: 100% !important;
}

.rst-content table.docutils thead th,
.rst-content table.docutils thead th p {
   background-color: var(--nortk-bg-sidebar) !important;
   color: #ffffff !important;
   font-family: var(--nortk-font-display) !important;
   font-weight: 700 !important;
   font-size: 0.92rem !important;
   letter-spacing: 0.01em !important;
   padding: 0.85rem 1.1rem !important;
   border: none !important;
   margin-bottom: 0 !important;
   text-transform: none !important;
}

.rst-content table.docutils tbody td {
   padding: 0.75rem 1.1rem !important;
   font-size: 0.95rem !important;
   line-height: 1.55 !important;
   border-color: var(--nortk-border-subtle) !important;
   color: #1e293b !important;
}

.rst-content table.docutils tbody td p {
   margin-bottom: 0 !important;
   color: inherit !important;
}

.rst-content table.docutils tbody tr:nth-child(even) {
   background-color: #f8fafc !important;
}

.rst-content table.docutils tbody tr:hover {
   background-color: #f1f5f9 !important;
}

/* --------------------------------------------------------------------------
   Pie de Página y Navegación
   -------------------------------------------------------------------------- */
footer hr {
   border-top: 1px solid var(--nortk-border-soft) !important;
   margin-top: 2.2rem !important;
}

footer {
   font-size: 0.86rem !important;
   color: var(--nortk-text-muted) !important;
}

/* Botones de navegación siguiente/anterior */
.rst-footer-buttons .btn {
   font-family: var(--nortk-font-text) !important;
   font-size: 0.88rem !important;
   border-radius: 6px !important;
   padding: 0.5rem 1rem !important;
}

.rst-footer-buttons .btn-neutral {
   color: #334155 !important;
   background: #f1f5f9 !important;
   border: 1px solid var(--nortk-border-soft) !important;
   transition: background 0.15s ease, color 0.15s ease !important;
}

.rst-footer-buttons .btn-neutral:hover {
   background: #e2e8f0 !important;
   color: #0f172a !important;
}

/* ==========================================================================
   Estilos de Impresión y Generación PDF (WeasyPrint/Paged Media)
   ========================================================================== */

@page {
   size: letter;
   margin: 22mm 18mm 22mm 18mm;

   @top-left {
      content: "NorTK · Guía de Estilo de Documentación";
      font-family: 'Red Hat Text', sans-serif;
      font-size: 8pt;
      color: #64748b;
   }

   @top-right {
      content: "v0.1.0";
      font-family: 'Red Hat Text', sans-serif;
      font-size: 8pt;
      color: #64748b;
   }

   @bottom-left {
      content: "https://nortk.org";
      font-family: 'Red Hat Text', sans-serif;
      font-size: 8pt;
      color: #64748b;
   }

   @bottom-right {
      content: "Página " counter(page) " de " counter(pages);
      font-family: 'Red Hat Text', sans-serif;
      font-size: 8pt;
      font-weight: 600;
      color: #0f172a;
   }
}

@page :first {
   margin-top: 25mm;
   margin-bottom: 25mm;
   @top-left { content: none; }
   @top-right { content: none; }
   @bottom-left { content: none; }
   @bottom-right { content: none; }
}

@media print {
   /* Desbloquear altura y posicionamiento para paginación continua */
   html, body {
      height: auto !important;
      min-height: auto !important;
      overflow: visible !important;
      position: static !important;
      background: #ffffff !important;
      color: #1e293b !important;
      font-size: 10.5pt !important;
      line-height: 1.55 !important;
   }

   .wy-grid-for-nav {
      position: static !important;
      width: 100% !important;
      height: auto !important;
      min-height: auto !important;
      overflow: visible !important;
      display: block !important;
      background: #ffffff !important;
   }

   /* Ocultar elementos de navegación en pantalla y barras laterales */
   .wy-nav-side,
   .wy-side-scroll,
   .wy-nav-top,
   .rst-versions,
   .wy-breadcrumbs,
   footer,
   .rst-footer-buttons,
   .rst-content .headerlink,
   .wy-side-nav-search {
      display: none !important;
   }

   .wy-nav-content-wrap {
      margin: 0 !important;
      position: static !important;
      width: 100% !important;
      max-width: 100% !important;
      height: auto !important;
      min-height: auto !important;
      overflow: visible !important;
      padding: 0 !important;
      background: #ffffff !important;
      float: none !important;
   }

   .wy-nav-content {
      margin: 0 !important;
      padding: 0 !important;
      width: 100% !important;
      max-width: 100% !important;
      height: auto !important;
      min-height: auto !important;
      overflow: visible !important;
      background: #ffffff !important;
      float: none !important;
   }

   .rst-content {
      width: 100% !important;
      max-width: 100% !important;
      float: none !important;
   }

   .rst-content p,
   .rst-content > ul,
   .rst-content > ol,
   .rst-content .admonition p {
      max-width: 100% !important;
   }

   /* Portada y título principal */
   .rst-content > section > h1:first-child {
      font-size: 26pt !important;
      color: #0a0e17 !important;
      border-bottom: 3px solid #0f172a !important;
      padding-bottom: 12pt !important;
      margin-top: 15pt !important;
      margin-bottom: 16pt !important;
   }

   /* Salto de página antes de cada capítulo principal */
   .toctree-wrapper.compound > section {
      break-before: page !important;
      page-break-before: always !important;
      padding-top: 8pt !important;
   }

   /* Evitar que los títulos queden huérfanos al final de página */
   h1, h2, h3, h4, h5, h6 {
      break-after: avoid !important;
      page-break-after: avoid !important;
   }

   /* Evitar cortes indeseados dentro de bloques de código, tablas y avisos */
   .rst-content div[class^='highlight'],
   .rst-content pre,
   .rst-content table.docutils,
   .rst-content .admonition,
   .rst-content figure {
      break-inside: avoid !important;
      page-break-inside: avoid !important;
   }

   /* Ajuste de bloques de código para impresión */
   .rst-content div[class^='highlight'] pre,
   .rst-content .highlight pre {
      background-color: #0f172a !important;
      color: #f1f5f9 !important;
      font-size: 8.5pt !important;
      line-height: 1.45 !important;
      padding: 8pt 10pt !important;
      border: 1px solid #334155 !important;
      white-space: pre-wrap !important;
      word-break: break-all !important;
   }

   .rst-content code,
   .rst-content tt.literal {
      font-size: 8.5pt !important;
      border: 1px solid #cbd5e1 !important;
      background-color: #f8fafc !important;
      color: #0f172a !important;
   }

   /* Ajuste de tablas para impresión */
   .rst-content table.docutils {
      font-size: 9pt !important;
      margin-bottom: 14pt !important;
   }

   .rst-content table.docutils thead th {
      background-color: #1e293b !important;
      color: #ffffff !important;
      font-size: 9pt !important;
      padding: 6pt 8pt !important;
   }

   .rst-content table.docutils tbody td {
      padding: 5pt 8pt !important;
      font-size: 8.8pt !important;
   }

   /* Admoniciones en PDF */
   .rst-content .admonition {
      margin-bottom: 12pt !important;
      font-size: 9.5pt !important;
   }

   .rst-content .admonition .admonition-title {
      font-size: 9.5pt !important;
      padding: 4pt 8pt !important;
   }

   .rst-content .admonition p {
      padding: 0 8pt !important;
      margin-bottom: 6pt !important;
   }
}
