%% ----------------------------
%% 1. CONFIGURACIÓN BÁSICA DEL DOCUMENTO
%% ----------------------------
\ifdefined\HCode
    \usepackage[spanish,english]{babel} % NO CAMBIAR: make4ht necesita english
    \usepackage[T1]{fontenc}            % Para fuentes con acentos correctamente
    \usepackage[utf8]{inputenc}         % Si usas LaTeX clásico
\else
    \usepackage[utf8]{inputenc}         % Si usas LaTeX clásico
    \usepackage[spanish,english, es-noquoting]{babel}
    \usepackage[autostyle, spanish = mexican]{csquotes} % Manejo de comillas
    \MakeOuterQuote{"}
    \usepackage[T1]{fontenc}            % Para fuentes con acentos correctamente
\fi

%% ----------------------------
%% 2. PAQUETES ESENCIALES
%% ----------------------------
\usepackage{float}                      % Posicionamiento de figuras/tablas
\usepackage{lipsum}                     % Texto de relleno
\usepackage{multicol}                   % Múltiples columnas
\usepackage{iftex}                      % Detección del motor de compilación
\usepackage[numbers]{natbib}            % Bibliografía [1],[2]
\usepackage{microtype}                  % Mejoras tipográficas
\usepackage{xparse}                     % Definición de comandos avanzados
\usepackage{xargs}                      % Más opciones para comandos
\usepackage{environ}                    % Entornos personalizados
\usepackage{etoolbox}                   % Herramientas para programación
\usepackage[table]{xcolor}              % Colores en tablas
\usepackage{colortbl}                   % Colores en tablas (complementario)
\usepackage{cancel}                     % Para tachar términos matemáticos
\usepackage{bbm}                        % Símbolos matemáticos especiales
\ifdefined\HCode
\else %solo PDFLatex
\usepackage[counter-format=se.qu,counter-within=section]{exsheets}
\DeclareTranslation{english}{exsheets-exercise-name}{\textcolor{tverde}{Ejercicio}}
 \DeclareTranslation{english}{exsheets-question-name}{\textcolor{tverde}{Pregunta}}
 \DeclareTranslation{english}{exsheets-solution-name}{\textcolor{tverde}{Solución}}
\SetupExSheets{
	question/pre-body-hook = {\normalfont},
	solution/pre-hook = {\par\medskip},
}
\fi


%% ----------------------------
%% 3. CONFIGURACIÓN DE TEXTO Y FUENTES
%% ----------------------------
\ifdefined\HCode\else % Fuentes para pdf
\usepackage{pdfpages}
\usepackage{palatino,helvet}            % Fuentes principales
\usepackage{eulervm}                    % Fuente matemática
\fi
\usepackage[fixed]{fontawesome5}        % Iconos modernos
\usepackage{latexsym, stmaryrd}         % Símbolos matemáticos adicionales
\usepackage{mathtools}                  % Mejoras para matemáticas
\usepackage{amssymb, amsthm, amsmath}   % Paquetes AMS estándar

%% ----------------------------
%% 4. FORMATO Y DISEÑO
%% ----------------------------
\usepackage[labelfont=bf, font=small]{caption} % Configuración de caption
\usepackage{subcaption}                 % Subfiguras
\usepackage{enumitem}                   % Personalización de listas
\setlist[enumerate]{itemsep=5pt}        % Espaciado en listas

%% ----------------------------
%% 5. ELEMENTOS GRÁFICOS
%% ----------------------------
\usepackage{tikz}                       % Gráficos vectoriales
\usetikzlibrary{matrix}                 % Funcionalidad adicional para TikZ
\usepackage{adjustbox}                  % Ajuste de cajas
\usepackage{changepage}                 % Ajuste de márgenes
\usepackage{array, booktabs}            % Tablas profesionales
\usepackage{multirow}                   % Celdas multi-fila
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} % Columna centrada

%% ----------------------------
%% 6. HIPERVÍNCULOS Y REFERENCIAS
%% ----------------------------
\usepackage{hyperref}                   % Hipervínculos
\hypersetup{
    colorlinks=true,
    urlcolor=ligas,
    linkcolor=ligas,
    citecolor=ligas,
    hyperindex=true,
    linktoc=all
}

%% ----------------------------
%% 7. GEOMETRÍA Y MAQUETACIÓN
%% ----------------------------
\usepackage[a4paper, top=2cm, bottom=2cm, left=1.5cm, right=1.5cm, headsep=10pt]{geometry}
%% parskip: 12pt en PDF, 0pt en make4ht (el espaciado HTML lo controla el CSS)
\ifdefined\HCode
    \setlength{\parskip}{0pt}
\else
    \setlength{\parskip}{12pt}
\fi

%% ----------------------------
%% 10. DEFINICIÓN DE COLORES
%% ----------------------------

