/* ============================================================
   v3_secundaria — Tema custom v4 (login + home)
   Login: tarjeta centrada, fondo degradado animado, birrete
   detallado centrado arriba del logo (SVG embebido).
   Paleta basada en el logo: índigo/violeta + azul cielo + dorado.
   PHPRunner carga este archivo automáticamente al final de los CSS
   (classes/layout.php -> styles/custom/custom.css)
   Persistir tras editar: database/scripts/sync_v3_css.ps1
   ============================================================ */

:root {
	--brand: #3f51b5;
	--brand-dark: #283593;
	--brand-deep: #1a237e;
	--brand-light: #5c6bc0;
	--accent: #29b6f6;
	--accent-dark: #0288d1;
	--gold: #f9a825;
	--ok: #66bb6a;
	--ink: #263238;
	--muted: #78909c;
	--bg-soft: #eef1f8;
	--radius: 20px;
	--shadow-card: 0 24px 60px rgba(10, 15, 60, .45);
}

/* ============================================================
   LOGIN  (body.function-login)
   ============================================================ */

/* Fondo: degradado animado */
body.function-login {
	background: linear-gradient(120deg, var(--brand-deep), var(--brand-dark), var(--brand), var(--accent-dark), var(--accent));
	background-size: 320% 320%;
	animation: v3-bgShift 18s ease infinite;
}

@keyframes v3-bgShift {
	0%   { background-position: 0% 50%; }
	50%  { background-position: 100% 50%; }
	100% { background-position: 0% 50%; }
}

/* Bokeh suaves flotando detrás de la tarjeta */
body.function-login::before,
body.function-login::after {
	content: "";
	position: fixed;
	border-radius: 50%;
	filter: blur(50px);
	pointer-events: none;
	z-index: 0;
}

body.function-login::before {
	width: 420px; height: 420px;
	top: -130px; left: -110px;
	background: radial-gradient(circle, rgba(41, 182, 246, .40), transparent 70%);
	animation: v3-drift 14s ease-in-out infinite;
}

body.function-login::after {
	width: 520px; height: 520px;
	bottom: -170px; right: -130px;
	background: radial-gradient(circle, rgba(92, 107, 192, .45), transparent 70%);
	animation: v3-drift 19s ease-in-out -7s infinite reverse;
}

@keyframes v3-drift {
	0%, 100% { transform: translate(0, 0) scale(1); }
	50%      { transform: translate(46px, -34px) scale(1.08); }
}

/* Layout: tarjeta centrada, sin panel de foto */
body.function-login .r-pretty-login-page {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	padding: 40px 0;
}

/* Resplandor suave detrás de la tarjeta */
body.function-login .r-pretty-login-page::before {
	content: "";
	position: fixed;
	top: 50%; left: 50%;
	width: 760px; height: 760px;
	transform: translate(-50%, -50%);
	background: radial-gradient(circle, rgba(255, 255, 255, .14), transparent 62%);
	pointer-events: none;
	z-index: 0;
}

body.function-login .r-sideimage {
	display: none;
}

/* Saludo sutil en la parte superior de la página de login */
body.function-login .r-pretty-login-page::after {
	content: "Hola, podemos empezar";
	position: fixed;
	top: 26px;
	left: 50%;
	transform: translateX(-50%);
	font-size: 13px;
	font-weight: 300;
	letter-spacing: 2px;
	color: rgba(255, 255, 255, .62);
	text-shadow: 0 1px 8px rgba(10, 15, 60, .35);
	pointer-events: none;
	z-index: 1;
}

body.function-login .r-pretty-login-page > .r-controls {
	flex: 0 1 auto;
	position: relative;
	z-index: 1;
	width: min(440px, 92vw);
	max-width: 440px;
	padding-top: 132px; /* espacio reservado para el birrete */
	background: rgba(255, 255, 255, .97);
	border-radius: var(--radius);
	box-shadow: var(--shadow-card);
	animation: v3-cardIn .65s cubic-bezier(.22, 1, .36, 1) both;
}

@keyframes v3-cardIn {
	from { opacity: 0; transform: translateY(28px) scale(.97); }
	to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* Birrete detallado: absoluto y centrado sobre el formulario */
body.function-login .r-pretty-login-page > .r-controls::before {
	content: "";
	position: absolute;
	top: 14px;
	left: 50%;
	width: 150px;
	height: 118px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 122'%3E%3Cellipse cx='70' cy='112' rx='34' ry='6' fill='%231a237e' opacity='0.14'/%3E%3Cpath d='M72 40 Q112 32 128 44 L128 74' fill='none' stroke='%23f9a825' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M46 58 L94 58 L94 76 Q94 90 70 90 Q46 90 46 76 Z' fill='%231a237e'/%3E%3Cpath d='M46 58 L94 58 L94 67 Q82 74 70 74 Q56 74 46 67 Z' fill='%23283593'/%3E%3Cpolygon points='70,6 4,40 70,74' fill='%23283593'/%3E%3Cpolygon points='70,6 136,40 70,74' fill='%233f51b5'/%3E%3Cpolygon points='70,6 136,40 70,47' fill='%235c6bc0' opacity='0.55'/%3E%3Ccircle cx='70' cy='40' r='5.5' fill='%231a237e'/%3E%3Ccircle cx='70' cy='40' r='2.2' fill='%235c6bc0'/%3E%3Crect x='122.5' y='72' width='11' height='10' rx='3' fill='%23f9a825'/%3E%3Cpath d='M124.5 82 L123 100 M128 82 L128 102 M131.5 82 L133 100' stroke='%23f9a825' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
	filter: drop-shadow(0 8px 10px rgba(10, 15, 60, .25));
	animation: v3-capFloat 5.5s ease-in-out infinite;
	pointer-events: none;
	z-index: 2;
}

@keyframes v3-capFloat {
	0%, 100% { transform: translateX(-50%) translateY(0)     rotate(-2.5deg); }
	50%      { transform: translateX(-50%) translateY(-9px) rotate(2.5deg); }
}

body.function-login .r-controls .r-mainform {
	padding: 0 40px 26px;
}

/* Logo */
body.function-login [data-itemtype="login-logo"] img {
	max-height: 72px;
	filter: drop-shadow(0 4px 10px rgba(40, 53, 147, .22));
}

/* Subtítulo de bienvenida */
body.function-login [data-itemtype="login_welcome"] {
	display: inline-block;
	margin: 4px 0 18px;
	font-size: 19px;
	font-weight: 300;
	letter-spacing: .4px;
	color: var(--brand-dark);
}

/* Etiquetas de campos */
body.function-login .r-edit-label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .9px;
	color: var(--muted);
	margin-bottom: 4px;
}

/* Inputs modernos con icono */
body.function-login .r-edit-field .form-control {
	height: 46px;
	border: 2px solid #e3e8f4;
	border-radius: 12px;
	font-size: 15px;
	padding: 8px 14px 8px 42px;
	background-repeat: no-repeat;
	background-position: 13px center;
	background-size: 17px;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
	box-shadow: none;
}

body.function-login #username.form-control {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='8' r='4.2' fill='%2378909c'/%3E%3Cpath d='M3.5 20.5c.8-4.2 4.4-6 8.5-6s7.7 1.8 8.5 6z' fill='%2378909c'/%3E%3C/svg%3E");
}

body.function-login #password.form-control {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='5.5' y='10.5' width='13' height='9.5' rx='2.2' fill='%2378909c'/%3E%3Cpath d='M8 10.5V7.8a4 4 0 0 1 8 0v2.7' fill='none' stroke='%2378909c' stroke-width='2.2'/%3E%3Ccircle cx='12' cy='15.2' r='1.6' fill='%23fff'/%3E%3C/svg%3E");
}

body.function-login .r-edit-field .form-control:focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 4px rgba(41, 182, 246, .20);
	outline: none;
	transform: translateY(-1px);
}

/* Checkbox recordar */
body.function-login .r-edit-field.checkbox label {
	color: var(--muted);
	font-size: 13px;
}

/* Botón iniciar sesión: pill con degradado y brillo al hover */
body.function-login [data-itemtype="login_button"] .btn {
	position: relative;
	overflow: hidden;
	display: inline-block;
	min-width: 180px;
	padding: 13px 30px;
	border: none;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 1.2px;
	text-transform: uppercase;
	color: #fff;
	background: linear-gradient(90deg, var(--brand) 0%, var(--accent) 100%);
	box-shadow: 0 12px 24px rgba(63, 81, 181, .40);
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

body.function-login [data-itemtype="login_button"] .btn::after {
	content: "";
	position: absolute;
	top: 0; left: -80%;
	width: 45%; height: 100%;
	background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .45), transparent);
	transform: skewX(-20deg);
	transition: left .5s ease;
}

body.function-login [data-itemtype="login_button"] .btn:hover,
body.function-login [data-itemtype="login_button"] .btn:focus {
	transform: translateY(-2px);
	box-shadow: 0 16px 30px rgba(63, 81, 181, .50);
	filter: brightness(1.07);
	color: #fff;
}

body.function-login [data-itemtype="login_button"] .btn:hover::after {
	left: 130%;
}

/* Enlace invitado */
body.function-login [data-itemtype="guest_login"] .btn-link {
	color: var(--brand-light);
	font-weight: 600;
}

/* Mensaje de error del login */
body.function-login [data-itemtype="login_message"] {
	border-radius: 12px;
	border: none;
}

/* ============================================================
   HOME / MENÚ  (body.function-menu)
   ============================================================ */

body.function-menu {
	background: var(--bg-soft);
}

/* Barra lateral con identidad de marca */
body.function-menu .r-left {
	background: linear-gradient(180deg, var(--brand-deep) 0%, var(--brand-dark) 60%, var(--brand) 100%);
	box-shadow: 4px 0 18px rgba(26, 35, 126, .25);
}

/* Logo del sidebar: resaltar sobre fondo oscuro */
body.function-menu .r-left [data-logo-cell] {
	background: rgba(255, 255, 255, .08);
	border-bottom: 1px solid rgba(255, 255, 255, .12);
	padding: 10px;
}

body.function-menu .r-left [data-logo-cell] img {
	filter: drop-shadow(0 2px 6px rgba(0, 0, 0, .35));
}

/* Ítems del menú lateral */
body.function-menu .r-menu > li > a,
body.function-menu .r-menu li a {
	color: rgba(255, 255, 255, .88);
	border-radius: 10px;
	margin: 2px 10px;
	transition: background .15s ease, color .15s ease, padding-left .15s ease;
}

body.function-menu .r-menu li a:hover,
body.function-menu .r-menu li a:focus {
	background: rgba(255, 255, 255, .14);
	color: #ffffff;
	padding-left: 22px;
}

body.function-menu .r-menu li.current > a,
body.function-menu .r-menu li.active > a {
	background: linear-gradient(90deg, var(--accent) 0%, var(--brand-light) 100%);
	color: #ffffff;
	box-shadow: 0 6px 14px rgba(41, 182, 246, .35);
}

/* Iconos/flechas del menú */
body.function-menu .r-menu .r-menu-expand-icon,
body.function-menu .r-menu .glyphicon {
	color: rgba(255, 255, 255, .7);
}

/* Submenús: fondo ligeramente más oscuro */
body.function-menu .r-menu ul.nav {
	background: rgba(0, 0, 0, .15);
	border-radius: 10px;
	margin: 0 10px;
}

body.function-menu .r-menu ul.nav li a {
	margin: 1px 4px;
	font-size: 13px;
}

/* Barra superior limpia */
body.function-menu .r-topheader {
	background: #ffffff;
	box-shadow: 0 2px 12px rgba(38, 50, 56, .10);
}

body.function-menu .r-topheader .navbar-default {
	background: transparent;
	border: none;
}

/* Botones de la barra superior */
body.function-menu .r-topheader .btn-link {
	color: var(--brand);
}

body.function-menu .r-topheader .btn-default {
	border-radius: 999px;
	border: 1px solid #dfe4f0;
	color: var(--ink);
	background: #fff;
	transition: box-shadow .15s ease;
}

body.function-menu .r-topheader .btn-default:hover {
	box-shadow: 0 4px 12px rgba(63, 81, 181, .18);
}

/* Contenido central: respiración y tarjetas suaves */
body.function-menu .r-body .r-form {
	border-radius: 14px;
}

/* ============================================================
   Ajustes responsivos y accesibilidad
   ============================================================ */

@media (max-width: 767px) {
	body.function-login .r-pretty-login-page > .r-controls {
		padding-top: 104px;
	}

	body.function-login .r-controls .r-mainform {
		padding: 0 22px 24px;
	}

	body.function-login .r-pretty-login-page > .r-controls::before {
		width: 116px;
		height: 92px;
		top: 10px;
	}

	body.function-login [data-itemtype="login-logo"] img {
		max-height: 60px;
	}

	body.function-menu .r-left {
		box-shadow: none;
	}
}

/* Respetar usuarios con movimiento reducido */
@media (prefers-reduced-motion: reduce) {
	body.function-login,
	body.function-login::before,
	body.function-login::after,
	body.function-login .r-pretty-login-page > .r-controls,
	body.function-login .r-pretty-login-page > .r-controls::before {
		animation: none;
	}
}

/* ============================================================
   LOGIN V5 - Institutional identity and responsive access
   Synced durable override for PHPRunner generated login markup.
   ============================================================ */
