/* HPlan 0.1.2: mismas fuentes AUTOSERVIDAS que MASTER; sin dependencias externas. */
@font-face{font-family:Roboto;src:url('../fonts/Roboto-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Roboto;src:url('../fonts/Roboto-Bold.ttf') format('truetype');font-style:normal;font-weight:700;font-display:swap}
/* CSS de MASTER sin cambios en colores, tamaños, geometría ni controles. */
:root,
html[data-theme="light"] {
    color-scheme: light;
    --fiscal-bg: #f5f7fa;
    --fiscal-surface: #ffffff;
    --fiscal-surface-soft: #f8fafc;
    --fiscal-border: #dce3ea;
    --fiscal-border-soft: #edf1f4;
    --fiscal-text: #34495e;
    --fiscal-muted: #718096;
    --fiscal-heading: #365f82;
    --fiscal-link: #376f9e;
    --fiscal-accent: #3f6f98;
    --fiscal-accent-hover: #345f83;
    --fiscal-secondary: #718096;
    --fiscal-secondary-hover: #5f6f7f;
    --fiscal-danger: #a94442;
    --fiscal-warning: #a36b00;
    --fiscal-ok: #217a3c;
    --fiscal-ko: #a12525;
    --fiscal-error-bg: #fff3f3;
    --fiscal-error-text: #8c2f2f;
    --fiscal-info-bg: #f2f7fb;
    --fiscal-focus: #8fb3d0;
    --fiscal-focus-ring: rgba(63, 111, 152, .16);
    --fiscal-shadow: rgba(20, 42, 64, .05);
    --fiscal-control-help-gap: 5px;
}

html[data-theme="dark"] {
    color-scheme: dark;
    --fiscal-bg: #111820;
    --fiscal-surface: #18212b;
    --fiscal-surface-soft: #1c2732;
    --fiscal-border: #2b3947;
    --fiscal-border-soft: #24313d;
    --fiscal-text: #d8e1e9;
    --fiscal-muted: #95a4b2;
    --fiscal-heading: #96b9d7;
    --fiscal-link: #91b8d9;
    --fiscal-accent: #527fa5;
    --fiscal-accent-hover: #638fb2;
    --fiscal-secondary: #536474;
    --fiscal-secondary-hover: #617485;
    --fiscal-danger: #9e5552;
    --fiscal-warning: #d7a84a;
    --fiscal-ok: #73bd88;
    --fiscal-ko: #df8581;
    --fiscal-error-bg: #2b2022;
    --fiscal-error-text: #efaaa6;
    --fiscal-info-bg: #192734;
    --fiscal-focus: #5f89aa;
    --fiscal-focus-ring: rgba(95, 137, 170, .20);
    --fiscal-shadow: rgba(0, 0, 0, .18);
}



/* Fiscal 0.10.13 · Paleta FESTA
   Solo identidad cromática. No modifica tipografía, tamaños, pesos,
   sombras, radios, espaciados, geometría, responsive ni componentes. */
html[data-palette="festa"][data-theme="light"] {
    --fiscal-bg: #f5f9f9;
    --fiscal-surface: #ffffff;
    --fiscal-surface-soft: #f7fbfb;
    --fiscal-border: #d4e5e3;
    --fiscal-border-soft: #e9f2f1;
    --fiscal-text: #355454;
    --fiscal-muted: #708a88;
    --fiscal-heading: #076265;
    --fiscal-link: #187b80;
    --fiscal-accent: #2f8a92;
    --fiscal-accent-hover: #28777e;
    --fiscal-secondary: #76918f;
    --fiscal-secondary-hover: #657f7d;
    --fiscal-danger: #a94442;
    --fiscal-warning: #9b7300;
    --fiscal-ok: #2f8052;
    --fiscal-ko: #a12525;
    --fiscal-error-bg: #fff5f5;
    --fiscal-error-text: #8c2f2f;
    --fiscal-info-bg: #eaf6f6;
    --fiscal-focus: #8fb8b3;
    --fiscal-focus-ring: rgba(47, 138, 146, .14);
    --fiscal-shadow: rgba(7, 98, 101, .045);
}

html[data-palette="festa"][data-theme="dark"] {
    --fiscal-bg: #101919;
    --fiscal-surface: #172323;
    --fiscal-surface-soft: #1b2a2a;
    --fiscal-border: #2b4140;
    --fiscal-border-soft: #233534;
    --fiscal-text: #d7e6e4;
    --fiscal-muted: #98adaa;
    --fiscal-heading: #9dceca;
    --fiscal-link: #91ccc8;
    --fiscal-accent: #4f9ca1;
    --fiscal-accent-hover: #61aab0;
    --fiscal-secondary: #536c6a;
    --fiscal-secondary-hover: #617b79;
    --fiscal-danger: #9e5552;
    --fiscal-warning: #d0a44a;
    --fiscal-ok: #78bf93;
    --fiscal-ko: #df8581;
    --fiscal-error-bg: #2b2022;
    --fiscal-error-text: #efaaa6;
    --fiscal-info-bg: #192c2c;
    --fiscal-focus: #6ea7a4;
    --fiscal-focus-ring: rgba(110, 167, 164, .19);
    --fiscal-shadow: rgba(0, 0, 0, .18);
}

html, body, input, select, textarea, button, table {
    font-family: Roboto, "Noto Sans", Helvetica, Arial, sans-serif;
    font-size: 13px;
}

* { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    background: var(--fiscal-bg);
    color: var(--fiscal-text);
}

/* Mantiene fija la geometría horizontal entre pantallas cortas y largas.
   Se reserva siempre el espacio del scrollbar vertical para evitar que
   el contenido centrado se desplace al entrar en módulos con más altura. */
html {
    scrollbar-gutter: stable both-edges;
}

/* Simetría visual de los márgenes reservados para el scrollbar.
   El body ocupa el área útil entre ambos gutters y cierra sus límites
   con el mismo borde utilizado en el resto de Fiscal. */
body {
    min-height: 100vh;
    border-left: 1px solid var(--fiscal-border);
    border-right: 1px solid var(--fiscal-border);
}

/* Apariencia · Enmarcar web
   Sí (por defecto): marco lateral continuo de toda la aplicación.
   No: se conserva la misma geometría con bordes transparentes y el
   contorno visible queda únicamente en la barra superior. */
html.fiscal-web-frame-off body {
    border-left-color: transparent;
    border-right-color: transparent;
}
html.fiscal-web-frame-off .fiscal-topbar {
    border: 1px solid var(--fiscal-border);
}

html, body, .fiscal-topbar, .fiscal-card, .fiscal-kpi, .fiscal-menu a,
.fiscal-form, input, select, textarea, button {
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

a { color: var(--fiscal-link); text-decoration: none; }
a:hover { text-decoration: underline; }

.fiscal-shell { min-height: 100vh; }

.fiscal-topbar {
    height: 52px;
    background: var(--fiscal-surface);
    border-bottom: 1px solid var(--fiscal-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 22px;
}

.fiscal-brand {
    display: flex;
    align-items: stretch;
    align-self: stretch;
    min-width: 0;
    font-size: 16px;
    font-weight: 700;
    color: var(--fiscal-heading);
}

/* Marca del módulo activo: PNG real con texto alternativo si el recurso falla. */
.fiscal-brand > a {
    display: flex;
    align-items: center;
    flex: 0 0 90px;
    width: 90px;
    height: 100%;
    min-height: 52px;
    overflow: hidden;
    white-space: nowrap;
    vertical-align: middle;
    color: var(--fiscal-heading);
    font-size: 16px;
    line-height: 1;
}
.fiscal-module-brand img {
    display: block;
    flex: 0 0 81px;
    width: 81px;
    height: 36px;
    max-width: 81px;
    object-fit: contain;
    object-position: left center;
}
.fiscal-module-brand-text {
    font-weight: 700;
}

.fiscal-user { display: flex; align-items: center; gap: 10px; color: var(--fiscal-muted); }
.fiscal-main { max-width: 1440px; margin: 24px auto; padding: 0 18px; }

.fiscal-card {
    background: var(--fiscal-surface);
    border: 1px solid var(--fiscal-border);
    border-radius: 6px;
    padding: 18px 20px;
    box-shadow: 0 1px 2px var(--fiscal-shadow);
}

.fiscal-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }

.fiscal-kpi {
    background: var(--fiscal-surface);
    border: 1px solid var(--fiscal-border);
    border-radius: 6px;
    padding: 16px;
}

.fiscal-kpi strong { display: block; font-size: 22px; color: var(--fiscal-heading); margin-top: 4px; }
.fiscal-menu { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 18px; }

.fiscal-menu a {
    display: block;
    background: var(--fiscal-surface);
    border: 1px solid var(--fiscal-border);
    border-radius: 6px;
    padding: 16px;
    color: var(--fiscal-text);
}

.fiscal-menu a:hover { border-color: var(--fiscal-focus); text-decoration: none; }
.fiscal-menu b { display: block; color: var(--fiscal-heading); margin-bottom: 4px; }

.fiscal-btn,
.fiscal-theme-toggle {
    border: 0;
    border-radius: 4px;
    padding: 8px 13px;
    cursor: pointer;
    background: var(--fiscal-accent);
    color: #fff;
}

.fiscal-btn:hover { background: var(--fiscal-accent-hover); }
.fiscal-btn-secondary { background: var(--fiscal-secondary); }
.fiscal-btn-secondary:hover { background: var(--fiscal-secondary-hover); }
.fiscal-btn-danger { background: var(--fiscal-danger); }
.fiscal-btn-danger:hover { background: var(--fiscal-danger); filter: brightness(.90); }

.fiscal-theme-toggle {
    background: transparent;
    color: var(--fiscal-muted);
    border: 1px solid var(--fiscal-border);
    min-width: 64px;
    padding: 6px 9px;
}

.fiscal-theme-toggle:hover {
    color: var(--fiscal-text);
    border-color: var(--fiscal-focus);
    background: var(--fiscal-surface-soft);
}

.fiscal-login-theme {
    position: fixed;
    top: 16px;
    right: 16px;
}

.fiscal-form {
    max-width: 420px;
    margin: 9vh auto 0;
    background: var(--fiscal-surface);
    border: 1px solid var(--fiscal-border);
    border-radius: 6px;
    padding: 24px;
    box-shadow: 0 1px 2px var(--fiscal-shadow);
}

.fiscal-form h1 { margin: 0 0 18px; font-size: 20px; color: var(--fiscal-heading); }

/* HPlan: solo composicion de la portada; la base visual es MASTER. */
.fiscal-shell{display:flex;flex-direction:column}
.fiscal-topbar{gap:20px}
.hplan-brand{display:inline-flex;align-items:center;font-size:16px;font-weight:700;color:var(--fiscal-heading);text-decoration:none;white-space:nowrap}
.hplan-brand:hover{text-decoration:none}
.hplan-brand-initial{font-weight:800;color:var(--fiscal-accent);font-size:21px;letter-spacing:-.06em}
.hplan-header-label{color:var(--fiscal-muted);font-weight:400;white-space:nowrap}
.hplan-nav{display:flex;align-items:center;gap:12px;margin-left:auto}
.hplan-language{display:flex;gap:4px;align-items:center}
.hplan-language a{display:inline-block;min-width:35px;padding:6px 7px;text-align:center;border-radius:4px;color:var(--fiscal-muted);border:1px solid transparent;white-space:nowrap}
.hplan-language a:hover{background:var(--fiscal-surface-soft);text-decoration:none;border-color:var(--fiscal-border)}
.hplan-language a[aria-current="page"]{background:var(--fiscal-surface-soft);border-color:var(--fiscal-border);color:var(--fiscal-heading);font-weight:700}
.fiscal-main{width:100%;flex:1}
.hplan-lead{max-width:1000px;margin-bottom:18px}
.hplan-lead h1{color:var(--fiscal-heading);font-size:20px;margin:0 0 8px;font-weight:700}
.hplan-lead p{font-size:13px;line-height:1.65;color:var(--fiscal-muted);margin:0}
.hplan-section-title{color:var(--fiscal-heading);font-size:15px;margin:0 0 13px;font-weight:700}
.hplan-module-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
.hplan-module-card{min-height:142px;display:flex;flex-direction:column;align-items:flex-start}
.hplan-module-card h3{margin:0 0 8px;font-size:14px;color:var(--fiscal-heading);font-weight:700}
.hplan-module-card p{margin:0 0 12px;color:var(--fiscal-muted);line-height:1.5;flex:1}
.hplan-status{font-size:12px;color:var(--fiscal-muted);font-weight:500}
.hplan-info{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap;margin-top:20px}
.hplan-info p{margin:0;color:var(--fiscal-muted);line-height:1.6}
.hplan-info strong{color:var(--fiscal-heading)}
.hplan-footer{border-top:1px solid var(--fiscal-border);background:var(--fiscal-surface);padding:14px 22px;color:var(--fiscal-muted);font-size:12px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.hplan-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(max-width:1080px){.hplan-module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.hplan-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fiscal-topbar{height:auto;min-height:52px;flex-wrap:wrap;padding:10px 16px}.hplan-nav{margin-left:0}.hplan-header-label{display:none}}
@media(max-width:480px){.hplan-module-grid{grid-template-columns:1fr}.fiscal-main{padding:0 12px;margin:16px auto}.hplan-footer{padding:12px}.hplan-language a{min-width:32px}}
/* HPlan 0.1.3 · Administración. Componentes y paleta de MASTER. */
.hplan-admin-form{display:flex;flex-direction:column;gap:9px;margin:8vh auto 0}
.hplan-admin-form h1{margin-bottom:8px}
.hplan-admin-form label{color:var(--fiscal-heading);font-size:13px;font-weight:700}
.hplan-admin-form input:not([type="hidden"]){width:100%;min-height:36px;border:1px solid var(--fiscal-border);border-radius:4px;padding:8px 10px;color:var(--fiscal-text);background:var(--fiscal-surface);font:inherit}
.hplan-admin-form input:focus-visible{outline:2px solid var(--fiscal-focus);outline-offset:1px}
.hplan-admin-submit{margin-top:12px;align-self:flex-start}
.hplan-admin-error{padding:12px;border:1px solid var(--fiscal-danger);background:var(--fiscal-error-bg);color:var(--fiscal-error-text);border-radius:4px}
.hplan-admin-panel{max-width:920px;margin:auto}
.hplan-admin-panel h1{font-size:20px;margin:0;color:var(--fiscal-heading)}
.hplan-admin-panel p{color:var(--fiscal-muted);font-size:13px}
.hplan-admin-panel-top{display:flex;justify-content:space-between;align-items:center;gap:14px}
.hplan-admin-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}
@media(max-width:520px){.hplan-admin-stats{grid-template-columns:1fr}}