%% == Paleta principal Legrand-ITCR ==
%%    Ocho colores semánticos para los entornos.
%%    Todos los nombres con sufijo "L" son exclusivos de los entornos.
\definecolor{ocre}{RGB}{243,102,25}       % Naranja Legrand  — teoremas, lemas, ejercicios
\definecolor{azulL}{RGB}{28,108,196}      % Azul             — definiciones, proyectos
\definecolor{verdeL}{RGB}{38,145,65}      % Verde            — ejemplos
\definecolor{grisL}{RGB}{95,95,95}        % Gris             — corolarios, notas, notaciones
\definecolor{moradoL}{RGB}{100,30,155}    % Morado           — axiomas, conjeturas
\definecolor{tealL}{RGB}{0,140,130}       % Verde-azul       — aplicaciones, casos especiales
\definecolor{cafeL}{RGB}{120,75,40}       % Café             — historia, proyectos
\definecolor{rojoL}{RGB}{190,35,45}       % Rojo             — advertencias
\definecolor{fondoteoremaL}{RGB}{242,242,242}
\definecolor{barraejemploL}{RGB}{39,139,131}

%% == Colores funcionales (estructura, comandos, código) ==
\definecolor{blanco}{RGB}{255,255,255}
\definecolor{ligas}{RGB}{1,95,173}
\definecolor{rseccion}{rgb}{.0,.0,.3}
\definecolor{fgray}{rgb}{.3,.3,.3}
\definecolor{ffgray}{rgb}{.7,.7,.7}
\definecolor{tverde}{HTML}{176B3B}
\definecolor{torange}{HTML}{993C00}
\definecolor{fntGris}{rgb}{.3,.3,.3}
\definecolor{fntVerde}{RGB}{0,50,0}
%% == Colores para listings ==
\definecolor{mauve}{rgb}{0.58,0,0.82}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.99,0.99,0.99}
\definecolor{lstgray}{RGB}{251,251,251}
%% ----------------------------
%% PORTADA TIPOGRÁFICA CDI — SOLO PDF
%% Estilo "Printing Poetry" adaptado
%% Uso: \solopdf{\titleCDI}
%% ----------------------------
\ifdefined\HCode\else

\newdimen\drop  % registro de longitud para espaciado vertical