body.function-login {
    --v5-navy: #101b4d;
    --v5-indigo: #303994;
    --v5-blue: #128ed2;
    --v5-cyan: #18c5dd;
    --v5-ink: #17213d;
    --v5-muted: #65708b;
    --v5-line: #dce3f1;
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow-x: hidden;
    background: radial-gradient(circle at 15% 15%, rgba(25,199,225,.16), transparent 29%), radial-gradient(circle at 88% 84%, rgba(30,158,219,.17), transparent 30%), linear-gradient(145deg, var(--v5-navy), #18235e 46%, var(--v5-indigo)) !important;
    color: var(--v5-ink);
    font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
    animation: none;
}
body.function-login::before,
body.function-login::after {
    content: "";
    position: fixed;
    z-index: 0;
    pointer-events: none;
    aspect-ratio: 1;
    border-radius: 50%;
    filter: none;
    animation: none;
}
body.function-login::before {
    width: min(46vw, 620px);
    left: -16vw;
    bottom: -28vw;
    top: auto;
    right: auto;
    background: rgba(25,197,223,.10);
    border: 1px solid rgba(130,235,247,.12);
    transform: none;
}
body.function-login::after {
    width: min(35vw, 460px);
    right: -12vw;
    top: -17vw;
    bottom: auto;
    left: auto;
    background: rgba(48,102,194,.17);
    border: 1px solid rgba(140,196,246,.11);
    transform: none;
}
body.function-login .r-pretty-login-page {
    position: relative;
    z-index: 1;
    width: 100%;
    min-height: 100vh;
    min-height: 100dvh;
    display: grid;
    place-items: center;
    padding: 32px 20px;
}
body.function-login .r-pretty-login-page::after {
    content: none !important;
    display: none !important;
}
body.function-login .r-pretty-login-page > .r-controls {
    position: relative;
    display: block !important;
    width: 560px !important;
    min-width: 0;
    max-width: calc(100vw - 40px) !important;
    margin: 0 auto;
    padding: 0;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.72);
    border-radius: 18px;
    background: rgba(255,255,255,.98);
    box-shadow: 0 24px 60px rgba(5,12,47,.28), 0 4px 16px rgba(5,12,47,.14);
    animation: none;
}
body.function-login .r-pretty-login-page > .r-controls::before {
    content: none;
    display: none;
    animation: none;
}
body.function-login .r-pretty-login-page > .r-controls::after {
    content: "SISTEMA DE GESTI\00D3 N ESCOLAR";
    display: block;
    padding: 22px 24px 25px;
    border-top: 1px solid #edf0f7;
    color: #8790a8;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .18em;
    text-align: center;
}
body.function-login .r-pretty-login-page .r-mainform {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none;
    flex: none !important;
    padding: 35px 48px 30px;
}
body.function-login .r-pretty-login-page #form_top_1,
body.function-login .r-pretty-login-page #form_above-grid_1,
body.function-login .r-pretty-login-page #form_grid_1,
body.function-login .r-pretty-login-page #form_footer_1 {
    width: 100% !important;
    max-width: none !important;
}
body.function-login .r-pretty-login-page #form_top_1 {
    margin: 0;
    padding: 0;
    text-align: center;
}
body.function-login .r-pretty-login-page [data-cellId="top_c2"],
body.function-login .r-pretty-login-page [data-cellId="top_c3"] {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"] {
    display: flex !important;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 12px;
    min-height: 82px;
    margin: 0 auto 5px;
    padding: 0;
    line-height: 1;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"] img {
    display: none !important;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before {
    content: "";
    display: block;
    flex: 0 0 72px;
    width: 72px;
    height: 86px;
    background: url("../../images/logo_principal.png") center / contain no-repeat;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after {
    content: "Tu Secundaria";
    display: block;
    color: var(--v5-blue);
    background: linear-gradient(90deg, #158ad0, #1aaed8);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(30px, 6vw, 43px);
    font-weight: 800;
    letter-spacing: -.045em;
    line-height: .98;
    white-space: nowrap;
}
body.function-login .r-pretty-login-page [data-itemtype="login_welcome"] {
    display: block;
    margin: 0;
    padding: 0;
    color: transparent;
    font-size: 0;
    line-height: 1;
}
body.function-login .r-pretty-login-page [data-itemtype="login_welcome"]::before {
    content: "Portal de la comunidad escolar";
    display: block;
    margin-top: 2px;
    color: #606a84;
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .045em;
    text-align: center;
}
body.function-login .r-pretty-login-page #form_above-grid_1 {
    position: relative;
    display: block !important;
    height: 78px !important;
    margin: 19px 0 0;
    padding: 0;
}
body.function-login .r-pretty-login-page #form_above-grid_1 > * {
    display: none !important;
}
body.function-login .r-pretty-login-page #form_above-grid_1::before {
    content: "Bienvenido";
    position: absolute;
    inset: 0 0 auto;
    color: var(--v5-ink);
    font-size: 26px;
    font-weight: 750;
    letter-spacing: -.02em;
    line-height: 1.15;
    text-align: center;
}
body.function-login .r-pretty-login-page #form_above-grid_1::after {
    content: "Acceso para alumnos, familias y personal escolar";
    position: absolute;
    top: 39px;
    left: 0;
    right: 0;
    color: var(--v5-muted);
    font-size: 13px;
    font-weight: 500;
    line-height: 1.4;
    text-align: center;
}
body.function-login .r-pretty-login-page #form_grid_1 {
    margin: 0;
    padding: 0;
}
body.function-login .r-pretty-login-page [data-cellId="grid_c1"],
body.function-login .r-pretty-login-page [data-cellId="grid_c2"] {
    padding-bottom: 8px !important;
}
body.function-login .r-pretty-login-page .r-edit-label {
    display: block;
    margin: 0 0 7px;
    color: #33405e;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .07em;
    text-transform: uppercase;
}
body.function-login .r-pretty-login-page .r-edit-field {
    display: block;
    width: 100%;
}
body.function-login .r-pretty-login-page input[type="text"],
body.function-login .r-pretty-login-page input[type="password"] {
    width: 100%;
    height: 48px;
    padding: 10px 14px 10px 48px !important;
    border: 1px solid var(--v5-line);
    border-radius: 10px;
    outline: none;
    background-color: #fff;
    background-position: 14px 50% !important;
    background-repeat: no-repeat !important;
    background-size: 22px 22px !important;
    color: #18213d;
    font-size: 16px;
    box-shadow: 0 1px 2px rgba(18,29,73,.03);
    transition: border-color .18s ease, box-shadow .18s ease;
}
body.function-login .r-pretty-login-page input[type="text"]:hover,
body.function-login .r-pretty-login-page input[type="password"]:hover {
    border-color: #b8c6df;
}
body.function-login .r-pretty-login-page input[type="text"]:focus,
body.function-login .r-pretty-login-page input[type="password"]:focus {
    border-color: var(--v5-blue);
    box-shadow: 0 0 0 4px rgba(18,142,210,.14);
}
body.function-login .r-pretty-login-page [data-itemtype="remember_password"] {
    margin: -2px 0 19px;
    padding: 0;
}
body.function-login .r-pretty-login-page [data-itemtype="remember_password"] label {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    margin: 0;
    padding: 0 !important;
    position: relative !important;
    color: #56617b;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}
body.function-login .r-pretty-login-page [data-itemtype="remember_password"] input[type="checkbox"] {
    position: static !important;
    left: auto !important;
    flex: 0 0 17px;
    width: 17px;
    height: 17px;
    margin: 0;
    accent-color: var(--v5-blue);
}
body.function-login .r-pretty-login-page #form_footer_1,
body.function-login .r-pretty-login-page #form_footer_1 tbody,
body.function-login .r-pretty-login-page #form_footer_1 tr {
    display: block;
    width: 100% !important;
    height: auto !important;
}
body.function-login .r-pretty-login-page [data-cellId="footer_c1"] {
    display: block !important;
    width: 100%;
    height: auto !important;
    margin: 0;
    padding: 0;
}
body.function-login .r-pretty-login-page [data-cellId="footer_c2"] {
    display: none !important;
}
body.function-login .r-pretty-login-page [data-itemtype="login_button"] {
    display: block;
    width: 100%;
}
body.function-login .r-pretty-login-page .btn-primary,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn {
    position: relative;
    display: block;
    width: 100%;
    min-width: 0;
    min-height: 50px;
    padding: 0 18px;
    overflow: hidden;
    border: 0;
    border-radius: 11px;
    background: linear-gradient(90deg, #078ed2, #17c4d9);
    color: transparent !important;
    font-size: 0;
    box-shadow: 0 9px 22px rgba(9,151,205,.24);
    transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}
body.function-login .r-pretty-login-page .btn-primary::after,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn::after {
    content: "INICIAR SESI\00D3 N";
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: #fff;
    font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
    font-size: 12px;
    font-style: normal !important;
    font-weight: 850;
    letter-spacing: .1em;
    text-align: center;
    transform: none !important;
}
body.function-login .r-pretty-login-page .btn-primary:hover,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn:hover {
    filter: brightness(1.04);
    transform: translateY(-1px);
    box-shadow: 0 12px 27px rgba(9,151,205,.30);
}
body.function-login .r-pretty-login-page .btn-primary:focus-visible,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn:focus-visible {
    outline: 3px solid rgba(18,142,210,.24);
    outline-offset: 3px;
}
body.function-login .r-pretty-login-page [data-cellId="footer_c1"]::after {
    content: "\00BF Necesitas ayuda? Contacta a tu escuela";
    display: block;
    margin-top: 17px;
    color: #66718a;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
}
body.function-login .r-pretty-login-page > .r-controls > .r-sideimage,
body.function-login .r-pretty-login-page > .r-controls > .r-mainform::before,
body.function-login .r-pretty-login-page > .r-controls > .r-mainform::after {
    display: none !important;
    content: none;
}
@media (max-width: 767px) {
    body.function-login {
        align-items: flex-start;
        background: radial-gradient(circle at 11% 8%, rgba(25,199,225,.14), transparent 28%), linear-gradient(155deg, #111c4d, #222b75) !important;
    }
    body.function-login::before { width: 78vw; left: -48vw; bottom: -24vw; }
    body.function-login::after { width: 64vw; right: -38vw; top: -26vw; }
    body.function-login .r-pretty-login-page {
        place-items: start center;
        padding: max(18px, env(safe-area-inset-top)) 14px max(18px, env(safe-area-inset-bottom));
    }
    body.function-login .r-pretty-login-page > .r-controls {
        width: 100% !important;
        max-width: none !important;
        margin: auto 0;
        border-radius: 16px;
        box-shadow: 0 18px 44px rgba(3,10,44,.28);
    }
    body.function-login .r-pretty-login-page .r-mainform { padding: 27px 22px 25px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] { gap: 9px; min-height: 68px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 58px; width: 58px; height: 70px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { font-size: clamp(27px, 9.5vw, 36px); }
    body.function-login .r-pretty-login-page [data-itemtype="login_welcome"]::before { margin-top: 4px; font-size: 12px; }
    body.function-login .r-pretty-login-page #form_above-grid_1 { height: 72px !important; margin-top: 16px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::before { font-size: 23px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::after { top: 35px; padding: 0 5px; font-size: 12px; }
    body.function-login .r-pretty-login-page input[type="text"],
    body.function-login .r-pretty-login-page input[type="password"] { height: 47px; }
    body.function-login .r-pretty-login-page > .r-controls::after { padding: 18px 18px 21px; font-size: 9px; }
}
@media (max-width: 360px) {
    body.function-login .r-pretty-login-page { padding-left: 10px; padding-right: 10px; }
    body.function-login .r-pretty-login-page .r-mainform { padding: 23px 17px 22px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] { gap: 6px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 51px; width: 51px; height: 62px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { font-size: 27px; }
}
@media (max-height: 740px) and (min-width: 768px) {
    body.function-login .r-pretty-login-page { padding-top: 18px; padding-bottom: 18px; }
    body.function-login .r-pretty-login-page .r-mainform { padding-top: 25px; padding-bottom: 23px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 62px; width: 62px; height: 74px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { font-size: 37px; }
    body.function-login .r-pretty-login-page #form_above-grid_1 { height: 68px !important; margin-top: 11px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::before { font-size: 23px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::after { top: 34px; }
    body.function-login .r-pretty-login-page > .r-controls::after { padding-top: 17px; padding-bottom: 19px; }
}
@media (prefers-reduced-motion: reduce) {
    body.function-login,
    body.function-login::before,
    body.function-login::after,
    body.function-login .r-pretty-login-page input,
    body.function-login .r-pretty-login-page .btn { animation: none; transition: none; }
}

/* ============================================================
   LOGIN V6 - closer to the approved institutional mockup
   ============================================================ */
body.function-login {
    background: radial-gradient(circle at 19% 30%, rgba(68,90,210,.32), transparent 27%), radial-gradient(circle at 82% 72%, rgba(13,88,189,.24), transparent 31%), linear-gradient(135deg, #111d57 0%, #172767 46%, #08245e 100%) !important;
}

/* Cyan wave at the lower-left corner. */
body.function-login::before {
    width: min(54vw, 760px);
    height: min(31vw, 410px);
    aspect-ratio: auto;
    left: -13vw;
    bottom: -21vw;
    top: auto;
    right: auto;
    border: 0;
    border-radius: 49% 51% 0 0 / 70% 66% 0 0;
    background: linear-gradient(145deg, #25a9eb 0%, #0b75d1 54%, #1248ad 100%);
    box-shadow: 0 -3px 0 rgba(98,199,246,.28);
    transform: rotate(9deg);
    opacity: .93;
}

/* Open-book outline and dotted detail on the right. */
body.function-login::after {
    width: 400px;
    height: 430px;
    aspect-ratio: auto;
    right: -8px;
    top: 31%;
    bottom: auto;
    left: auto;
    border: 0;
    border-radius: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 210'%3E%3Cg fill='none' stroke='%232c5bb8' stroke-width='5' opacity='.48'%3E%3Cpath d='M160 58C121 26 79 18 30 24v123c48-6 91 5 130 38V58Z'/%3E%3Cpath d='M160 58c39-32 81-40 130-34v123c-48-6-91 5-130 38V58Z'/%3E%3Cpath d='M20 42H7v128c57-8 107 4 153 37 46-33 96-45 153-37V42h-13'/%3E%3C/g%3E%3C/svg%3E"), radial-gradient(circle, rgba(49,151,231,.56) 0 3px, transparent 4px);
    background-position: right 18px top 0, right 44px bottom 0;
    background-size: 330px 217px, 112px 112px;
    background-repeat: no-repeat;
    transform: none;
    opacity: .78;
}

body.function-login .r-pretty-login-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 20px;
    padding: 28px 20px 20px;
}

/* Pin outline and dotted texture on the left. */
body.function-login .r-pretty-login-page::before {
    content: "";
    position: fixed;
    z-index: -1;
    width: 270px;
    height: 410px;
    left: 5%;
    top: 18%;
    pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 230'%3E%3Cpath d='M90 8c-43 0-78 35-78 78 0 58 78 133 78 133s78-75 78-133C168 43 133 8 90 8Z' fill='none' stroke='%23345fc1' stroke-width='2' opacity='.52'/%3E%3C/svg%3E"), radial-gradient(circle, rgba(41,159,233,.52) 0 3px, transparent 4px);
    background-position: center top, left bottom;
    background-size: 160px 205px, 128px 128px;
    background-repeat: no-repeat;
}

/* Institutional footer now sits outside the card. */
body.function-login .r-pretty-login-page::after {
    content: "SISTEMA DE GESTI\00D3 N ESCOLAR" !important;
    position: static;
    display: block !important;
    flex: 0 0 auto;
    min-height: 28px;
    padding: 7px 0 5px 38px;
    color: rgba(255,255,255,.84);
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36'%3E%3Cg fill='none' stroke='%23dce9ff' stroke-width='2'%3E%3Cpath d='M4 14h28v18H4zM9 14V8l9-5 9 5v6M2 32h32M15 21h6v11M8 20h3v4H8zM25 20h3v4h-3zM8 27h3v3H8zM25 27h3v3H25z'/%3E%3C/g%3E%3C/svg%3E") left center / 29px 29px no-repeat;
    font-size: 12px;
    font-weight: 650;
    letter-spacing: .12em;
    line-height: 1.2;
    text-align: center;
}

body.function-login .r-pretty-login-page > .r-controls {
    width: 600px !important;
    max-width: calc(100vw - 40px) !important;
    border-color: rgba(255,255,255,.88);
    box-shadow: 0 28px 65px rgba(4,12,48,.34), 0 4px 14px rgba(4,12,48,.12);
}
body.function-login .r-pretty-login-page > .r-controls::after { content: none !important; display: none !important; }
body.function-login .r-pretty-login-page .r-mainform { padding: 25px 48px 26px; }

body.function-login .r-pretty-login-page [data-itemtype="login-logo"] {
    flex-wrap: nowrap;
    gap: 18px;
    min-height: 128px;
    margin-bottom: 0;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before {
    flex: 0 0 108px;
    width: 108px;
    height: 128px;
}
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after {
    content: "Tu\A Secundaria";
    min-width: 310px;
    background: linear-gradient(180deg, #172a83 0%, #172a83 43%, #069bd8 58%, #069bd8 100%);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-family: Inter, "Segoe UI", Arial, sans-serif;
    font-size: 50px;
    font-weight: 850;
    letter-spacing: -.055em;
    line-height: .84;
    text-align: left;
    white-space: pre-line;
}
body.function-login .r-pretty-login-page [data-cellId="top_c3"] {
    position: relative;
    z-index: 2;
    margin-top: -30px;
    padding-left: 128px;
}
body.function-login .r-pretty-login-page [data-itemtype="login_welcome"]::before {
    margin: 0;
    color: #223775;
    font-size: 14px;
    letter-spacing: 0;
    text-align: left;
}

body.function-login .r-pretty-login-page #form_above-grid_1 { height: 66px !important; margin-top: 28px; }
body.function-login .r-pretty-login-page #form_above-grid_1::before { font-size: 28px; font-weight: 800; }
body.function-login .r-pretty-login-page #form_above-grid_1::after { top: 37px; color: #53627f; font-size: 14px; }
body.function-login .r-pretty-login-page .r-edit-label { color: #162b66; font-size: 12px; letter-spacing: .035em; }
body.function-login .r-pretty-login-page input[type="text"],
body.function-login .r-pretty-login-page input[type="password"] { height: 52px; border-color: #bcc7d9; border-radius: 9px; }
body.function-login .r-pretty-login-page input[type="text"]:focus,
body.function-login .r-pretty-login-page input[type="password"]:focus { border-color: #123ec4; box-shadow: 0 0 0 3px rgba(18,62,196,.12); }

body.function-login .r-pretty-login-page .btn-primary,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn {
    min-height: 54px;
    background: linear-gradient(90deg, #102eb0 0%, #076ec8 52%, #11b8d4 100%);
    box-shadow: 0 10px 22px rgba(8,83,188,.24);
}
body.function-login .r-pretty-login-page .btn-primary::after,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn::after { font-size: 15px; font-weight: 750; letter-spacing: .015em; }
body.function-login .r-pretty-login-page [data-cellId="footer_c1"]::after { content: "\00BF Necesitas ayuda?"; margin-top: 18px; color: #0d48ca; font-size: 14px; }

@media (max-width: 767px) {
    body.function-login::before { width: 110vw; height: 46vw; left: -42vw; bottom: -28vw; }
    body.function-login::after,
    body.function-login .r-pretty-login-page::before { opacity: .26; }
    body.function-login .r-pretty-login-page { gap: 14px; padding: max(18px, env(safe-area-inset-top)) 14px max(16px, env(safe-area-inset-bottom)); }
    body.function-login .r-pretty-login-page > .r-controls { width: 100% !important; max-width: none !important; }
    body.function-login .r-pretty-login-page .r-mainform { padding: 24px 22px 23px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] { gap: 9px; min-height: 92px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 70px; width: 70px; height: 86px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { min-width: 0; font-size: clamp(30px, 9.2vw, 38px); line-height: .88; }
    body.function-login .r-pretty-login-page [data-cellId="top_c3"] { margin-top: 3px; padding-left: 0; }
    body.function-login .r-pretty-login-page [data-itemtype="login_welcome"]::before { font-size: 12px; text-align: center; }
    body.function-login .r-pretty-login-page #form_above-grid_1 { height: 68px !important; margin-top: 18px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::before { font-size: 24px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::after { top: 35px; font-size: 12px; }
    body.function-login .r-pretty-login-page input[type="text"],
    body.function-login .r-pretty-login-page input[type="password"] { height: 48px; }
    body.function-login .r-pretty-login-page .btn-primary,
    body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn { min-height: 50px; }
    body.function-login .r-pretty-login-page::after { min-height: 24px; padding-left: 31px; background-size: 24px 24px; font-size: 10px; }
}

@media (max-width: 360px) {
    body.function-login .r-pretty-login-page .r-mainform { padding: 21px 17px 20px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] { gap: 6px; min-height: 84px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 62px; width: 62px; height: 76px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { font-size: 29px; }
}

@media (max-height: 740px) and (min-width: 768px) {
    body.function-login .r-pretty-login-page { gap: 13px; padding-top: 17px; padding-bottom: 13px; }
    body.function-login .r-pretty-login-page .r-mainform { padding: 18px 46px 20px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] { min-height: 108px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before { flex-basis: 90px; width: 90px; height: 108px; }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after { min-width: 286px; font-size: 44px; }
    body.function-login .r-pretty-login-page [data-cellId="top_c3"] { margin-top: -27px; padding-left: 110px; }
    body.function-login .r-pretty-login-page #form_above-grid_1 { height: 61px !important; margin-top: 21px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::before { font-size: 25px; }
    body.function-login .r-pretty-login-page #form_above-grid_1::after { top: 34px; font-size: 13px; }
    body.function-login .r-pretty-login-page input[type="text"],
    body.function-login .r-pretty-login-page input[type="password"] { height: 48px; }
    body.function-login .r-pretty-login-page .btn-primary,
    body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn { min-height: 50px; }
    body.function-login .r-pretty-login-page [data-cellId="footer_c1"]::after { margin-top: 13px; }
}

/* LOGIN V6.1 - header alignment and generated-margin cleanup */
body.function-login .r-pretty-login-page .r-mainform {
    margin: 0 !important;
}
body.function-login .r-pretty-login-page::before {
    transform: none !important;
    filter: none !important;
    border-radius: 0 !important;
}
@media (min-width: 768px) {
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"] {
        min-height: 120px;
    }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before {
        flex: 0 0 102px;
        width: 102px;
        height: 122px;
    }
    body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::after {
        min-width: 310px;
        font-size: 48px;
    }
    body.function-login .r-pretty-login-page [data-cellId="top_c3"] {
        margin-top: -13px;
        padding-left: 188px;
    }
}
@media (max-width: 767px) {
    body.function-login .r-pretty-login-page [data-cellId="top_c3"] {
        margin-top: 3px;
        padding-left: 0;
    }
}

/* LOGIN V6.2 - high-resolution transparent institutional emblem */
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before {
    background-image: url("../../images/logo_institucional_v2.png");
}

/* LOGIN V6.3 - optically trimmed emblem for the header */
body.function-login .r-pretty-login-page [data-itemtype="login-logo"]::before {
    background-image: url("../../images/logo_institucional_v2_trim.png");
}

/* LOGIN V6.4 - neutralize PHPRunner split-page width on responsive layouts */
body.function-login .r-pretty-login-page {
    width: 100% !important;
    max-width: none !important;
    flex: 0 0 100% !important;
}
@media (max-width: 767px) {
    body.function-login .r-pretty-login-page > .r-controls {
        width: auto !important;
        max-width: none !important;
        align-self: stretch;
    }
}

/* LOGIN V6.5 - full-width outer PHPRunner form */
body.function-login > form {
    width: 100% !important;
    max-width: none !important;
    min-height: 100vh;
    min-height: 100dvh;
    margin: 0 !important;
}

/* LOGIN V6.6 - reset inherited footer transform */
body.function-login .r-pretty-login-page::after {
    left: auto !important;
    right: auto !important;
    top: auto !important;
    bottom: auto !important;
    margin: 0 !important;
    transform: none !important;
    filter: none !important;
}

/* LOGIN V6.7 - final minimal polish */
body.function-login::after {
    background-color: transparent !important;
}
body.function-login .r-pretty-login-page [data-cellId="footer_c1"]::after {
    content: "\00BF Necesitas ayuda? Contacta a tu escuela";
    color: #53627f;
    font-size: 13px;
    font-weight: 500;
}
/* ============================================================
   VISUAL SYSTEM V7 - unified institutional interface
   Interactive PHPRunner pages only; print layouts stay intact.
   ============================================================ */
:root {
    --v3-navy-950: #111d57;
    --v3-navy-900: #172767;
    --v3-navy-800: #172a83;
    --v3-primary-700: #102eb0;
    --v3-primary-600: #123ec4;
    --v3-action-600: #076ec8;
    --v3-action-500: #069bd8;
    --v3-cyan-500: #11b8d4;
    --v3-success-600: #168a4a;
    --v3-warning-600: #a96b08;
    --v3-danger-600: #c13f3f;
    --v3-ink-900: #17213d;
    --v3-ink-700: #33405e;
    --v3-muted-600: #5f6d87;
    --v3-muted-500: #73809a;
    --v3-border-300: #d5deeb;
    --v3-border-200: #e5ebf3;
    --v3-surface: #ffffff;
    --v3-canvas: #f4f7fb;
    --v3-canvas-blue: #edf3fa;
    --v3-focus-ring: rgba(7, 110, 200, .20);
    --v3-shadow-sm: 0 2px 8px rgba(17, 29, 87, .08);
    --v3-shadow-md: 0 10px 28px rgba(17, 29, 87, .12);
    --v3-radius-sm: 8px;
    --v3-radius-md: 12px;
    --v3-radius-lg: 16px;
    --v3-font-sans: Inter, "Segoe UI", Roboto, Arial, sans-serif;

    /* Stable aliases used by the earlier login/menu layer. */
    --brand: var(--v3-primary-600);
    --brand-dark: var(--v3-navy-800);
    --brand-deep: var(--v3-navy-950);
    --brand-light: var(--v3-action-500);
    --accent: var(--v3-cyan-500);
    --accent-dark: var(--v3-action-600);
    --ok: var(--v3-success-600);
    --ink: var(--v3-ink-900);
    --muted: var(--v3-muted-600);
    --bg-soft: var(--v3-canvas);
    --radius: var(--v3-radius-lg);
    --shadow-card: var(--v3-shadow-md);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) {
    color: var(--v3-ink-900);
    background: var(--v3-canvas);
    font-family: var(--v3-font-sans);
    font-size: 14px;
    line-height: 1.5;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) ::selection {
    color: #fff;
    background: var(--v3-action-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) a {
    color: var(--v3-action-600);
    text-decoration-color: rgba(7, 110, 200, .35);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) a:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) a:focus {
    color: var(--v3-primary-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) h1,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) h2,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) h3,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) h4 {
    color: var(--v3-ink-900);
    font-family: var(--v3-font-sans);
    font-weight: 750;
    letter-spacing: -.02em;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-body {
    min-width: 0;
    color: var(--v3-ink-900);
    background: var(--v3-canvas);
}

/* Navigation shell */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left {
    color: #dbe7ff;
    background: linear-gradient(180deg, var(--v3-navy-950) 0%, var(--v3-navy-900) 62%, var(--v3-navy-800) 100%);
    box-shadow: 4px 0 18px rgba(17, 29, 87, .18);
    font-family: var(--v3-font-sans);
    font-weight: 500;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .mCustomScrollBox,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .mCSB_container {
    background: transparent;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left [data-logo-cell] {
    min-height: 70px;
    padding: 0;
    background: var(--v3-surface);
    border-bottom: 1px solid var(--v3-border-200);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left [data-logo-cell] .navbar-brand {
    display: flex !important;
    align-items: center;
    width: 100%;
    height: 70px;
    gap: 10px;
    margin: 0;
    padding: 7px 16px;
    color: var(--v3-action-600);
    font-family: var(--v3-font-sans);
	text-transform: none !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left [data-logo-cell] img {
    display: none !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left [data-logo-cell] .navbar-brand::before {
    content: "";
    flex: 0 0 42px;
    width: 42px;
    height: 54px;
    background: url("../../images/logo_institucional_v2_trim.png") center / contain no-repeat;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left [data-logo-cell] .navbar-brand::after {
    content: "Tu Secundaria";
    color: var(--v3-action-600);
    font-size: 19px;
    font-weight: 800;
    letter-spacing: -.035em;
    line-height: 1;
    white-space: nowrap;
	text-transform: none !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left.r-left-collapsed [data-logo-cell] .navbar-brand {
    justify-content: center;
    padding-inline: 8px;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left.r-left-collapsed [data-logo-cell] .navbar-brand::before {
    flex-basis: 34px;
    width: 34px;
    height: 46px;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left.r-left-collapsed [data-logo-cell] .navbar-brand::after {
    display: none;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu a,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .r-menu-link,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .r-menu-title,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .glyphicon,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .fa {
    color: #dbe7ff !important;
    font-family: inherit;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu > li > a,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li > a {
    margin: 2px 8px;
    border-radius: var(--v3-radius-sm);
    transition: background-color .16s ease, color .16s ease, transform .16s ease;
}

/* Acceso uniforme al inicio en todas las páginas generadas de PHPRunner. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left:not(.r-left-collapsed) .r-menu > li > a[href="menu.php"] {
    display: flex;
    align-items: center;
    min-height: 44px;
    gap: 9px;
    margin: 8px 8px 10px;
    padding: 10px 14px;
    color: #fff !important;
    background: rgba(255, 255, 255, .08);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    font-weight: 750;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left:not(.r-left-collapsed) .r-menu > li > a[href="menu.php"]::before {
    content: "\f015";
    flex: 0 0 auto;
    color: #dbe7ff;
    font-family: "Font Awesome 5 Free";
    font-size: 15px;
    font-weight: 900;
    line-height: 1;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left:not(.r-left-collapsed) .r-menu > li > a[href="menu.php"] .r-menu-link {
    min-width: 0;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li > a:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li > a:focus {
    color: #fff !important;
    background: rgba(255, 255, 255, .11) !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li.active > a,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li.current > a {
    color: #fff !important;
    background: linear-gradient(90deg, var(--v3-primary-600), var(--v3-action-500)) !important;
    box-shadow: 0 6px 16px rgba(6, 155, 216, .24);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li.active > a *,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu li.current > a * {
    color: #fff !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-topheader,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-topheader .navbar-default {
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border: 0;
    border-bottom: 1px solid var(--v3-border-200);
    box-shadow: var(--v3-shadow-sm);
    font-family: var(--v3-font-sans);
}

/* Buttons and interactive states */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn {
    border-radius: var(--v3-radius-sm);
    font-family: var(--v3-font-sans);
    font-weight: 650;
    letter-spacing: 0;
    transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn:hover:not([disabled]) {
    transform: translateY(-1px);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-primary {
    color: #fff;
    background: var(--v3-action-600);
    border-color: var(--v3-action-600);
    box-shadow: 0 4px 12px rgba(7, 110, 200, .18);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-primary:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-primary:focus,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-primary:active {
    color: #fff;
    background: var(--v3-primary-600);
    border-color: var(--v3-primary-600);
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-default {
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border-color: var(--v3-border-300);
    box-shadow: none;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-default:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-default:focus,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-default:active {
    color: var(--v3-primary-600);
    background: var(--v3-canvas-blue);
    border-color: #b9c8dc;
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-success {
    color: #fff;
    background: var(--v3-success-600);
    border-color: var(--v3-success-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-warning {
    color: #fff;
    background: var(--v3-warning-600);
    border-color: var(--v3-warning-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-danger {
    color: #fff;
    background: var(--v3-danger-600);
    border-color: var(--v3-danger-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn-link {
    color: var(--v3-action-600);
    background: transparent;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn[disabled],
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn.disabled {
    opacity: .55;
    transform: none;
    box-shadow: none;
}

/* Forms */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .form-control {
    min-height: 38px;
    color: var(--v3-ink-900);
    background-color: var(--v3-surface);
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    box-shadow: none;
    font-family: var(--v3-font-sans);
    font-weight: 450;
    transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .form-control:hover {
    border-color: #b5c3d7;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .form-control:focus {
    color: var(--v3-ink-900);
    background: #fff;
    border-color: var(--v3-action-600);
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
    outline: 0;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-edit-label,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .control-label,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) label {
    color: var(--v3-ink-700);
    font-family: var(--v3-font-sans);
    font-weight: 650;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .input-group .form-control:first-child {
    border-radius: var(--v3-radius-sm) 0 0 var(--v3-radius-sm);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .input-group-btn:last-child > .btn {
    border-radius: 0 var(--v3-radius-sm) var(--v3-radius-sm) 0;
}

body.function-add .r-edit-form,
body.function-edit .r-edit-form,
body.function-view .r-edit-form {
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-md);
    box-shadow: var(--v3-shadow-sm);
}

body.function-add .r-edit-form .r-integrated-field,
body.function-edit .r-edit-form .r-integrated-field,
body.function-view .r-edit-form .r-integrated-field {
    padding-inline: 20px;
}

/* Tables, toolbars and scrolling */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-grid {
    max-width: 100%;
    overflow-x: auto;
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-md);
    box-shadow: var(--v3-shadow-sm);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table {
    color: var(--v3-ink-900);
    background: var(--v3-surface);
    font-family: var(--v3-font-sans);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table > thead > tr > th {
    color: var(--v3-ink-700);
    background: var(--v3-canvas-blue);
    border-color: var(--v3-border-300);
    font-size: 12px;
    font-weight: 750;
    letter-spacing: .015em;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table > tbody > tr > td,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table > tfoot > tr > td {
    color: var(--v3-ink-700);
    border-color: var(--v3-border-200);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table-striped > tbody > tr:nth-of-type(odd) {
    background: #f9fbfe;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table-hover > tbody > tr:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .table > tbody > tr:hover {
    background: #edf6ff;
}

body.function-list .r-grid .form-control {
    min-height: 34px;
    height: 36px;
    padding: 6px 9px;
    font-size: 13px;
}

body.function-list .r-grid::-webkit-scrollbar {
    width: 12px;
    height: 12px;
}

body.function-list .r-grid::-webkit-scrollbar-track {
    background: #edf2f8;
}

body.function-list .r-grid::-webkit-scrollbar-thumb {
    background: #9aabc2;
    border: 2px solid #edf2f8;
    border-radius: 999px;
    box-shadow: none;
}

body.function-list .r-grid::-webkit-scrollbar-thumb:hover,
body.function-list .r-grid::-webkit-scrollbar-thumb:active {
    background: var(--v3-action-600);
    box-shadow: none;
}

body.function-list .r-grid,
body.function-list .r-grid .rnr-gridtable > tbody {
    scrollbar-color: #8298b5 #edf2f8;
    scrollbar-width: auto;
}

/* Panels, modals, dropdowns and status feedback */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .panel,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .well {
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-md);
    box-shadow: var(--v3-shadow-sm);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .panel-heading {
    color: var(--v3-ink-900);
    background: var(--v3-canvas-blue);
    border-color: var(--v3-border-300);
    font-family: var(--v3-font-sans);
    font-weight: 700;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .modal-content {
    color: var(--v3-ink-900);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-lg);
    box-shadow: 0 24px 70px rgba(17, 29, 87, .22);
    font-family: var(--v3-font-sans);
    overflow: hidden;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .modal-header,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .modal-footer {
    background: #fbfcfe;
    border-color: var(--v3-border-200);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .dropdown-menu {
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-sm);
    box-shadow: var(--v3-shadow-md);
    font-family: var(--v3-font-sans);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .dropdown-menu > li > a {
    color: var(--v3-ink-700);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .dropdown-menu > li > a:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .dropdown-menu > li > a:focus {
    color: var(--v3-primary-600);
    background: var(--v3-canvas-blue);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .alert {
    border-radius: var(--v3-radius-sm);
    font-family: var(--v3-font-sans);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .pagination > li > a,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .pagination > li > span {
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border-color: var(--v3-border-300);
    font-family: var(--v3-font-sans);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .pagination > .active > a,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .pagination > .active > span {
    color: #fff;
    background: var(--v3-action-600);
    border-color: var(--v3-action-600);
}

@media (max-width: 767px) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) {
        font-size: 14px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-body {
        max-width: 100vw;
        overflow-x: hidden;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .form-control {
        min-height: 42px;
        font-size: 16px;
    }

    body.function-list .r-grid {
        max-width: 100%;
        overflow-x: auto;
        border-radius: var(--v3-radius-sm);
    }

    body.function-list .r-grid .form-control {
        min-height: 38px;
        height: 40px;
        font-size: 14px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .btn {
        min-height: 40px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .modal-dialog {
        margin: 10px;
    }
}
/* VISUAL SYSTEM V7.1 - preserve icon fonts and contain wide grids */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .fa {
    font-family: "Font Awesome 5 Free" !important;
    font-weight: 900;
}
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-left .r-menu .glyphicon {
    font-family: "Glyphicons Halflings" !important;
    font-weight: 400;
}
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-content-col {
    min-width: 0 !important;
    max-width: 100%;
    overflow-x: hidden;
}
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-body {
    width: 100%;
    max-width: 100%;
}
/* VISUAL SYSTEM V7.2 - tables own their horizontal overflow */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-body {
    display: block !important;
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page) .r-grid {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
}

/* VISUAL SYSTEM V7.3 - accessible scrolling for wide PHPRunner lists */
body.function-list:not(.v3-cuadros-page) .r-grid {
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
}

@media (max-width: 767px) {
    body.function-list:not(.v3-cuadros-page) .r-grid {
        -webkit-overflow-scrolling: touch;
        touch-action: pan-x pan-y;
    }
}

/* VISUAL SYSTEM V7.4 - teléfono del tutor integrado en la lista Alumno */
body.v3-alumno-list [data-field="celular"] {
    min-width: 178px;
    white-space: nowrap;
}

body.v3-alumno-list [data-field="celular"] [data-itemtype="grid_field"] {
    display: inline-flex;
    min-width: 102px;
    min-height: 34px;
    align-items: center;
    justify-content: flex-start;
    vertical-align: middle;
}

body.v3-alumno-list .v3-phone-value {
    color: var(--v3-ink-900);
    font-weight: 650;
    letter-spacing: .015em;
}

body.v3-alumno-list .v3-phone-empty {
    color: var(--v3-muted-600);
    font-size: 12px;
    font-style: italic;
}

body.v3-alumno-list [data-v3-phone-edit] {
    display: inline-flex !important;
    width: 36px;
    min-width: 36px;
    max-width: 36px;
    height: 36px;
    min-height: 36px !important;
    margin-left: 7px;
    padding: 7px;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    white-space: nowrap;
    color: var(--v3-action-600);
    background: var(--v3-canvas-blue);
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    box-shadow: none;
    text-decoration: none;
}

body.v3-alumno-list [data-v3-phone-edit]:hover,
body.v3-alumno-list [data-v3-phone-edit]:focus {
    color: #fff;
    background: var(--v3-action-600);
    border-color: var(--v3-action-600);
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
    outline: 0;
}

.v3-phone-modal .modal-header {
    padding: 18px 22px 14px;
}

.v3-phone-modal .modal-body {
    padding: 20px 22px;
}

.v3-phone-modal .modal-footer {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    padding: 14px 22px 18px;
}

.v3-phone-modal-title {
    margin: 0;
    color: var(--v3-ink-900);
    font: 750 21px/1.25 var(--v3-font-sans);
}

.v3-phone-form .v3-phone-student {
    margin: 0 0 18px;
    color: var(--v3-primary-700);
    font-size: 15px;
    font-weight: 750;
    line-height: 1.35;
    text-transform: none;
}

.v3-phone-form label {
    display: block;
    margin-bottom: 7px;
    color: var(--v3-ink-700);
    font-size: 13px;
    font-weight: 700;
}

.v3-phone-form .form-control {
    min-height: 44px;
    color: var(--v3-ink-900);
    font-size: 17px;
    letter-spacing: .04em;
}

.v3-phone-help {
    margin: 8px 0 0;
    color: var(--v3-muted-600);
    font-size: 12.5px;
    line-height: 1.45;
}

.v3-phone-error {
    margin-top: 10px;
    padding: 9px 11px;
    color: #812d2d;
    background: #fff1f1;
    border: 1px solid #efbcbc;
    border-radius: var(--v3-radius-sm);
    font-size: 13px;
    font-weight: 600;
}

.v3-phone-notice {
    display: flex;
    gap: 9px;
    align-items: flex-start;
    margin-top: 16px;
    padding: 10px 12px;
    color: var(--v3-ink-700);
    background: var(--v3-canvas-blue);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-sm);
    font-size: 12.5px;
    line-height: 1.45;
}

.v3-phone-notice .glyphicon {
    margin-top: 2px;
    color: var(--v3-action-600);
}

.v3-phone-toast {
    position: fixed;
    z-index: 11000;
    top: 14px;
    left: 50%;
    display: flex;
    width: min(520px, calc(100vw - 28px));
    gap: 12px;
    align-items: flex-start;
    padding: 12px 14px;
    color: #135d35;
    background: #eefaf3;
    border: 1px solid #b7e2c8;
    border-left: 4px solid var(--v3-success-600);
    border-radius: var(--v3-radius-sm);
    box-shadow: var(--v3-shadow-md);
    font: 600 13px/1.45 var(--v3-font-sans);
    transform: translateX(-50%);
}

.v3-phone-toast span {
    flex: 1;
}

.v3-phone-toast button {
    padding: 0 3px;
    color: inherit;
    background: transparent;
    border: 0;
    font-size: 20px;
    line-height: 1;
}

.v3-phone-toast-error {
    color: #812d2d;
    background: #fff1f1;
    border-color: #efbcbc;
    border-left-color: var(--v3-danger-600);
}

@media (max-width: 767px) {
    body.v3-alumno-list [data-field="celular"] {
        min-width: 168px;
    }

    body.v3-alumno-list [data-v3-phone-edit] {
        width: 42px;
        min-width: 42px;
        max-width: 42px;
        height: 42px;
        min-height: 42px !important;
    }

    .v3-phone-modal .modal-dialog {
        width: auto !important;
        max-width: calc(100vw - 20px);
    }

    .v3-phone-modal .modal-content {
        width: 100% !important;
        height: auto !important;
        min-height: 0;
    }

    .v3-phone-modal .modal-body {
        width: auto !important;
        height: auto !important;
        padding: 18px 16px;
    }

    .v3-phone-modal .modal-header {
        padding: 16px 16px 12px;
    }

    .v3-phone-modal .modal-footer {
        flex-direction: column-reverse;
        padding: 12px 16px 16px;
    }

    .v3-phone-modal .modal-footer .btn {
        width: 100%;
        min-height: 44px;
    }
}

/* VISUAL SYSTEM V7.5 - seleccion acumulada para credenciales de Alumno */
body.v3-alumno-list .v3-credential-basket {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    gap: 6px;
    margin-right: 8px;
    vertical-align: middle;
    font-family: var(--v3-font-sans);
}

body.v3-alumno-list .v3-credential-review,
body.v3-alumno-list .v3-credential-clear {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    font: 700 13px/1.2 var(--v3-font-sans);
    transition: border-color .16s ease, background-color .16s ease, color .16s ease;
}

body.v3-alumno-list .v3-credential-review {
    gap: 8px;
    padding: 8px 10px;
}

body.v3-alumno-list .v3-credential-clear {
    width: 40px;
    padding: 8px;
}

body.v3-alumno-list .v3-credential-review:hover:not(:disabled),
body.v3-alumno-list .v3-credential-review:focus-visible,
body.v3-alumno-list .v3-credential-clear:hover,
body.v3-alumno-list .v3-credential-clear:focus-visible {
    color: var(--v3-action-600);
    background: var(--v3-canvas-blue);
    border-color: var(--v3-action-600);
    outline: 3px solid rgba(7, 110, 200, .14);
    outline-offset: 1px;
}

body.v3-alumno-list .v3-credential-review:disabled {
    color: var(--v3-muted-600);
    background: #f8fafc;
    cursor: default;
    opacity: .78;
}

body.v3-alumno-list .v3-credential-basket.has-selection .v3-credential-review {
    color: var(--v3-action-600);
    border-color: rgba(7, 110, 200, .36);
}

body.v3-alumno-list .v3-credential-count {
    display: inline-flex;
    min-width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    padding: 0 7px;
    color: #fff;
    background: var(--v3-action-600);
    border-radius: 999px;
    font-size: 12px;
    line-height: 1;
}

body.v3-alumno-list .v3-credential-print-count {
    color: var(--v3-action-600);
    font-weight: 750;
}

.v3-credential-modal {
    position: fixed;
    z-index: 12000;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(17, 29, 87, .48);
}

.v3-credential-dialog {
    display: flex;
    width: min(640px, 100%);
    max-height: min(82vh, 720px);
    flex-direction: column;
    overflow: hidden;
    color: var(--v3-ink-900);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-lg);
    box-shadow: 0 22px 60px rgba(17, 29, 87, .24);
    font-family: var(--v3-font-sans);
}

.v3-credential-dialog-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 22px 16px;
    border-bottom: 1px solid var(--v3-border-200);
}

.v3-credential-dialog-header h2 {
    margin: 0 0 4px;
    color: var(--v3-ink-900);
    font: 750 21px/1.25 var(--v3-font-sans);
}

.v3-credential-dialog-header p {
    margin: 0;
    color: var(--v3-muted-600);
    font: 500 13.5px/1.45 var(--v3-font-sans);
}

.v3-credential-dialog-close,
.v3-credential-remove-item {
    display: inline-flex;
    width: 40px;
    min-width: 40px;
    height: 40px;
    align-items: center;
    justify-content: center;
    color: var(--v3-muted-600);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
}

.v3-credential-dialog-close:hover,
.v3-credential-dialog-close:focus-visible,
.v3-credential-remove-item:hover,
.v3-credential-remove-item:focus-visible {
    color: var(--v3-danger-600);
    background: #fff4f4;
    border-color: rgba(193, 63, 63, .45);
    outline: 3px solid rgba(193, 63, 63, .12);
    outline-offset: 1px;
}

.v3-credential-list {
    overflow-y: auto;
    padding: 8px 22px;
    background: var(--v3-canvas);
}

.v3-credential-list-item {
    display: flex;
    min-height: 64px;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 8px 0;
    padding: 10px 12px 10px 14px;
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-md);
}

.v3-credential-list-identity {
    display: flex;
    min-width: 0;
    flex: 1;
    flex-direction: column;
    gap: 3px;
}

.v3-credential-list-identity strong {
    overflow-wrap: anywhere;
    color: var(--v3-ink-900);
    font-size: 14px;
    line-height: 1.35;
}

.v3-credential-list-identity span {
    color: var(--v3-muted-600);
    font-size: 12.5px;
    line-height: 1.35;
}

.v3-credential-dialog-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 16px 22px 20px;
    background: var(--v3-surface);
    border-top: 1px solid var(--v3-border-200);
}

.v3-credential-dialog-footer .btn {
    min-height: 42px;
    padding: 10px 16px;
    border-radius: var(--v3-radius-sm);
    font: 700 13.5px/1.2 var(--v3-font-sans);
}

.v3-credential-secondary {
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-300);
}

.v3-credential-primary {
    color: #fff;
    background: linear-gradient(110deg, var(--v3-primary-700), var(--v3-action-500));
    border: 1px solid var(--v3-action-600);
    box-shadow: 0 7px 16px rgba(7, 110, 200, .18);
}

.v3-credential-primary:hover,
.v3-credential-primary:focus-visible {
    color: #fff;
    background: var(--v3-action-600);
    outline: 3px solid rgba(7, 110, 200, .18);
    outline-offset: 2px;
}

@media (max-width: 767px) {
    body.v3-alumno-list .v3-credential-basket {
        min-height: 42px;
        margin-right: 6px;
    }

    body.v3-alumno-list .v3-credential-review,
    body.v3-alumno-list .v3-credential-clear {
        min-height: 44px !important;
    }

    body.v3-alumno-list .v3-credential-review-label {
        display: none;
    }

    body.v3-alumno-list .v3-credential-clear {
        width: 42px;
    }

    .v3-credential-modal {
        align-items: flex-end;
        padding: 10px;
    }

    .v3-credential-dialog {
        max-height: calc(100vh - 20px);
        border-radius: var(--v3-radius-lg) var(--v3-radius-lg) var(--v3-radius-md) var(--v3-radius-md);
    }

    .v3-credential-dialog-header {
        padding: 17px 16px 13px;
    }

    .v3-credential-list {
        padding: 6px 14px;
    }

    .v3-credential-dialog-footer {
        flex-direction: column-reverse;
        padding: 14px 16px 16px;
    }

    .v3-credential-dialog-footer .btn {
        width: 100%;
        min-height: 44px !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.v3-alumno-list .v3-credential-review,
    body.v3-alumno-list .v3-credential-clear {
        transition: none;
    }
}

/* VISUAL SYSTEM V7.6 - acceso contextual al expediente del alumno */
body.v3-alumno-list [data-itemtype="grid_details_link"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 128px;
}

body.v3-alumno-list .v3-expediente-link {
    display: inline-flex;
    min-height: 36px;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 7px 10px;
    color: var(--v3-action-600);
    background: var(--v3-surface);
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    font: 700 12.5px/1.2 var(--v3-font-sans);
    text-decoration: none;
    white-space: nowrap;
    transition: color .16s ease, background-color .16s ease, border-color .16s ease, box-shadow .16s ease;
}

body.v3-alumno-list .v3-expediente-link .glyphicon {
    color: currentColor;
    font-size: 14px;
}

body.v3-alumno-list .v3-expediente-link:hover,
body.v3-alumno-list .v3-expediente-link:focus-visible {
    color: var(--v3-primary-700);
    background: var(--v3-canvas-blue);
    border-color: var(--v3-action-600);
    box-shadow: 0 0 0 3px rgba(7, 110, 200, .14);
    outline: 0;
    text-decoration: none;
}

body.v3-alumno-list .v3-expediente-link:active {
    background: #e5f0fb;
    box-shadow: 0 0 0 2px rgba(7, 110, 200, .12);
}

@media (max-width: 767px) {
    body.v3-alumno-list [data-itemtype="grid_details_link"] {
        min-width: 44px;
    }

    body.v3-alumno-list .v3-expediente-link {
        width: 42px;
        min-width: 42px;
        min-height: 42px !important;
        padding: 8px;
    }

    body.v3-alumno-list .v3-expediente-label {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.v3-alumno-list .v3-expediente-link {
        transition: none;
    }
}

/* V3EXPEDIENTE|FORMATO_CSS|INICIO */
.v3exp-dialog-open { overflow: hidden; }
.v3exp-cycle-overlay { position: fixed; inset: 0; z-index: 10050; display: grid; place-items: center; padding: 20px; background: rgba(9, 24, 58, .58); backdrop-filter: blur(3px); }
.v3exp-cycle-dialog { position: relative; width: min(520px, 100%); padding: 30px; border: 1px solid #dbe5f2; border-radius: 20px; background: #fff; box-shadow: 0 24px 70px rgba(8, 31, 78, .28); color: #172541; font-family: "Segoe UI", Arial, sans-serif; }
.v3exp-cycle-close { position: absolute; top: 12px; right: 14px; width: 38px; height: 38px; border: 0; border-radius: 50%; background: transparent; color: #66758e; font-size: 26px; line-height: 1; }
.v3exp-cycle-close:hover, .v3exp-cycle-close:focus { background: #edf4fb; color: #0b65bd; outline: none; }
.v3exp-cycle-icon { display: grid; place-items: center; width: 54px; height: 54px; margin-bottom: 14px; border-radius: 16px; background: #e9f5ff; color: #0877d1; font-size: 23px; }
.v3exp-cycle-dialog h2 { margin: 0 0 7px; color: #10234f; font-size: 25px; font-weight: 750; }
.v3exp-cycle-intro { margin: 0 0 20px; color: #60708c; line-height: 1.5; }
.v3exp-cycle-options { display: grid; gap: 10px; }
.v3exp-cycle-option { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border: 1px solid #dbe5f2; border-radius: 13px; cursor: pointer; transition: .18s ease; }
.v3exp-cycle-option:hover, .v3exp-cycle-option.is-selected { border-color: #1689d4; background: #f2f9ff; box-shadow: 0 0 0 2px rgba(22, 137, 212, .09); }
.v3exp-cycle-option input { margin-top: 4px; accent-color: #0877d1; }
.v3exp-cycle-option span { display: grid; flex: 1; gap: 3px; }
.v3exp-cycle-option strong { color: #183365; font-size: 15px; }
.v3exp-cycle-option small { color: #71809a; line-height: 1.4; }
.v3exp-cycle-select { width: 100%; margin-top: 8px; padding: 8px 10px; border: 1px solid #bfd0e4; border-radius: 8px; background: #fff; color: #172541; }
.v3exp-cycle-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; }
.v3exp-cycle-actions .btn { min-width: 112px; padding: 9px 18px; border-radius: 9px; font-weight: 700; }

body.v3-expediente-document { background: #eef3f9 !important; color: #172541; font-family: "Segoe UI", Arial, sans-serif; }
body.v3-expediente-document .r-small-page { width: min(900px, calc(100% - 32px)) !important; margin: 26px auto !important; padding: 0 !important; background: transparent !important; }
.v3exp-document { overflow: hidden; border: 1px solid #dbe4ef; border-radius: 16px; background: #fff; box-shadow: 0 14px 42px rgba(16, 46, 91, .13); }
.v3exp-document-head { display: flex; align-items: center; gap: 20px; padding: 28px 34px 22px; border-top: 7px solid #123a8b; border-bottom: 1px solid #dce6f1; }
.v3exp-document-head img { width: 62px; height: 62px; object-fit: contain; }
.v3exp-school span { color: #0877c9; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.v3exp-school h1 { margin: 4px 0; color: #10234f; font-size: 27px; line-height: 1.2; }
.v3exp-school p { margin: 0; color: #52647f; font-size: 14px; font-weight: 650; }
.v3exp-school-meta { display: flex; flex-wrap: wrap; gap: 8px 24px; padding: 12px 34px; background: #f6f9fd; border-bottom: 1px solid #e1e8f1; }
.v3exp-info { display: inline-flex; gap: 6px; align-items: baseline; }
.v3exp-info span { color: #66758e; font-size: 11px; font-weight: 700; }
.v3exp-info strong { color: #172541; font-size: 12px; }
.v3exp-student { display: grid; grid-template-columns: 2fr 1fr; gap: 14px 22px; margin: 24px 34px 16px; padding: 20px; border: 1px solid #cfdeed; border-left: 5px solid #13a6c9; border-radius: 12px; background: #fbfdff; }
.v3exp-student > div { display: grid; gap: 4px; }
.v3exp-student span { color: #687892; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.v3exp-student strong { color: #10234f; font-size: 14px; }
.v3exp-summary { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 0 34px 14px; padding: 10px 14px; border-radius: 9px; background: #edf7ff; color: #24527c; }
.v3exp-summary div { display: flex; gap: 8px; align-items: baseline; }
.v3exp-summary div strong { color: #0877c9; font-size: 20px; }
.v3exp-summary span, .v3exp-summary p { margin: 0; font-size: 12px; font-weight: 650; }
.v3exp-records { display: grid; gap: 12px; padding: 0 34px 26px; }
.v3exp-record { break-inside: avoid; overflow: hidden; border: 1px solid #d8e3ef; border-radius: 11px; background: #fff; }
.v3exp-record-head { display: flex; align-items: center; gap: 11px; padding: 11px 14px; border-bottom: 1px solid #e2eaf3; background: #f7faff; }
.v3exp-number { display: grid; place-items: center; flex: 0 0 29px; height: 29px; border-radius: 50%; background: #123a8b; color: #fff; font-size: 12px; font-weight: 800; }
.v3exp-record-head > div { display: grid; flex: 1; gap: 1px; }
.v3exp-record-head > div strong { color: #10234f; font-size: 14px; }
.v3exp-record-head small { color: #70809a; font-size: 10px; }
.v3exp-cycle-tag { padding: 4px 8px; border-radius: 999px; background: #dff5fb; color: #08718c; font-size: 10px; font-weight: 800; }
.v3exp-record-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 18px; padding: 13px 15px 15px; }
.v3exp-record-grid .v3exp-info { display: grid; gap: 3px; }
.v3exp-record-grid .v3exp-info:last-child:nth-child(odd) { grid-column: 1 / -1; }
.v3exp-empty { padding: 28px; border: 1px dashed #b9c9dc; border-radius: 10px; color: #66758e; text-align: center; }
.v3exp-ack { margin: 18px 34px 26px; padding: 24px; border: 1px solid #cbd9e8; border-radius: 12px; background: #fcfdff; }
.v3exp-ack h2 { margin: 0 0 4px; color: #10234f; font-size: 18px; }
.v3exp-ack > p { margin: 0 0 25px; color: #697991; font-size: 12px; }
.v3exp-ack-row { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.v3exp-line { min-height: 52px; margin-bottom: 15px; border-bottom: 1px solid #455a76; }
.v3exp-line span { display: block; color: #52647f; font-size: 11px; font-weight: 700; }
.v3exp-observations { min-height: 82px; background: repeating-linear-gradient(to bottom, transparent 0, transparent 39px, #9aabc0 40px); border-bottom: 0; }
.v3exp-document-footer { display: flex; justify-content: space-between; padding: 13px 34px; background: #10234f; color: #e7eef8; font-size: 10px; letter-spacing: .04em; }

@media (max-width: 600px) {
	.v3exp-cycle-dialog { padding: 24px 18px 18px; border-radius: 16px; }
	.v3exp-cycle-dialog h2 { font-size: 22px; }
	.v3exp-cycle-actions { display: grid; grid-template-columns: 1fr 1fr; }
	body.v3-expediente-document .r-small-page { width: 100% !important; margin: 0 !important; }
	.v3exp-document { border: 0; border-radius: 0; box-shadow: none; }
	.v3exp-document-head, .v3exp-school-meta, .v3exp-records { padding-left: 18px; padding-right: 18px; }
	.v3exp-document-head { align-items: flex-start; gap: 13px; }
	.v3exp-document-head img { width: 55px; height: 55px; }
	.v3exp-school h1 { font-size: 20px; }
	.v3exp-student { grid-template-columns: 1fr; margin: 18px; }
	.v3exp-summary { align-items: flex-start; flex-direction: column; margin: 0 18px 14px; }
	.v3exp-record-grid, .v3exp-ack-row { grid-template-columns: 1fr; }
	.v3exp-record-grid .v3exp-info { grid-column: 1 / -1; }
	.v3exp-ack { margin: 0 18px 20px; }
}

@media print {
	@page { size: 8.5in 11in; margin: .45in .42in .58in; @bottom-center { content: "Página " counter(page) " de " counter(pages); color: #6a7891; font: 8pt "Segoe UI", Arial, sans-serif; } }
	html, body.v3-expediente-document { width: auto !important; min-width: 0 !important; margin: 0 !important; padding: 0 !important; background: #fff !important; overflow: visible !important; }
	body.v3-expediente-document .r-small-page { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
	.v3exp-document { width: 100% !important; max-width: none !important; overflow: visible; border: 0; border-radius: 0; box-shadow: none; }
	.v3exp-document-head { padding: 0 0 12px; border-top-width: 5px; page-break-inside: avoid; break-inside: avoid-page; }
	.v3exp-document-head img { width: 48px; height: 48px; }
	.v3exp-school h1 { font-size: 20pt; }
	.v3exp-school-meta { padding: 8px 0; }
	.v3exp-student { margin: 14px 0 10px; padding: 13px; }
	.v3exp-summary { margin: 0 0 10px; }
	.v3exp-records { display: block; padding: 0 0 12px; }
	.v3exp-record { display: block; margin: 0 0 8px; page-break-inside: avoid !important; break-inside: avoid-page !important; }
	.v3exp-record-head, .v3exp-record-grid, .v3exp-record-grid .v3exp-info { page-break-inside: avoid; break-inside: avoid; }
	.v3exp-school-meta, .v3exp-student, .v3exp-summary { page-break-inside: avoid; break-inside: avoid-page; }
	/* El acuse sigue siendo indivisible, pero aprovecha la hoja en curso cuando cabe completo. */
	.v3exp-ack { margin: 12px 0 0; padding: 18px; page-break-inside: avoid !important; break-inside: avoid-page !important; }
	.v3exp-ack > p { margin-bottom: 14px; }
	.v3exp-line { min-height: 42px; margin-bottom: 11px; }
	.v3exp-observations { min-height: 64px; }
	.v3exp-document-footer { background: #fff !important; color: #52647f !important; border-top: 1px solid #d8e1ec; }
}
/* V3EXPEDIENTE|FORMATO_CSS|FIN */

/* ================================================================
   VISUAL SYSTEM V8 - UX ETAPA 1 (2026-08-12)
   Claridad, jerarquia y estados consistentes sin alterar flujos.
   ================================================================ */

/* Navegacion por pasos de PHPRunner: reemplaza el coral de Journal. */
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 7px;
    width: 100%;
    margin: 0;
    padding: 6px;
    border: 1px solid var(--v3-border);
    border-radius: 12px;
    background: #eaf0f7;
}

/* Bootstrap usa pseudo-elementos clearfix; en grid no deben ocupar columnas. */
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol]::before,
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol]::after {
    display: none !important;
    content: none !important;
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li {
    display: block;
    float: none;
    width: auto;
    margin: 0;
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li > a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    margin: 0;
    padding: 9px 14px;
    border: 1px solid transparent;
    border-radius: 8px;
    background: transparent;
    color: var(--v3-ink-soft);
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    transition: background-color .16s ease, border-color .16s ease,
        color .16s ease, box-shadow .16s ease;
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li:not(.active) > a:hover {
    border-color: #c9d8e8;
    background: #fff;
    color: var(--v3-primary-700);
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li.active > a,
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li.active > a:hover,
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
ul.nav-pills[data-stepcontrol] > li.active > a:focus {
    border-color: var(--v3-primary-700);
    background: linear-gradient(135deg, var(--v3-primary-700), var(--v3-action-600));
    color: #fff !important;
    box-shadow: 0 5px 13px rgba(10, 49, 112, .17);
}

/* Foco de teclado uniforme, visible y sin modificar el clic del raton. */
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid rgba(17, 166, 209, .38);
    outline-offset: 2px;
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
.r-vbar-page .menu-link:focus-visible,
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
.r-vbar-page .dropdown-toggle:focus-visible {
    outline-color: rgba(255, 255, 255, .78);
    outline-offset: -2px;
}

/* Casillas mas legibles y seleccion de fila persistente visualmente clara. */
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
input[type="checkbox"],
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
input[type="radio"] {
    accent-color: var(--v3-action-600);
}

@supports selector(tr:has(input:checked)) {
    body.function-list .r-gridrow:has(input[id^="check"]:checked) > td {
        background: #e8f3fd !important;
        border-top-color: #c9dff2;
        border-bottom-color: #c9dff2;
    }

    body.function-list .r-gridrow:has(input[id^="check"]:checked) > td:first-child {
        box-shadow: inset 3px 0 0 var(--v3-action-600);
    }
}

body.function-list .r-gridrow:focus-within > td {
    background-color: #f1f7fd;
}

/* Validacion y estados no editables con el mismo lenguaje visual. */
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
.has-error .form-control {
    border-color: var(--v3-danger-600) !important;
    box-shadow: 0 0 0 3px rgba(196, 48, 55, .10) !important;
}

body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
.form-control:disabled,
body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
.form-control[readonly] {
    background: #f1f4f8;
    color: #62718a;
    cursor: not-allowed;
    opacity: 1;
}

@media (max-width: 600px) {
    body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
    ul.nav-pills[data-stepcontrol] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 5px;
        padding: 5px;
    }

    body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
    ul.nav-pills[data-stepcontrol] > li > a {
        min-height: 44px;
        padding: 8px 7px;
        font-size: 13px;
    }

    /* Evita la barra horizontal residual en formularios de una columna. */
    body.function-add .r-grid > .stepFrame,
    body.function-edit .r-grid > .stepFrame,
    body.function-view .r-grid > .stepFrame {
        min-width: 0;
    }

    body.function-add .r-grid > .stepFrame > .r-edit-form,
    body.function-edit .r-grid > .stepFrame > .r-edit-form,
    body.function-view .r-grid > .stepFrame > .r-edit-form {
        width: 100% !important;
        max-width: 100%;
        table-layout: fixed;
    }
}

@media (max-width: 340px) {
    /* La fecha nativa de PHPRunner conserva dia/mes/anio y calendario en fila. */
    body:not(.function-login):not(.function-print):not(.function-export)
    .bs-date-control.form-inline {
        display: grid;
        grid-template-columns: minmax(44px, .75fr) minmax(86px, 1.6fr)
            minmax(58px, 1fr) 40px;
        gap: 4px;
        width: 100%;
        max-width: 100%;
    }

    body:not(.function-login):not(.function-print):not(.function-export)
    .bs-date-control.form-inline > select.form-control {
        width: 100% !important;
        min-width: 0 !important;
        margin-right: 0 !important;
        padding-right: 5px;
        padding-left: 5px;
    }

    body:not(.function-login):not(.function-print):not(.function-export)
    .bs-date-control.form-inline > .hiddenPickerElement {
        position: absolute;
        width: 1px !important;
        height: 1px !important;
        opacity: 0;
        pointer-events: none;
    }

    body:not(.function-login):not(.function-print):not(.function-export)
    .bs-date-control.form-inline > .btn {
        width: 40px;
        min-width: 40px;
        padding-right: 8px;
        padding-left: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body:not(.function-login):not(.function-print):not(.function-export):not(.v3-expediente-document)
    ul.nav-pills[data-stepcontrol] > li > a,
    body.function-list .r-gridrow > td {
        transition: none;
    }
}
/* VISUAL SYSTEM V8 - UX ETAPA 1 FIN */

/* ================================================================
   VISUAL SYSTEM V9 - UX ETAPA 2 (2026-08-12)
   Barras de trabajo, jerarquia de acciones y estados vacios.
   ================================================================ */

/* La zona superior de las listas funciona como un solo encabezado de trabajo. */
body.function-list .r-above .r-form[data-location="above-grid"] {
    box-sizing: border-box;
    margin-bottom: 14px;
    padding: 14px 16px 12px;
    background: rgba(255, 255, 255, .96);
    border: 1px solid var(--v3-border-200);
    border-radius: 14px;
    box-shadow: var(--v3-shadow-sm);
}

body.function-list .r-above .r-form[data-location="above-grid"] > .row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: 10px;
    margin-right: -6px;
    margin-left: -6px;
}

body.function-list .r-above .r-form[data-location="above-grid"] > .row > [data-cellid] {
    padding-right: 6px;
    padding-left: 6px;
}

body.function-list .r-above [data-cellid="above-grid_c1"],
body.function-list .r-above [data-cellid="above-grid_c2"] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    min-height: 42px;
}

body.function-list .r-above [data-cellid="above-grid_c2"] {
    justify-content: flex-end;
}

body.function-list .r-above [data-cellid="above-grid_c3"] {
    margin-top: 4px;
    padding-top: 12px;
    border-top: 1px solid var(--v3-border-200);
}

body.function-list .r-above [data-itemtype="add"] .btn {
    min-height: 42px;
    padding: 9px 16px;
    background: linear-gradient(135deg, var(--v3-primary-700), var(--v3-action-600));
    border-color: var(--v3-primary-700);
    box-shadow: 0 5px 14px rgba(7, 67, 158, .18);
}

body.function-list .r-above [data-itemtype="add"] .btn:hover,
body.function-list .r-above [data-itemtype="add"] .btn:focus {
    background: linear-gradient(135deg, var(--v3-primary-600), var(--v3-action-500));
    border-color: var(--v3-primary-600);
}

/* Borrar conserva un estado neutro deshabilitado y rojo solo al estar activo. */
body.function-list .r-above [data-itemtype="delete"] .btn:not([disabled]):not(.disabled) {
    color: var(--v3-danger-600);
    background: #fff;
    border-color: #dfaaaa;
    box-shadow: none;
}

body.function-list .r-above [data-itemtype="delete"] .btn:not([disabled]):not(.disabled):hover,
body.function-list .r-above [data-itemtype="delete"] .btn:not([disabled]):not(.disabled):focus {
    color: #a92e35;
    background: #fff3f3;
    border-color: var(--v3-danger-600);
    box-shadow: 0 0 0 3px rgba(193, 63, 63, .12);
}

body.function-list .r-above [data-itemtype="delete"] .btn[disabled],
body.function-list .r-above [data-itemtype="delete"] .btn.disabled {
    color: #7c879c;
    background: #f3f5f8;
    border-color: #dce2eb;
    opacity: 1;
}

body.function-list .r-above [data-itemtype="details_found"] {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    color: var(--v3-muted-600);
    font-size: 13px;
    font-weight: 600;
}

body.function-list .r-above [data-itemtype="page_size"] .form-control {
    min-width: 76px;
    min-height: 40px;
}

body.function-list .r-above [data-itemtype="print_panel"] > .btn,
body.function-list .r-above [data-itemtype="custom_button"] > .btn {
    min-width: 42px;
    min-height: 40px;
}

/* Filtros PHPRunner: controles reales, no enlaces de texto sueltos. */
body.function-list .r-above [data-itemtype="filter_panel"] .btn-link.dropdown-toggle {
    min-height: 40px;
    padding: 8px 13px;
    color: var(--v3-action-600);
    background: #fff;
    border: 1px solid var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    box-shadow: none;
    font-weight: 700;
    text-decoration: none;
}

body.function-list .r-above [data-itemtype="filter_panel"] .btn-link.dropdown-toggle:hover,
body.function-list .r-above [data-itemtype="filter_panel"] .btn-link.dropdown-toggle:focus {
    color: var(--v3-primary-600);
    background: var(--v3-canvas-blue);
    border-color: #aebed2;
    text-decoration: none;
}

/* Los dos filtros de fecha heredados dejan de usar gris como accion. */
body.function-list #singleDateButton,
body.function-list #rangeButton {
    min-height: 40px;
    padding: 8px 14px;
    color: #fff;
    background: var(--v3-action-600);
    border: 1px solid var(--v3-action-600);
    border-radius: var(--v3-radius-sm);
    box-shadow: 0 4px 10px rgba(7, 110, 200, .15);
    font-family: var(--v3-font-sans);
    font-weight: 700;
    transition: background-color .16s ease, border-color .16s ease,
        box-shadow .16s ease, transform .16s ease;
}

body.function-list #singleDateButton:hover,
body.function-list #singleDateButton:focus,
body.function-list #rangeButton:hover,
body.function-list #rangeButton:focus {
    background: var(--v3-primary-600);
    border-color: var(--v3-primary-600);
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
    outline: 0;
}

/* Estado sin resultados: informativo y accionable, no una alarma amarilla. */
body.function-list .r-grid > [data-grid-message] {
    display: grid;
    place-items: center;
    min-height: 132px;
    margin: 16px;
    padding: 28px 20px;
    color: var(--v3-ink-700);
    background: #f7fbff;
    border: 1px dashed #a9c5df;
    border-radius: var(--v3-radius-md);
    box-shadow: none;
    font-size: 15px;
    font-weight: 650;
    line-height: 1.5;
    text-align: center;
}

/* Titulo y acciones finales consistentes en add/edit/view. */
body.function-add .r-form[data-location="top"] h1,
body.function-edit .r-form[data-location="top"] h1,
body.function-view .r-form[data-location="top"] h1 {
    margin: 0;
    font-size: clamp(24px, 2.4vw, 30px);
    line-height: 1.2;
}

body.function-add .r-form[data-location="below-grid"],
body.function-edit .r-form[data-location="below-grid"],
body.function-view .r-form[data-location="below-grid"] {
    box-sizing: border-box;
    margin-top: 14px;
    padding: 12px 14px;
    background: rgba(255, 255, 255, .97);
    border: 1px solid var(--v3-border-200);
    border-radius: var(--v3-radius-md);
    box-shadow: var(--v3-shadow-sm);
}

body.function-add .r-form[data-location="below-grid"] > .row,
body.function-edit .r-form[data-location="below-grid"] > .row,
body.function-view .r-form[data-location="below-grid"] > .row {
    margin: 0;
}

body.function-add .r-form[data-location="below-grid"] [data-cellid],
body.function-edit .r-form[data-location="below-grid"] [data-cellid],
body.function-view .r-form[data-location="below-grid"] [data-cellid] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding-right: 0;
    padding-left: 0;
}

body.function-add .r-form[data-location="below-grid"] .btn,
body.function-edit .r-form[data-location="below-grid"] .btn,
body.function-view .r-form[data-location="below-grid"] .btn {
    min-height: 42px;
    padding: 9px 17px;
}

@media (max-width: 767px) {
    body.function-list .r-above .r-form[data-location="above-grid"] {
        margin-bottom: 10px;
        padding: 10px;
        border-radius: var(--v3-radius-md);
    }

    body.function-list .r-above [data-cellid="above-grid_c1"],
    body.function-list .r-above [data-cellid="above-grid_c2"] {
        width: 100%;
        justify-content: flex-start;
    }

    body.function-list .r-above .r-form[data-location="above-grid"] > .row > [data-cellid] {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    body.function-list .r-above [data-itemtype="snippet"],
    body.function-list .r-above [data-itemtype="filter_panel"],
    body.function-list .r-above .filterPanelContainer,
    body.function-list .r-above .v3ciclo-wrap {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        white-space: normal;
    }

    body.function-list .r-above [data-itemtype="snippet"] {
        display: block;
    }

    body.function-list .r-above .v3ciclo-sel {
        min-width: 0;
        max-width: 100%;
    }

    body.function-list .r-above [data-cellid="above-grid_c3"] {
        margin-top: 2px;
        padding-top: 10px;
        text-align: left;
    }

    body.function-list .r-above [data-itemtype="details_found"] {
        min-height: 34px;
    }

    body.function-add .r-form[data-location="below-grid"],
    body.function-edit .r-form[data-location="below-grid"],
    body.function-view .r-form[data-location="below-grid"] {
        padding: 10px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.function-list #singleDateButton,
    body.function-list #rangeButton {
        transition: none;
    }
}
/* VISUAL SYSTEM V9 - UX ETAPA 2 FIN */

/* ================================================================
   VISUAL SYSTEM V10 - UX ETAPA 3 (2026-08-12)
   Formularios, validacion, alertas, modales y estados de espera.
   Solo presentacion: no cambia campos, orden, permisos ni envios.
   ================================================================ */

/* Ritmo de lectura uniforme en altas, ediciones y vistas. */
body.function-add .r-edit-form .r-integrated-field,
body.function-edit .r-edit-form .r-integrated-field,
body.function-view .r-edit-form .r-integrated-field {
    box-sizing: border-box;
    margin-bottom: 0;
    padding-top: 9px;
    padding-bottom: 9px;
}

body.function-add .r-edit-form .r-integrated-field:first-child,
body.function-edit .r-edit-form .r-integrated-field:first-child,
body.function-view .r-edit-form .r-integrated-field:first-child {
    padding-top: 14px;
}

body.function-add .r-edit-form .r-integrated-field:last-child,
body.function-edit .r-edit-form .r-integrated-field:last-child,
body.function-view .r-edit-form .r-integrated-field:last-child {
    padding-bottom: 16px;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.r-edit-label,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.control-label {
    margin-bottom: 6px;
    color: var(--v3-ink-700);
    font-size: 13px;
    font-weight: 700;
    line-height: 1.35;
}

/* El asterisco conserva el comportamiento nativo y gana contraste semantico. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.icon-required {
    margin-left: 3px;
    color: var(--v3-danger-600) !important;
    font-size: .92em;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
textarea.form-control {
    min-height: 108px;
    line-height: 1.5;
    resize: vertical;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.form-control::placeholder {
    color: #7d899f;
    opacity: 1;
}

/* Ayuda y error cercanos al campo, sin depender solamente del color. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.help-block {
    margin: 6px 0 0;
    color: var(--v3-muted-600);
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1.45;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.has-error .r-edit-label,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.has-error .control-label,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.has-error .help-block {
    color: #a52f35;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.has-success .form-control {
    border-color: var(--v3-success-600);
    box-shadow: 0 0 0 3px rgba(22, 138, 74, .10);
}

/* Mensajes con jerarquia y significado consistentes. El display nativo se respeta. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert {
    position: relative;
    padding: 12px 15px;
    border: 1px solid transparent;
    border-left-width: 4px;
    border-radius: var(--v3-radius-sm);
    box-shadow: none;
    font-size: 13.5px;
    font-weight: 550;
    line-height: 1.5;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert-info {
    color: #174d78;
    background: #eef7ff;
    border-color: #bfdcf2;
    border-left-color: var(--v3-action-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert-success {
    color: #12683b;
    background: #eef9f2;
    border-color: #bfe0cc;
    border-left-color: var(--v3-success-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert-warning {
    color: #7b5107;
    background: #fff8e8;
    border-color: #ead39d;
    border-left-color: var(--v3-warning-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert-danger,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.rnr-error {
    color: #8f2e33;
    background: #fff3f3;
    border-color: #efc7c7;
    border-left-color: var(--v3-danger-600);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert .close {
    min-width: 32px;
    min-height: 32px;
    margin: -6px -7px -6px 10px;
    color: currentColor;
    opacity: .68;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert .close:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.alert .close:focus {
    opacity: 1;
}

/* Dialogos mas claros; la decision y los botones siguen siendo los nativos. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header {
    padding: 16px 18px;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header .modal-title,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header h1,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header h2,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header h3 {
    margin: 0;
    color: var(--v3-ink-900);
    font-size: 20px;
    font-weight: 750;
    line-height: 1.3;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-body {
    padding: 18px;
    color: var(--v3-ink-700);
    line-height: 1.55;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 18px;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-footer .btn + .btn {
    margin-left: 0;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header .close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    margin: -8px -8px -8px 8px;
    border-radius: 50%;
    color: var(--v3-muted-600);
    opacity: .78;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header .close:hover,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.modal-header .close:focus {
    background: var(--v3-canvas-blue);
    color: var(--v3-primary-600);
    opacity: 1;
}

/* Estados de espera existentes: no introducen peticiones ni cambian eventos. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn[aria-busy="true"],
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn.loading {
    cursor: wait;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.fileupload-loading,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.rnr-preloader {
    width: 22px;
    height: 22px;
    border: 3px solid #cfdae8;
    border-top-color: var(--v3-action-600);
    border-radius: 50%;
    background: none;
    animation: v3FormSpin .72s linear infinite;
}

@keyframes v3FormSpin {
    to { transform: rotate(360deg); }
}

@media (max-width: 767px) {
    body.function-add .r-edit-form .r-integrated-field,
    body.function-edit .r-edit-form .r-integrated-field,
    body.function-view .r-edit-form .r-integrated-field {
        padding: 9px 14px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .r-edit-label,
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .control-label {
        font-size: 13.5px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .help-block {
        font-size: 13px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .modal-dialog {
        width: auto;
        max-width: calc(100vw - 20px);
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .modal-footer .btn {
        min-height: 44px;
    }
}

@media (max-width: 480px) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .modal-footer {
        flex-direction: column-reverse;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .modal-footer .btn {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .fileupload-loading,
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
    .rnr-preloader {
        animation-duration: 1.6s;
    }
}
/* VISUAL SYSTEM V10 - UX ETAPA 3 FIN */

/* ================================================================
   VISUAL SYSTEM V11 - UX ETAPA 4 (2026-08-12)
   Contexto operativo, filtros activos y accesibilidad de acciones.
   Solo presentacion: conserva consultas, eventos y envios nativos.
   ================================================================ */

/* Los encabezados nativos de altas, ediciones y vistas actuan como ancla
   visual sin convertir cada pantalla en una tarjeta adicional. */
body.function-add .r-form[data-location="top"],
body.function-edit .r-form[data-location="top"],
body.function-view .r-form[data-location="top"] {
    margin-bottom: 12px;
    padding: 14px 18px 12px;
    border-bottom: 1px solid var(--v3-border-200);
    background: linear-gradient(90deg, rgba(7, 110, 200, .055), transparent 58%);
}

body.function-add .r-form[data-location="top"] h1,
body.function-add .r-form[data-location="top"] h2,
body.function-edit .r-form[data-location="top"] h1,
body.function-edit .r-form[data-location="top"] h2,
body.function-view .r-form[data-location="top"] h1,
body.function-view .r-form[data-location="top"] h2 {
    margin: 0;
    color: var(--v3-ink-900);
    font-size: clamp(21px, 2vw, 26px);
    font-weight: 760;
    line-height: 1.25;
    letter-spacing: -.02em;
}

/* Panel de contexto de las listas: los filtros conservan el componente de
   PHPRunner, pero el estado elegido se reconoce de un vistazo. */
body.function-list .filterPanelContainer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

body.function-list .filterPanelContainer .filter-field {
    margin: 0;
}

body.function-list .filterPanelContainer .filter-field > .dropdown-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 40px;
    max-width: min(320px, 78vw);
    padding: 8px 12px;
    overflow: hidden;
    border: 1px solid var(--v3-border-300);
    border-radius: 10px;
    color: var(--v3-ink-700);
    background: var(--v3-surface);
    box-shadow: 0 1px 2px rgba(17, 29, 87, .04);
    text-decoration: none;
    white-space: nowrap;
}

body.function-list .filterPanelContainer .filter-field > .dropdown-toggle:hover,
body.function-list .filterPanelContainer .filter-field.open > .dropdown-toggle {
    border-color: #9db8d7;
    color: var(--v3-primary-600);
    background: #f8fbff;
}

body.function-list .filterPanelContainer .filter-field[data-selected] > .dropdown-toggle {
    border-color: #7fb3df;
    color: #075ba5 !important;
    background: #eef7ff !important;
    box-shadow: inset 0 0 0 1px rgba(7, 110, 200, .08);
}

body.function-list .filterPanelContainer .r-filter-field {
    flex: 0 0 auto;
    color: inherit;
    font-weight: 700;
}

body.function-list .filterPanelContainer .r-filter-value {
    min-width: 0;
    overflow: hidden;
    color: inherit;
    font-weight: 750;
    text-overflow: ellipsis;
}

body.function-list .filterPanelContainer .caret {
    flex: 0 0 auto;
    margin-left: 1px;
}

/* Borrar un filtro es una accion separada, suficientemente grande para tactil
   y teclado; el titulo y comportamiento siguen siendo los de PHPRunner. */
body.function-list .filterPanelContainer .filter-clear {
    display: inline-flex;
    flex: 0 0 28px;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin: -3px 1px -3px -5px;
    border-radius: 50%;
    color: #9a3438 !important;
    background: rgba(193, 63, 63, .08) !important;
    text-decoration: none;
}

body.function-list .filterPanelContainer .filter-field[data-selected] .filter-clear {
    visibility: visible !important;
    opacity: 1 !important;
}

body.function-list .filterPanelContainer .filter-clear:hover,
body.function-list .filterPanelContainer .filter-clear:focus-visible {
    color: #fff !important;
    background: var(--v3-danger-600) !important;
}

body.function-list .filterPanelContainer .dropdown-menu {
    max-width: min(360px, calc(100vw - 28px));
    padding: 6px;
    border-color: var(--v3-border-300);
    border-radius: var(--v3-radius-sm);
    box-shadow: var(--v3-shadow-md);
}

body.function-list .filterPanelContainer .dropdown-menu > li > a,
body.function-list .filterPanelContainer .dropdown-menu .filter-ready-value > span {
    display: flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 10px;
    border-radius: 6px;
    color: var(--v3-ink-700);
    line-height: 1.35;
}

body.function-list .filterPanelContainer .dropdown-menu > li > a:hover,
body.function-list .filterPanelContainer .dropdown-menu > li > a:focus,
body.function-list .filterPanelContainer .dropdown-menu .filter-ready-value > span {
    color: var(--v3-primary-600);
    background: var(--v3-canvas-blue);
}

body.function-list .filterPanelContainer .delete-button {
    display: inline-flex;
    flex: 0 0 28px;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin-right: 6px;
    border-radius: 50%;
    color: var(--v3-danger-600);
}

/* El selector de ciclo escolar forma parte del mismo contexto y no compite
   visualmente con las acciones Fecha/Rango. */
body.function-list .v3ciclo-wrap {
    min-height: 40px;
    border-color: #b8cce2;
    background: #f7faff;
    box-shadow: none;
}

body.function-list .v3ciclo-wrap:focus-within {
    border-color: var(--v3-action-600);
    box-shadow: 0 0 0 3px var(--v3-focus-ring);
}

body.function-list .v3ciclo-sel {
    font-weight: 650;
}

/* Estados nativos: se vuelven inequívocos sin interceptar clics ni peticiones. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn.disabled,
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn[disabled] {
    cursor: not-allowed;
    filter: saturate(.62);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn[aria-busy="true"],
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-expediente-document)
.btn.loading {
    opacity: .78;
    box-shadow: none !important;
}

/* El mensaje permanece junto al formulario y su primera linea gana jerarquia. */
body.function-add [data-itemtype="add_message"],
body.function-edit [data-itemtype="edit_message"] {
    margin: 0 0 12px;
}

body.function-add [data-itemtype="add_message"] h5,
body.function-edit [data-itemtype="edit_message"] h5 {
    margin: 0;
    font-size: 14px;
    font-weight: 750;
    line-height: 1.4;
}

@media (max-width: 767px) {
    body.function-add .r-form[data-location="top"],
    body.function-edit .r-form[data-location="top"],
    body.function-view .r-form[data-location="top"] {
        margin-bottom: 8px;
        padding: 12px 14px 10px;
    }

    body.function-list .filterPanelContainer {
        width: 100%;
        gap: 7px;
    }

    body.function-list .filterPanelContainer .filter-field > .dropdown-toggle {
        min-height: 44px;
        max-width: calc(100vw - 30px);
        padding: 9px 11px;
    }

    body.function-list .filterPanelContainer .filter-clear {
        flex-basis: 30px;
        width: 30px;
        height: 30px;
    }
}

@media (max-width: 420px) {
    body.function-list .filterPanelContainer .filter-field {
        max-width: 100%;
    }

    body.function-list .filterPanelContainer .filter-field[data-selected] {
        flex: 1 1 100%;
    }

    body.function-list .filterPanelContainer .filter-field[data-selected] > .dropdown-toggle {
        width: 100%;
        max-width: 100%;
    }
}

@media (prefers-contrast: more) {
    body.function-list .filterPanelContainer .filter-field > .dropdown-toggle,
    body.function-list .v3ciclo-wrap {
        border-width: 2px;
    }

    body.function-list .filterPanelContainer .filter-field[data-selected] > .dropdown-toggle {
        border-color: var(--v3-primary-600);
    }
}
/* VISUAL SYSTEM V11 - UX ETAPA 4 FIN */

/* ================================================================
   VISUAL SYSTEM V12 - SIMPLIFICACION DE NAVEGACION (2026-08-13)
   Agrupacion legible, nombres largos y paridad con modulos custom.
   No altera rutas, permisos ni comportamiento del menu.
   ================================================================ */

/* Los grupos principales se reconocen como secciones, no como acciones. */
body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu > li > a[data-toggle="menu-collapse"] {
    display: flex;
    align-items: center;
    min-height: 42px;
    margin-top: 7px;
    padding: 9px 12px;
    color: #f2f6ff !important;
    background: rgba(255, 255, 255, .035);
    font-size: 14px;
    font-weight: 750;
    letter-spacing: .005em;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu > li > a[data-toggle="menu-collapse"][aria-expanded="true"] {
    background: rgba(255, 255, 255, .075);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu > li > ul.nav {
    margin: 1px 10px 7px 20px;
    padding: 3px 0 4px 6px;
    border-left: 1px solid rgba(195, 218, 255, .18);
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu > li > ul.nav > li > a {
    display: flex;
    align-items: center;
    min-height: 38px;
    margin: 1px 0;
    padding: 7px 9px 7px 11px;
    font-size: 13.5px;
    line-height: 1.3;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu .r-menu-title {
    min-width: 0;
    overflow-wrap: anywhere;
    white-space: normal;
}

body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
.r-left:not(.r-left-collapsed) .r-menu .menu-icon {
    flex: 0 0 18px;
    width: 18px;
    margin-right: 7px;
    text-align: center;
}

/* Los modulos custom consumen el mismo arbol y muestran las mismas secciones. */
.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group {
    margin: 13px 0 5px;
}

.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 38px;
    padding: 8px 14px;
    border-radius: 8px;
    color: #aebfe2;
    font-size: 10.5px;
    font-weight: 800;
    line-height: 1.3;
    letter-spacing: .09em;
    text-transform: uppercase;
    cursor: pointer;
    list-style: none;
}

.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title::-webkit-details-marker {
    display: none;
}

.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title::after {
    content: "\203A";
    flex: 0 0 auto;
    margin-left: 8px;
    color: #c8d6f1;
    font-size: 18px;
    line-height: 1;
    transform: rotate(0deg);
    transition: transform .16s ease;
}

.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details[open] > .v3-nav-group-title::after {
    transform: rotate(90deg);
}

.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title:hover,
.v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title:focus-visible {
    color: #fff;
    background: rgba(255, 255, 255, .075);
}

.v3-cuadros-page .v3-sidebar .v3-nav-group > details > ul {
    margin: 0;
    padding: 0;
}

.v3-cuadros-page .v3-sidebar .v3-nav-group > details > ul .v3-nav-link {
    min-height: 40px;
    padding-top: 9px;
    padding-bottom: 9px;
    line-height: 1.3;
    overflow-wrap: anywhere;
    white-space: normal;
}

@media (max-width: 767px) {
    /* Compatibilidad entre los estados móviles heredados de Cuadros,
       Citatorios, Cierre global y Movimientos de alumnos. */
    .v3-cuadros-page .v3-sidebar.open,
    .v3-cuadros-page.v3-sidebar-open .v3-sidebar {
        left: 0 !important;
        box-shadow: 0 0 40px rgba(0, 0, 0, .3);
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-left:not(.r-left-collapsed) .r-menu > li > a[data-toggle="menu-collapse"] {
        min-height: 44px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-left:not(.r-left-collapsed) .r-menu > li > ul.nav > li > a,
    .v3-cuadros-page .v3-sidebar .v3-nav-group > details > ul .v3-nav-link,
    .v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title {
        min-height: 44px;
    }
}

@media (prefers-reduced-motion: reduce) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-left .r-menu li > a,
    .v3-cuadros-page .v3-sidebar .v3-nav-tree > .v3-nav-group > details > .v3-nav-group-title::after {
        transition: none;
    }
}
/* VISUAL SYSTEM V12 - SIMPLIFICACION DE NAVEGACION FIN */

/* V3ALUMNO_MOVIMIENTOS|CSS|INICIO */
.v3ma-retire-overlay{position:fixed;inset:0;z-index:12000;display:flex;align-items:center;justify-content:center;padding:14px;background:rgba(13,28,67,.5)}
.v3ma-retire-card{width:540px;max-width:96vw;max-height:92vh;overflow:auto;padding:22px;background:#fff;border:1px solid #dce5f2;border-radius:16px;box-shadow:0 26px 75px rgba(5,21,55,.32);color:#17233d;font-family:var(--v3-font-sans,Arial,sans-serif)}
.v3ma-retire-card h3{margin:0 0 6px;font-size:22px;font-weight:800}.v3ma-retire-card>p{margin:0 0 17px;color:#60708e;line-height:1.5}
.v3ma-retire-option{display:flex;gap:11px;align-items:flex-start;margin:9px 0;padding:13px;border:1px solid #dce5f2;border-radius:11px;cursor:pointer}.v3ma-retire-option:has(input:checked){border-color:#7fb3df;background:#eef7ff}.v3ma-retire-option input{margin-top:4px}.v3ma-retire-option strong,.v3ma-retire-option small{display:block}.v3ma-retire-option small{margin-top:3px;color:#68778e;font-weight:500}
.v3ma-retire-note{display:block;margin-top:15px}.v3ma-retire-note>span{display:block;margin-bottom:6px;color:#43536e;font-size:12px;font-weight:750}.v3ma-retire-note textarea{width:100%;min-height:88px;padding:10px 11px;border:1px solid #b9c8dc;border-radius:9px;line-height:1.45;resize:vertical}
.v3ma-retire-error{margin-top:12px;padding:10px 12px;color:#9f302c;background:#fff0ef;border:1px solid #efc0bd;border-radius:9px}.v3ma-retire-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}
.v3ma-reentry-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.v3ma-reentry-grid>div{padding:12px;color:#43536e;background:#f5f8fc;border:1px solid #dce5f2;border-radius:10px;line-height:1.5}.v3ma-reentry-grid>div:last-child{background:#eef7ff;border-color:#bcd9ef}.v3ma-reentry-grid span{display:block;margin-bottom:5px;color:#0878cc;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.v3ma-retire-toast{position:fixed;top:14px;left:50%;z-index:13000;width:560px;max-width:92vw;padding:13px 16px;transform:translateX(-50%);color:#176a35;background:#edf9f1;border:1px solid #b8e0c4;border-left:5px solid #26864a;border-radius:10px;box-shadow:0 12px 35px rgba(20,48,96,.2);font:650 13px/1.5 var(--v3-font-sans,Arial,sans-serif)}
@media(max-width:600px){.v3ma-retire-card{padding:18px}.v3ma-reentry-grid{grid-template-columns:1fr}.v3ma-retire-actions{flex-direction:column-reverse}.v3ma-retire-actions .btn{width:100%;min-height:44px}}
/* V3ALUMNO_MOVIMIENTOS|CSS|FIN */

/* VISUAL SYSTEM V13 - INICIO UTIL POR ROL (ETAPA 2) INICIO */
body.function-menu [data-location="above-grid"],
body.function-menu [data-itemid="snippet1"],
body.function-menu [data-itemid="snippet2"],
body.function-menu [data-itemid="snippet4"],
body.function-menu [data-itemid="snippet5"]{display:none!important}
body.function-menu [data-itemid="snippet"][data-hidden]{display:block!important}
body.function-menu .r-grid,
body.function-menu .r-grid>.r-form,
body.function-menu .r-grid [data-cellid="grid_c1"],
body.function-menu .r-grid .r-welcome-align-center,
body.function-menu [data-itemid="snippet"]{width:100%;max-width:none}
body.function-menu .r-grid [data-cellid="grid_c1"]{padding:0!important;text-align:left;vertical-align:top}
body.function-menu .r-grid .r-welcome-align-center,
body.function-menu [data-itemid="snippet"]{display:block;text-align:left}

.v3-home-dashboard{width:min(1180px,calc(100% - 40px));margin:0 auto;padding:32px 0 48px;color:var(--v3-ink-900,#17213d);font-family:var(--v3-font-sans,Inter,"Segoe UI",Roboto,Arial,sans-serif)}
.v3-home-dashboard *,.v3-home-dashboard *:before,.v3-home-dashboard *:after{box-sizing:border-box}
.v3-home-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px}
.v3-home-kicker{margin:0 0 5px;color:var(--v3-action-600,#076ec8);font-size:12px;font-weight:800;letter-spacing:.11em;line-height:1.3;text-transform:uppercase}
.v3-home-hero h1{margin:0;color:var(--v3-ink-900,#17213d);font-size:clamp(26px,3vw,34px);font-weight:800;line-height:1.15}
.v3-home-intro{max-width:650px;margin:8px 0 0;color:var(--v3-muted-600,#5f6d87);font-size:15px;line-height:1.5}
.v3-home-context{display:flex;align-items:center;gap:8px;max-width:420px;min-height:42px;padding:9px 13px;color:var(--v3-ink-700,#33405e);background:var(--v3-surface,#fff);border:1px solid var(--v3-border-300,#d5deeb);border-radius:12px;font-size:13px;line-height:1.35;text-align:right}
.v3-home-context .glyphicon{flex:0 0 auto;color:var(--v3-action-600,#076ec8)}
.v3-home-context-separator{color:#9aa8bc}
.v3-version-notice{display:grid;grid-template-columns:38px minmax(0,1fr) 38px;align-items:center;gap:12px;margin:0 0 18px;padding:12px 13px;color:var(--v3-ink-700,#33405e);background:#f7fbff;border:1px solid #cfe2f3;border-left:4px solid var(--v3-action-600,#076ec8);border-radius:8px}
.v3-version-notice[hidden]{display:none!important}
.v3-version-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;color:var(--v3-action-600,#076ec8);background:#e5f2fd;border-radius:8px;font-size:16px}
.v3-version-copy{display:flex;align-items:baseline;flex-wrap:wrap;gap:3px 8px;min-width:0}.v3-version-copy strong{color:var(--v3-ink-900,#17213d);font-size:14px;line-height:1.35}.v3-version-copy p{flex-basis:100%;margin:0;color:var(--v3-muted-600,#5f6d87);font-size:13px;line-height:1.45}
.v3-version-label{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;color:#075995;background:#e5f2fd;border:1px solid #c4def3;border-radius:999px;font-size:11px;font-weight:800;line-height:1.2;text-transform:uppercase}
.v3-version-dismiss{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;color:var(--v3-muted-600,#5f6d87);background:transparent;border:1px solid transparent;border-radius:8px;cursor:pointer}
.v3-version-dismiss:hover{color:var(--v3-ink-900,#17213d);background:#eaf3fb}.v3-version-dismiss:focus-visible{color:var(--v3-ink-900,#17213d);outline:3px solid rgba(7,110,200,.22);outline-offset:1px}
.v3-home-cycle{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding:12px 15px;color:var(--v3-ink-700,#33405e);background:var(--v3-blue-050,#edf3fa);border:1px solid #d8e6f5;border-radius:12px}
.v3-home-cycle>.glyphicon{color:var(--v3-action-600,#076ec8);font-size:18px}
.v3-home-cycle span,.v3-home-cycle strong{display:block}.v3-home-cycle span{margin-bottom:2px;color:var(--v3-muted-600,#5f6d87);font-size:11px;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.v3-home-cycle strong{color:var(--v3-ink-900,#17213d);font-size:14px}
.v3-home-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}
.v3-home-metric{display:flex;align-items:flex-start;gap:13px;min-width:0;padding:18px;background:var(--v3-surface,#fff);border:1px solid var(--v3-border-200,#e5ebf3);border-radius:14px;box-shadow:0 5px 16px rgba(17,39,87,.055)}
.v3-home-metric-icon,.v3-home-notice-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 42px;width:42px;height:42px;color:var(--v3-action-600,#076ec8);background:#eaf4fd;border-radius:12px;font-size:18px}
.v3-home-metric>div,.v3-home-notice>div{min-width:0}.v3-home-metric-label,.v3-home-metric-value,.v3-home-metric-detail{display:block}
.v3-home-metric-label{margin-bottom:4px;color:var(--v3-muted-600,#5f6d87);font-size:12px;font-weight:700;line-height:1.35}
.v3-home-metric-value{overflow-wrap:anywhere;color:var(--v3-ink-900,#17213d);font-size:clamp(21px,2.4vw,28px);font-weight:800;line-height:1.12}
.v3-home-metric-detail{margin-top:5px;color:var(--v3-muted-600,#5f6d87);font-size:12px;line-height:1.4}
.v3-home-columns{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:18px}
.v3-home-panel{min-width:0;padding:20px;background:var(--v3-surface,#fff);border:1px solid var(--v3-border-200,#e5ebf3);border-radius:16px;box-shadow:0 6px 20px rgba(17,39,87,.055)}
.v3-home-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.v3-home-panel h2{margin:0;color:var(--v3-ink-900,#17213d);font-size:20px;font-weight:750;line-height:1.25}
.v3-home-notices,.v3-home-actions{display:grid;gap:10px}
.v3-home-notice{display:flex;align-items:flex-start;gap:12px;padding:13px;background:#f8fafc;border:1px solid var(--v3-border-200,#e5ebf3);border-radius:11px}
.v3-home-notice-icon{flex-basis:34px;width:34px;height:34px;border-radius:9px;font-size:15px}.v3-home-notice strong{display:block;color:var(--v3-ink-900,#17213d);font-size:14px;line-height:1.35}.v3-home-notice p{margin:3px 0 0;overflow-wrap:anywhere;color:var(--v3-muted-600,#5f6d87);font-size:13px;line-height:1.45}
.v3-home-action{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;min-height:62px;padding:11px 12px;color:var(--v3-ink-700,#33405e);background:#fff;border:1px solid var(--v3-border-300,#d5deeb);border-radius:11px;text-decoration:none!important;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.v3-home-action:hover,.v3-home-action:focus-visible{color:var(--v3-ink-900,#17213d);border-color:#9fc6e8;box-shadow:0 7px 16px rgba(7,110,200,.11);transform:translateY(-1px)}.v3-home-action:focus-visible{outline:3px solid rgba(7,110,200,.22);outline-offset:2px}
.v3-home-action-icon{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;color:var(--v3-action-600,#076ec8);background:#eaf4fd;border-radius:10px;font-size:16px}
.v3-home-action strong,.v3-home-action small{display:block}.v3-home-action strong{color:inherit;font-size:14px;line-height:1.3}.v3-home-action small{margin-top:2px;color:var(--v3-muted-600,#5f6d87);font-size:12px;line-height:1.35}.v3-home-action-arrow{color:#91a2b9;font-size:11px}
.v3-home-action-primary{color:#fff;background:linear-gradient(100deg,var(--v3-primary-700,#102eb0),var(--v3-action-500,#069bd8));border-color:transparent}.v3-home-action-primary:hover,.v3-home-action-primary:focus-visible,.v3-home-action-primary strong,.v3-home-action-primary small,.v3-home-action-primary .v3-home-action-arrow{color:#fff}.v3-home-action-primary .v3-home-action-icon{color:#fff;background:rgba(255,255,255,.16)}
.v3-home-empty{display:flex;align-items:flex-start;gap:10px;padding:15px;color:var(--v3-muted-600,#5f6d87);background:#f8fafc;border:1px dashed var(--v3-border-300,#d5deeb);border-radius:11px}.v3-home-empty p{margin:0;line-height:1.5}
.v3-tone-success .v3-home-metric-icon,.v3-tone-success .v3-home-notice-icon{color:var(--v3-success-600,#168a4a);background:#eaf7ef}.v3-tone-warning .v3-home-metric-icon,.v3-tone-warning .v3-home-notice-icon{color:var(--v3-warning-600,#a96b08);background:#fff5df}.v3-tone-danger .v3-home-metric-icon,.v3-tone-danger .v3-home-notice-icon{color:var(--v3-danger-600,#c13f3f);background:#fff0ef}.v3-tone-neutral .v3-home-metric-icon,.v3-tone-neutral .v3-home-notice-icon{color:var(--v3-ink-700,#33405e);background:#eef2f7}
@media(max-width:980px){.v3-home-hero{display:block}.v3-home-context{max-width:none;margin-top:14px;text-align:left}.v3-home-columns{grid-template-columns:1fr}}
@media(max-width:767px){.v3-home-dashboard{width:calc(100% - 28px);padding:22px 0 34px}.v3-home-metrics{grid-template-columns:1fr}.v3-home-metric,.v3-home-panel{padding:15px}.v3-home-action{min-height:66px}.v3-version-notice{grid-template-columns:38px minmax(0,1fr) 42px;padding:11px}.v3-version-dismiss{width:42px;height:42px}}
@media(max-width:340px){.v3-home-dashboard{width:calc(100% - 20px)}.v3-home-context{align-items:flex-start;flex-wrap:wrap}.v3-home-context-separator{display:none}.v3-home-action{grid-template-columns:34px minmax(0,1fr)}.v3-home-action-arrow{display:none}}
@media(prefers-reduced-motion:reduce){.v3-home-action{transition:none}}
/* VISUAL SYSTEM V13 - INICIO UTIL POR ROL (ETAPA 2) FIN */

/* LOGIN V6.2 - anuncio sutil de Tu Secundaria 2.0 */
body.function-login .r-pretty-login-page [data-cellId="top_c3"]::after {
    content: "Nuevo  \00B7  Tu Secundaria 2.0  \00B7  Ahora con apoyo de IA";
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    min-height: 26px;
    margin-top: 10px;
    padding: 4px 9px;
    color: #33405e;
    background: #edf5fc;
    border: 1px solid #cfe2f3;
    border-radius: 7px;
    font-size: 11px;
    font-weight: 650;
    line-height: 1.35;
    letter-spacing: 0;
    text-align: left;
    white-space: normal;
}

@media (max-width: 767px) {
    body.function-login .r-pretty-login-page [data-cellId="top_c3"]::after {
        justify-content: center;
        margin-top: 9px;
        font-size: 10px;
        text-align: center;
    }
}
/* LOGIN V6.2 - anuncio sutil de Tu Secundaria 2.0 FIN */

/* VISUAL SYSTEM V14 - CONTROLES MOVILES Y ACCESIBILIDAD TACTIL */
@media (max-width: 767px) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-vbar-page > .r-left:not(.r-left-collapsed) {
        position: fixed !important;
        top: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
        display: block !important;
        width: min(300px, 86vw) !important;
        height: 100vh !important;
        visibility: visible !important;
        opacity: 1 !important;
        transform: none !important;
        z-index: 1201 !important;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-vbar-page > .r-body-shadow {
        z-index: 1200 !important;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader a.glyphicon-menu-hamburger {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 42px;
        height: 42px;
        padding: 0 !important;
        line-height: 1;
    }

    body.function-list:not(.v3-cuadros-page)
    .r-grid a.btn-link.glyphicon-pencil,
    body.function-list:not(.v3-cuadros-page)
    .r-grid a.btn-link.glyphicon-search {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 40px;
        height: 40px;
        padding: 0 !important;
        line-height: 1;
    }

    body.function-list:not(.v3-cuadros-page) .v3ciclo-sel {
        min-height: 42px;
    }
}

@media (max-width: 340px) {
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar {
        gap: 6px;
        padding-right: 8px !important;
        padding-left: 8px !important;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form {
        margin: 0 !important;
        padding-right: 0 !important;
        padding-left: 0 !important;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form:last-child {
		flex: 0 0 42px;
		width: 42px;
		min-width: 42px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form:last-child .dropdown-toggle {
		width: 42px;
		max-width: 42px;
		padding-right: 0;
		padding-left: 0;
		overflow: hidden;
		font-size: 0;
		white-space: nowrap;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form:last-child .dropdown-toggle .glyphicon,
    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form:last-child .dropdown-toggle .fa {
		font-size: 14px;
    }

    body:not(.function-login):not(.function-print):not(.function-rprint):not(.function-export):not(.v3-cuadros-page)
    .r-topheader .navbar > .navbar-form:last-child .dropdown-toggle .caret {
		display: none;
    }
}
/* VISUAL SYSTEM V14 - CONTROLES MOVILES Y ACCESIBILIDAD TACTIL FIN */

/* LOGIN V6.3 - centrado exacto del boton de acceso */
body.function-login .r-pretty-login-page .btn-primary,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    text-align: center !important;
}

body.function-login .r-pretty-login-page .btn-primary::after,
body.function-login .r-pretty-login-page [data-itemtype="login_button"] .btn::after {
    inset: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    text-align: center !important;
    box-sizing: border-box !important;
}
/* LOGIN V6.3 - centrado exacto del boton de acceso FIN */
