:root {
    --color-bg: #f8f8f8;
    --color-surface: #ffffff;
    --color-surface-alt: #f5f5f5;
    --color-border: #e0e0e0;
    --color-border-strong: #cccccc;
    --color-text-primary: #1a1a1a;
    --color-text-secondary: #555555;
    --color-text-tertiary: #888888;
    --color-text-muted: #aaaaaa;
    --color-accent: #1a1a1a;
    --color-accent-hover: #333333;
    --color-header-bg: #1a1a1a;
    --color-footer-bg: #1a1a1a;
    --color-sidebar-bg: #f5f5f5;
    --font-sans: 'Inter', sans-serif;
    --font-serif: 'Literata', serif;
    --font-mono: 'JetBrains Mono', monospace;
    --radius-sm: 3px;
    --radius-md: 4px;
    --radius-lg: 6px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.06);
    --shadow-md: 0 4px 12px rgba(0,0,0,0.08);
    --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
    --transition: 0.15s ease;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { font-size: 14px; height: 100%; }

body {
    font-family: var(--font-sans);
    color: var(--color-text-primary);
    background: var(--color-bg);
    height: 100%;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.icon { width: 16px; height: 16px; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; fill: none; display: inline-block; vertical-align: middle; }
.icon-sm { width: 14px; height: 14px; }
.icon-lg { width: 20px; height: 20px; }

.app-container {
    display: grid;
    grid-template-rows: 52px 40px 1fr 42px;
    height: 100vh;
    width: 100vw;
    overflow: hidden;
}

.app-header {
    background: var(--color-header-bg);
    height: 52px;
    display: flex;
    align-items: center;
    padding: 0 20px;
    position: sticky;
    top: 0;
    z-index: 100;
    border-bottom: 1px solid var(--color-border-strong);
}

.header-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    max-width: 1600px;
    margin: 0 auto;
    gap: 24px;
}