\newcommand*{\titleMG}{%
\begingroup
  \thispagestyle{empty}%
  \drop=0.10\textheight
  %
  \vspace*{\drop}
  %
  %% ── Bloque principal: alineación derecha (Printing Poetry) ──
  \begin{raggedleft}
    %
    %% Institución (arriba, pequeño, gris)
    {\fontfamily{phv}\fontsize{10}{12}\selectfont
     \textcolor{grisL}{INSTITUTO TECNOLÓGICO DE COSTA RICA}%
    }\\[0.4\baselineskip]
    {\fontfamily{phv}\fontsize{10}{8}\selectfont
     \textcolor{grisL}{Escuela de Matemática}%
    }\\[1.8\baselineskip]
    %
    %% Regla decorativa teal
    {\color{tealL}\rule{0.45\textwidth}{1.2pt}}\\[1.4\baselineskip]
    %
    %% Título: CÁLCULO (enorme, palatino)
    {\fontfamily{ppl}\fontseries{b}\fontsize{30}{32}\selectfont
     \textcolor{tealL}{MA0101\;\;\;}%
    }\\[0.6\baselineskip]
    %
    %% Subtítulo: DIFERENCIAL E INTEGRAL
    {\fontfamily{phv}\fontseries{b}\fontsize{62}{64}\selectfont
     \textcolor{black!70}{MATEMÁTICA GENERAL}%
    }\\[1.2\baselineskip]
    %
    %% Segunda regla (más fina, ocre)
    {\color{ocre}\rule{0.30\textwidth}{0.6pt}}\\[1.5\baselineskip]
    %
    %% Autores
    {\fontfamily{ppl}\fontsize{14}{17}\selectfont
     Reiman Acuña-Chacón %
    }\\[0.5\baselineskip]
    {\fontfamily{ppl}\fontsize{14}{17}\selectfont
     Walter Mora-Flores%
    }\\[0.5\baselineskip]
    {\fontfamily{ppl}\fontsize{14}{17}\selectfont
     Melvin Ramírez-Bogantes%
    }\par
    %
  \end{raggedleft}
  %
  \vfill
  %
  %% ── Pie: Revista + año, centrado ──
  \begin{center}
    {\color{ocre}\rule{0.6\textwidth}{0.5pt}}\\[0.8\baselineskip]
    {\fontfamily{phv}\fontsize{10}{8}\selectfont
     \textcolor{grisL}{Revista Matemática Educación e Internet}\\[0.3\baselineskip]
    \tt{\href{https://tecdigital.tec.ac.cr/servicios/revistamatematica/}{https://tecdigital.tec.ac.cr/servicios/revistamatematica}}%
    }\\[0.9\baselineskip]
    {\fontfamily{ppl}\fontseries{b}\fontsize{18}{20}\selectfont
     \textcolor{ocre}{2026}%
    }%
  \end{center}
  %
  \vspace*{\drop}
\endgroup}

\fi


%% ----------------------------
%% 11. COMANDOS PERSONALIZADOS
%% ----------------------------
\newcommand{\fhvb}[2]{{\fontfamily{phv}\fontseries{b}\fontsize{#1}{1}\selectfont{#2}}}
\newcommand{\fhv}[2]{{\fontfamily{phv}\fontsize{#1}{1}\selectfont{#2}}}
\newcommand{\fvnp}[1]{\fhvb{10}{#1}}
\newcommand{\fvn}[1]{\fhv{10}{#1}}
\newcommand{\fvntt}[1]{\fhv{9.5}{#1}}
\newcommandx{\fntg}[4][1=pag,2=9,3=n]{{\color{fntGris}\fontfamily{#1}\fontsize{#2}{1}\fontshape{#3}\selectfont{#4}}}
\newcommandx{\fnte}[4][1=phv,2=9,3=n]{{\color{fntVerde}\fontfamily{#1}\fontsize{#2}{1}\fontshape{#3}\selectfont{#4}}}
\newcommand{\ofvnp}[1]{\textcolor{torange}{\fvnp{#1}}}

\renewcommand{\tt}[1]{\textcolor{tverde}{\fvntt{#1}}}
\newcommand{\wtt}[1]{\textcolor{torange}{\fvntt{#1}}}

%% ----------------------------
%% 12. CONFIGURACIÓN DE SECCIONES
%% ----------------------------
\renewcommand{\thesection}{\arabic{section}.}
\renewcommand{\thesubsection}{\thesection\arabic{subsection}}
\renewcommand{\thesubsubsection}{\thesubsection\arabic{subsubsection}}




\newenvironment{ObjetivosEspecificos}{%
{\par\noindent\color{rseccion}\textbf{Objetivos Especificos:}\ \ignorespaces}}

\newenvironment{resumen}{%
{\par\noindent\textcolor{rseccion}{\textbf{Resumen:}}\ \ignorespaces}}


\newenvironment{palabrasclave}{%
{\par\noindent\textcolor{rseccion}{\textbf{Palabras Clave:}}\ \ignorespaces}}


\newenvironment{keywords}{%
{\par\noindent\textcolor{rseccion}{\textbf{Keywords:}}\ \ignorespaces}}




%%-- Titulo del documento-----------------
\makeatletter
\renewcommand{\maketitle}{%
    \begin{flushleft} % Alinea todo a la izquierda
        {\Large\bfseries \@title \par} % Título
        \vspace{1em} % Espacio entre título y autores
        {\normalsize \@author \par} % Autores
        \vspace{1em} % Espacio entre autores y fecha
        {\normalsize \@date \par} % Fecha
    \end{flushleft}
    \thispagestyle{empty} % Elimina el número de página en la primera página
}
\makeatother


%%========================================================================
%% 8. ENTORNOS PERSONALIZADOS
%%    Diseño inspirado en Legrand Orange Book, implementado con mdframed
%%    Compatible con make4ht (framemethod=default).
%%
%%    Categorías de caja (paralelo con LegrandOrangeBook.cls):
%%      A) tBox  — rectángulo completo           → teorema, proposicion
%%      B) dBox  — barra izquierda 4pt, sin bg   → definicion
%%         cBox  — barra izquierda 4pt, bg gris  → corolario
%%         eBox  — barra izquierda 4pt, bg color → actividad, ejercicio
%%      C) ■-box — barra 1pt + símbolo ■         → ejemplo, notacion
%%      D) barras medias (2–3pt)                  → lema, axiomas, conjetura,
%%                                                   aplicacion, casoespecial,
%%                                                   historia, proyecto, problema
%%      E) Círculo lateral                        → nota, advertencia
%%========================================================================

\usepackage[framemethod=default]{mdframed}

%% Estilo auxiliar sin bordes (para contenido limpio)
\mdfdefinestyle{mdframed-fondoblanco}{
    backgroundcolor=blanco,
    linewidth=0pt,
    topline=false, bottomline=false, rightline=false, leftline=false,
    leftmargin=0pt, rightmargin=0pt,
    innerleftmargin=4pt, innerrightmargin=4pt,
    innertopmargin=6pt, innerbottommargin=0pt,
    skipabove=10pt, skipbelow=10pt,
    linecolor=blanco,
}

%%----------------------------------------------------------------
%%  A) CAJAS RECTANGULARES COMPLETAS  (tBox de Legrand)
%%----------------------------------------------------------------

%% ── Teorema ──────────────────────────────────────────────────
%%    Rectángulo naranja, fondo muy tenue.  Énfasis máximo.
\mdfdefinestyle{mdframed-teorema}{
    backgroundcolor=fondoteoremaL,
    linewidth=0.5pt,   linecolor=ocre,
    topline=true, bottomline=true, rightline=true, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=8pt,  innerbottommargin=8pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{teorema}
\NewDocumentEnvironment{teorema}{o}{%
    \refstepcounter{teorema}%
    \begin{mdframed}[style=mdframed-teorema]%
        \noindent{\color{ocre}\sffamily\bfseries
            Teorema~\theteorema\IfValueT{#1}{~---~#1}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Proposición ──────────────────────────────────────────────
%%    Rectángulo naranja más delgado.  Resultados de nivel medio.
\mdfdefinestyle{mdframed-proposicion}{
    backgroundcolor=ocre!5!white,
    linewidth=1pt,     linecolor=ocre,
    topline=true, bottomline=true, rightline=true, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=8pt,  innerbottommargin=8pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{proposicion}
\NewDocumentEnvironment{proposicion}{o}{%
    \refstepcounter{proposicion}%
    \begin{mdframed}[style=mdframed-proposicion]%
        \noindent{\color{ocre}\sffamily\bfseries
            Proposición~\theproposicion\IfValueT{#1}{~(#1)}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%%----------------------------------------------------------------
%%  B-1) BARRA IZQUIERDA 4pt SIN FONDO  (dBox de Legrand)
%%----------------------------------------------------------------

%% ── Definición ───────────────────────────────────────────────
%%    Barra azul 4pt, fondo blanco.  Conceptos fundamentales.
\mdfdefinestyle{mdframed-definicion}{
    backgroundcolor=blanco,
    linewidth=4pt,     linecolor=azulL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=6pt,  innerbottommargin=6pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{definicion}
\NewDocumentEnvironment{definicion}{o}{%
    \refstepcounter{definicion}%
    \begin{mdframed}[style=mdframed-definicion]%
        \noindent{\color{azulL}\sffamily\bfseries
            Definición~\thedefinicion\IfValueT{#1}{~(#1)}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%%----------------------------------------------------------------
%%  B-2) BARRA IZQUIERDA 4pt CON FONDO GRIS  (cBox de Legrand)
%%----------------------------------------------------------------

%% ── Corolario ────────────────────────────────────────────────
%%    Barra gris 4pt, fondo gris muy tenue.  Consecuencias.
\mdfdefinestyle{mdframed-corolario}{
    backgroundcolor=black!4,
    linewidth=4pt,     linecolor=grisL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{corolario}
\NewDocumentEnvironment{corolario}{o}{%
    \refstepcounter{corolario}%
    \begin{mdframed}[style=mdframed-corolario]%
        \noindent{\color{grisL}\sffamily\bfseries
            Corolario~\thecorolario\IfValueT{#1}{~(#1)}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%%----------------------------------------------------------------
%%  C) BARRA 1pt + SÍMBOLO ■  (blacknumex de Legrand)
%%----------------------------------------------------------------

%% ── Ejemplo ──────────────────────────────────────────────────
%%    ■ al inicio y al final.  Barra verde delgada, fondo muy tenue.
\mdfdefinestyle{mdframed-ejemplo}{
    backgroundcolor=verdeL!5!white,
    linewidth=4pt,     linecolor=barraejemploL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=6pt,  innerbottommargin=6pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{ejemplo}
\NewDocumentEnvironment{ejemplo}{o}{%
    \refstepcounter{ejemplo}%
    \begin{mdframed}[style=mdframed-ejemplo]%
        \noindent{%
            \raisebox{1.25pt}{\tiny\ensuremath{\blacksquare}}~%
            {\color{black!75}\sffamily\bfseries
             Ejemplo~\theejemplo\IfValueT{#1}{~---~#1}.}}%
        \par\noindent\ignorespaces
    }{%
        %\hfill{\color{verdeL!80!black}\tiny\ensuremath{\blacksquare}}%
    \end{mdframed}%
}

%% ── Notación ─────────────────────────────────────────────────
%%    ■ al inicio.  Barra gris 1.5pt, fondo gris muy sutil.  (nuevo)
\mdfdefinestyle{mdframed-notacion}{
    backgroundcolor=black!3,
    linewidth=1.5pt,   linecolor=grisL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=6pt,  innerbottommargin=6pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{notacion}
\NewDocumentEnvironment{notacion}{o}{%
    \refstepcounter{notacion}%
    \begin{mdframed}[style=mdframed-notacion]%
        \noindent{%
            \raisebox{1.25pt}{\tiny\ensuremath{\blacksquare}}~%
            {\color{grisL}\sffamily\bfseries
             Notación~\thenotacion\IfValueT{#1}{~---~#1}.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%%----------------------------------------------------------------
%%  D) BARRAS MEDIAS 2–3pt  (entornos secundarios)
%%----------------------------------------------------------------

%% ── Lema ─────────────────────────────────────────────────────
%%    Barra naranja 3pt, fondo ocre muy tenue.
\mdfdefinestyle{mdframed-lema}{
    backgroundcolor=ocre!5!white,
    linewidth=3pt,     linecolor=ocre!80!black,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\newcounter{lemap}
\NewDocumentEnvironment{lema}{o}{%
    \refstepcounter{lemap}%
    \begin{mdframed}[style=mdframed-lema]%
        \noindent{\color{ocre!80!black}\sffamily\bfseries
            Lema~\thelemap\IfValueT{#1}{~(#1)}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Axiomas ──────────────────────────────────────────────────
%%    Barra morada 2pt, fondo morado muy tenue.
\mdfdefinestyle{mdframed-axiomas}{
    backgroundcolor=moradoL!4!white,
    linewidth=2pt,     linecolor=moradoL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{axiomas}{o}{%
    \begin{mdframed}[style=mdframed-axiomas]%
        \noindent{\color{moradoL}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Conjetura ────────────────────────────────────────────────
%%    Barra morada 2pt algo más clara, fondo muy tenue.
\mdfdefinestyle{mdframed-principio}{
    backgroundcolor=moradoL!3!white,
    linewidth=2pt,     linecolor=moradoL!70!black,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{principio}{o}{%
    \begin{mdframed}[style=mdframed-principio]%
        \noindent{\color{moradoL!80!black}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Aplicación ───────────────────────────────────────────────
%%    Barra teal 2pt, fondo teal muy tenue.
\mdfdefinestyle{mdframed-aplicacion}{
    backgroundcolor=tealL!5!white,
    linewidth=2pt,     linecolor=tealL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{aplicacion}{o}{%
    \begin{mdframed}[style=mdframed-aplicacion]%
        \noindent{\color{tealL}\sffamily\bfseries
            Aplicación\IfValueT{#1}{:~#1}.}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Caso especial ────────────────────────────────────────────
%%    Barra teal 1.5pt, fondo teal aún más tenue.
\mdfdefinestyle{mdframed-casoespecial}{
    backgroundcolor=tealL!4!white,
    linewidth=1.5pt,   linecolor=tealL!70!black,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{casoespecial}{o}{%
    \begin{mdframed}[style=mdframed-casoespecial]%
        \noindent{\color{tealL!80!black}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Historia ─────────────────────────────────────────────────
%%    Barra café 2pt, fondo café muy tenue.
\mdfdefinestyle{mdframed-historia}{
    backgroundcolor=cafeL!5!white,
    linewidth=2pt,     linecolor=cafeL,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{historia}{o}{%
    \begin{mdframed}[style=mdframed-historia]%
        \noindent{\color{cafeL}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Proyecto ─────────────────────────────────────────────────
%%    Barra azul 2pt, fondo azul muy tenue.
\mdfdefinestyle{mdframed-proyecto}{
    backgroundcolor=azulL!4!white,
    linewidth=2pt,     linecolor=azulL!60!black,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{proyecto}{o}{%
    \begin{mdframed}[style=mdframed-proyecto]%
        \noindent{\color{azulL!80!black}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Problema ─────────────────────────────────────────────────
%%    Barra naranja 2pt, fondo ocre muy tenue.
\mdfdefinestyle{mdframed-problema}{
    backgroundcolor=ocre!5!white,
    linewidth=2pt,     linecolor=ocre!70!black,
    topline=false, bottomline=false, rightline=false, leftline=true,
    leftmargin=0pt,    rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=7pt,  innerbottommargin=7pt,
    skipabove=10pt,    skipbelow=10pt,
}
\NewDocumentEnvironment{problema}{o}{%
    \begin{mdframed}[style=mdframed-problema]%
        \noindent{\color{ocre!80!black}\sffamily\bfseries
            \IfValueT{#1}{#1.}}%
        \par\noindent\ignorespaces
    }{%
    \end{mdframed}%
}

%% ── Caja genérica ────────────────────────────────────────────
%%    Barra gris 1pt. Uso libre con argumento opcional como título.
\NewDocumentEnvironment{caja}{o}{%
    \begin{mdframed}[
        backgroundcolor=white,
        linewidth=1pt,     linecolor=grisL!50,
        topline=false, bottomline=false, rightline=false, leftline=true,
        leftmargin=0pt,    rightmargin=0pt,
        innerleftmargin=8pt, innerrightmargin=8pt,
        innertopmargin=5pt,  innerbottommargin=5pt,
        skipabove=5pt,     skipbelow=5pt,
    ]%
    \noindent{\color{grisL}\sffamily\bfseries\IfValueT{#1}{#1.}}%
    \ignorespaces\;%
}{%
    \end{mdframed}%
}

%%----------------------------------------------------------------
%%  B-3) BARRA 4pt + FONDO COLOR  (eBox de Legrand)  — Actividad
%%----------------------------------------------------------------

%% ── Actividad interactiva ────────────────────────────────────
%%    Barra naranja 4pt, fondo ocre!10.  Idéntico al eBox de Legrand.
\newmdenv[
    backgroundcolor=ocre!10!white,
    leftmargin=0pt,      rightmargin=0pt,
    innerleftmargin=8pt, innerrightmargin=8pt,
    innertopmargin=8pt,  innerbottommargin=8pt,
    skipabove=10pt,      skipbelow=10pt,
    linecolor=ocre,
    topline=false, bottomline=false, rightline=false, leftline=true,
    linewidth=4pt,
    nobreak=true,
    frametitle={\textbf{\color{ocre}\sffamily\faBolt\;Actividad Interactiva}}
]{hactividad}
\NewDocumentEnvironment{actividad}{O{}}
{\begin{hactividad}\noindent #1}
{\end{hactividad}}

%%----------------------------------------------------------------
%%  E) CÍRCULO LATERAL  (remark de Legrand)
%%----------------------------------------------------------------

%% ── Nota ─────────────────────────────────────────────────────
%%    Círculo "N" gris a la izquierda, texto en bloque indentado.
\newenvironment{nota}{%
    \par\small
    \vspace{2pt}
    \begin{adjustwidth}{35pt}{25pt}
        \hspace{-1.5pt}%
        \begin{tikzpicture}[overlay]
            \node[draw=grisL, line width=1pt, circle,
                  fill=grisL!20, font=\sffamily\bfseries,
                  inner sep=3pt, outer sep=0pt]
                  at (-15pt,5pt){\textcolor{grisL}{N}};
        \end{tikzpicture}
        \advance\baselineskip -1pt%
    }{%
    \end{adjustwidth}
}

%% ── Advertencia ──────────────────────────────────────────────
%%    Círculo "!" rojo a la izquierda.  Para avisos importantes.  (nuevo)
\newenvironment{advertencia}{%
    \par\small
    \vspace{2pt}
    \begin{adjustwidth}{35pt}{25pt}
        \hspace{-1.5pt}%
        \begin{tikzpicture}[overlay]
            \node[draw=rojoL, line width=1pt, circle,
                  fill=rojoL!15, font=\sffamily\bfseries,
                  inner sep=3pt, outer sep=0pt]
                  at (-15pt,5pt){\textcolor{rojoL}{!}};
        \end{tikzpicture}
        \advance\baselineskip -1pt%
    }{%
    \end{adjustwidth}
}

%%========================================================================


%% ----------------------------
%% 14. LISTADOS DE CÓDIGO
%% ----------------------------
\RequirePackage{listings}
\lstset{captionpos=t}
\renewcommand{\lstlistingname}{C\'odigo} % Es importante el acento de esa manera

\captionsetup[lstlisting]{%
    labelfont=bf,
}
\lstset{
	language={[latex]TeX}, % Lenguaje LaTeX
	backgroundcolor=\color{backcolour}, % Color de fondo
	basicstyle=\small\fontseries{b}\ttfamily, % Estilo básico
	breakatwhitespace=false, % No romper líneas en espacios en blanco
	breaklines=true, % Romper líneas largas
	commentstyle=\color{mauve}, % Estilo de los comentarios
	escapeinside={\%*}{*)}, % Escapar dentro del código
	extendedchars=true, % Caracteres extendidos
	frame=single, % Marco alrededor del código
	keepspaces=true, % Mantener espacios
	moredelim=[is][\color{red}]{\%*}{*\%}, % Delimitador personalizado
	keywordstyle=\color{blue}, % Estilo de las palabras clave
	morekeywords={*,usepackage,begin,end, lstinline, newenvironment,
		tabular, minipage, pmatrix,bmatrix, includegraphics,captionof,width,scale,rowcolor,multirow,multicolumn, documentclass, input,ifdefined, HCode,Configure,fi, ConfigureEnv,insertarhtml, ifvmode,label,Css,pdfomk,ejersol,hejersol},
	texcsstyle=[1]\color{blue},%label, caption, etc.
	numbers=none,
	rulecolor=\color{gray}, % Color de la regla
	showspaces=false,
	showstringspaces=false,
	showtabs=false,
	stringstyle=\color{mauve}, % Estilo de las cadenas
	literate= {∩}{{$\cap$}}1 {á}{{\'a}}1 {é}{{\'e}}1 {í}{{{\'\i}}}1 {ó}{{\'o}}1 {ö}{{\"o}}1 {ő}{{\H o}}1 {ú}{{\'u}}1 {Ú}{{\'U}}1 {ü}{{\"u}}1 {ű}{{\H u}}1 {Ü}{{\"U}}1
}

%%--Comandos
\newcommand\smallmath[1]{\begingroup\footnotesize #1\endgroup}

%% logo-link  para  imagen  para saltar a una actividad interactiva en el html
\newcommand{\wref}[2]{%
	\begin{tikzpicture}
		\node[inner sep=0pt] (img) at (0,0) {#2}; % \includegraphics{}
		\node[anchor=north east, scale=0.7, xshift=-5pt, yshift=5pt] at (img.north east)
		{\href{#1}{%
				\textcolor{blue}{
					\begin{tabular}{r@{}p{5pt}} % @{} elimina espacio entre columnas
						{\Large\faLink} & \begin{tabular}{@{}l@{}} % @{} ajusta la segunda columna
							\textbf{Ir al} \\[-2.5pt] % Ajuste fino de separación vertical
							\textbf{HTML}
						\end{tabular}
					\end{tabular}
				}
		}};
	\end{tikzpicture}
}

%%──────────────────────────────────────────────────────────────────────
%% tablaverdad — Tabla de verdad con diseño del libro
%%   #1 = especificación interna de columnas (sin bordes externos)
%%        Ejemplo: cc|c|c|c
%%
%% Comandos auxiliares:
%%   \tvh{expr}  — celda de encabezado (blanca en PDF, clase css en HTML)
%%   \tvhline    — línea separadora bajo el encabezado
%%   \tvV / \tvF — valores con color (verde / rojo)
%%
%% Requiere: booktabs, colortbl, xcolor  (ya en preámbulo)
%%──────────────────────────────────────────────────────────────────────

%% ── \tvV y \tvF ─────────────────────────────────────────────
\ifdefined\HCode
  \newcommand{\tvV}{\HCode{<span class="tv-V">}V\HCode{</span>}}
  \newcommand{\tvF}{\HCode{<span class="tv-F">}F\HCode{</span>}}
\else
  \newcommand{\tvV}{\textbf{\textcolor{verdeL}{V}}}
  \newcommand{\tvF}{\textbf{\textcolor{rojoL}{F}}}
\fi

%% ── \tvheaderrow  (mismo patrón que \rowgris) ───────────────
\ifdefined\HCode
  \newcommand{\tvheaderrow}{}%      make4ht ya emitió el <tr>, no se puede reemplazar
\else
  \newcommand{\tvheaderrow}{\rowcolor{tealL}}
\fi
%% ── \tvhline  — separador post-encabezado ───────────────────
\ifdefined\HCode
  \newcommand{\tvhline}{}   % CSS lo maneja
\else
  \newcommand{\tvhline}{%
    \arrayrulecolor{tealL}\hline\arrayrulecolor{tealL!35}%
  }
\fi

%% ── \tvh{} — celda de encabezado ────────────────────────────
\newcommand{\tvh}[1]{%
  \ifdefined\HCode
    #1%
  \else
    \textcolor{white}{\bfseries\small #1}%
  \fi
}

%% ── entorno tablaverdad ─────────────────────────────────────
\newenvironment{tablaverdad}[1]{%
  %% — HTML —
  \ifdefined\HCode
    \ifvmode\IgnorePar\fi\EndP
    \HCode{<div class="tabla-hover-filas tablaverdad">^^J}%
    \par
    \begin{center}%
    \small
    \begin{tabular}{#1}%
  %% — PDF —
  \else
    \begin{center}%
    \begingroup
    \small
    \renewcommand{\arraystretch}{1.40}%
    \arrayrulecolor{tealL!35}%
    \setlength{\arrayrulewidth}{0.5pt}%
    \begin{tabular}{!{\color{tealL}\vrule width 1pt}#1!{\color{tealL}\vrule width 1pt}}%
    \arrayrulecolor{tealL}\specialrule{1pt}{0pt}{0pt}%
    \arrayrulecolor{tealL!35}%
  \fi
}{%
  \ifdefined\HCode
    \end{tabular}%
    \end{center}%
    \par
    \ifvmode\IgnorePar\fi\EndP
    \HCode{</div>^^J}%
    \par
  \else
    \arrayrulecolor{tealL}\specialrule{1pt}{0pt}{0pt}%
    \end{tabular}%
    \endgroup
    \end{center}%
  \fi
}

%% ─────────────────────────────────────────────────────────────
%% objetivoscap — Caja de Objetivos Específicos del capítulo
%% Requiere: booktabs, xcolor, colortbl  (ya en preámbulo)
%%
%% Uso en el documento:
%%   \begin{objetivoscap}              % título por defecto
%%   \begin{objetivoscap}[Otro título] % título personalizado
%%     \textit{Intro...} \\[4pt]
%%     \quad 1.1) item \\
%%     \quad 1.6) item \\[2pt]    ← último ítem termina con \\
%%   \end{objetivoscap}
%%
%% Compatible: pdflatex y make4ht
%% ─────────────────────────────────────────────────────────────
\newenvironment{objetivoscap}[1][Objetivos Específicos]{%
  %% ── HTML (make4ht) ─────────────────────────────────────────
  \ifdefined\HCode
    \ifvmode\IgnorePar\fi\EndP
    \HCode{<div class="obj-box">^^J}%
    \HCode{<div class="obj-header">#1</div>^^J}%
    \HCode{<div class="obj-body">^^J}%
    \par\noindent\sffamily\small
  %% ── PDF (pdflatex) ─────────────────────────────────────────
  \else
    \begin{quote}%
    \begingroup
      \sffamily\small
      \arrayrulecolor{tealL}%
      \renewcommand{\arraystretch}{1.45}%
      \rowcolors{2}{tealL!7}{tealL!7}%
      \begin{tabular}{%
        !{\color{tealL}\vrule width 4pt}%          barra izq. teal
         p{\dimexpr\linewidth - 4pt\relax}}%
        \specialrule{1.5pt}{0pt}{0pt}%             regla superior gruesa
        \rowcolor{tealL}%
        \multicolumn{1}{!{\color{tealL}\vrule width 4pt}c}{%
          \rule{0pt}{13pt}%                         padding superior
          \textcolor{white}{\bfseries #1}%
          \rule[-3pt]{0pt}{3pt}%                    padding inferior
        }\\%
  \fi
}{%
  \ifdefined\HCode
    \par
    \ifvmode\IgnorePar\fi\EndP
    \HCode{</div>^^J</div>^^J}%
    \par
  \else
        \specialrule{1.5pt}{0pt}{0pt}%             regla inferior gruesa
      \end{tabular}%
    \endgroup%
    \end{quote}%
  \fi
}


%% ----------------------------
%% 9. CONFIGURACIÓN PARA MAK4HT
%% ----------------------------

%
%1.) Tablas hover...PDFLatex ignora,
%    Make4ht lo aplica:Una envoltura <div class="tabla-hover-filas">...
\newenvironment{tablahoverfilas}
  {%
    \ifdefined\HCode
      \ifvmode\IgnorePar\fi\EndP
      \HCode{<div class="tabla-hover-filas">}%
      \par
    \fi
  }
  {%
    \ifdefined\HCode
      \ifvmode\IgnorePar\fi\EndP
      \HCode{</div>}%
      \par
    \fi
  }
%
% \rowcolor{rowgray} tapa el hover, \rowgris para css y da \rowcolor{rowgray} para pdf
\ifdefined\HCode
  \newcommand{\rowgris}{\HCode{<tr class="rowgray">}}
\else
  \newcommand{\rowgris}{\rowcolor{rowgray}}
\fi
%%--
%2.) \vspace \bigskip, \medskip, \smallskip para html
\newcommand{\linea}{\textcolor{lightgray}{\rule{\linewidth}{0.4pt}}\par}
\ifdefined\HCode
  \def\bigskip{\HCode{<div style="margin-top:2em;"></div>}}
  \def\medskip{\HCode{<div style="margin-top:1.5em;"></div>}}
  \def\smallskip{\HCode{<div style="margin-top:1em;"></div>}}
  \def\linea{\HCode{<hr style="height:1px; border:none; background-color:\#ccc; margin:20px 0;">}}
\fi
%
\ifdefined\HCode
  \newcommand{\vspacehtml}[1]{\HCode{<div style="margin-top:#1;"></div>}}
\else
  \newcommand{\vspacehtml}[1]{\vspace*{#1}}
\fi
%% \vspacehtml{1em}
%%--
% 3.) Comandos \pdfomk{#1}{#2} e \insertarhtml{}
% 3a.) \pdfomk{#1}{#2}
\ifdefined\HCode
\long\def\solopdf#1{\protect}  % ignorado por make4ht
\long\def\solomk#1{\protect#1} % procesado en make4ht
\else
\long\def\solopdf#1{\protect#1} % procesado en PDF
\long\def\solomk#1{\protect}    % ignorado por PDF
\fi
%
\ifdefined\HCode
\long\def\pdfomk#1#2{%
	\protect#2%html
}
\else
\long\def\pdfomk#1#2{%
	\protect#1%pdf
}
\fi
%-3b.)--Insertar html

%
%--\insertarhtml{#1} %Para html PURO
  \ifdefined\HCode
    \long\def\insertarhtml#1{%
      \HCode{#1}%
    }
  \else
    \long\def\insertarhtml#1{%
      %nada%\textbf{[Contenido interactivo no disponible en PDF]}
    }
  \fi
%
%- 4.) Un entorno para ejercicio con botón para ver/ocultar respuesta
%
\newcounter{htmlEjercicio}[section]
\renewcommand{\thehtmlEjercicio}{%
  \ifnum\value{section}=0
    \arabic{htmlEjercicio}%
  \else
    \thesection\arabic{htmlEjercicio}%
  \fi
}
% Nota: Debemos poner \insertarhtml{<script src="js/ejerciciosolucion.js" defer></script>}
% antes de \end{document}
\ifdefined\HCode
\newcommand{\hejersol}[2]{%
    \stepcounter{htmlEjercicio}%
    \par\medskip
        \ifvmode\IgnorePar\fi\EndP
    \noindent\textbf{Ejercicio \thehtmlEjercicio.}
    #1%
        \ifvmode\IgnorePar\fi\EndP
\HCode{<div class="ejercicio-solucion"><div class="solucion-container"><button onclick="toggleSolucion(this)">Solucion</button><div class="solucion">}%
        \ifvmode\IgnorePar\fi\EndP
    #2%
        \ifvmode\IgnorePar\fi\EndP
    \HCode{</div></div></div>}%
    \par\medskip
  }
\else
  \newcommand{\hejersol}[2]{%
    % No imprimir nada en PDF
  }
\fi
%%-- pdf-exsheet y make4ht
\newcommand{\ejersol}[2]{%
    \begin{question}%
        #1%
    \end{question}%
    \begin{solution}%
        #2%
    \end{solution}%
}

% Sobrescribir para make4ht (HTML)
\ifdefined\HCode
    \renewcommand{\ejersol}[2]{\hejersol{#1}{#2}}
\fi
%
% 5.) Cejilla make4ht y pdf


%%--------------------------------------------------------------------%%
