JairoDanielMT's picture
Update app/templates/base.html.j2
858282d verified
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>{{ doc.metadata.description or "Documentación de Script" }}</title>
{# Opcional: si QUIERES forzar Inter en modo PDF standalone, descomenta esto
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
#}
<style>
/* ----------------------------------------
VARIABLES DE TEMA (sobrescribibles)
Puedes sobreescribir estas en la página host:
.doc-page {
--doc-color-text: #e5e7eb;
--doc-color-muted: #9ca3af;
...
}
----------------------------------------- */
.doc-page {
--doc-font-family: inherit;
--doc-font-size: 15px;
--doc-line-height: 1.85;
--doc-color-bg: transparent;
--doc-color-text: #111827;
--doc-color-muted: #6b7280;
--doc-color-muted-soft: #9ca3af;
--doc-color-border: #e5e7eb;
--doc-color-border-soft: #d1d5db;
--doc-color-heading-main: #0f172a;
--doc-color-heading: #111827;
--doc-color-heading-sub: #374151;
--doc-color-accent: #1d4ed8;
--doc-color-accent-soft: #2563eb;
--doc-color-surface: #f9fafb;
--doc-color-table-header: #eff2f7;
--doc-color-summary-bg: #eff6ff;
}
/* ----------------------------------------
CONFIGURACIÓN GLOBAL LIMITADA
(NO tocamos body, solo lo limpiamos un poco)
----------------------------------------- */
body {
margin: 0;
background: transparent;
}
/* Si usas modo PDF puedes mantener esto (wkhtmltopdf/weasyprint lo respetan).
Si solo es vista web incrustada, puedes incluso quitar @page. */
@page {
size: A4;
margin: 2.54cm;
}
/* Contenedor principal del documento */
.doc-page {
font-family: var(--doc-font-family);
font-size: var(--doc-font-size);
line-height: var(--doc-line-height);
color: var(--doc-color-text);
background: var(--doc-color-bg);
}
/* ----------------------------------------
ENCABEZADO / FOOTER
----------------------------------------- */
.doc-header {
margin-bottom: 16px;
padding-bottom: 10px;
border-bottom: 1px solid var(--doc-color-border);
}
.doc-header-meta {
font-size: 11px;
color: var(--doc-color-muted);
margin-top: 4px;
}
.doc-footer {
margin-top: 32px;
font-size: 11px;
color: var(--doc-color-muted-soft);
text-align: right;
}
/* ----------------------------------------
TITULOS (scopeados al doc)
----------------------------------------- */
.doc-page h1,
.doc-page h2,
.doc-page h3,
.doc-page h4 {
font-family: inherit; /* No forzamos fuente */
margin-bottom: 6px;
font-weight: 600;
}
.doc-page h1 {
font-size: 22px;
color: var(--doc-color-heading-main);
letter-spacing: 0.03em;
text-transform: uppercase;
margin-top: 0;
}
.doc-page h2 {
font-size: 16px;
color: var(--doc-color-heading);
border-left: 3px solid var(--doc-color-accent);
padding-left: 10px;
margin-top: 24px;
margin-bottom: 8px;
}
.doc-page h3 {
font-size: 14px;
color: var(--doc-color-heading);
margin-top: 18px;
margin-bottom: 4px;
}
.doc-page h4 {
font-size: 13px;
color: var(--doc-color-heading-sub);
margin-top: 12px;
margin-bottom: 4px;
}
.doc-page p {
margin: 4px 0 10px;
}
.doc-page .muted {
color: var(--doc-color-muted);
font-size: 11px;
}
.doc-page .section {
margin-top: 16px;
}
/* ----------------------------------------
TARJETAS
----------------------------------------- */
.doc-page .card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 10px;
margin: 14px 0;
}
.doc-page .card {
border: 1px solid var(--doc-color-border);
border-radius: 6px;
padding: 12px 14px;
background: var(--doc-color-surface);
}
.doc-page .card-title {
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--doc-color-heading-sub);
margin-bottom: 6px;
}
/* ----------------------------------------
TABLAS
----------------------------------------- */
.doc-page table {
width: 100%;
border-collapse: collapse;
margin: 12px 0 16px;
font-size: 12px;
}
.doc-page thead {
display: table-header-group;
}
.doc-page tfoot {
display: table-footer-group;
}
.doc-page tr {
page-break-inside: avoid;
}
.doc-page th,
.doc-page td {
border: 1px solid var(--doc-color-border);
padding: 6px 8px;
vertical-align: top;
}
.doc-page th {
background: var(--doc-color-table-header);
font-weight: 600;
text-transform: uppercase;
font-size: 10px;
letter-spacing: 0.06em;
color: var(--doc-color-heading-sub);
}
.doc-page tr:nth-child(even) td {
background: var(--doc-color-surface);
}
/* ----------------------------------------
LISTAS
----------------------------------------- */
.doc-page ul {
padding-left: 20px;
margin: 6px 0 8px;
}
.doc-page ul li {
margin-bottom: 3px;
}
/* ----------------------------------------
PILLS
----------------------------------------- */
.doc-page .pill {
display: inline-block;
padding: 3px 8px;
border-radius: 999px;
background: var(--doc-color-border);
font-size: 10px;
margin-right: 4px;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--doc-color-heading-sub);
}
/* ----------------------------------------
SUMMARY BOX
----------------------------------------- */
.doc-page .summary-box {
border-left: 3px solid var(--doc-color-accent-soft);
background: var(--doc-color-summary-bg);
padding: 10px 12px;
border-radius: 4px;
font-size: 12px;
margin: 10px 0 14px;
}
.doc-page .summary-title {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--doc-color-accent-soft);
margin-bottom: 4px;
}
/* ----------------------------------------
UTILIDADES
----------------------------------------- */
.doc-page .flex {
display: flex;
}
.doc-page .justify-between {
justify-content: space-between;
}
.doc-page .items-center {
align-items: center;
}
.doc-page .text-right {
text-align: right;
}
.doc-page .badge {
display: inline-block;
padding: 2px 8px;
border-radius: 999px;
font-size: 10px;
border: 1px solid var(--doc-color-border-soft);
color: var(--doc-color-heading-sub);
background: var(--doc-color-surface);
}
</style>
</head>
<body>
<div class="doc-page">
{% block content %}{% endblock %}
<p class="doc-footer">
Generado automáticamente {{ generated_at }}
</p>
</div>
</body>
</html>