.app-logo { display: flex; align-items: center; gap: 8px; user-select: none; }
.logo-symbol {
    width: 28px; height: 28px; background: #f0f0f0; border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-mono); font-size: 12px; font-weight: 600;
    color: #1a1a1a; border: 1px solid #888;
}
.logo-text { font-family: var(--font-serif); font-weight: 600; font-size: 1.2rem; color: #ffffff; letter-spacing: -0.3px; }
.logo-version { font-family: var(--font-mono); font-size: 10px; color: #888; background: rgba(255,255,255,0.08); padding: 1px 8px; border-radius: 10px; margin-left: 4px; }

.header-widgets { display: flex; align-items: center; gap: 20px; flex: 1; justify-content: center; }
.widget-item { display: flex; align-items: center; gap: 6px; color: #eeeeee; font-size: 12px; }
.widget-label { color: #888; font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; }
.widget-value { font-weight: 500; color: #dddddd; }

.header-controls { display: flex; align-items: center; gap: 6px; }
.control-btn {
    background: transparent; border: 1px solid #444; color: #cccccc;
    width: 34px; height: 34px; border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all var(--transition);
}
.control-btn:hover { background: rgba(255,255,255,0.06); color: #ffffff; border-color: #777; }

.btn-login {
    background: rgba(255,255,255,0.06); border: 1px solid #444; color: #eeeeee;
    padding: 0 14px; height: 34px; border-radius: var(--radius-sm);
    display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500;
    cursor: pointer; transition: all var(--transition); font-family: var(--font-sans);
}
.btn-login:hover { background: rgba(255,255,255,0.12); border-color: #888; }

/* ---- Tanda I: botón de hora planetaria + Sign up (header) ---- */
.planet-hour-wrap { position: relative; }
.planet-hour-btn {
    background: transparent; border: 1px solid #444; color: #cccccc;
    height: 34px; padding: 0 14px; border-radius: var(--radius-sm);
    display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 500;
    cursor: pointer; transition: all var(--transition); font-family: var(--font-sans);
}
.planet-hour-btn:hover { background: rgba(255,255,255,0.06); color: #ffffff; border-color: #777; }
.ph-glyph { font-size: 15px; line-height: 1; color: #ffffff; }
.planet-hour-tip {
    display: none; position: absolute; top: calc(100% + 8px); right: 0; z-index: 1200;
    width: 268px; background: var(--color-surface); border: 1px solid var(--color-border);
    box-shadow: var(--shadow-lg); border-radius: var(--radius-sm); padding: 12px 14px;
    font-size: 12px; color: var(--color-text-secondary); text-align: left; cursor: default;
}
/* hotfix2: el display de los tips lo gestiona GL_FLOAT_TIP (capa flotante) */
.ph-tip-title { font-family: var(--font-serif); font-weight: 600; font-size: 13px; color: var(--color-text-primary); display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.ph-tip-title .ph-glyph-lg { font-size: 18px; }
.ph-tip-row { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; border-top: 1px solid var(--color-surface-alt); }
.ph-tip-row:first-of-type { border-top: none; }
.ph-tip-label { color: var(--color-text-tertiary); font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; align-self: center; white-space: nowrap; }
.ph-tip-val { color: var(--color-text-primary); font-weight: 500; text-align: right; }
.ph-tip-foot { margin-top: 8px; padding-top: 7px; border-top: 1px solid var(--color-border); font-size: 10px; color: var(--color-text-muted); }

/* ---- Tanda K: fichas de Luna / Calendario / Tránsitos ---- */
.tip-wide { width: 336px; }
.tip-scroll { max-height: 44vh; overflow-y: auto; margin-top: 6px; }
/* hotfix2: desplegable Calendario (más ancho: tabla de eventos semanal) */
.tip-cal { width: 442px; }
.cal-table td { vertical-align: top; }
.cal-when { white-space: nowrap; color: var(--color-text-tertiary); font-size: 9.5px; line-height: 1.35; }
.cal-when .cal-hoy { display: inline-block; background: #7c3aed; color: #ffffff; font-size: 8px; font-weight: 700; letter-spacing: 0.5px; border-radius: 2px; padding: 0 3px; margin-left: 4px; }
.cal-what { font-size: 10.5px; color: var(--color-text-secondary); padding-right: 6px !important; }
.cal-what .cal-desc { color: var(--color-text-primary); }
.cal-deg { white-space: nowrap; text-align: right !important; font-size: 10px; color: var(--color-text-primary); }
.cal-go { text-align: right !important; }
.cal-carta { border: 1px solid #7c3aed; color: #7c3aed; background: transparent; font-size: 9px; font-weight: 600; padding: 1px 7px; border-radius: 3px; cursor: pointer; font-family: var(--font-sans); transition: all var(--transition); }
.cal-carta:hover { background: #7c3aed; color: #ffffff; }
tr.cal-hoy-row td { background: rgba(124, 58, 237, 0.055); }
.cal-asp { display: inline-block; min-width: 16px; text-align: center; color: var(--color-text-tertiary); font-size: 11px; }
.tip-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 9px; }
.tip-link {
    display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px;
    border: 1px solid #7c3aed; color: #7c3aed; border-radius: 4px;
    font-size: 10.5px; font-weight: 600; cursor: pointer; background: transparent;
    font-family: var(--font-sans); transition: all var(--transition);
}
.tip-link:hover { background: #7c3aed; color: #ffffff; }
.tip-link.tip-ghost { border-color: var(--color-border); color: var(--color-text-tertiary); }
.tip-link.tip-ghost:hover { background: var(--color-surface-alt); color: var(--color-text-secondary); }
.moon-svg-wrap { display: flex; align-items: center; gap: 12px; margin: 4px 0 8px; }
.tt-table { width: 100%; border-collapse: collapse; font-size: 10.5px; }
.tt-table td { padding: 2.5px 4px; border-top: 1px solid var(--color-surface-alt); }
.tt-table tr:first-child td { border-top: none; }
.tt-table td:last-child { text-align: right; white-space: nowrap; color: var(--color-text-primary); }
.tt-sep td { padding-top: 5px; border-top: 1px solid var(--color-border); font-size: 9px; letter-spacing: 0.5px; color: var(--color-text-tertiary); text-transform: uppercase; }
.tt-body { color: var(--color-text-secondary); white-space: nowrap; }
/* hotfix2: glifos en fuente símbolo (mata la presentación emoji: chips
   de fondo y zig-zag) y columna fija → todo bien encolumnado */
.tt-glyph { display: inline-block; min-width: 19px; text-align: center; font-family: 'Segoe UI Symbol','Apple Symbols','Noto Sans Symbols 2',serif; font-size: 12.5px; }
.tt-sign { display: inline-block; min-width: 15px; text-align: center; font-family: 'Segoe UI Symbol','Apple Symbols','Noto Sans Symbols 2',serif; }
/* hotfix2: los parroquiales llevan PALABRAS — nunca se esconden */
.btn-word { font-size: 11px; font-weight: 600; letter-spacing: 0.2px; }
.ph-btn-word { padding: 0 10px; }
@media (max-width: 900px) { .ph-btn-word { padding: 0 7px; } .btn-word { font-size: 10px; } }

/* ---- Tanda K: pestañas de cartas automáticas (violeta del sistema) ---- */
.view-tab.tab-auto { color: #7c3aed; display: inline-flex; align-items: center; gap: 7px; padding-right: 10px; }
.view-tab.tab-auto:hover { background: rgba(124, 58, 237, 0.07); }
.view-tab.tab-auto.active { border-bottom-color: #7c3aed; color: #6d28d9; font-weight: 600; }
.tab-close {
    display: inline-flex; align-items: center; justify-content: center;
    width: 15px; height: 15px; border-radius: 3px; font-size: 10px; line-height: 1;
    color: var(--color-text-tertiary); border: 1px solid transparent; cursor: pointer;
}
.tab-close:hover { color: #c0392b; border-color: #c0392b; }
.auto-wrap { display: flex; flex-direction: column; gap: 10px; height: 100%; min-height: 0; }
.auto-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.auto-badge {
    display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 3px;
    background: #7c3aed; color: #ffffff; font-size: 9px; font-weight: 700; letter-spacing: 1px;
}
.auto-badge.conserved { background: var(--color-surface-alt); color: #7c3aed; border: 1px solid #7c3aed; }
.auto-sub { font-size: 11px; color: var(--color-text-tertiary); }
.auto-grid { display: flex; gap: 14px; flex: 1; min-height: 0; align-items: stretch; }
.auto-wheel { flex: 1 1 auto; min-width: 0; display: flex; align-items: flex-start; justify-content: center; }
.auto-wheel svg { width: 100%; max-width: 620px; height: auto; max-height: calc(100vh - 240px); }
.auto-ficha { flex: 0 0 320px; border: 1px solid var(--color-border); border-radius: var(--radius-sm);
              background: var(--color-surface); padding: 12px 14px; overflow-y: auto; }
.auto-ficha-title { font-family: var(--font-serif); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: 1px; color: var(--color-text-secondary); margin-bottom: 8px; }
.auto-ficha .tt-table td:last-child { font-size: 11px; }
.auto-actions { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.auto-actions .tip-link { justify-content: center; }
.auto-note { font-size: 9.5px; color: var(--color-text-muted); margin-top: 8px; line-height: 1.45; }
@media (max-width: 1100px) {
    .auto-grid { flex-direction: column; }
    .auto-ficha { flex: none; width: 100%; max-height: none; }
}
.ph-tip-empty { color: var(--color-text-tertiary); font-size: 11px; }
.header-toast {
    position: fixed; top: 60px; right: 16px; z-index: 1300;
    background: #1a1a1a; color: #f0f0f0; border: 1px solid #444;
    padding: 10px 16px; border-radius: var(--radius-sm); box-shadow: var(--shadow-lg);
    font-size: 12px; opacity: 0; transform: translateY(-6px);
    transition: opacity 0.25s ease, transform 0.25s ease; pointer-events: none;
}
.header-toast.show { opacity: 1; transform: translateY(0); }
.header-toast b { color: #ffffff; }
.btn-signup {
    background: #f0f0f0; border: 1px solid #f0f0f0; color: #1a1a1a;
    padding: 0 14px; height: 34px; border-radius: var(--radius-sm);
    display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600;
    cursor: pointer; transition: all var(--transition); font-family: var(--font-sans);
}
.btn-signup:hover { background: #ffffff; border-color: #ffffff; }
/* ---- Tanda I: pestañas del modal de acceso (Ingresar / Crear cuenta) ---- */
.login-tabs { display: flex; gap: 4px; margin-bottom: 14px; border-bottom: 1px solid var(--color-border); }
.login-tab {
    flex: 1; background: none; border: none; border-bottom: 2px solid transparent;
    padding: 8px 4px; font-size: 12px; font-weight: 500; color: var(--color-text-tertiary);
    cursor: pointer; transition: all var(--transition); font-family: var(--font-sans);
}
.login-tab:hover { color: var(--color-text-primary); }
.login-tab.active { color: var(--color-text-primary); border-bottom-color: #1a1a1a; font-weight: 600; }

.app-subheader {
    background: #f0f0f0; height: 40px; display: flex; align-items: center;
    padding: 0 20px; position: sticky; top: 52px; z-index: 90;
    border-bottom: 1px solid var(--color-border);
}
.subheader-content { display: flex; align-items: center; width: 100%; max-width: 1600px; margin: 0 auto; gap: 20px; }
.subnav { display: flex; align-items: center; gap: 6px; }
.subnav-item {
    background: transparent; border: none; color: #444; padding: 0 14px;
    height: 32px; border-radius: var(--radius-sm); display: flex; align-items: center; gap: 6px;
    font-size: 12px; font-weight: 500; cursor: pointer; transition: all var(--transition);
    font-family: var(--font-sans);
}
.subnav-item:hover { background: rgba(0,0,0,0.04); color: #000; }

.subnav-dropdown {
    position: fixed; top: 92px; left: 240px; width: 220px;
    font-size: 13px;
    background: var(--color-surface); border: 1px solid var(--color-border);
    box-shadow: var(--shadow-lg); border-radius: var(--radius-sm);
    z-index: 1000; display: none; flex-direction: column;
    max-height: calc(100vh - 100px); overflow-y: auto;
}
.subnav-dropdown.active { display: flex; }
.dropdown-header {
    padding: 12px 16px; border-bottom: 1px solid var(--color-border);
    background: var(--color-surface-alt); font-family: var(--font-serif);
    font-weight: 600; font-size: 13px; color: var(--color-text-primary);
    display: flex; justify-content: space-between; align-items: center;
}
.close-dropdown { cursor: pointer; color: var(--color-text-tertiary); background: none; border: none; font-size: 18px; line-height: 1; }
/* El menú de Herramientas lleva checks y segmentos V/H: más ancho */
#herramientas-dropdown { width: 272px; }
.close-dropdown:hover { color: var(--color-text-primary); }
.dropdown-option {
    padding: 10px 16px; cursor: pointer; font-size: 13px; color: var(--color-text-primary);
    border-bottom: 1px solid var(--color-border); transition: background 0.1s;
    font-family: var(--font-sans);
}
.dropdown-option:hover { background: var(--color-surface-alt); }
.dropdown-option:last-child { border-bottom: none; }

.workspace { display: flex; flex: 1; overflow: hidden; background: var(--color-surface); width: 100%; }

.app-sidebar {
    width: 260px; background: var(--color-sidebar-bg);
    border-right: 1px solid var(--color-border);
    display: flex; flex-direction: column; overflow: hidden; flex-shrink: 0; z-index: 20;
    position: relative;
}
/* Sidebar en orientación horizontal (dock superior) */
.workspace.sidebar-horizontal { flex-direction: column; }
.app-sidebar.panel-horizontal {
    width: 100%; flex-direction: row; max-height: 230px;
    border-right: none; border-bottom: 1px solid var(--color-border);
}
.app-sidebar.panel-horizontal .sidebar-form {
    flex: 1; max-height: 230px; border-bottom: none; border-right: 1px solid var(--color-border);
}
.app-sidebar.panel-horizontal .sidebar-nav { flex: 0 0 210px; border-left: none; }

.sidebar-form {
    padding: 16px 18px; border-bottom: 1px solid var(--color-border);
    background: var(--color-sidebar-bg); flex-shrink: 0; overflow-y: auto; max-height: 100%;
}

.form-title { font-family: var(--font-serif); font-size: 14px; font-weight: 600; color: var(--color-text-primary); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.form-group { display: flex; flex-direction: column; gap: 3px; margin-bottom: 10px; }
.form-label { font-size: 11px; font-weight: 600; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.5px; }
.form-input, .form-input select {
    width: 100%; padding: 7px 10px; border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); font-family: var(--font-sans); font-size: 13px;
    color: var(--color-text-primary); background: var(--color-surface);
    transition: all var(--transition);
}
.form-input:focus { outline: none; border-color: #888; box-shadow: 0 0 0 2px rgba(0,0,0,0.04); }
.form-input[disabled] { background: var(--color-surface-alt); color: var(--color-text-tertiary); cursor: not-allowed; }

.time-wrapper { display: flex; align-items: center; gap: 6px; }
/* Tanda J: checks diminutos estándar (12/24 h, género, coordenadas) */
.check-mini { font-size: 11px; color: var(--color-text-tertiary); display: flex; align-items: center; gap: 6px; cursor: pointer; user-select: none; }
.check-mini input[type="checkbox"] { width: 12px; height: 12px; margin: 0; accent-color: #7c3aed; cursor: pointer; flex-shrink: 0; }
.check-mini:hover { color: var(--color-text-secondary); }
/* Tanda J: tooltips-ficha al estilo hora planetaria */
.field-tip {
    display: none; position: absolute; top: calc(100% + 6px); left: 0; z-index: 1300;
    width: 256px; background: var(--color-surface); border: 1px solid var(--color-border);
    box-shadow: var(--shadow-lg); border-radius: var(--radius-sm); padding: 11px 13px;
    font-size: 12px; color: var(--color-text-secondary); text-align: left; cursor: default;
    pointer-events: none; /* informativo puro: no bloquea los campos de abajo */
}
.field-tip.active { display: block; }
.field-tip-wrap { position: relative; }
/* Tanda J hotfix2: capa flotante top-level — el tip vive en <body> con
   position:fixed (JS calcula ancla + flip + clamp); nadie lo clipea:
   ni el overflow del sidebar, ni el del header, en ningún viewport */
.gl-floated { position: fixed !important; top: auto; left: auto; max-width: calc(100vw - 16px); }
.gl-floated.active { display: block; } /* cubre también a .planet-hour-tip, que no tenía .active propio */
.form-input.required-missing { border-color: #c0392b; box-shadow: 0 0 0 2px rgba(192, 57, 43, 0.12); }

.city-input-wrapper { display: flex; gap: 8px; align-items: center; position: relative; }
.flag {
    width: 22px; height: 16px; border-radius: 2px; border: 1px solid var(--color-border);
    background-size: cover; background-position: center; flex-shrink: 0;
    background-color: var(--color-surface-alt);
}
.city-suggestions {
    position: absolute; top: 100%; left: 0; width: 100%;
    background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); box-shadow: var(--shadow-lg);
    max-height: 200px; overflow-y: auto; z-index: 1000; display: none; margin-top: 2px;
}
.city-suggestions.active { display: block; }
.suggestion-item {
    padding: 8px 14px; cursor: pointer; border-bottom: 1px solid var(--color-border);
    transition: background var(--transition); font-size: 13px;
}
.suggestion-item:hover { background: var(--color-surface-alt); }
.suggestion-item:last-child { border-bottom: none; }
.suggestion-name { font-weight: 600; color: var(--color-text-primary); }
.suggestion-details { font-size: 11px; color: var(--color-text-tertiary); margin-top: 2px; }

/* Tanda J: coordenadas manuales detrás de un check discreto */
.coords-content { display: none; margin-top: 6px; }
.coords-content.active { display: block; }
.coords-row { display: flex; gap: 8px; margin-top: 6px; }
.coord-input { flex: 1; }

/* Tanda J hotfix2: la privacidad ahora es un check-mini (ver formulario),
   ya no switch; los estilos .switch/.slider quedaron sin uso y salieron */

.form-actions { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }
.btn {
    padding: 8px 16px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 600;
    font-family: var(--font-sans); border: 1px solid var(--color-border-strong);
    cursor: pointer; transition: all var(--transition);
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    background: transparent; color: var(--color-text-primary); height: 34px; flex: 1;
}
.btn:hover { background: rgba(0,0,0,0.04); border-color: #888; }
.btn-icon-only { width: 34px; padding: 0; flex: 0 0 auto; }
.btn-primary { background: var(--color-accent); color: #ffffff; border-color: var(--color-accent); }
.btn-primary:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); }

/* Tanda J: Calcular compacto, violeta en degradé, letras blancas */
.btn-calcular {
    padding: 5px 26px; height: 28px; flex: 0 0 auto; letter-spacing: 0.4px;
    background: linear-gradient(135deg, #6d28d9 0%, #a855f7 100%);
    border-color: transparent; color: #ffffff;
}
.btn-calcular:hover { background: linear-gradient(135deg, #5b21b6 0%, #9333ea 100%); border-color: transparent; }
/* Tanda J: rail flotante para restablecer el panel lateral oculto */
.sidebar-restore-rail {
    display: none; position: fixed; left: 0; top: 50%; transform: translateY(-50%);
    z-index: 900; width: 22px; height: 64px;
    border: 1px solid var(--color-border); border-left: none;
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    background: var(--color-surface); color: var(--color-text-tertiary);
    cursor: pointer; align-items: center; justify-content: center; font-size: 12px;
    box-shadow: var(--shadow-sm);
}
.sidebar-restore-rail:hover { color: var(--color-text-primary); background: var(--color-surface-alt); }

.sidebar-nav { flex: 1; overflow-y: auto; padding: 16px 0; display: flex; flex-direction: column; }
.sidebar-section { margin-bottom: 20px; }
.sidebar-title { font-family: var(--font-serif); font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--color-text-secondary); font-weight: 600; padding: 0 18px 8px; user-select: none; }
.nav-item {
    display: flex; align-items: center; gap: 8px; padding: 8px 18px;
    color: var(--color-text-primary); text-decoration: none; font-size: 13px; font-weight: 500;
    transition: all var(--transition); cursor: pointer; background: transparent;
    border: none; border-left: 2px solid transparent; width: 100%; text-align: left;
    font-family: var(--font-sans);
}
.nav-item:hover { background: rgba(0,0,0,0.03); border-left-color: #888; }
.nav-item.active { background: rgba(0,0,0,0.04); border-left-color: #1a1a1a; font-weight: 600; }

.main-content { flex: 1; display: flex; flex-direction: column; overflow: hidden; background: var(--color-bg); }

.view-selector {
    display: flex; gap: 2px; padding: 12px 20px 0 20px;
    background: var(--color-bg); border-bottom: 1px solid var(--color-border);
}
.view-tab {
    padding: 8px 18px; background: transparent; border: none;
    border-bottom: 2px solid transparent; cursor: pointer; font-size: 13px; font-weight: 500;
    color: var(--color-text-secondary); transition: all var(--transition);
    font-family: var(--font-sans);
}
.view-tab:hover { color: var(--color-text-primary); }
.view-tab.active { color: var(--color-text-primary); border-bottom-color: #1a1a1a; }

.view-content { flex: 1; overflow: hidden; position: relative; }

/* ---- Herramientas flotantes de cada panel (V/H y ocultar) ---- */
.panel-tools { position: absolute; top: 4px; right: 4px; display: flex; gap: 3px; z-index: 30; }
.panel-btn {
    width: 18px; height: 18px; display: flex; align-items: center; justify-content: center;
    font-size: 10px; line-height: 1; color: var(--color-text-tertiary); background: var(--color-surface);
    border: 1px solid var(--color-border); border-radius: 4px; cursor: pointer; padding: 0;
    transition: color var(--transition), border-color var(--transition);
}
.panel-btn:hover { color: var(--color-text-primary); border-color: #888; }
.view-panel { display: none; width: 100%; height: 100%; overflow: auto; padding: 20px; background: var(--color-bg); }
.view-panel.active { display: block; }

/* ---- Vista CARTA standalone (SVG, carta individual) ---- */
.carta-standalone { max-width: 1400px; margin: 0 auto; }
.carta-header { text-align: center; padding: 10px 0 14px; border-bottom: 1px solid var(--color-border); margin-bottom: 14px; }
.carta-header h1 { font-family: var(--font-serif); font-size: 26px; font-weight: 600; color: var(--color-text-primary); }
.carta-header p { font-size: 13px; color: var(--color-text-tertiary); margin-top: 4px; }
#carta-wheel-container { height: auto; display: block; padding: 12px; overflow: hidden; }
#carta-wheel-container svg { width: 100%; height: auto; display: block; }
.carta-section {
    background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); padding: 14px; margin-bottom: 14px;
}
.carta-section h2 { font-family: var(--font-serif); font-size: 17px; color: var(--color-text-primary); margin-bottom: 10px; }

/* ---- Menú contextual de paneles (click derecho) ---- */
.ctx-menu {
    position: fixed; z-index: 5000; min-width: 250px; display: none; flex-direction: column;
    background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); box-shadow: var(--shadow-lg); padding: 4px 0;
}
.ctx-menu.active { display: flex; }
.ctx-title { font-size: 9px; letter-spacing: 1.5px; color: var(--color-text-tertiary); padding: 6px 14px 4px; font-weight: 700; }
.ctx-item { display: flex; align-items: center; gap: 8px; padding: 7px 14px; font-size: 12px; cursor: pointer; color: var(--color-text-primary); }
.ctx-item:hover { background: var(--color-surface-alt); }
.ctx-item input { pointer-events: none; }
.ctx-sep { height: 1px; background: var(--color-border); margin: 4px 0; }

/* ---- Herramientas: filas con check (funciones del software) ---- */
.tool-section { font-size: 9px; letter-spacing: 1.5px; color: var(--color-text-tertiary); padding: 8px 16px 4px; font-weight: 700; }
.tool-row { display: flex; align-items: center; gap: 8px; padding: 6px 16px; font-size: 12.5px; cursor: pointer; color: var(--color-text-primary); }
.tool-row:hover { background: var(--color-surface-alt); }
.tool-sep { height: 1px; background: var(--color-border); margin: 6px 0; }
.tool-seg { margin-left: auto; display: flex; border: 1px solid var(--color-border); border-radius: 4px; overflow: hidden; }
.tool-seg button { border: none; background: transparent; font-size: 9px; padding: 2px 7px; cursor: pointer; color: var(--color-text-tertiary); }
.tool-seg button.active { background: #1a1a1a; color: #fff; }

.chart-canvas-container {
    width: 100%; height: 100%; position: relative; overflow: auto;
    display: flex; align-items: center; justify-content: center;
    padding: 20px; background: var(--color-surface);
    border-radius: var(--radius-sm); border: 1px solid var(--color-border);
}
#chart-canvas {
    background: white; box-shadow: var(--shadow-md); border: 1px solid var(--color-border);
    max-width: 100%; max-height: 100%; height: auto; width: auto; display: block;
}

.chart-controls {
    position: absolute; bottom: 32px; right: 32px; display: flex; gap: 6px;
    background: rgba(255,255,255,0.95); padding: 6px; border-radius: var(--radius-sm);
    border: 1px solid var(--color-border); box-shadow: var(--shadow-md); z-index: 50;
}
.zoom-btn {
    width: 34px; height: 34px; display: flex; align-items: center; justify-content: center;
    background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); color: var(--color-text-primary);
    cursor: pointer; transition: all var(--transition);
    font-family: var(--font-sans); font-weight: 500; font-size: 16px;
}
.zoom-btn:hover { background: var(--color-surface-alt); border-color: #888; }
.reset-btn { padding: 0 14px; font-size: 12px; min-width: 56px; width: auto; }

.zoom-info {
    position: absolute; top: 20px; left: 20px; background: rgba(255,255,255,0.92);
    padding: 6px 14px; border-radius: var(--radius-sm); border: 1px solid var(--color-border);
    font-size: 12px; color: var(--color-text-secondary); display: none; font-weight: 500; z-index: 50;
    pointer-events: none; /* Tanda G: badge pasivo, no captura gestos del pan */
}

/* Tanda G: pan del lienzo — manito y cursores */
.zoom-btn.active, .extended-zoom-btn.active {
    background: #1a1a1a; color: #fff; border-color: #1a1a1a;
}
#carta-wheel-container { cursor: grab; }
#carta-wheel-container.panning, #carta-wheel-container.panning *,
.extended-chart-container.panning, .extended-chart-container.panning * { cursor: grabbing !important; }

.chart-loading {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(255,255,255,0.92); display: flex; flex-direction: column;
    align-items: center; justify-content: center; z-index: 40; opacity: 0;
    pointer-events: none; transition: opacity 0.3s ease;
}
.chart-loading.active { opacity: 1; pointer-events: all; }
.loading-spinner {
    width: 36px; height: 36px; border: 2px solid rgba(0,0,0,0.08);
    border-top-color: #1a1a1a; border-radius: 50%;
    animation: spin 0.8s linear infinite; margin-bottom: 12px;
}
.loading-text { font-size: 14px; color: var(--color-text-secondary); font-weight: 400; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ============================================================
   VISTA EXTENDIDA - CARDS CONTINUAS
   ============================================================ */
#view-extended {
    padding: 24px;
    background: var(--color-bg);
    overflow-y: auto;
    height: 100%;
}

.extended-container {
    max-width: 1400px;
    margin: 0 auto;
}

.extended-header {
    text-align: center;
    padding: 24px 0 16px 0;
    border-bottom: 1px solid var(--color-border);
    margin-bottom: 4px;
}

.extended-header h1 {
    font-family: var(--font-serif);
    font-size: 28px;
    font-weight: 600;
    color: var(--color-text-primary);
    letter-spacing: -0.3px;
}

.extended-header p {
    font-size: 14px;
    color: var(--color-text-tertiary);
    margin-top: 4px;
}

.extended-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    padding: 12px 16px;
    background: var(--color-surface-alt);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    margin-bottom: 4px;
}

.extended-control-group {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 12px;
}

.extended-control-group .label {
    font-size: 10px;
    font-weight: 600;
    color: var(--color-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.extended-check {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--color-text-secondary);
    cursor: pointer;
    user-select: none;
    padding: 2px 6px;
    border-radius: 2px;
    transition: background var(--transition);
}

.extended-check:hover {
    background: rgba(0,0,0,0.04);
}

/* ---- Tri-Wheel: layout con bandeja de auxiliares ---- */
.extended-tri-layout { display: flex; gap: 12px; align-items: stretch; }
/* ---- Vista Carta: mismo esquema bandeja + molde + panel técnico ---- */
.carta-tri-layout { display: flex; gap: 12px; align-items: stretch; }
.carta-tri-layout .chart-canvas-container { flex: 1 1 auto; min-width: 0; }
#carta-wheel-container.carta-drop-target::after {
    content: 'SOLTAR · reemplaza la carta en pantalla'; position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(201,162,39,0.14); border: 2px dashed #c9a227; border-radius: var(--radius-sm);
    font-size: 11px; letter-spacing: 1.5px; color: #8a6d1f; font-weight: 700;
    pointer-events: none; z-index: 45;
}
.aux-tray {
    width: 86px; flex: 0 0 86px; display: flex; flex-direction: column; gap: 8px;
    padding: 8px 6px; background: var(--color-surface-alt); border: 1px solid var(--color-border);
    border-radius: var(--radius-md); overflow-y: auto; max-height: 660px; position: relative;
}
/* Bandeja en orientación horizontal (franja sobre el molde) */
.extended-tri-layout.tri-wrap { flex-wrap: wrap; }
.aux-tray.panel-horizontal {
    flex-direction: row; align-items: flex-start; width: 100%; flex: 0 0 100%;
    max-height: 96px; overflow-x: auto; overflow-y: hidden; order: -1;
}
/* Tanda H: miniaturas de la bandeja horizontal reducidas por su
   diagonal (64px, ~86% de la vertical) para que la franja conserve
   la escala compacta de la bandeja vertical */
.aux-tray.panel-horizontal .aux-card { width: 64px; flex: 0 0 64px; }
.aux-tray.tray-target {
    border-color: #c9a227; background: #fbf5e2;
    box-shadow: inset 0 0 0 2px rgba(201,162,39,0.35);
}
.aux-tray.tray-target::before {
    content: 'SOLTAR · va a la bandeja'; font-size: 9px; letter-spacing: 1px;
    color: #8a6d1f; text-align: center; padding: 4px; border: 1px dashed #c9a227;
    border-radius: var(--radius-sm); background: rgba(201,162,39,0.08);
}
.tray-head { display: flex; align-items: center; justify-content: space-between; gap: 4px; margin-bottom: 2px; flex-wrap: wrap; }
.tray-title { font-size: 9px; font-weight: 700; letter-spacing: 1.5px; color: var(--color-text-primary); }
.tray-add {
    font-size: 9px; font-weight: 600; padding: 2px 7px; border-radius: 10px;
    border: 1px solid var(--color-border); background: var(--color-surface);
    color: var(--color-text-secondary); cursor: pointer;
    transition: border-color var(--transition), color var(--transition);
}
.tray-add:hover { border-color: #b08d2f; color: #8a6d1f; }
.tray-empty { font-size: 11px; color: var(--color-text-tertiary); text-align: center; padding: 12px 4px; line-height: 1.5; }
.aux-card {
    cursor: grab; text-align: center; background: var(--color-surface);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    padding: 4px 2px 3px; transition: box-shadow var(--transition), border-color var(--transition);
    touch-action: none; user-select: none; flex-shrink: 0; min-width: 0; overflow: hidden;
}
.aux-card:hover { border-color: #b08d2f; box-shadow: var(--shadow-sm); }
.aux-card:active { cursor: grabbing; }
.aux-card.aux-dragging { opacity: 0.35; }
.aux-mini { width: 100%; height: auto; display: block; }
.aux-name {
    font-size: 9px; line-height: 1.2; color: var(--color-text-secondary); margin-top: 2px; font-weight: 500;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.aux-tipo {
    font-size: 7.5px; letter-spacing: 0.5px; color: var(--color-text-tertiary);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.aux-ghost {
    position: fixed; width: 64px; pointer-events: none; z-index: 9999;
    transform: translate(-50%, -50%) scale(1.05); opacity: 0.95;
    filter: drop-shadow(0 6px 14px rgba(0,0,0,0.25));
}
.aux-ghost svg { width: 100%; height: auto; display: block; background: #fff; border-radius: 50%; border: 1px solid #b08d2f; }

/* ---- Fluidez y cursores del drag ---- */
#extended-wheel g[data-slot] { transition: transform 0.15s ease-out; }
#extended-wheel g[data-slot].no-anim { transition: none; }
body.tri-dragging, body.tri-dragging * { cursor: grabbing !important; }
/* ✕ interactivos: cada badge aparece sólo cuando el cursor está
   en el área del anillo correspondiente (sin "lunas" fijas) */
#extended-wheel g.slot-remove { opacity: 0; pointer-events: none; transition: opacity 0.18s ease; }
#extended-wheel g.slot-remove.slot-remove-visible { opacity: 1; pointer-events: auto; }
.slot-remove:hover circle { fill: #f7ead0; }

/* ---- Panel técnico, zócalo y toast del molde ---- */

.tech-panel {
    width: 182px; flex: 0 0 182px; display: flex; flex-direction: column; gap: 10px;
    padding: 12px 12px 10px; background: var(--color-surface-alt);
    border: 1px solid var(--color-border); border-radius: var(--radius-md);
    overflow-y: auto; max-height: 660px; position: relative;
}
/* Panel técnico en orientación horizontal (franja bajo el molde) */
.tech-panel.panel-horizontal {
    flex-direction: row; align-items: flex-start; width: 100%; flex: 0 0 100%;
    max-height: 150px; overflow-x: auto; overflow-y: hidden; order: 2;
}
.tech-panel.panel-horizontal .tp-block {
    flex: 0 0 190px; border-right: 1px dashed var(--color-border); padding-right: 8px;
}
.tech-panel.panel-horizontal .tp-foot { display: none; }
.tp-head { font-size: 10px; font-weight: 700; letter-spacing: 2px; color: var(--color-text-primary); }
.tp-sub { font-size: 11px; color: var(--color-text-secondary); margin-top: -6px; }
.tp-t {
    font-size: 9px; letter-spacing: 1.5px; color: var(--color-text-tertiary);
    border-bottom: 1px solid var(--color-border); padding-bottom: 2px; margin-bottom: 5px;
}
.tp-row { display: flex; align-items: center; gap: 5px; margin: 3px 0; }
.tp-lab { width: 52px; flex: none; font-size: 10px; color: var(--color-text-secondary); }
.tp-track { flex: 1; height: 6px; background: rgba(0,0,0,0.08); border-radius: 3px; overflow: hidden; }
.tp-fill { display: block; height: 100%; border-radius: 3px; }
.tp-val { font-family: 'Consolas','Liberation Mono',monospace; font-size: 10px; color: var(--color-text-secondary); }
.tp-mono { font-family: 'Consolas','Liberation Mono',monospace; font-size: 11px; color: var(--color-text-primary); }
.tp-moon { display: flex; align-items: center; gap: 8px; }
.tp-foot {
    font-size: 9px; color: var(--color-text-tertiary);
    border-top: 1px dashed var(--color-border); padding-top: 6px;
}
.tp-empty { font-size: 11px; color: var(--color-text-tertiary); line-height: 1.5; }

.tri-tech-footer {
    display: flex; flex-wrap: wrap; gap: 3px 0; align-items: center;
    margin-top: 8px; padding: 6px 10px;
    background: var(--color-surface-alt); border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-family: 'Consolas','Liberation Mono',monospace;
    font-size: 10px; color: var(--color-text-tertiary);
}
.tt-cell { padding: 0 10px; border-right: 1px solid var(--color-border); white-space: nowrap; }
.tt-cell:first-child { padding-left: 0; }
.tt-cell:last-child { border-right: none; }

.tri-toast {
    position: absolute; top: 10px; right: 12px; z-index: 60; max-width: 300px;
    background: rgba(20,20,20,0.88); color: #f5f0e1; font-size: 11px; line-height: 1.45;
    padding: 8px 12px; border-radius: var(--radius-sm);
    opacity: 0; transform: translateY(-6px); pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s ease;
}
.tri-toast.show { opacity: 1; transform: translateY(0); }
.tri-toast b { color: #e8c96a; }
.aux-tipo {
    font-family: 'Consolas','Liberation Mono',monospace; font-size: 9px;
    color: #b08d2f; margin-top: 1px; letter-spacing: 0.5px;
}

.extended-check input[type="checkbox"] {
    width: 13px;
    height: 13px;
    accent-color: #1a1a1a;
    cursor: pointer;
    margin: 0;
}

.extended-check input[type="checkbox"]:checked + span {
    color: var(--color-text-primary);
    font-weight: 500;
}

/* CARDS CONTINUAS - SIN ESPACIO ENTRE ELLAS */
.extended-section {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 0;
    padding: 12px 24px;
    margin-bottom: 0;
    border-bottom: 1px solid var(--color-border);
}

.extended-section:first-of-type {
    border-top-left-radius: var(--radius-sm);
    border-top-right-radius: var(--radius-sm);
    border-top: 1px solid var(--color-border);
}

.extended-section:last-of-type {
    border-bottom-left-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
    border-bottom: 1px solid var(--color-border);
}

.extended-section:only-of-type {
    border-radius: var(--radius-sm);
}

.extended-section h2 {
    font-family: var(--font-serif);
    font-size: 18px;
    font-weight: 600;
    color: var(--color-text-primary);
    margin-bottom: 8px;
    padding-bottom: 5px;
    border-bottom: 1px solid var(--color-border);
}

.extended-chart-container {
    width: 100%;
    background: white;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    padding: 8px 16px;
    overflow: hidden;
    position: relative;
    cursor: default;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.extended-chart-container svg {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.15s ease;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

/* ---- Tanda H: duo "Patrones Planetarios" + "Hemisferios" en la
   misma línea (dos cuadrados); cada card conserva su h2 ---- */
.extended-duo { display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; }
.extended-duo .extended-section:first-of-type { border-top: none; border-radius: 0; }
.extended-duo .extended-section:last-of-type { border-radius: 0; }
.extended-duo .extended-chart-container { min-height: 0; }
/* muestras a tamaño moderado: referencia de áreas y patrones,
   ni vista en miniatura ni tabla completa */
.extended-duo .extended-chart-container svg { width: 76%; margin: 0 auto; }
.extended-duo .extended-chart-container svg { max-height: none; }
/* los slots div de las cards dinamicas ocupan el ancho completo
   (dentro del flex del container, un div pelado colapsa) */
#extended-positions, #extended-patterns, #extended-declinations,
#extended-elements, #extended-pattern, #extended-hemispheres { width: 100%; }

/* ---- Tanda H: pirámide de Elementos y Cualidades (rádix arriba,
   base con los dos anillos) ---- */
.elem-pyramid { width: 100%; }
.elem-p-base { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
.elem-p-cell {
    border: 1px dashed var(--color-border); border-radius: var(--radius-sm);
    padding: 4px; background: #fff;
}

/* ---- Tanda H: carrusel de aspectarios (sólo horizontal, sin
   scrollbar; chevrones discretos) ---- */
.aspect-wrap { width: 100%; display: flex; flex-direction: column; }
.aspect-carousel { display: flex; align-items: stretch; gap: 6px; width: 100%; }
.aspect-nav {
    flex: 0 0 30px; align-self: center; height: 56px;
    border: 1px solid var(--color-border); background: var(--color-surface);
    color: var(--color-text-tertiary); border-radius: var(--radius-sm); cursor: pointer;
    font-size: 20px; line-height: 1; display: flex; align-items: center; justify-content: center;
    transition: color var(--transition), border-color var(--transition);
}
.aspect-nav:hover:not(:disabled) { color: #8a6d1f; border-color: #b08d2f; }
.aspect-nav:disabled { opacity: 0.3; cursor: default; }
.aspect-viewport { flex: 1 1 auto; overflow: hidden; min-width: 0; }
.aspect-track { display: flex; transition: transform 0.28s ease; }
.aspect-slide { flex: 0 0 100%; min-width: 0; display: flex; justify-content: center; }
.aspect-slide svg { width: 100%; max-width: 700px; height: auto; }
.aspect-dots { display: flex; justify-content: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.aspect-dot {
    font-size: 10px; letter-spacing: 0.5px; color: var(--color-text-tertiary);
    padding: 2px 8px; border-radius: 10px; border: 1px solid transparent; cursor: pointer;
    background: none; font-family: var(--font-sans);
}
.aspect-dot.active { color: #8a6d1f; border-color: #c9a227; background: rgba(201,162,39,0.08); font-weight: 600; }

.extended-zoom-controls {
    position: absolute;
    bottom: 16px;
    right: 16px;
    display: flex;
    gap: 4px;
    background: rgba(255,255,255,0.92);
    padding: 4px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow-sm);
    z-index: 10;
}

.extended-zoom-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    cursor: pointer;
    transition: all var(--transition);
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: 14px;
}

.extended-zoom-btn:hover {
    background: var(--color-surface-alt);
    border-color: #888;
}

.extended-zoom-btn.reset {
    padding: 0 10px;
    min-width: 40px;
    font-size: 11px;
}

.extended-zoom-info {
    position: absolute;
    top: 16px;
    left: 16px;
    background: rgba(255,255,255,0.92);
    padding: 4px 12px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    font-size: 11px;
    color: var(--color-text-secondary);
    font-weight: 500;
    z-index: 10;
    pointer-events: none;
    display: none;
}

.extended-actions {
    display: flex;
    gap: 12px;
    justify-content: flex-end;
    padding-top: 16px;
    border-top: 1px solid var(--color-border);
    margin-top: 0;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-top: none;
    border-bottom-left-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
    padding: 16px 24px;
}

/* MODAL EXPORT */
/* ---- Glifos astrológicos embebidos: subsets WOFF2 de 23 glifos
        (℞ ☉ ☽ ☿ ♀ ♂ ♃ ♄ ♅ ♆ ♇ ♈-♓) -> los juegos alternativos se
        ven IDÉNTICOS en Windows / macOS / Linux ---- */
@font-face { font-family: 'AstraDejaVu'; src: url("data:font/woff2;base64,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") format('woff2'); font-display: swap; }
@font-face { font-family: 'AstraSerif'; src: url("data:font/woff2;base64,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") format('woff2'); font-display: swap; }

/* ---- Modal de glifos y colores ---- */
.est-preview { border: 1px solid var(--color-border); border-radius: 8px; background: #fdfcf9; padding: 10px 14px; margin-bottom: 6px; }
.est-group-title { font-size: 10px; font-weight: 700; color: #888; text-transform: uppercase; letter-spacing: 1px; margin: 14px 0 6px; }
.est-opts { display: flex; gap: 6px; flex-wrap: wrap; }
.est-opt { border: 1px solid #ccc; background: #fff; color: #444; font-size: 12px; padding: 6px 10px; border-radius: 6px; cursor: pointer; transition: all var(--transition); }
.est-opt:hover { border-color: #888; }
.est-opt.active { background: #1a1a1a; color: #fff; border-color: #1a1a1a; }
.est-note { font-size: 11px; color: #8a6d1f; background: rgba(138,109,31,0.08); border-radius: 6px; padding: 7px 10px; margin-top: 12px; }
.est-hint { font-size: 11px; color: #777; margin-top: 6px; line-height: 1.5; }
.est-casas-panel { margin-top: 12px; padding: 10px 12px 12px; border: 1px solid var(--color-border); border-radius: 8px; background: #fdfcf9; transition: opacity var(--transition); }
.est-casas-panel.disabled { opacity: 0.45; pointer-events: none; }
.est-swatches { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; }
.est-swatch { width: 27px; height: 27px; border-radius: 50%; border: 2px solid rgba(0,0,0,0.14); cursor: pointer; padding: 0; transition: transform var(--transition), border-color var(--transition), box-shadow var(--transition); }
.est-swatch:hover { transform: scale(1.14); }
.est-swatch.active { border-color: #1a1a1a; box-shadow: 0 0 0 2px #fff inset; transform: scale(1.14); }
.est-swatch-none { background: repeating-linear-gradient(45deg, #fff, #fff 4px, #eee 4px, #eee 8px); font-size: 13px; color: #999; line-height: 1; }
.est-casas-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; margin-top: 4px; }
.est-casa-ring { display: flex; align-items: flex-start; gap: 8px; margin-top: 7px; }
.est-casa-ring-lab {
    flex: 0 0 64px; font-size: 8.5px; letter-spacing: 1px; font-weight: 700;
    color: #8a8a8a; text-align: right; padding-top: 12px;
}
.est-casa-ring .est-casas-grid { flex: 1; margin-top: 0; }
.est-casa-btn { height: 34px; border-radius: 6px; border: 1.5px solid #ccc; background: #fff; font-size: 12px; font-weight: 700; color: #333; cursor: pointer; transition: all var(--transition); }
.est-casa-btn:hover { border-color: #666; transform: translateY(-1px); }
.est-casa-btn.vacia { color: #aaa; border-style: dashed; background: #fff; }
/* Tanda E: pie sticky => Limpiar/Restablecer siempre visibles. */
.est-actions { display: flex; gap: 8px; position: sticky; bottom: 0; margin: 14px -20px -20px; padding: 12px 20px 20px; background: var(--color-surface); border-top: 1px solid var(--color-border); box-shadow: 0 -8px 10px -8px rgba(0,0,0,0.18); }

/* Tanda E: padding para que el modal no toque los bordes de la
   pantalla y overflow-y como red de seguridad (antes: overlay fijo
   sin scroll => modal mas alto que la ventana quedaba congelado y
   cortado arriba/abajo). */
.modal-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.4);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    padding: 18px;
    overflow-y: auto;
}
.modal-overlay.active { display: flex; }
/* Tanda E: el modal entra SIEMPRE en la ventana (max-height con
   dvh y fallback vh); columna flex para que el header quede fijo y
   solo el cuerpo scrollee. margin:auto centra y permite scroll si
   algo igualmente desborda. */
.modal {
    background: var(--color-surface);
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border-strong);
    box-shadow: var(--shadow-lg);
    min-width: min(320px, 100%);
    max-width: 480px;
    width: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    margin: auto;
    max-height: calc(100vh - 36px);
    max-height: calc(100dvh - 36px);
}
.modal-header {
    padding: 16px 20px;
    border-bottom: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--color-surface-alt);
}
.modal-title { font-family: var(--font-serif); font-size: 16px; font-weight: 600; color: var(--color-text-primary); display: flex; align-items: center; gap: 8px; }
.modal-close {
    background: transparent; border: none; color: var(--color-text-secondary);
    width: 32px; height: 32px; border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 20px; transition: all var(--transition);
}
.modal-close:hover { background: rgba(0,0,0,0.04); color: var(--color-text-primary); }
.modal-body { padding: 20px; flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.modal-footer {
    padding: 12px 20px;
    border-top: 1px solid var(--color-border);
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    background: var(--color-surface-alt);
}

.export-options { display: flex; flex-direction: column; gap: 8px; }
.export-option {
    display: flex; align-items: center; gap: 12px; padding: 12px 16px;
    background: transparent; border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); cursor: pointer;
    transition: all var(--transition); text-align: left;
    color: var(--color-text-primary); font-family: var(--font-sans); font-size: 13px; width: 100%;
}
.export-option:hover { background: var(--color-surface-alt); border-color: #888; }
.export-icon { width: 24px; height: 24px; flex-shrink: 0; color: var(--color-text-tertiary); }
.export-info { flex: 1; }
.export-title { font-weight: 600; color: var(--color-text-primary); margin-bottom: 2px; }
.export-description { font-size: 11px; color: var(--color-text-tertiary); line-height: 1.4; }
.export-badge {
    background: var(--color-border); color: var(--color-text-secondary);
    padding: 2px 10px; border-radius: 10px; font-size: 10px; font-weight: 600; font-family: var(--font-mono);
}

.app-footer {
    background: var(--color-footer-bg);
    height: 42px;
    display: flex;
    align-items: center;
    padding: 0 20px;
    position: sticky;
    bottom: 0;
    z-index: 100;
    border-top: 1px solid #333;
}

.footer-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    max-width: 1600px;
    margin: 0 auto;
    color: #cccccc;
    font-size: 11px;
}

.footer-left, .footer-right { display: flex; align-items: center; gap: 20px; }
.footer-text { color: #888; }
.footer-tech { font-family: var(--font-mono); color: #666; display: flex; gap: 16px; }
.footer-link { color: #888; text-decoration: none; transition: color var(--transition); }
.footer-link:hover { color: #cccccc; }

/* ---- Scrollbars tipo alambre: sólo indicador, el scrolling
   se hace con la rueda del mouse / gesto táctil ---- */
* { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.30) transparent; }
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.28); border-radius: 2px; }
::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.45); }
::-webkit-scrollbar-corner { background: transparent; }

@media (max-width: 768px) {
    .app-container { grid-template-rows: 48px 36px 1fr 38px; }
    .app-header { height: 48px; padding: 0 12px; }
    .app-subheader { height: 36px; padding: 0 12px; }
    .app-footer { height: 38px; padding: 0 12px; }
    .header-widgets { display: none; }
    .logo-text { font-size: 1rem; }
    .app-sidebar { width: 200px; }
    .sidebar-form { padding: 12px 14px; }
    .form-title { font-size: 13px; }
    .form-input { font-size: 12px; padding: 6px 8px; }
    .view-selector { padding: 8px 12px 0 12px; }
    .view-tab { padding: 6px 12px; font-size: 12px; }
    #view-extended { padding: 12px; }
    .extended-section { padding: 12px 16px; }
    .extended-duo { grid-template-columns: 1fr; }
    .extended-duo .extended-chart-container svg { width: 100%; }
    .aspect-slide svg { max-width: 560px; }
    .extended-header h1 { font-size: 22px; }
    .extended-chart-container { padding: 6px 8px; min-height: 0; }
    .extended-tri-layout { flex-direction: column; }
    .carta-tri-layout { flex-direction: column; }
    .aux-tray { width: 100%; flex: none; flex-direction: row; overflow-x: auto; overflow-y: hidden; max-height: none; order: 2; }
    .aux-card { flex: 0 0 88px; }
    .extended-actions { flex-direction: column; padding: 12px 16px; }
    .extended-actions .btn { width: 100%; }
    .extended-controls { flex-direction: column; gap: 6px; padding: 10px 12px; }
    .extended-control-group { gap: 2px 8px; }
    .extended-check { font-size: 11px; }
    .extended-zoom-controls { bottom: 10px; right: 10px; }
    .extended-zoom-btn { width: 24px; height: 24px; font-size: 12px; }
    .extended-zoom-btn.reset { padding: 0 8px; min-width: 32px; font-size: 10px; }
    .footer-tech { display: none; }
    .chart-controls { bottom: 16px; right: 16px; }
    .tech-panel { width: 100%; flex: none; order: 3; flex-direction: row; flex-wrap: wrap; gap: 8px 14px; overflow-x: auto; overflow-y: hidden; max-height: none; }
    .tp-block { flex: 1 1 46%; min-width: 140px; }
    .tp-sub { display: none; }
    .tp-foot { display: none; }
    .tri-tech-footer { font-size: 9px; }
    .tri-toast { max-width: 220px; font-size: 10px; }
    .aux-tray.tray-target::before { content: 'SOLTAR · bandeja'; }
}

@media (max-width: 480px) {
    .app-sidebar { width: 0; display: none; }
    .subnav-item { padding: 0 8px; font-size: 11px; }
    .subnav-item .icon { display: none; }
    .header-controls .control-btn { width: 28px; height: 28px; }
    .btn-login { padding: 0 10px; height: 28px; font-size: 11px; }
    .extended-header h1 { font-size: 18px; }
    .extended-header p { font-size: 12px; }
    .extended-section h2 { font-size: 16px; }
}

/* ============================================================
   FIX MÓVIL (15/09): el panel de Datos de Nacimiento era
   display:none en ≤480px sin ningún toggle — el SaaS quedaba
   sin ingreso de datos en teléfonos. Ahora es un drawer
   off-canvas con botón propio en el header. Desktop intacto.
   ============================================================ */
@media (min-width: 481px) {
    .sidebar-toggle { display: none; }
    .sidebar-backdrop { display: none; }
}
@media (max-width: 480px) {
    .sidebar-toggle {
        display: inline-flex; align-items: center; justify-content: center;
        width: 34px; height: 34px; margin-right: 8px; flex-shrink: 0;
        background: transparent; border: 1px solid rgba(255,255,255,0.35);
        border-radius: var(--radius-sm); color: #fff; font-size: 17px;
        cursor: pointer; line-height: 1;
    }
    .sidebar-toggle:active { background: rgba(255,255,255,0.15); }
    .app-sidebar {
        display: block; position: fixed; left: 0; top: 0; bottom: 0;
        width: min(86vw, 320px); z-index: 120; overflow-y: auto;
        transform: translateX(-105%); transition: transform 0.22s ease;
        background: var(--color-surface); box-shadow: none;
        -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
    }
    .app-sidebar.sidebar-open { transform: translateX(0); box-shadow: var(--shadow-lg); }
    .sidebar-backdrop {
        position: fixed; inset: 0; background: rgba(0,0,0,0.38);
        z-index: 110; opacity: 0; pointer-events: none; transition: opacity 0.2s ease;
    }
    .sidebar-backdrop.visible { opacity: 1; pointer-events: all; }
}
/* iOS Safari hace zoom automático al enfocar inputs con fuente <16px:
   en dispositivos táctiles se fija 16px (evita el salto de zoom con
   maximum-scale=5.0 que trababa el ingreso de datos) */
@media (pointer: coarse), (hover: none), (max-width: 480px) {
    .form-input, .form-input select, .form-input input,
    select.form-input, input.form-input { font-size: 16px !important; }
}
/* FIX móvil: la cadena flex/grid propagaba el min-content (670-710px)
   y desbordaba el viewport. min-width:0 permite encoger a cada nivel. */
@media (max-width: 768px) {
    .workspace, .main-content, .view-content, .view-panel,
    .carta-standalone, .extended-tri-layout, .carta-tri-layout,
    .chart-canvas-container, .extended-section { min-width: 0; max-width: 100%; }
    .view-panel { overflow-x: hidden; }
    html, body { overflow-x: hidden; }
}
/* FIX móvil header: los botones del header no encogen (min-content 686px)
   y agrandaban la grilla completa. En ≤480px el header pasa a 2 filas:
   ninguna función se oculta, nada se corta. */
@media (max-width: 480px) {
    .app-header { height: auto; min-height: 48px; }
    .app-container { grid-template-rows: auto 36px 1fr 38px; }
    .header-content { flex-wrap: wrap; height: auto; min-height: 48px; padding: 4px 10px; row-gap: 2px; }
    .header-controls { flex-wrap: wrap; justify-content: flex-end; row-gap: 2px; }
    .header-content { min-width: 0; }
}
/* ============================================================
   TANDA L · MODAL DE ACCESO MEJORADO
   Eye-toggles, requisitos de contraseña, contador de alias,
   indicador de match y submit deshabilitado
   ============================================================ */

/* Input de contraseña con ojito */
.password-wrapper { position: relative; }
.password-wrapper .form-input { padding-right: 38px; }
.pwd-toggle {
    position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
    width: 30px; height: 30px; border: none; background: transparent;
    color: var(--color-text-tertiary); cursor: pointer; border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    transition: color var(--transition), background var(--transition);
}
.pwd-toggle:hover { color: var(--color-text-primary); background: rgba(0,0,0,0.05); }
.pwd-toggle.active { color: #7c3aed; }
.pwd-toggle svg { display: block; }

/* Contador en vivo del alias */
.field-counter {
    font-size: 10.5px; color: var(--color-text-tertiary);
    text-align: right; margin-top: 2px; letter-spacing: 0.3px;
    transition: color var(--transition);
}
.field-counter.warn { color: #d97706; }
.field-counter.max  { color: #c0392b; font-weight: 600; }

/* Checklist de requisitos de contraseña */
.pwd-reqs {
    margin-top: 7px; display: flex; flex-direction: column; gap: 4px;
    font-size: 11px; color: var(--color-text-tertiary);
}
.pwd-req {
    display: flex; align-items: center; gap: 7px;
    transition: color var(--transition);
}
.pwd-req .req-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 14px; height: 14px; border-radius: 50%;
    font-size: 9px; line-height: 1; font-weight: 700;
    border: 1px solid var(--color-border-strong);
    color: var(--color-text-muted); background: transparent;
    transition: all var(--transition); flex-shrink: 0;
}
.pwd-req.ok { color: #059669; }
.pwd-req.ok .req-icon {
    background: #059669; border-color: #059669; color: #fff;
}

/* Indicador de coincidencia de contraseñas */
.pwd-match {
    margin-top: 6px; font-size: 11px;
    display: flex; align-items: center; gap: 6px;
    transition: color var(--transition);
}
.pwd-match.ok  { color: #059669; }
.pwd-match.bad { color: #c0392b; }

/* Submit deshabilitado: se ve claro que no se puede tocar */
.btn-primary[disabled],
.btn-primary[disabled]:hover {
    opacity: 0.42; cursor: not-allowed;
    background: #9aa0a6 !important; border-color: #9aa0a6 !important;
    color: #fff !important;
}