/* --- Reseteo y Fuentes --- */
:root { --bg-darkest: #303030; --bg-dark: #404040; --bg-medium: #505050; --bg-light: #606060; --border-color: #707070; --text-primary: #E0E0E0; --text-secondary: #A0A0A0; --accent-color: #A0A0A0; --accent-text: #101010; --danger-color: #B22222; --success-color: #4CAF50; --link-color: #8ab4f8; --probando: #8A7A6B; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: var(--bg-darkest); color: var(--text-primary); margin: 0; padding-bottom: 0px; }

/* --- Estructura Principal --- */
header { background-color: var(--bg-dark); padding: 10px 25px; display: flex; justify-content: space-between; align-items: center; border-top: 2px solid var(--border-color); border-bottom: 2px solid var(--border-color); flex-shrink: 0; z-index: 100; position: relative; }
.header-left { display: flex; align-items: center; }
.header-controls { display: flex; align-items: center; gap: 20px; }
footer { position: fixed; bottom: 0; left: 0; right: 0; z-index: 100; background-color: var(--bg-dark); padding: 15px 25px; display: flex; justify-content: center; align-items: center; border-top: 2px solid var(--border-color); }
h1 { margin: 0; font-size: 1.5em; }

/* =========================================
   ESTILOS NUEVA UI (Welcome, Tarjetas, Modales)
   ========================================= */

/* --- 1. CONTENEDOR PRINCIPAL (Centrado en Pantalla) --- */
#welcome-view {
    display: flex;
    align-items: center;       /* Centrado Vertical */
    justify-content: center;   /* Centrado Horizontal */
    height: calc(100vh - 70px);
    width: 100vw;
    background-color: var(--bg-darkest);
    padding: 0 40px;
    box-sizing: border-box;
    overflow: hidden;          /* Evita scroll en el body */
    top: 0; left: 0; z-index: 999;
}

.welcome-container {
    width: 100%;
    max-width: 1400px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    max-height: 90vh;          /* Límite de altura para pantallas pequeñas */
}

/* --- 2. CABECERA FLEX (Título + Botón Papelera + Botón Templates) --- */
.welcome-header-flex {display: flex; justify-content: center; align-items: center; position: relative; border-bottom: 1px solid var(--border-color); padding-bottom: 15px; margin-bottom: 5px;flex-shrink: 0;}
.welcome-header-flex h2 {margin: 0; font-weight: 300; font-size: 2em; color: var(--text-primary); border: none; padding: 0;}

.trash-header-btn {position: absolute; right: 0; background-color: var(--bg-dark); border: 1px solid var(--border-color); color: var(--text-secondary); padding: 8px 15px; border-radius: 6px; cursor: pointer; transition: all 0.2s; font-size: 0.9em; display: flex;align-items: center;gap: 5px;}
.trash-header-btn:hover {background-color: var(--bg-medium); color: var(--text-primary); border-color: var(--text-primary);}

.templates-header-btn {position: absolute;right: 140px; /* Separarlo del botón de papelera */background-color: var(--bg-dark);border: 1px solid #FFD700; /* Dorado para indicar "Master" */color: #FFD700;padding: 8px 15px;border-radius: 6px;cursor: pointer;font-weight: bold;transition: all 0.2s;}
.templates-header-btn:hover {background-color: rgba(255, 215, 0, 0.1);box-shadow: 0 0 10px rgba(255, 215, 0, 0.2);}

.config-header-btn {position: absolute; right: 330px; background-color: var(--bg-dark); border: 1px solid var(--accent-color); color: var(--accent-color); padding: 8px 15px; border-radius: 6px; cursor: pointer; font-weight: bold; transition: all 0.2s; display: flex; align-items: center; gap: 5px;}
.config-header-btn:hover {background-color: rgba(160, 160, 160, 0.1); box-shadow: 0 0 10px rgba(160, 160, 160, 0.2); color: var(--text-primary); border-color: var(--text-primary);}

/* --- 3. GRID / CARRUSEL HORIZONTAL (Drag & Scroll) --- */
.server-grid {
    display: flex;
    gap: 30px;
    overflow-x: auto;
    padding: 20px 10px;
    cursor: grab;

    /* Alineación superior para evitar que las tarjetas se estiren verticalmente */
    align-items: flex-start;
    width: 100%;

    /* Ocultar Scrollbar pero mantener funcionalidad */
    scrollbar-width: none;       /* Firefox */
    -ms-overflow-style: none;    /* IE/Edge */
    user-select: none;           /* Evitar selección de texto al arrastrar */
}
.server-grid::-webkit-scrollbar { display: none; } /* Chrome/Safari */

/* Estados Interactivos Drag */
.server-grid.active { cursor: grabbing; cursor: -webkit-grabbing; user-select: none; }
.server-grid.is-dragging { pointer-events: none; } /* Bloquea clicks en hijos mientras arrastras */
.server-grid img { pointer-events: none; } /* Evita arrastrar fantasmas de imágenes */

/* --- 4. TARJETA DE SERVIDOR (Diseño Compacto) --- */
.server-card {
    min-width: 280px;
    max-width: 280px;
    width: 280px;
    flex-shrink: 0;         /* No encoger */

    background-color: var(--bg-dark);
    border-radius: 12px;
    padding: 15px;

    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.3);
    border: 2px solid transparent;
    transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;

    display: flex;
    flex-direction: column;
    gap: 10px;

    height: max-content;    /* ALTURA AJUSTADA AL CONTENIDO (Compacta) */
}

.server-card:hover { transform: translateY(-5px); box-shadow: 0 8px 15px rgba(0,0,0,0.4); border-color: var(--border-color); }
.server-card.active-world { border-color: var(--success-color); }
.server-card.inactive-world { border-color: var(--bg-medium); opacity: 0.8; }

/* Elementos Internos Tarjeta */
.card-header { display: flex; align-items: center; gap: 15px; margin-bottom: 5px; }
.card-flag { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; border: 2px solid var(--bg-medium); background-color: var(--bg-medium); flex-shrink: 0;}
.card-title h3 { margin: 0; font-size: 1.2em; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.card-title span { font-size: 0.9em; color: var(--text-secondary); }

.card-body { flex-grow: 1; display: flex; flex-direction: column; gap: 8px; }
.card-info-row { display: flex; justify-content: space-between; align-items: center; font-size: 0.95em; }

.card-modes { display: flex; gap: 15px; justify-content: center; margin-top: 5px; background-color: rgba(0,0,0,0.2); padding: 8px; border-radius: 8px;}
.mode-icon { display: flex; flex-direction: column; align-items: center; gap: 3px; opacity: 0.3; filter: grayscale(100%); transition: all 0.3s; }
.mode-icon img { width: 28px; height: 28px; object-fit: contain; }
.mode-icon span { font-size: 0.7em; color: var(--text-secondary); }
.mode-icon.active { opacity: 1; filter: grayscale(0%); transform: scale(1.1); }
.mode-icon.active span { color: var(--text-primary); font-weight: bold; }

.card-footer { margin-top: 5px; padding-top: 10px; border-top: 1px solid var(--bg-medium); display: flex; justify-content: space-between; align-items: center; }
.card-actions { display: flex; gap: 5px; }
.icon-btn { background: none; border: none; font-size: 1.1em; cursor: pointer; color: var(--text-secondary); padding: 4px; border-radius: 4px; transition: color 0.2s; }
.icon-btn:hover { color: var(--text-primary); background-color: var(--bg-medium); }
.icon-btn.delete:hover { color: var(--danger-color); }

/* Toggle Switch */
.status-toggle { display: flex; align-items: center; gap: 8px; font-size: 0.85em; color: var(--text-secondary); cursor: pointer;}
.toggle-switch { position: relative; width: 32px; height: 18px; background-color: var(--bg-light); border-radius: 20px; transition: 0.3s; }
.toggle-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; background-color: white; border-radius: 50%; transition: 0.3s; }
.server-card.active-world .toggle-switch { background-color: var(--success-color); }
.server-card.active-world .toggle-switch::after { transform: translateX(14px); }

/* Tarjeta "Añadir Nuevo" */
.add-new-card {
    border: 2px dashed var(--border-color);
    justify-content: center;
    align-items: center;
    cursor: pointer;
    min-height: 220px; /* Altura mínima fija para que no quede enana */
    background-color: rgba(255,255,255,0.02);
    box-shadow: none;
}
.add-new-card:hover { border-color: var(--accent-color); background-color: rgba(255,255,255,0.05); transform: translateY(-5px); }
.add-icon { font-size: 3em; color: var(--text-secondary); margin-bottom: 10px; }
.add-new-card span { font-size: 1.1em; color: var(--text-secondary); font-weight: bold; }

/* --- 5. SELECTOR DE SERVIDOR EN HEADER (Top Right) --- */
.custom-select-wrapper { position: relative; user-select: none; width: 220px; display: block; }
.custom-select-wrapper.hidden { display: none; }
.custom-select-trigger { position: relative; display: flex; align-items: center; gap: 10px; padding: 8px 12px; background: var(--bg-light); border-radius: 4px; cursor: pointer; border: 1px solid var(--border-color); transition: background 0.2s; }
.custom-select-trigger:hover { background: var(--bg-medium); }
.server-flag-small { width: 20px; height: 20px; border-radius: 50%; background-size: cover; background-position: center; border: 1px solid var(--border-color); display: inline-block; flex-shrink: 0; }
#header-server-name { font-size: 0.95em; font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }
.arrow { margin-left: auto; font-size: 0.8em; color: var(--text-secondary); }

.custom-options { position: absolute; top: 100%; left: 0; right: 0; background: var(--bg-dark); border: 1px solid var(--border-color); border-top: none; border-radius: 0 0 4px 4px; z-index: 200; opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-10px); transition: all 0.2s; box-shadow: 0 5px 15px rgba(0,0,0,0.5); }
.custom-select-wrapper.open .custom-options { opacity: 1; visibility: visible; pointer-events: all; transform: translateY(0); }
.custom-option { display: flex; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; transition: background 0.2s; border-bottom: 1px solid var(--bg-medium); }
.custom-option:last-child { border-bottom: none; }
.custom-option:hover { background: var(--bg-medium); }
.custom-option.selected { background: var(--bg-light); }

/* --- 6. ESTILOS MODAL PAPELERA --- */
.trash-modal-content { width: 500px; max-width: 95vw; }
.trash-modal-content .trash-info { font-size: 0.85em; color: var(--text-secondary); margin-top: 0; margin-bottom: 15px; text-align: center; font-style: italic; }
.trash-list { max-height: 400px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; padding-right: 5px; }

.trash-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--bg-dark);
    padding: 12px 15px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
}
.trash-item-info { display: flex; align-items: center; gap: 12px; }
.trash-item-details { display: flex; flex-direction: column; }
.trash-item-id { font-weight: bold; color: var(--text-primary); }
.trash-item-date { font-size: 0.8em; color: var(--danger-color); }

.trash-restore-btn {
    background-color: transparent;
    border: 1px solid var(--success-color);
    color: var(--success-color);
    padding: 5px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.85em;
    transition: all 0.2s;
}
.trash-restore-btn:hover { background-color: var(--success-color); color: white; }

/* --- 7. MODAL CONFIGURACIÓN SERVIDOR --- */
.server-modal-content { width: 450px; max-width: 90vw; }
.mode-selector-container { display: flex; gap: 20px; justify-content: center; background-color: var(--bg-dark); padding: 15px; border-radius: 8px; border: 1px solid var(--border-color); }
.mode-option { display: flex; flex-direction: column; align-items: center; gap: 8px; cursor: pointer; padding: 10px; border-radius: 6px; border: 2px solid transparent; transition: all 0.2s; }
.mode-option img { width: 48px; height: 48px; object-fit: contain; filter: grayscale(100%); opacity: 0.5; }
.mode-option:hover { background-color: var(--bg-medium); }
.mode-option.selected { border-color: var(--link-color); background-color: rgba(138, 180, 248, 0.1); }
.mode-option.selected img { filter: grayscale(0%); opacity: 1; transform: scale(1.1); }


/* --- Lógica de visibilidad (Actualizada) --- */
#main-view, footer, #custom-server-selector { display: none; }
body.server-loaded #welcome-view { display: none; }
body.server-loaded #main-view { display: block; }
body.server-loaded footer { display: flex; }
body.server-loaded #custom-server-selector { display: block; }
body.server-loaded { padding-bottom: 80px; }
body.plan-editor-active { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
#custom-server-selector { display: none; } /* Por defecto oculto */
body.server-loaded #custom-server-selector { display: block; } /* Cuando estamos dentro de un servidor, SE MUESTRA */

/* --- Pestañas --- */
.tab-nav { display: flex; background-color: var(--bg-dark); padding: 0 25px; border-bottom: 2px solid var(--border-color); }
.tab-button { padding: 15px 20px; background-color: transparent; border: none; border-bottom: 3px solid transparent; color: var(--text-secondary); font-size: 1em; cursor: pointer; transition: all 0.2s ease-in-out; }
.tab-button:hover { color: var(--text-primary); }
.tab-button.active { color: var(--text-primary); border-bottom-color: var(--accent-color); font-weight: bold; }
.tab-content { padding: 25px; }

/* --- Layout Grid para Configuración Global --- */
#tab-content-global-config {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    grid-template-rows: repeat(2, auto);
    gap: 25px;
    align-items: start;
}
#general-config-container { grid-column: 1 / 2; grid-row: 1 / 2; }
#farmtown-config-container { grid-column: 1 / 2; grid-row: 2 / 3; }
#scheduler-config-container { grid-column: 2 / 3; grid-row: 1 / span 2; align-self: stretch; }
#timings-config-container { grid-column: 3 / 4; grid-row: 1 / 2; }
#delays-config-container { grid-column: 4 / 5; grid-row: 1 / 2; }
#danger-zone-container { grid-column: 5 / 6; grid-row: 1 / 2; }

#farmtown-config-container .config-item { grid-template-columns: 1fr 180px; }
#farmtown-config-container input, #farmtown-config-container select { width: 100%; box-sizing: border-box; }

/* --- Estilos para Sub-Pestañas de Análisis --- */
.sub-tab-nav { display: flex; background-color: var(--bg-dark); padding: 0 0px; margin-bottom: 25px; border-bottom: 2px solid var(--border-color); }
.sub-tab-button { padding: 15px 20px; background-color: transparent; border: none; border-bottom: 3px solid transparent; color: var(--text-secondary); font-size: 1em; cursor: pointer; transition: all 0.2s ease-in-out; }
.sub-tab-button:hover { color: var(--text-primary); }
.sub-tab-button.active { color: var(--text-primary); border-bottom-color: var(--accent-color); font-weight: bold; }
.sub-tab-content { padding: 0; }

#analysis-diagnostics-content { display: grid; grid-template-columns: 1fr 1.5fr 1.5fr; gap: 25px; height: calc(100vh - 340px); }
#analysis-overview-content { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 25px; height: calc(100vh - 340px); }
.analysis-col-span { display: flex; flex-direction: column; min-height: 0; }
.analysis-column-stack { display: flex; flex-direction: column; gap: 25px; min-height: 0; }
.sidebar-section { background-color: var(--bg-dark); padding: 20px; border-radius: 8px; display: flex; flex-direction: column; min-height: 0; flex: 1; }

.log-history-container { max-height: 300px; overflow-y: auto; padding-right: 10px; }
.log-entry { display: flex; align-items: center; gap: 15px; padding: 12px 0; }
.log-entry:not(:last-child) { border-bottom: 1px solid var(--border-color); }
.log-icon { font-size: 2em; flex-shrink: 0; }
.log-details { flex-grow: 1; }
.log-label { font-size: 0.8em; color: var(--text-secondary); margin-bottom: 4px; }
.log-value { font-size: 1.2em; font-weight: bold; color: var(--text-primary); }
.log-timestamp { font-size: 1em; font-weight: bold; color: var(--text-primary); }

.sidebar-section h3, .sidebar-section h4, .sidebar-section h5 { margin-top: 0; padding-bottom: 8px; border-bottom: 1px solid var(--border-color); font-size: 1.1em; margin-bottom: 15px; flex-shrink: 0; }
.sidebar-section h5 { font-size: 1.0em; color: var(--text-secondary); }
.scrollable-analysis-content { overflow-y: auto; padding-right: 10px; flex-grow: 1; }

.danger-zone { background-color: #4d3a3a; border: 2px solid var(--danger-color); }
.danger-zone button { width: 100%; margin-bottom: 10px; }
.danger-zone button:last-child { margin-bottom: 0; }
.config-item { display: grid; grid-template-columns: 1fr auto; gap: 15px; align-items: center; margin-bottom: 12px; }
.config-item label { font-size: 0.9em; }
.scheduler-item { display: grid; grid-template-columns: 1fr 60px; gap: 10px; align-items: center; padding: 2px 0; }
.scheduler-item:not(:last-child) { margin-bottom: 5px; }
.scheduler-item label { font-size: 0.85em; color: var(--text-secondary); }

/* --- Tabla Principal --- */
#tab-content-groups h2 { display: flex; justify-content: space-between; align-items: center; margin-top: 0; margin-bottom: 15px; }
#city-groups-container { background-color: transparent; }
.city-groups-table { width: 100%; border-collapse: collapse; }
.city-groups-table th, .city-groups-table td { padding: 12px 15px; text-align: left; border-bottom: 1px solid var(--bg-medium); vertical-align: middle; }
.city-groups-table th { background-color: var(--bg-medium); font-size: 0.8em; text-transform: uppercase; letter-spacing: 0.5px; }
.city-groups-table tr:last-child td { border-bottom: none; }
.group-link { color: var(--link-color); text-decoration: none; font-weight: bold; cursor: pointer; }
.group-link:hover { text-decoration: underline; }
.module-toggle-container { display: grid; grid-template-columns: 1fr; gap: 8px; }
.module-toggle-item { display: flex; align-items: center; gap: 8px; }
.module-toggle-item label { font-size: 0.9em; }

/* --- Editor de Planes --- */
.editor-header { display: flex; justify-content: space-between; align-items: center; padding: 15px 25px; background-color: var(--bg-dark); border-bottom: 2px solid var(--border-color); flex-shrink: 0; }
#plan-editor-container { padding: 25px; display: grid; grid-template-columns: 1fr 1fr auto; grid-template-rows: auto auto auto; gap: 25px; align-items: start; flex-grow: 1; overflow-y: auto; min-height: 0; }
.completed-cities-container { grid-column: 1 / 3; }
.completed-cities-container ul { list-style-type: disc; margin: 0 0 0 20px; padding: 0; max-height: 150px; overflow-y: auto; }
.completion-counter { font-weight: bold; color: var(--text-secondary); margin-left: 10px; font-size: 1em; }
.editor-column { display: flex; flex-direction: column; gap: 25px; min-width: 0; }
.composite-row { display: grid; grid-template-columns: auto 1fr; gap: 25px; align-items: start; }
#plan-editor-container h4 { margin-top: 0; margin-bottom: 10px; }
.research-grid-wrapper { background-color: var(--bg-medium); padding: 15px; border-radius: 8px; }
.research-grid-legend { display: flex; gap: 20px; margin-bottom: 15px; font-size: 0.9em; justify-content: center; }
.research-grid-legend span { display: flex; align-items: center; gap: 8px; }
.legend-icon { width: 20px; height: 20px; box-sizing: border-box; }
.research-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 8px; }
.research-item { position: relative; cursor: pointer; border: 3px solid transparent; border-radius: 4px; transition: all 0.2s ease-in-out; aspect-ratio: 1 / 1; overflow: hidden; }
.research-empty-slot { background-color: rgba(0, 0, 0, 0.2); border-radius: 4px; }
.research-item img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 2px; max-width: 100%; }
.research-item.state-investigate { border-color: var(--success-color); }
.research-item.state-no-investigate { border-color: var(--danger-color); }
.research-item.state-no-investigate img { opacity: 1; filter: grayscale(100%); }
.research-item.state-ignore img { opacity: 0.4; filter: grayscale(100%); }

#building-palette-wrapper { background-color: var(--bg-medium); padding: 15px; border-radius: 8px; display: flex; flex-direction: column; gap: 15px; }
.senate-container { display: flex; justify-content: center; }
.senate-container .building-item { width: 50%; }
.normal-buildings-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.building-item, .special-building-item { position: relative; background-color: var(--bg-light); border-radius: 4px; padding: 5px; height: 65px; display: flex; align-items: center; overflow: hidden; flex-direction: row; justify-content: flex-start; }
.building-item img, .special-building-item img { height: 50px; width: 50px; object-fit: contain; flex-shrink: 0; }
.building-name { flex-grow: 1; text-align: center; font-size: 0.9em; font-weight: bold; padding: 0 5px; }
.special-buildings-container { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 5px; }
.special-buildings-group { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
.special-building-item { width: 160px; }
.special-building-item.align-right { justify-self: end; }
.special-building-item.align-left { justify-self: start; }
.building-actions { position: absolute; top: 0; bottom: 0; left: 60px; right: 5px; display: flex; align-items: center; justify-content: center; gap: 20px; opacity: 0; transition: opacity 0.2s ease-in-out; background-color: rgba(0,0,0,0.6); border-radius: 0 4px 4px 0; }
.building-item:hover .building-actions, .special-building-item:hover .building-actions { opacity: 1; }
.building-actions button { font-size: 1.4em; padding: 0; line-height: 1; height: 28px; width: 28px; border-radius: 50%; }

.plan-sequence-list { list-style-type: none; padding: 10px; margin: 0; background-color: var(--bg-medium); border-radius: 8px; max-height: 530px; overflow-y: auto; }
.plan-item { display: flex; align-items: center; background-color: var(--bg-light); padding: 5px; margin-bottom: 8px; border-radius: 4px; cursor: grab; border-left: 5px solid transparent; }
.plan-item:last-child { margin-bottom: 0; }
.plan-item.action-build { border-left-color: var(--success-color); }
.plan-item.action-demolish { border-left-color: var(--danger-color); }
.plan-item img { width: 30px; height: 30px; margin-right: 8px; }
.plan-item-name { flex-grow: 1; font-weight: bold; font-size: 0.9em; }
.plan-item-level { width: 40px; text-align: center; margin: 0 8px; padding: 4px; }
.sortable-ghost { opacity: 0.4; background: #666; }

.module-settings-container { background-color: var(--bg-dark); border-radius: 8px; padding: 15px; display: flex; flex-direction: column; gap: 12px; align-self: start; }
.module-settings-container h5 { margin: 0 0 5px 0; padding-bottom: 8px; border-bottom: 1px solid var(--border-color); font-size: 1em; }
.setting-item { display: grid; grid-template-columns: 30px 1fr 110px; gap: 10px; align-items: center; }
.setting-item img { width: 28px; height: 28px; object-fit: contain; justify-self: center; }
.setting-item label { font-size: 0.9em; color: var(--text-secondary); }
.setting-item input { width: 100%; box-sizing: border-box; }
.research-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
#research-points-counter { font-weight: bold; font-size: 1.1em; }
#plan-editor-view { display: flex; flex-direction: column; flex-grow: 1; min-height: 0; }
#editor-title { display: flex; align-items: center; gap: 15px; }
#editor-group-name { color: var(--link-color); font-weight: bold; font-size: 1.1em; }
.nav-button { background-color: var(--bg-light); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 50%; width: 32px; height: 32px; font-size: 1em; font-weight: bold; padding: 0; line-height: 30px; cursor: pointer; transition: background-color 0.2s; }
.nav-button:hover { background-color: var(--border-color); }

/* --- Displays de Progreso --- */
.progress-list-header { display: grid; grid-template-columns: 160px 1fr auto; gap: 15px; padding: 0 5px 8px 5px; border-bottom: 1px solid var(--border-color); margin-bottom: 5px; }
.sort-header { font-size: 0.8em; font-weight: bold; color: var(--text-secondary); cursor: pointer; user-select: none; transition: color 0.2s; }
.sort-header:hover { color: var(--text-primary); }
.sort-header.sort-asc::after { content: ' ▲'; }
.sort-header.sort-desc::after { content: ' ▼'; }
.progress-display .progress-list { list-style-type: none; padding: 0; margin: 0; max-height: 200px; overflow-y: auto; }
.progress-display li { display: grid; grid-template-columns: 160px 1fr auto; align-items: center; gap: 10px; padding: 8px 5px; border-bottom: 1px solid var(--bg-medium); }
.progress-display li:last-child { border-bottom: none; }
.progress-display .no-data { color: var(--text-secondary); font-style: italic; display: block; }
.progress-city-name { font-weight: bold; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.progress-bar-container { display: flex; align-items: center; gap: 10px; min-width: 0; }
.progress-bar-container progress { width: 100%; height: 12px; -webkit-appearance: none; appearance: none; flex-grow: 1; }
.progress-bar-container span { width: 55px; text-align: right; flex-shrink: 0; font-size: 0.9em; }
.progress-bar-container progress::-webkit-progress-bar { background-color: var(--bg-medium); border-radius: 5px; }
.progress-bar-container progress::-webkit-progress-value { background-color: var(--success-color); border-radius: 5px; transition: width 0.3s ease; }
.progress-status-text { font-size: 0.9em; color: var(--text-secondary); }
.progress-status-icon { font-size: 1.2em; justify-self: end; }

/* --- Estilos para la Papelera y Auditoría --- */
.trash-card { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding-bottom: 15px; margin-bottom: 15px; border-bottom: 1px solid var(--border-color); }
.trash-card:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.trash-info { flex-grow: 1; }
.trash-details { margin: 8px 0 0 0; padding: 0; list-style-type: none; font-size: 0.9em; color: var(--text-secondary); }
.trash-details strong { color: var(--text-primary); }
.trash-actions { display: flex; gap: 10px; margin-top: 0; flex-shrink: 0; }
.days-safe { color: var(--success-color); font-weight: bold; }
.days-warning { color: #FFD700; font-weight: bold; }
.days-urgent { color: var(--danger-color); font-weight: bold; }

/* --- Controles de Formulario (Generales) --- */
input, select, textarea { padding: 8px; border-radius: 4px; border: 1px solid var(--border-color); background-color: var(--bg-light); color: var(--text-primary); font-family: inherit; font-size: 1em; }
input[type="checkbox"] { width: auto; transform: scale(1.3); cursor: pointer; }
button { cursor: pointer; border: none; border-radius: 5px; font-weight: bold; }
.primary-button { background-color: var(--accent-color); color: var(--accent-text); padding: 12px 20px; font-size: 1em; }
.primary-button:hover { background-color: #B0B0B0; }
.secondary-button { background-color: var(--bg-light); color: var(--text-primary); padding: 10px 15px; }
.secondary-button:hover { background-color: var(--border-color); }
.action-button { font-size: 1.2em; padding: 2px 10px; }
.delete-button { background-color: var(--danger-color); color: white; padding: 4px 8px; }
.danger-button { background-color: var(--danger-color); color: white; padding: 10px 15px; }
.danger-button:hover { background-color: #c82333; }
.hidden { display: none !important; }

/* --- Estilos de la Vista de Ayuda --- */
.help-icon { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background-color: var(--bg-light); color: var(--text-primary); text-decoration: none; font-weight: bold; font-size: 1.1em; border: 1px solid var(--border-color); transition: background-color 0.2s; }
.help-icon:hover { background-color: var(--border-color); }
#help-view { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); z-index: 200; display: flex; justify-content: center; align-items: center; backdrop-filter: blur(5px); }
.help-panel { width: 90%; max-width: 1200px; height: 85vh; background-color: var(--bg-darkest); border: 2px solid var(--border-color); border-radius: 10px; display: flex; flex-direction: column; overflow: hidden; }
.help-header { padding: 15px 25px; border-bottom: 2px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; }
.help-header h2 { margin: 0; }
.close-button { background: none; border: none; color: var(--text-secondary); font-size: 2em; line-height: 1; padding: 0 5px; }
.close-button:hover { color: var(--text-primary); }
.help-body { display: flex; flex-grow: 1; min-height: 0; }
.help-nav { width: 250px; border-right: 2px solid var(--border-color); padding: 20px; flex-shrink: 0; overflow-y: auto; }
.help-nav a { display: block; color: var(--text-secondary); text-decoration: none; padding: 12px 15px; border-radius: 5px; margin-bottom: 5px; transition: background-color 0.2s, color 0.2s; }
.help-nav a:hover { background-color: var(--bg-dark); color: var(--text-primary); }
.help-nav a.active { background-color: var(--bg-medium); color: var(--text-primary); font-weight: bold; }
.help-content { padding: 25px; overflow-y: auto; flex-grow: 1; }
.help-section { margin-bottom: 20px; border: 1px solid var(--border-color); border-radius: 8px; overflow: hidden; }
.help-section-header { background-color: var(--bg-dark); padding: 15px 20px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; user-select: none; }
.help-section-header h4 { margin: 0; font-size: 1.2em; }
.help-section-toggle { font-size: 1.2em; transition: transform 0.3s; }
.help-section-content { padding: 20px; background-color: var(--bg-medium); line-height: 1.6; max-height: 0; overflow: hidden; transition: max-height 0.4s ease-out, padding 0.4s ease-out; }
.help-section.open .help-section-content { max-height: 20000px; padding: 20px; }
.help-section.open .help-section-toggle { transform: rotate(90deg); }
.help-content h5 { font-size: 1.1em; color: var(--accent-color); margin-top: 1em; margin-bottom: 1em; border-bottom: 1px solid var(--border-color); padding-bottom: 5px; }
.help-content ul { margin-left: 20px; }
.help-content code { background-color: var(--probando); padding: 2px 4px; border-radius: 3px; font-family: 'Courier New', Courier, monospace; }
.help-content pre { background-color: var(--bg-darkest); padding: 15px; border-radius: 5px; white-space: pre-wrap; word-break: break-all; }
.help-content strong { color: var(--text-primary); }
.help-content .user-view, .help-content .dev-view { display: none; }
.help-content.show-user .user-view { display: block; }
.help-content.show-dev .dev-view { display: block; }
/* --- Estilos para el interruptor (Toggle Switch) --- */
.help-view-toggle { display: flex; align-items: center; gap: 10px; font-size: 0.9em; }
.switch { position: relative; display: inline-block; width: 50px; height: 24px; }
.switch input { opacity: 0; width: 0; height: 0; }
.slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--success-color); transition: .4s; border-radius: 24px; }
.slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; }
input:checked + .slider { background-color: var(--link-color); }
input:checked + .slider:before { transform: translateX(26px); }
/* --- Espacio entre párrafos y listas --- */
p + p { margin-top: 1em; }
.help-content li { line-height: 1.5; margin-bottom: 1em; }
.help-content li:last-child { margin-bottom: 0; }
.help-content li > ul { margin-top: 0.3em; margin-bottom: 0.3em; }
.help-content ul ul { margin-top: 0.5em; margin-bottom: 0.5em; }

/* --- Estilos para Versionado de Planes --- */
.version-card-list { overflow-y: auto; flex-grow: 1; padding-right: 10px; display: flex; flex-direction: column; gap: 15px; }
.version-card { background-color: var(--bg-medium); border-radius: 6px; padding: 15px; border: 1px solid var(--border-color); }
.version-card h5 { margin: 0 0 12px 0; font-size: 1.1em; color: var(--link-color); border-bottom: 1px solid var(--border-color); padding-bottom: 8px; }
.version-card-item { display: flex; align-items: center; gap: 10px; font-size: 0.95em; }
.version-card-item:not(:last-child) { margin-bottom: 8px; }
.version-card-item span { color: var(--text-secondary); }
.version-card-item strong { color: var(--text-primary); }

/* --- Estilos para Visor del Planificador --- */
.scheduler-kpi { background-color: var(--bg-medium); border-radius: 6px; padding: 15px; text-align: center; margin-bottom: 15px; }
.scheduler-kpi-label { font-size: 1em; color: var(--text-secondary); margin: 0; }
.scheduler-kpi-value { font-size: 2.2em; font-weight: bold; color: var(--link-color); margin: 5px 0 0 0; }
.scheduler-table-container { flex-grow: 1; overflow-y: auto; padding-right: 5px; }
.scheduler-table { width: 100%; border-collapse: collapse; font-size: 0.9em; }
.scheduler-table th, .scheduler-table td { padding: 8px; text-align: left; border-bottom: 1px solid var(--bg-medium); }
.scheduler-table th { font-size: 0.9em; padding-bottom: 10px; }
.scheduler-table .sort-header { white-space: nowrap; }
.scheduler-table tr.task-ready td { color: var(--success-color); font-weight: bold; }
.scheduler-table tr.task-warning td { color: #FFD700; }
.scheduler-table tr.task-overdue td { color: var(--danger-color); font-weight: bold; }

/* --- Estilos para Historial de Ejecución --- */
.exec-log-card-list { overflow-y: auto; flex-grow: 1; padding-right: 10px; }
.exec-log-card { background-color: var(--bg-medium); border-radius: 6px; border: 1px solid var(--border-color); overflow: hidden; margin-bottom: 15px; }
.exec-log-card:last-child { margin-bottom: 0; }
.exec-log-card h5 { margin: 0; font-size: 1.1em; color: var(--link-color); padding: 15px; }
.exec-log-accordion-header { display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; background-color: rgba(0,0,0,0.2); cursor: pointer; transition: background-color 0.2s; border-top: 1px solid var(--border-color); }
.exec-log-accordion-header:hover { background-color: rgba(0,0,0,0.4); }
.exec-log-accordion-header span { display: flex; align-items: center; gap: 10px; font-size: 0.95em; color: var(--text-secondary); flex-shrink: 0; min-width: 180px; }
.exec-log-accordion-header strong { color: var(--text-primary); font-size: 1em; text-align: right; flex-grow: 1; margin-right: 10px; }
.exec-log-accordion-header::after { content: '►'; font-size: 0.8em; transition: transform 0.3s; flex-shrink: 0; }
.exec-log-accordion-header.open::after { transform: rotate(90deg); }
.exec-log-accordion-content { background-color: rgba(0,0,0,0.2); max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out; padding: 0 15px; }
.exec-log-accordion-content.open { max-height: 500px; padding: 15px; }
.exec-log-accordion-content ul { list-style-type: none; margin: 0; padding: 0; }
.exec-log-accordion-content li { font-size: 0.9em; color: var(--text-secondary); margin-bottom: 5px; text-align: right; padding-right: 30px; }

/* --- Barra de Estado de Ciudades --- */
.farmtown-status-bar-container {margin-bottom: 5px;}
.status-bar-labels {display: flex;justify-content: space-between;margin-bottom: 5px;font-size: 0.9em;color: var(--text-secondary);}
.status-bar-labels strong {color: var(--text-primary);}
.status-bar-track {display: flex;height: 12px;background-color: var(--bg-medium);border-radius: 6px;overflow: hidden;margin-bottom: 8px;}
.status-segment {height: 100%;transition: width 0.3s ease;cursor: help;}
.segment-primary { background-color: var(--success-color); }
.segment-secondary { background-color: #3498db; }
.segment-islet { background-color: #f39c12; }
.segment-ghost { background-color: #9b59b6; }
.segment-unknown { background-color: var(--bg-light); }
.status-bar-legend {display: flex;flex-wrap: wrap;gap: 12px;font-size: 0.8em;justify-content: center;}
.legend-item {display: flex;align-items: center;gap: 5px;color: var(--text-secondary);}
.legend-item i.dot {display: inline-block;width: 8px;height: 8px;border-radius: 50%;}
.farmtown-analysis-container .scrollable-analysis-content { display: flex; flex-direction: column; gap: 15px; }
.farmtown-kpis .config-item { grid-template-columns: 1fr auto; margin-bottom: 8px; }
.farmtown-kpis .config-item label { color: var(--text-primary); font-size: 1em; }
.farmtown-kpis .config-item span { font-weight: bold; font-size: 1.1em; color: var(--link-color); }
.farmtown-level-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; font-size: 0.9em; padding: 0 10px; }
.farmtown-level-grid span b { color: var(--text-secondary); }
.farmtown-yield-section { font-size: 0.9em; }
.farmtown-yield-section strong { color: var(--accent-color); }
.farmtown-yield-section ul { list-style-type: none; padding: 0; margin: 8px 0 0 0; display: grid; grid-template-columns: 1fr 1fr; gap: 5px 15px; padding-left: 10px; }
.farmtown-yield-section li b { color: var(--text-secondary); display: inline-block; width: 50px; }

/* --- Auditoría de Aldeas --- */
@keyframes pulse-warning {
    0% { background-color: rgba(178, 34, 34, 0.4); border-color: var(--danger-color); }
    50% { background-color: rgba(178, 34, 34, 0.8); border-color: #ff4d4d; }
    100% { background-color: rgba(178, 34, 34, 0.4); border-color: var(--danger-color); }
}
#farmtown-audit-status-container { padding: 10px; margin-bottom: 15px; border: 1px solid var(--border-color); border-radius: 4px; text-align: center; }
#farmtown-audit-status-container p { margin: 0 0 5px 0; }
#farmtown-audit-status-container span { font-size: 0.9em; color: var(--text-secondary); }
.audit-error-message { border-color: var(--danger-color); background-color: rgba(178, 34, 34, 0.4); animation: pulse-warning 2.5s infinite; }
.audit-error-message p { color: #ffc2c2; }
.audit-error-message span { color: #ffc2c2; }
.audit-success-message { border-color: var(--success-color); background-color: rgba(76, 175, 80, 0.2); }
.audit-success-message p { color: var(--success-color); }
.audit-success-message span { color: var(--text-secondary); }
.danger-zone-divider { border: none; height: 1px; background-color: var(--border-color); margin: 0 0 15px 0; }

/* --- Config Aldeas --- */
.config-divider { border: none; height: 1px; background-color: var(--border-color); margin: 10px 0; }
#farmtown-config-container .farmtown-status-next { font-size: 0.9em; font-style: italic; color: var(--link-color); text-align: center; margin: -5px 0 10px 0; }
#farmtown-config-container .farmtown-status-done { font-size: 0.9em; font-style: italic; color: var(--success-color); text-align: center; margin: -5px 0 10px 0; }
#farmtown-config-container .farmtown-status-idle { font-size: 0.9em; font-style: italic; color: var(--text-secondary); text-align: center; margin: -5px 0 10px 0; }
#force-next-run-farmtown { width: 100%; margin-top: 5px; background-color: var(--bg-light); color: var(--text-primary); }
#force-next-run-farmtown:hover { background-color: var(--border-color); }

/* --- Botones Error --- */
.warning-button { padding: 10px 15px; width: 100%; margin-bottom: 10px; background-color: transparent; border: 2px solid #FFD700; color: #FFD700; }
.warning-button:hover { background-color: rgba(255, 215, 0, 0.1); color: #FFF; }
.secondary-button.disabled { background-color: var(--bg-medium); color: var(--text-secondary); cursor: not-allowed; opacity: 0.6; border: 1px solid var(--border-color); }
.secondary-button.disabled:hover { background-color: var(--bg-medium); color: var(--text-secondary); }

/* --- Navegación --- */
.menu-toggle-btn { display: none; background-color: var(--bg-light); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 5px; width: 32px; height: 32px; font-size: 1.4em; font-weight: bold; padding: 0; line-height: 30px; cursor: pointer; transition: background-color 0.2s; margin-right: 15px; }
.menu-toggle-btn:hover { background-color: var(--border-color); }
body.server-loaded .menu-toggle-btn, body.plan-editor-active .menu-toggle-btn { display: block; }
#side-nav { position: fixed; top: 0; left: 0; width: 250px; height: 100vh; background-color: var(--bg-darkest); border-right: 2px solid var(--border-color); z-index: 300; transform: translateX(-100%); transition: transform 0.3s ease-out; padding-top: 80px; box-sizing: border-box; }
#side-nav.open { transform: translateX(0); }
#side-nav .nav-link { display: block; color: var(--text-secondary); text-decoration: none; padding: 15px 25px; font-size: 1.1em; border-bottom: 1px solid var(--bg-dark); transition: background-color 0.2s, color 0.2s; }
#side-nav .nav-link:hover { background-color: var(--bg-dark); color: var(--text-primary); }
#side-nav .nav-link.active { background-color: var(--bg-medium); color: var(--text-primary); font-weight: bold; }
#nav-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); z-index: 299; backdrop-filter: blur(2px); }
#nav-overlay.open { display: block; }
#calculator-view { padding-top: 0; }

/* --- Calculadora --- */
.calc-notification { background-color: rgba(255, 215, 0, 0.1); border: 1px solid #FFD700; color: #FFD700; padding: 15px; border-radius: 6px; margin: 0 25px 20px 25px; text-align: center; font-weight: bold; transition: opacity 0.3s ease-out; }
.calc-notification.hidden { display: none; }
#calc-tab-content-farmtown .calculator-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; grid-template-rows: auto auto auto; gap: 25px; }
#calc-tab-content-farmtown .calc-results-container { grid-column: 1 / span 4; display: grid; grid-template-columns: 1fr 1.5fr; gap: 25px; align-items: stretch; }
.calc-results-column { display: flex; flex-direction: column; gap: 15px; min-height: 0; height: 100%; }
#calc-results-output { flex-grow: 1; overflow-y: auto; background-color: var(--bg-darkest); padding: 15px; border-radius: 6px; min-height: 100px; height: 100%; box-sizing: border-box; }
#calc-chart-container { background-color: var(--bg-darkest); padding: 15px; border-radius: 6px; position: relative; }
#calc-sequence-container { background-color: var(--bg-darkest); padding: 15px; border-radius: 6px; display: flex; flex-direction: column; min-height: 0; }
#calc-sequence-container h4 { margin: 0 0 10px 0; padding-bottom: 5px; border-bottom: 1px solid var(--border-color); flex-shrink: 0; }
#calc-sequence-output { background-color: var(--bg-dark); padding: 10px; border-radius: 4px; font-family: 'Courier New', Courier, monospace; font-size: 0.9em; height: 100px; overflow-y: auto; word-break: break-all; flex-grow: 1; }
#calc-run-simulation { grid-column: 1 / span 4; width: 100%; padding: 15px; font-size: 1.2em; margin-top: 0; }
.calc-config-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border-color); padding-bottom: 8px; margin-bottom: 15px; }
.calc-config-header h3 { margin: 0; padding: 0; border: none; }
.calc-lock-btn { background-color: var(--bg-light); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 5px; width: 32px; height: 32px; font-size: 1.4em; padding: 0; line-height: 30px; cursor: pointer; transition: all 0.2s; }
.calc-lock-btn.locked { background-color: var(--bg-medium); color: var(--text-secondary); }
.calc-lock-btn.unlocked { background-color: var(--success-color); color: white; border-color: var(--success-color); }
.calc-config-input:disabled, .calc-config-input.readonly-input { background-color: var(--bg-medium); color: var(--text-secondary); opacity: 0.7; cursor: not-allowed; }
.warning-message { background-color: rgba(255, 215, 0, 0.1); border: 1px solid #FFD700; color: #FFD700; padding: 15px; border-radius: 6px; margin-bottom: 20px; text-align: center; }
.warning-message p { margin: 0; }
.calc-objective-grid-header { display: grid; grid-template-columns: 1fr 80px 80px; gap: 10px; padding: 0 5px; margin-bottom: 8px; font-size: 0.8em; color: var(--text-secondary); font-weight: bold; }
.calc-objective-grid-header span:nth-child(2), .calc-objective-grid-header span:nth-child(3) { text-align: center; }
.calc-objective-grid { display: grid; grid-template-columns: 1fr 80px 80px; gap: 10px; align-items: center; }
.calc-objective-grid label { font-size: 0.9em; color: var(--text-secondary); padding-left: 5px; }
.calc-objective-grid input { width: 100%; box-sizing: border-box; text-align: center; }
.calc-helper-text { margin-top: 15px; text-align: center; font-size: 0.9em; color: var(--text-secondary); font-weight: bold; }
.calc-helper-text.error { color: var(--danger-color); }

/* --- Gráfico SVG --- */
.svg-chart { width: 100%; height: auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; overflow: visible; }
.svg-chart .axis line, .svg-chart .axis path { stroke: var(--border-color); stroke-width: 1; }
.svg-chart .axis-label { fill: var(--text-secondary); font-size: 0.9em; }
.svg-chart .grid-line { stroke: var(--bg-medium); stroke-width: 1; stroke-dasharray: 2, 2; }
.svg-chart .path-theoretical { stroke: var(--text-secondary); stroke-width: 2; stroke-dasharray: 4, 4; fill: none; }
.svg-chart .path-real { stroke: var(--link-color); stroke-width: 2.5; fill: none; }
.svg-chart .chart-legend .legend-swatch-real { fill: var(--link-color); }
.svg-chart .chart-legend .legend-swatch-theoretical { fill: var(--text-secondary); }
.svg-chart .chart-dot { fill: var(--link-color); r: 4; opacity: 0; transition: opacity 0.2s; cursor: pointer; }
.svg-chart .chart-dot:hover { opacity: 1; }
#calc-tooltip { position: absolute; background-color: var(--bg-darkest); border: 1px solid var(--border-color); color: var(--text-primary); padding: 8px 12px; border-radius: 6px; font-size: 0.9em; pointer-events: none; opacity: 0; transition: opacity 0.2s, transform 0.2s; transform: translate(-50%, -110%); white-space: nowrap; z-index: 10; }
#calc-tooltip.visible { opacity: 1; }
#calc-tooltip strong { color: var(--link-color); }
#calc-sequence-logic { width: 100%; box-sizing: border-box; }

/* --- Presets --- */
.preset-section .config-item { grid-template-columns: 1fr; gap: 8px; margin-bottom: 15px; }
.preset-section .config-item label { margin-bottom: -5px; }
.preset-section input, .preset-section select { width: 100%; box-sizing: border-box; }
.preset-controls { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.preset-controls button { width: 100%; }
#preset-save-btn { grid-column: 1 / span 2; }

/* --- Audit Grid Wrapper --- */
.audit-grid-wrapper { background: var(--bg-secondary); padding: 15px; border-radius: 8px; margin-top: 10px; height: 100%; }
.audit-grid-legend { display: flex; gap: 15px; margin-bottom: 10px; font-size: 0.85em; flex-wrap: wrap; justify-content: center; }
.audit-item { cursor: pointer; transition: all 0.2s; border: 2px solid transparent; }
.audit-item.state-inherit { border-color: var(--text-primary); border-style: dashed; opacity: 0.7; }
.audit-item.state-strict { border-color: var(--success-color); box-shadow: 0 0 5px rgba(46, 204, 113, 0.2); }
.audit-item.state-ignore_build { border-color: #3498db; }
.audit-item.state-ignore_demolish { border-color: #e67e22; }
.audit-item.state-disabled { border-color: var(--text-secondary); filter: grayscale(100%); opacity: 0.6; }
.audit-item img { pointer-events: none; }

/* --- ESTILOS MODALES (Restaurados al Tema Original) --- */
.modal {position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); z-index: 2000; display: flex; justify-content: center; align-items: center; backdrop-filter: blur(2px); }
.modal.hidden { display: none; }
.modal-content { background-color: var(--bg-darkest); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 8px; display: flex; flex-direction: column; box-shadow: 0 10px 25px rgba(0,0,0,0.5);max-height: 90vh; width: 450px; max-width: 90vw;}
.modal-content.wide-modal { width: 95vw; height: 90vh; max-width: 1600px; }

.modal-header {padding: 15px 20px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; background-color: var(--bg-dark); border-top-left-radius: 8px; border-top-right-radius: 8px; flex-shrink: 0; }
.modal-body {padding: 25px; overflow-y: auto; flex: 1; min-height: 0; }
.modal-footer {padding: 15px 20px; border-top: 1px solid var(--border-color); text-align: right; background-color: var(--bg-dark); border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; flex-shrink: 0; }

/* --- GRID CREACIÓN SERVIDOR (2 COLUMNAS) --- */
.server-creation-grid {
    display: grid;
    grid-template-columns: 350px 1fr;
    height: 100%; /* Ocupar todo el alto disponible del modal-content (menos header) */
    overflow: hidden;
}

.creation-col-left {
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    border-right: 1px solid var(--border-color);
    background-color: var(--bg-darkest);
}

.creation-col-right {
    padding: 25px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    background-color: rgba(0, 0, 0, 0.2);
    overflow-y: auto;
}

/* Títulos de Columna */
.creation-col-left h3, .creation-col-right h3 {
    margin: 0 0 10px 0;
    font-size: 1.1em;
    color: #FFD700;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 8px;
}

/* Inputs y Filas */
.form-group { display: flex; flex-direction: column; gap: 5px; }
.form-group label { font-size: 0.9em; color: var(--text-secondary); }
.modal-input { padding: 10px; border-radius: 4px; border: 1px solid var(--border-color); background-color: var(--bg-light); color: var(--text-primary); font-size: 1em; width: 100%; box-sizing: border-box;}

.form-row-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.hint-text-left {
    font-size: 0.85em;
    color: var(--text-secondary);
    margin: -10px 0 10px 0;
    font-style: italic;
}

/* --- LISTA VERTICAL DE PRESETS (CARDS) --- */
.presets-grid-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto auto;
    gap: 15px;
    flex-grow: 1;
}

.grid-preset-card {
    background-color: var(--bg-medium);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 10px;
}

.grid-preset-card h4 {
    margin: 0;
    font-size: 1em;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 5px;
}

.grid-preset-card p {
    font-size: 0.85em;
    color: var(--text-secondary);
    margin: 0;
    flex-grow: 1;
}

.grid-item-general { grid-column: 1 / 2; grid-row: 1 / 2; }
.grid-item-delays { grid-column: 2 / 3; grid-row: 1 / 2; }
.grid-item-scheduler { grid-column: 1 / 2; grid-row: 2 / 3; }
.grid-item-farmtown { grid-column: 2 / 3; grid-row: 2 / 3; }
.grid-item-groups { grid-column: 1 / 3; grid-row: 3 / 4; }

/* Groups Multiselect Compacto */
.groups-multiselect-container-compact {
    background-color: var(--bg-dark);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 8px;
    overflow-y: auto;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    gap: 5px;
    height: 100px;
}

/* Botones Izquierda */
.modal-actions-left {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.primary-button.full-width, .secondary-button.full-width {
    width: 100%;
    padding: 12px;
    justify-content: center;
}

/* --- Modal Diagnóstico --- */
.diagnostics-modal { width: 600px; max-width: 95vw; }
.diagnostics-summary { display: flex; justify-content: space-between; align-items: center; background-color: var(--bg-dark); padding: 15px; border-radius: 6px; margin-bottom: 20px; }
.diag-card { display: flex; flex-direction: column; align-items: center; flex: 1; }
.diag-label { font-size: 0.85em; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 5px; }
.diag-value { font-size: 1.8em; font-weight: bold; }
.diag-card.theoretical .diag-value { color: var(--link-color); }
.diag-card.real .diag-value { color: #ff6b6b; }
.diag-card.diff .diag-value { color: var(--text-primary); }
.diag-divider { font-weight: bold; color: var(--text-secondary); font-size: 1.2em; padding: 0 15px; }
.diagnostics-details h4 { margin: 0 0 5px 0; color: var(--text-primary); border-bottom: 1px solid var(--border-color); padding-bottom: 8px; }
.diag-subtitle { font-size: 0.9em; color: var(--text-secondary); margin: 0 0 10px 0; font-style: italic; }
.delta-list { list-style-type: none; margin: 0; padding: 0; max-height: 200px; overflow-y: auto; background-color: var(--bg-dark); border-radius: 4px; border: 1px solid var(--bg-medium); }
.delta-list li { padding: 8px 12px; border-bottom: 1px solid var(--bg-medium); font-size: 0.95em; display: flex; align-items: center; gap: 10px; }
.delta-list li:last-child { border-bottom: none; }
.delta-list li::before { content: '⚠️'; font-size: 0.8em; }
.diagnostics-footer { display: flex; flex-direction: column; gap: 10px; }
.footer-actions { display: flex; gap: 15px; justify-content: flex-end; }
.footer-actions button { flex: 1; }
.primary-button.danger-action { background-color: var(--success-color); }
.primary-button.danger-action.risky { background-color: #d35400; border: 1px solid #e67e22; }
.footer-note { font-size: 0.8em; color: var(--text-secondary); margin: 0; text-align: center; }
.audit-warning-message { text-align: center; background-color: rgba(255, 215, 0, 0.1) !important; border: 1px solid var(--accent-color); color: #FFD700 !important; padding: 15px; border-radius: 4px; margin-bottom: 15px; }
.audit-warning-message span { color: var(--text-primary); }

/* --- CORRECCIÓN SELECTOR EN EDITOR --- */
/* Forzar que el selector se vea también en modo edición */
body.plan-editor-active #custom-server-selector {display: block !important;z-index: 1001; /* Por encima de otros elementos */}

/* Ajuste opcional por si el botón de volver se solapa */
body.plan-editor-active header {z-index: 1002;/* Aseguramos que el header tenga espacio */}

/* --- RESTAURACIÓN DEL BOTÓN GUARDAR (FOOTER) --- */
footer {/* Aseguramos la posición base */position: fixed;bottom: 0;left: 0;right: 0;height: auto; /* Dejar que se ajuste al contenido */}

/* Cuando el servidor está cargado, EL FOOTER DEBE VERSE */
body.server-loaded footer {display: flex; /* Vence a cualquier regla que lo oculte */z-index: 10000;           /* Por encima de todo (incluso del editor) */background-color: var(--bg-dark); /* Asegurar fondo opaco para que se lea */border-top: 2px solid var(--border-color);box-shadow: 0 -5px 15px rgba(0,0,0,0.3); /* Sombra para separarlo visualmente */}

/* Ajuste para que el contenido de la página no se quede detrás del botón */
body.server-loaded {padding-bottom: 80px !important; /* Espacio reservado para el footer */}

/* --- NOTIFICACIONES FLOTANTES PERSISTENTES --- */
#floating-notification-container {position: fixed;bottom: 20px;right: 20px;display: flex;flex-direction: column;gap: 10px;z-index: 10001;pointer-events: none; /* Para que no bloquee clicks si es transparente */}
.floating-note {background-color: rgba(0, 0, 0, 0.85);color: #fff;padding: 12px 20px;border-left: 5px solid var(--accent-color);border-radius: 4px;box-shadow: 0 4px 6px rgba(0,0,0,0.3);font-size: 0.9em;pointer-events: auto; /* Reactivar clicks en la nota */animation: slideIn 0.3s ease-out;max-width: 300px;}
.floating-note.unsaved {border-left-color: #f39c12; /* Naranja advertencia */}
.floating-note.success {border-left-color: var(--success-color); /* Verde éxito */}
.floating-note.danger {border-left-color: var(--danger-color); /* Rojo peligro */}


@keyframes slideIn {
    from { transform: translateX(100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

/* =========================================
   GESTOR DE PLANTILLAS (OVERLAY & UI)
   ========================================= */

/* --- 1. Fondo y Efecto Cristal (Overlay) --- */
.overlay-glass {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.65); /* Fondo oscuro semitransparente */
    backdrop-filter: blur(12px);           /* El efecto "borroso" potente */
    -webkit-backdrop-filter: blur(12px);   /* Soporte Safari */
    z-index: 3000;                         /* Por encima de todo (Header: 100, Modales normales: 2000) */
    display: flex;
    justify-content: center;
    align-items: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

/* Estado visible (se activa vía JS quitando la clase .hidden y manejando opacidad) */
.overlay-glass:not(.hidden) {
    opacity: 1;
    visibility: visible;
}

/* --- 2. Contenedor Principal del Modal --- */
.templates-modal-container {
    width: 90%;
    max-width: 1400px;
    height: 85vh;
    background-color: var(--bg-darkest);
    border: 1px solid rgba(255, 215, 0, 0.3); /* Borde dorado sutil */
    border-radius: 12px;
    box-shadow: 0 20px 50px rgba(0,0,0,0.5);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transform: scale(0.95);
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.overlay-glass:not(.hidden) .templates-modal-container {
    transform: scale(1);
}

/* --- 3. Cabecera del Modal --- */
.templates-header {
    background: linear-gradient(90deg, var(--bg-dark) 0%, var(--bg-medium) 100%);
    padding: 15px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid var(--border-color);
    flex-shrink: 0;
}

.templates-header h2 {
    margin: 0;
    font-size: 1.5em;
    color: #FFD700; /* Texto Dorado */
    text-shadow: 0 2px 4px rgba(0,0,0,0.3);
    display: flex;
    align-items: center;
    gap: 10px;
}

/* --- 4. Cuerpo (Layout Sidebar + Contenido) --- */
.templates-body {
    display: flex;
    flex-grow: 1;
    overflow: hidden; /* Evita que el scroll general rompa el layout */
}

/* Sidebar de Navegación */
.templates-sidebar {
    width: 260px;
    background-color: rgba(0, 0, 0, 0.2);
    border-right: 1px solid var(--border-color);
    padding: 20px 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex-shrink: 0;
    overflow-y: auto;
}

.template-nav-item {
    padding: 12px 25px;
    cursor: pointer;
    color: var(--text-secondary);
    transition: all 0.2s;
    border-left: 4px solid transparent;
    font-size: 1.05em;
}

.template-nav-item:hover {
    background-color: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
}

.template-nav-item.active {
    background-color: rgba(255, 215, 0, 0.1); /* Fondo dorado muy sutil */
    color: #FFD700;
    border-left-color: #FFD700;
    font-weight: bold;
}

/* Área de Contenido */
.templates-content {
    flex-grow: 1;
    padding: 30px;
    overflow-y: auto;
    background-color: var(--bg-darkest);
    position: relative;
}

/* Estado Vacío (Placeholder) */
.empty-state-template {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--text-secondary);
    opacity: 0.5;
    text-align: center;
}

/* --- 5. Espacio de Trabajo (Workspace) dentro del Overlay --- */
.template-workspace {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 20px;
}

.workspace-toolbar {
    display: flex;
    gap: 15px;
    padding: 15px;
    background-color: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    align-items: center;
}

.workspace-toolbar select {
    flex-grow: 1;
    background-color: var(--bg-dark);
    color: #FFD700; /* Texto dorado para presets */
    font-weight: bold;
}

.workspace-form {
    flex-grow: 1;
    overflow-y: auto;
    padding: 10px;
    border: 1px solid transparent; /* Reserva de espacio */
}

/* Inputs dentro de las plantillas */
.tmpl-input-group {
    background-color: var(--bg-medium);
    padding: 15px;
    border-radius: 6px;
    margin-bottom: 15px;
    border: 1px solid var(--border-color);
}
.tmpl-input-group h4 { margin-top: 0; color: var(--text-primary); border-bottom: 1px solid var(--border-color); padding-bottom: 5px; margin-bottom: 10px;}

.tmpl-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.tmpl-row label { font-size: 0.9em; color: var(--text-secondary); }
.tmpl-row input { width: 80px; text-align: center; }

/* --- 6. Estilos Específicos para Editores de Plantilla (Grupos) --- */

/* A. Layout del Formulario Principal (Eliminar Scroll) */
.tmpl-group-grid {
    display: grid;
    grid-template-columns: 1fr 1fr; /* Dos columnas */
    grid-auto-rows: min-content;   /* Filas ajustadas al contenido */
    gap: 15px;
    height: 100%;
    overflow: hidden; /* Forzar sin scroll */
}

/* Ajustes de las tarjetas para que quepan */
.tmpl-card {
    background-color: var(--bg-medium);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow-y: auto; /* Scroll interno solo si es estrictamente necesario */
}
.tmpl-card h4 { margin: 0 0 10px 0; border-bottom: 1px solid var(--border-color); padding-bottom: 5px; color: #FFD700; }

/* B. Editor de Construcción (Estilo Réplica) */
.building-planner-wrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 10px;
}

.building-mode-selector {
    display: flex;
    justify-content: center;
    gap: 20px;
    padding: 10px;
    background: rgba(0,0,0,0.3);
    border-radius: 8px;
}

.mode-btn {
    padding: 8px 20px;
    border: 1px solid var(--border-color);
    background: var(--bg-dark);
    color: var(--text-secondary);
    cursor: pointer;
    border-radius: 4px;
    font-weight: bold;
    transition: all 0.2s;
}
.mode-btn.active-build { background: #2E7D32; color: white; border-color: #4CAF50; box-shadow: 0 0 10px rgba(76, 175, 80, 0.4); }
.mode-btn.active-demolish { background: #C62828; color: white; border-color: #EF5350; box-shadow: 0 0 10px rgba(244, 67, 54, 0.4); }

.building-planner-body {
    display: flex;
    gap: 20px;
    flex-grow: 1;
    overflow: hidden;
}

.planner-palette {
    width: 320px; /* Ancho fijo similar al juego */
    background: rgba(0,0,0,0.2);
    padding: 10px;
    border-radius: 6px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: 60px;
    gap: 8px;
    overflow-y: auto;
}

.building-sequence-container {
    flex-grow: 1;
    background: var(--bg-dark);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 10px;
    display: flex;
    flex-direction: column;
}

.sequence-list {
    flex-grow: 1;
    overflow-y: auto;
    padding-right: 5px;
}

/* Items de la Secuencia */
.seq-item {
    display: flex;
    align-items: center;
    padding: 5px 10px;
    margin-bottom: 4px;
    border-radius: 4px;
    font-size: 0.9em;
    border-left: 4px solid transparent;
}
.seq-item.mode-build { background: rgba(46, 125, 50, 0.2); border-left-color: #4CAF50; }
.seq-item.mode-demolish { background: rgba(198, 40, 40, 0.2); border-left-color: #EF5350; }
.seq-icon { width: 25px; height: 25px; margin-right: 10px; }


/* C. Editor de Academia (Estilo Réplica y Estados) */
.academy-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    height: 100%;
}
.academy-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr); /* Estándar visual compacto */
    gap: 15px;
    margin-top: 20px;
    padding: 20px;
    background: url('https://gpit-en.innogamescdn.com/images/game/academy/background.jpg') no-repeat center; /* Fondo opcional si quieres realismo */
    background-size: cover;
    border-radius: 8px;
}

.tech-slot {
    width: 60px;
    height: 60px;
    position: relative;
    cursor: pointer;
    border-radius: 4px;
    transition: all 0.2s;
}
.tech-slot img { width: 100%; height: 100%; display: block; }

/* Estados de Investigación */
/* 0: Ignorar (Grisáceo / Normal) */
.tech-state-ignore {
    filter: grayscale(100%) opacity(0.5);
    border: 2px solid transparent;
}
/* 1: Investigar (Verde - Highlight) */
.tech-state-research {
    filter: grayscale(0%) opacity(1);
    box-shadow: 0 0 15px #4CAF50;
    border: 2px solid #4CAF50;
    background: rgba(76, 175, 80, 0.2);
}
/* 2: No Investigar / Prohibir (Rojo - Highlight + Cruz) */
.tech-state-ban {
    filter: grayscale(0%) opacity(0.8);
    box-shadow: 0 0 15px #F44336;
    border: 2px solid #F44336;
    background: rgba(244, 67, 54, 0.2);
    position: relative;
}
.tech-state-ban::after {
    content: "✖";
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    color: #FF0000;
    font-size: 40px;
    font-weight: bold;
    text-shadow: 0 0 5px black;
    pointer-events: none;
}

/* --- 7. Estilos para Preset de Aldeas (Estrategia) --- */

.ft-strategy-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    flex-grow: 1;
    align-content: center;
    margin-bottom: 40px;
}

.ft-strategy-card {
    background-color: var(--bg-dark);
    border: 2px solid var(--border-color);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
    opacity: 0.7;
    height: 100%;
    justify-content: center;
}

.ft-strategy-card:hover {
    opacity: 1;
    background-color: rgba(255, 255, 255, 0.05);
    transform: translateY(-2px);
}

.ft-strategy-card.selected {
    opacity: 1;
    border-color: #FFD700;
    background-color: rgba(255, 215, 0, 0.1);
    box-shadow: 0 4px 15px rgba(255, 215, 0, 0.15);
}

.ft-st-icon { font-size: 2em; margin-bottom: 10px; }
.ft-st-label { font-weight: bold; color: #FFD700; margin-bottom: 5px; font-size: 1.1em; }
.ft-st-desc { font-size: 0.85em; color: var(--text-secondary); line-height: 1.4; }

.hidden-radio { display: none; }

/* --- 8. Estilos para Modal de Creación (Fase 3) --- */

.advanced-options-toggle {
    background-color: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--border-color);
    padding: 10px 15px;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 15px;
    margin-bottom: 10px;
    transition: background 0.2s;
    color: #FFD700;
    font-weight: bold;
}
.advanced-options-toggle:hover { background-color: rgba(255, 255, 255, 0.1); }

.advanced-container {
    background-color: rgba(0, 0, 0, 0.2);
    padding: 15px;
    border-radius: 6px;
    border: 1px solid var(--border-color);
    margin-bottom: 20px;
}
.hint-text { font-size: 0.85em; color: var(--text-secondary); margin-top: 0; margin-bottom: 15px; text-align: center; }

/* Grid de Selectores */
.presets-grid-selector {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.preset-sel-card {
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.preset-sel-card label { font-size: 0.9em; color: var(--text-primary); }
.preset-sel-card select {
    background-color: var(--bg-dark);
    color: white;
    padding: 8px;
    border: 1px solid var(--border-color);
    border-radius: 4px;
}

.preset-sel-card.full-width {
    grid-column: 1 / -1; /* Ocupa todo el ancho */
}

/* Multi-Select de Grupos */
.groups-multiselect-container {
    max-height: 120px;
    overflow-y: auto;
    background-color: var(--bg-dark);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 10px;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 8px;
}

.group-checkbox-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9em;
    background: rgba(255, 255, 255, 0.05);
    padding: 5px 8px;
    border-radius: 4px;
    cursor: pointer;
}
.group-checkbox-item:hover { background: rgba(255, 255, 255, 0.1); }
.group-checkbox-item input { cursor: pointer; transform: scale(1.1); }

.empty-msg { color: var(--text-secondary); font-style: italic; font-size: 0.8em; grid-column: 1 / -1; text-align: center; }

/* Selector de Modo de Juego (Imágenes) */
.game-mode-selector {
    display: flex;
    gap: 20px;
    justify-content: center;
    margin-top: 10px;
}

.game-mode-option {
    cursor: pointer;
    opacity: 0.4;
    filter: grayscale(100%);
    transition: all 0.3s ease;
    border: 2px solid transparent;
    border-radius: 8px;
    padding: 8px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background-color: var(--bg-medium);
}

.game-mode-option img {
    width: 64px;
    height: 64px;
    object-fit: contain;
    margin-bottom: 5px;
}

.game-mode-option span {
    font-size: 0.85em;
    font-weight: bold;
    color: var(--text-secondary);
}

.game-mode-option:hover {
    opacity: 0.7;
    background-color: rgba(255, 255, 255, 0.05);
}

.game-mode-option.selected {
    opacity: 1;
    filter: grayscale(0%);
    border-color: #FFD700;
    background-color: rgba(255, 215, 0, 0.1);
    transform: scale(1.05);
    box-shadow: 0 4px 15px rgba(255, 215, 0, 0.2);
}

.game-mode-option.selected span {
    color: #FFD700;
}

/* --- ESTILOS PARA LA NUEVA UI DE SELECCIÓN DE PRESETS --- */

/* Cancel Button Red */
.cancel-button-red {
    background-color: var(--danger-color);
    color: white;
    border: 1px solid #c82333;
}
.cancel-button-red:hover {
    background-color: #c82333;
    color: #fff;
}

/* Preset Selection Grid (New Overlay) */
.preset-selection-grid {
    display: flex;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 15px;
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 10px 5px;
    align-items: flex-start; /* Cards align to top, height independent */
    
    /* Hide scrollbar */
    scrollbar-width: none;       /* Firefox */
    -ms-overflow-style: none;    /* IE/Edge */
    cursor: grab;
}

/* Preset Card Style (Aesthetic) */
.preset-selection-card {
    background-color: var(--bg-dark);
    border: 2px solid var(--border-color);
    border-radius: 8px; /* Softer corners */
    padding: 15px; /* More breathing room */
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
    opacity: 0.95;
    position: relative;
    min-height: 120px; /* Taller */
    justify-content: flex-start;

    /* New layout properties */
    flex: 0 0 auto; /* Don't shrink, don't grow beyond content (unless we used 1) */
    min-width: 200px; /* Reasonable minimum width */
    max-width: 350px; /* Cap width so they don't get absurdly wide */
    width: auto; /* Adapt to content */
}

.preset-selection-card:hover {
    opacity: 1;
    background-color: rgba(255, 255, 255, 0.05);
    border-color: var(--accent-color);
    transform: translateY(-2px); /* Subtle lift */
    box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.preset-selection-card.selected {
    opacity: 1;
    border-color: #FFD700;
    background-color: rgba(255, 215, 0, 0.1);
    box-shadow: 0 0 15px rgba(255, 215, 0, 0.15);
    transform: scale(1.02); /* Pop out effect */
}

/* Icono o título grande en la carta */
.preset-card-title {
    font-size: 1.1em;
    font-weight: bold;
    color: #FFD700; /* Gold for title */
    margin-bottom: 4px;
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border-bottom: 1px solid rgba(255,255,255,0.1);
    padding-bottom: 8px;
}
.preset-card-subtitle {
    font-size: 0.8em;
    color: var(--text-secondary);
    line-height: 1.2;
    margin-bottom: 12px;
}

.preset-card-summary {
    margin-top: auto; /* Push to bottom if space available */
    background: transparent;
    padding: 0;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

/* --- Summary Grid Styles --- */
.summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 8px;
    width: 100%;
}

.summary-item {
    display: flex;
    flex-direction: column;
    background-color: rgba(0,0,0,0.3); /* Darker background for contrast */
    padding: 8px;
    border-radius: 6px;
    font-size: 0.85em;
    border: 1px solid rgba(255, 255, 255, 0.05);
    transition: background 0.2s;
    justify-content: space-between;
}

.summary-item:hover {
    background-color: rgba(255, 255, 255, 0.05);
}

.summary-item.highlight {
    background-color: rgba(255, 215, 0, 0.05);
    border-color: rgba(255, 215, 0, 0.2);
}

.summary-item .s-header {
    display: flex;
    justify-content: space-between;
    width: 100%;
    margin-bottom: 4px;
    align-items: flex-start;
}

.summary-item .s-icon {
    font-size: 1.2em;
    margin-left: 5px;
    flex-shrink: 0;
}

.summary-item .s-label {
    color: var(--text-secondary);
    font-size: 0.85em;
    font-weight: 500;
    line-height: 1.2;
    word-wrap: break-word;
}

.summary-item .s-value {
    color: var(--text-primary);
    font-weight: bold;
    word-break: break-word;
    font-family: monospace; /* Monospace for numbers looks better */
    font-size: 1.1em;
}

/* Estilos Específicos para el Resumen de Grupos (con imágenes) */
.summary-resource-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 2px;
}

.summary-resource-icon {
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.summary-section-title {
    grid-column: 1 / -1;
    font-size: 0.9em;
    font-weight: bold;
    color: #FFD700;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
    margin-top: 10px;
    margin-bottom: 5px;
    padding-bottom: 3px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.summary-full-row {
    grid-column: 1 / -1;
    background-color: rgba(0,0,0,0.3);
    padding: 8px;
    border-radius: 6px;
    font-size: 0.9em;
    color: var(--text-primary);
    border: 1px solid rgba(255, 255, 255, 0.05);
}

.summary-empty {
    text-align: center;
    color: var(--text-secondary);
    font-style: italic;
    padding: 10px;
}

/* Check mark overlay for selected cards */
.preset-selection-card.selected::after {
    content: "✓";
    position: absolute;
    top: 5px;
    right: 8px;
    color: #FFD700;
    font-weight: bold;
    font-size: 1.2em;
}

/* Selected Preset Display Text (in Main Modal) */
.selected-preset-text {
    font-size: 0.85em;
    color: #FFD700;
    font-style: italic;
    min-height: 1.2em; /* Reserve space */
    margin-bottom: 5px;
}

/* =========================================
   FIX: SERVER CREATION MODAL (Wide Layout)
   ========================================= */

/* Override default narrow width to allow viewing all content at once */
#server-modal .modal-content {
    width: 95vw !important;
    max-width: 1400px !important;
    height: auto !important;
    max-height: 95vh !important;
}

/* Adjust the internal grid to use the new width */
#server-modal .server-creation-grid {
    grid-template-columns: 350px 1fr; /* Keep left column fixed, right takes rest */
    overflow: hidden; /* Prevent double scroll */
}

/* Reflow the presets into a wider grid (e.g., 4 columns) to reduce vertical height */
#server-modal .presets-grid-layout {
    grid-template-columns: repeat(4, 1fr) !important;
    grid-template-rows: auto !important; /* Let rows grow as needed */
    gap: 15px;
    display: grid;
}

/* Reset specific positioning so they flow naturally in the new grid */
#server-modal .grid-item-general,
#server-modal .grid-item-delays,
#server-modal .grid-item-scheduler,
#server-modal .grid-item-farmtown {
    grid-column: auto !important;
    grid-row: auto !important;
}

/* Make Groups take full width of the new grid */
#server-modal .grid-item-groups {
    grid-column: 1 / -1 !important; /* Span full width */
    grid-row: auto !important;
    margin-top: 5px;
}

/* Adjust the right column container to avoid unnecessary scroll */
#server-modal .creation-col-right {
    overflow-y: auto; /* Keep scroll if absolutely needed, but usually won't be */
}

/* Responsive adjustment for smaller screens */
@media (max-width: 1200px) {
    #server-modal .presets-grid-layout {
        grid-template-columns: repeat(2, 1fr) !important;
    }
}

/* --- ESTILOS GESTOR DE EXTENSIÓN --- */
.credentials-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow-y: auto;
    margin-bottom: 20px;
    flex-grow: 1;
}

.credential-card {
    background-color: var(--bg-medium);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.credential-info {
    display: flex;
    align-items: center;
    gap: 15px;
}

.credential-market {
    font-weight: bold;
    color: #FFD700;
    width: 40px;
    text-transform: uppercase;
    text-align: center;
    background: rgba(0,0,0,0.3);
    padding: 4px;
    border-radius: 4px;
}

.credential-user {
    color: var(--text-primary);
    font-weight: bold;
}

.credential-pass {
    color: var(--text-secondary);
    font-size: 0.9em;
    font-family: monospace;
}

.credential-actions {
    display: flex;
    gap: 10px;
}

.credential-form-container {
    background-color: var(--bg-medium);
    padding: 20px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    margin-top: auto;
}

.credential-form-container h4 {
    margin-top: 0;
    margin-bottom: 15px;
    color: #FFD700;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 5px;
}

.form-row {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    align-items: flex-end;
}

.form-row .form-group {
    flex: 1 1 200px;
    min-width: 150px;
}

/* Specific styling for the first group (Market) to stay compact */
.form-row .form-group:first-child {
    flex: 0 0 80px;
    min-width: 80px;
}

.form-row button {
    flex: 0 0 auto;
}

.form-group label {
    display: block;
    margin-bottom: 5px;
    font-size: 0.9em;
    color: var(--text-secondary);
}

.form-group input {
    width: 100%;
}

/* --- Password Toggle Styling --- */
.credential-pass-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
}

.credential-pass-input {
    background-color: transparent;
    border: none;
    color: var(--text-secondary);
    font-family: monospace;
    font-size: 0.9em;
    width: 100px;
}

.credential-pass-input:focus {
    outline: none;
}

.password-input-group {
    display: flex;
    align-items: center;
    position: relative;
    width: 100%;
}

.password-input-group input {
    width: 100%;
    padding-right: 70px; /* Space for the button */
    box-sizing: border-box;
}

.password-input-group .text-toggle-btn {
    position: absolute;
    right: 5px;
    top: 50%;
    transform: translateY(-50%);
}

.text-toggle-btn {
    background: none;
    border: none;
    color: var(--link-color);
    cursor: pointer;
    font-size: 0.85em;
    padding: 2px 5px;
}

.text-toggle-btn:hover {
    text-decoration: underline;
    color: var(--text-primary);
}

/* --- ANIMACIONES Y ESTADOS DE EJECUCIÓN (NUEVO) --- */
@keyframes pulse-active {
    0% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.4); border-color: rgba(76, 175, 80, 0.7); }
    70% { box-shadow: 0 0 0 10px rgba(76, 175, 80, 0); border-color: rgba(76, 175, 80, 1); }
    100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); border-color: rgba(76, 175, 80, 0.7); }
}

.server-card.active-execution {
    animation: pulse-active 2s infinite;
    border-color: var(--success-color) !important;
}

.server-run-info {
    font-size: 0.85em;
    color: var(--text-secondary);
    text-align: center;
    margin-top: auto;
    padding-top: 5px;
    min-height: 1.2em;
}

.server-card.active-execution .server-run-info {
    color: var(--success-color);
}

/* =========================================
   FIX: PLAN EDITOR LAYOUT RESTORATION
   ========================================= */
/* Force 3-column grid layout to prevent collapse or blowout */
#plan-editor-container {
    display: grid !important;
    grid-template-columns: 1fr 1fr auto !important;
    grid-template-rows: auto auto auto !important;
    gap: 25px !important;
    align-items: start !important;
}

/* Crucial: Allow grid items to shrink below their minimum content width */
/* This prevents the Academy Plan from forcing the first column to be huge */
#plan-editor-container > div {
    min-width: 0 !important;
}

/* Ensure Research Grid behaves */
.research-grid {
    display: grid !important;
    grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
    gap: 8px !important;
}

/* =========================================
   CITY GROUPS CARD VIEW V3 (Split Layout 1/3 - 2/3)
   ========================================= */

.city-groups-split-container {
    display: flex;
    gap: 25px;
    width: 100%;
    align-items: start;
    padding-bottom: 40px;
}

.city-groups-info-panel {
    flex: 0 0 33.333%; /* 1/3 of the width */
    min-width: 300px;
}

.city-groups-cards-grid {
    flex: 1; /* Remainder (2/3) */
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr)); /* Forced 5 columns */
    gap: 15px;
}

.col-stack {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.card-glass {
    background: linear-gradient(to bottom, var(--bg-medium), var(--bg-dark));
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.3);
    color: var(--text-primary);
    display: flex;
    flex-direction: column;
    transition: transform 0.2s, box-shadow 0.2s;
}

.card-glass:hover {
    box-shadow: 0 8px 12px rgba(0,0,0,0.4);
    border-color: rgba(255, 255, 255, 0.2);
}

.card-glass[data-group-name] {
    cursor: pointer;
}

.card-glass h2 {
    font-size: 1.1em;
    font-weight: 600;
    margin-top: 0;
    margin-bottom: 15px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding-bottom: 10px;
    color: #f3f4f6;
}

/* Overview List */
.overview-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.overview-list li {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    font-size: 0.9em;
    color: var(--text-secondary);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.overview-list li:last-child {
    border-bottom: none;
}
.overview-list li span {
    color: white;
    font-weight: bold;
}
.text-green { color: var(--success-color) !important; }

/* Group Card Specifics */
.group-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}
.group-card-title {
    font-size: 1.2em;
    font-weight: bold;
    color: var(--text-primary);
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 180px;
}
.group-card-title:hover {
    color: var(--link-color);
    text-decoration: underline;
}

.group-config-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
    margin-bottom: 15px;
}
.group-input-col {
    flex-grow: 1;
}
.group-label {
    display: block;
    font-size: 0.75em;
    text-transform: uppercase;
    font-weight: bold;
    color: var(--text-secondary);
    margin-bottom: 5px;
}
.group-input {
    width: 100%;
    background-color: rgba(0,0,0,0.2);
    border: 1px solid var(--border-color);
    color: white;
    padding: 6px 10px;
    border-radius: 4px;
    box-sizing: border-box;
}
.group-input:focus {
    border-color: var(--link-color);
    outline: none;
}

.modules-grid {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-top: 15px;
    border-top: 1px solid rgba(255,255,255,0.1);
}
.module-item {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 0.85em;
    color: var(--text-secondary);
}
/* Estilo específico para los toggles dentro de las cards */
.module-item input[type="checkbox"] {
    transform: scale(1.1);
    margin: 0;
}

/* Create Group Card */
.create-group-card {
    background: linear-gradient(to bottom, var(--bg-medium), var(--bg-dark));
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.3);
    color: var(--text-primary);

    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;

    min-height: 150px;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
}
.create-group-card:hover {
    box-shadow: 0 8px 12px rgba(0,0,0,0.4);
    border-color: rgba(255, 255, 255, 0.2);
    transform: translateY(-5px);
}
.create-icon {
    font-size: 1.8em;
    background-color: var(--bg-light);
    color: var(--text-primary);
    width: 50px;
    height: 50px;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.3);
}
.create-label {
    background-color: var(--text-secondary);
    color: var(--bg-darkest);
    font-size: 0.8em;
    font-weight: bold;
    padding: 4px 10px;
    border-radius: 4px;
}

/* Toggle Switch V2 (CSS-only state) */
.toggle-wrapper {
    position: relative;
    display: inline-block;
    width: 36px;
    height: 20px;
}
.toggle-checkbox {
    opacity: 0;
    width: 0;
    height: 0;
}
.toggle-label {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--bg-light);
    border-radius: 34px;
    transition: .4s;
}
.toggle-label:before {
    position: absolute;
    content: "";
    height: 14px;
    width: 14px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    border-radius: 50%;
    transition: .4s;
}
.toggle-checkbox:checked + .toggle-label {
    background-color: var(--success-color);
}
.toggle-checkbox:checked + .toggle-label:before {
    transform: translateX(16px);
}

/* =========================================
   PLAN EDITOR V2 (NEW OVERLAY DESIGN)
   ========================================= */

.plan-editor-shell {
    display: flex;
    height: 100vh;
    width: 100vw;
    background-color: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    overflow: hidden;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 2000;
    justify-content: center;
    align-items: center;
}

.plan-editor-window {
    width:60%;
    max-width: none;
    height: 85vh;
    background-color: var(--bg-darkest);
    border-radius: 12px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
    display: flex;
    overflow: hidden;
    border: 1px solid var(--border-color);
}

.pe-sidebar {
    width: 280px;
    background-color: rgba(0, 0, 0, 0.5);
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
}

.pe-sidebar-header {
    height: 70px;
    padding: 0 30px;
    border-bottom: 1px solid var(--border-color);
}

.pe-sidebar-header-content {
    display: flex;
    align-items: center;
    margin-top: 15px;
}

.pe-group-icon {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: rgba(16, 185, 129, 0.2); /* Emerald-ish */
    color: var(--success-color);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2em;
    margin-right: 12px;
}

.pe-sidebar-header h2 {
    margin: 0;
    font-size: 1.1em;
    font-weight: bold;
    color: var(--text-primary);
    line-height: 1.2;
}

.pe-sidebar-header p {
    margin: 2px 0 0 0;
    font-size: 0.8em;
    color: var(--text-secondary);
}

.pe-nav {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 5px;
    flex-grow: 1;
    overflow-y: auto;
}

.pe-nav-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 15px;
    border-radius: 8px;
    color: var(--text-secondary);
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s;
    border: 1px solid transparent;
}

.pe-nav-item:hover {
    background-color: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
}

.pe-nav-item.active {
    background-color: var(--bg-light);
    color: var(--link-color); /* Or accent color */
    border-color: var(--border-color);
    font-weight: 500;
    box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

/* Specific styling for module items with indicators */
.pe-nav-item .pe-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--success-color);
    margin-left: auto;
    opacity: 0; /* Hidden by default */
}
.pe-nav-item.has-module-active .pe-status-dot {
    opacity: 1;
}

.pe-sidebar-footer {
    height: 80px;
    padding: 0 40px;
    border-top: 1px solid var(--border-color);
}

.pe-btn-delete-group {
    width: 100%;
    padding: 20px;
    background-color: transparent;
    color: var(--danger-color);
    border: none;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    cursor: pointer;
    transition: background-color 0.2s;
    font-size: 1em;
    margin-top: 10px;
}

.pe-btn-delete-group:hover {
    background-color: rgba(178, 34, 34, 0.1);
}

.pe-content {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    background-color: var(--bg-dark);
    height: 100%;
}

.pe-header {
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 30px;
    border-bottom: 1px solid var(--border-color);
    background-color: rgba(0, 0, 0, 0.349);
    flex-shrink: 0;
}

.pe-header-title {
    font-size: 1.2em;
    font-weight: bold;
    color: var(--text-primary);
}

.pe-header-actions {
    display: flex;
    align-items: center;
    gap: 15px;
}

.pe-status-badge {
    font-size: 1.1em;
    font-family: monospace;
    background-color: rgba(16, 185, 129, 0.15);
    color: var(--success-color);
    padding: 4px 10px;
    border-radius: 4px;
    border: 1px solid rgba(16, 185, 129, 0.3);
    font-weight: bold;
}

.pe-close-btn {
    background: none;
    border: none;
    color: var(--text-secondary);
    cursor: pointer;
    padding: 5px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.2s, background 0.2s;
}

.pe-close-btn:hover {
    color: var(--text-primary);
    background-color: rgba(255,255,255,0.1);
}

.pe-scroll-area {
    flex-grow: 1;
    overflow-y: auto;
    padding: 30px;
    background-color: rgba(0, 0, 0, 0.349);
}

/* GENERAL TAB */
.pe-section-card {
    background-color: rgba(168, 166, 166, 0.233);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.pe-section-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 20px;
}

.pe-section-title {
    font-size: 1em;
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
}

.pe-section-subtitle {
    font-size: 0.85em;
    color: var(--text-secondary);
    margin-top: 5px;
}

.pe-general-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.pe-module-card {
    background-color: rgba(168, 166, 166, 0.233);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: border-color 0.2s;
}

.pe-module-card:hover {
    border-color: var(--text-secondary);
}

.pe-module-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.pe-module-info {
    display: flex;
    align-items: center;
    gap: 12px;
}

.pe-module-icon {
    width: 44px;
    height: 44px;
    border-radius: 8px;
    background-color: rgba(255, 255, 255, 0.05);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4em;
    color: var(--text-secondary);
}
.pe-module-icon.active {
    background-color: rgba(16, 185, 129, 0.15);
    color: var(--success-color);
}
/* Specific colors for modules if needed */
.pe-module-icon.mod-building { color: #f97316; background-color: rgba(249, 115, 22, 0.15); } /* Orange */
.pe-module-icon.mod-academy { color: #3b82f6; background-color: rgba(59, 130, 246, 0.15); } /* Blue */
.pe-module-icon.mod-recruitment { color: #a855f7; background-color: rgba(168, 85, 247, 0.15); } /* Purple */
.pe-module-icon.mod-silver { color: #9ca3af; background-color: rgba(156, 163, 175, 0.15); } /* Gray */

.pe-module-title h5 {
    margin: 0;
    font-size: 1em;
    color: var(--text-primary);
    font-weight: 500;
}

.pe-module-title p {
    margin: 2px 0 0 0;
    font-size: 0.75em;
    color: var(--text-secondary);
}

.pe-module-inputs {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
}

.pe-input-label {
    display: block;
    font-size: 0.65em;
    font-weight: bold;
    text-transform: uppercase;
    color: var(--text-secondary);
    margin-bottom: 6px;
    letter-spacing: 0.5px;
}

.pe-input {
    width: 100%;
    background-color: var(--bg-light);
    border: 1px solid var(--border-color);
    color: white;
    padding: 8px 10px;
    border-radius: 4px;
    font-size: 0.9em;
    box-sizing: border-box;
    transition: border-color 0.2s;
}

.pe-input:focus {
    border-color: var(--link-color);
    outline: none;
    box-shadow: 0 0 0 1px var(--link-color);
}

.pe-footer {
    height: 80px;
    border-top: 1px solid var(--border-color);
    background-color: rgba(0, 0, 0, 0.349);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 40px;
    flex-shrink: 0;
}

.pe-last-edit {
    font-size: 0.8em;
    color: var(--text-secondary);
}

.pe-actions {
    display: flex;
    gap: 15px;
}

.pe-btn-discard {
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--text-primary);
    background-color: rgba(49, 46, 46, 0.473);
    border: 1px solid var(--border-color);
    transition: background-color 0.2s;
}

.pe-btn-discard:hover {
    background-color: var(--bg-light);
}

.pe-btn-save {
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 0.875rem;
    font-weight: 500;
    color: white;
    background-color: rgba(146, 137, 137, 0.555);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);
    border: none;
    transition: background-color 0.2s;
}

.pe-btn-save:hover {
    background-color: #B0B0B0; /* Slightly lighter than typical accent if accent is A0A0A0 */
}

/* SERVER ID INPUT AREA */
.pe-server-id-container {
    display: flex;
    align-items: flex-end;
    gap: 20px;
}
.pe-server-id-input-wrapper {
    flex-grow: 1;
    max-width: 200px;
}
.pe-server-id-toggle {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-bottom: 8px;
}
.pe-label-text {
    font-size: 0.9em;
    font-weight: 500;
    color: var(--text-primary);
}

/* --- PLAN EDITOR RECRUITMENT STYLES --- */
.pe-recr-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 15px;
    margin-bottom: 30px;
}

.pe-recr-card {
    background-color: rgba(0, 0, 0, 0.2);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    transition: all 0.2s;
}

.pe-recr-card:hover {
    background-color: rgba(255, 255, 255, 0.05);
    border-color: var(--text-secondary);
}

.pe-recr-icon {
    width: 50px;
    height: 50px;
    object-fit: contain;
    cursor: pointer;
    transition: transform 0.1s;
}

.pe-recr-icon:hover {
    filter: brightness(1.2);
    transform: scale(1.05);
}

.pe-recr-name {
    font-size: 0.8em;
    font-weight: bold;
    color: var(--text-secondary);
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    width: 100%;
}

.pe-recr-input {
    width: 100% !important;
    text-align: center;
    font-weight: bold;
    color: var(--link-color) !important;
    padding: 6px !important;
}

/* --- RECRUITMENT EDITOR GRID LAYOUT --- */
.recruitment-outer-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    grid-template-rows: repeat(5, 14fr) repeat(2, 15fr);
    gap: 15px;
    height: 100%;
}

/* Unified Panel Style for ALL Outer Divs */
.rec-outer-div1, .rec-outer-div2, .rec-outer-div3, .rec-outer-div4, .rec-outer-div5, .rec-outer-div6, .rec-outer-div7 {
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    color: var(--text-secondary);
    font-weight: bold;
    text-align: center;
}

.rec-outer-div1 { grid-area: 1 / 1 / 2 / 3; }
.rec-outer-div2 { grid-area: 2 / 1 / 4 / 3; }
.rec-outer-div3 { grid-area: 1 / 3 / 6 / 8; display: block; } /* Override flex to allow inner grid to fill */
.rec-outer-div4 { grid-area: 4 / 1 / 6 / 3; }
.rec-outer-div5 { grid-area: 6 / 1 / 8 / 4; }
.rec-outer-div6 { grid-area: 6 / 4 / 8 / 6; }
.rec-outer-div7 { grid-area: 6 / 6 / 8 / 8; }



/* Unified Panel Style for Inner Rec Divs */
.recruitment-inner-grid {
    display: grid;
    grid-template-columns: minmax(50px, 1fr) repeat(8, 1fr);
    grid-template-rows: repeat(5, 1fr);
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    height: 100%;
}

/* GRUPO 1.1: Contenedores que tienen IMÁGENES (Sin padding) (edificios) */
.rec-inner-div1, .rec-inner-div2, .rec-inner-div3 {
    border-radius: 8px;
    padding: 0; /* Sin padding para que la imagen toque los bordes */
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden; /* Para que la imagen respete el borde redondeado */
}

/* GRUPO 1.2: Contenedores que tienen IMÁGENES (Sin padding) (dioses) */
.rec-inner-div6, .rec-inner-div7, .rec-inner-div8, .rec-inner-div9, .rec-inner-div10, .rec-inner-div11, .rec-inner-div12, .rec-inner-div13 {
    border-radius: 8px;
    margin-top: 25px;
    padding: 0; /* Sin padding para que la imagen toque los bordes */
    display: flex;
    justify-content: center;
    align-items: end;
    overflow: hidden; /* Para que la imagen respete el borde redondeado */
}

/* GRUPO 2.1: Contenedores que tienen TEXTO (Con padding) (míticas) */
.rec-inner-div14, .rec-inner-div15, .rec-inner-div16, .rec-inner-div17, .rec-inner-div18, .rec-inner-div19, .rec-inner-div20, .rec-inner-div21 {
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px; /* Mantenemos padding para que el texto no toque los bordes */
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
}

/* GRUPO 2.2: Contenedores que tienen TEXTO (Con padding) (puerto y cuartel) */
.rec-inner-div4, .rec-inner-div5 {
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px; /* Mantenemos padding para que el texto no toque los bordes */
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    justify-items: center;
    align-items: center;
    gap: 10px;
}

/* Regla específica para las columnas de tropas (14 a 21) para que se apilen verticalmente */
.rec-inner-div14, .rec-inner-div15, .rec-inner-div16, .rec-inner-div17, .rec-inner-div18, .rec-inner-div19, .rec-inner-div20, .rec-inner-div21 {
    flex-direction: column;
}

.rec-inner-div1 { grid-area: 1 / 1 / 2 / 2; }
.rec-inner-div2 { grid-area: 2 / 1 / 3 / 2; }
.rec-inner-div3 { grid-area: 4 / 1 / 6 / 2; }
.rec-inner-div4 { grid-area: 1 / 2 / 2 / 10; }
.rec-inner-div5 { grid-area: 2 / 2 / 3 / 10; }
.rec-inner-div6 { grid-area: 3 / 2 / 4 / 3; }
.rec-inner-div7 { grid-area: 3 / 3 / 4 / 4; }
.rec-inner-div8 { grid-area: 3 / 4 / 4 / 5; }
.rec-inner-div9 { grid-area: 3 / 5 / 4 / 6; }
.rec-inner-div10 { grid-area: 3 / 6 / 4 / 7; }
.rec-inner-div11 { grid-area: 3 / 7 / 4 / 8; }
.rec-inner-div12 { grid-area: 3 / 8 / 4 / 9; }
.rec-inner-div13 { grid-area: 3 / 9 / 4 / 10; }
.rec-inner-div14 { grid-area: 4 / 2 / 6 / 3; }
.rec-inner-div15 { grid-area: 4 / 3 / 6 / 4; }
.rec-inner-div16 { grid-area: 4 / 4 / 6 / 5; }
.rec-inner-div17 { grid-area: 4 / 5 / 6 / 6; }
.rec-inner-div18 { grid-area: 4 / 6 / 6 / 7; }
.rec-inner-div19 { grid-area: 4 / 7 / 6 / 8; }
.rec-inner-div20 { grid-area: 4 / 8 / 6 / 9; }
.rec-inner-div21 { grid-area: 4 / 9 / 6 / 10; }

.rec-god-icon {
    width: 100%;
    height: 100%;
    object-fit: contain; /* o contain según lo que necesites */
    display: block;
    min-width: 90%;
    min-height: 100%;
}

.rec-building-icon {
    width: 70%;
    height: 70%;
    object-fit: contain; /* o contain según lo que necesites */
    display: block;
    min-width: 70%;
    min-height: 70%;
}

/* Unified Panel Style for Inner Rec Limits Divs */
.recruitment-limits-inner-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    grid-template-rows: 1fr;
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    height: 100%;
}

.rec-limits-inner-div1, .rec-limits-inner-div2, .rec-limits-inner-div3 {
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
}

.rec-limits-inner-div1 { grid-area: 1 / 1 / 2 / 4; }
.rec-limits-inner-div2 { grid-area: 1 / 4 / 2 / 5; }
.rec-limits-inner-div3 { grid-area: 1 / 5 / 2 / 6; }

/* Unified Panel Style for Inner Rec Modes Divs */
.recruitment-modes-inner-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: auto 1fr;
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    height: 100%;
}

.rec-modes-inner-div1, .rec-modes-inner-div2, .rec-modes-inner-div3 {
    position: relative;
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
    font-size: 0.9em;
    color: #e7d599;
    font-weight: normal;
}

.rec-modes-inner-div3 { grid-area: 1 / 1 / 2 / 3; }
.rec-modes-inner-div1 { grid-area: 2 / 1 / 3 / 2; }
.rec-modes-inner-div2 { grid-area: 2 / 2 / 3 / 3; }

/* -- NEW STYLES -- */
.rec-modes-inner-div3 {
    font-family: 'Georgia', serif;
    font-size: 1.2em;
    font-weight: bold;
    color: #e7d599;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    justify-content: center;
    align-items: center;
    overflow: hidden;
}


.recruitment-mode-img {
    max-width: 80%;
    max-height: 80%;
    object-fit: contain;
    cursor: pointer;
    transition: filter 0.3s ease, transform 0.2s ease;
}

.recruitment-mode-img:hover {
    transform: scale(1.05);
}

.recruitment-mode-inactive {
    filter: grayscale(100%);
    opacity: 0.6;
}

/** AQUI
/* Unified Panel Style for Inner Rec Methods Divs */
.recruitment-methods-inner-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: auto 1fr;
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    height: 100%;
}

.rec-methods-inner-div1, .rec-methods-inner-div2, .rec-methods-inner-div3, .rec-methods-inner-div4, .rec-methods-inner-div5 {
    position: relative;
    background-color: rgba(255, 255, 255, 0.05);
    border-radius: 8px;
    padding: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
    font-size: 0.9em;
    color: #e7d599;
    font-weight: normal;
}

.rec-methods-inner-div5 { grid-area: 1 / 1 / 2 / 5; }
.rec-methods-inner-div1 { grid-area: 2 / 1 / 3 / 2; }
.rec-methods-inner-div2 { grid-area: 2 / 2 / 3 / 3; }
.rec-methods-inner-div3 { grid-area: 2 / 3 / 3 / 4; }
.rec-methods-inner-div4 { grid-area: 2 / 4 / 3 / 5; }

/* -- NEW STYLES -- */
.rec-methods-inner-div5 {
    font-family: 'Georgia', serif;
    font-size: 1.2em;
    font-weight: bold;
    color: #e7d599;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    justify-content: center;
    align-items: center;
    overflow: hidden;
}


.recruitment-method-img {
    height: 100%;
    width: 100%;
    object-fit: contain;
    cursor: pointer;
    transition: filter 0.3s ease, transform 0.2s ease;
}

.recruitment-method-img:hover {
    transform: scale(1.05);
}

.recruitment-method-inactive {
    filter: grayscale(100%);
    opacity: 0.6;
}

/* Unit Card in Grid Context */
.rec-grid-unit-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%; /* Fixed width to ensure wrapping is predictable */
}

.rec-grid-unit-card img {
    width: 50px;
    height: 50px;
    object-fit: contain;
    cursor: pointer;
    transition: transform 0.1s;
}

.rec-grid-unit-card img:hover {
    transform: scale(1.1);
}

.rec-grid-unit-card input {
    width: 60px !important;
    text-align: center;
    padding: 4px !important;
    font-size: 0.9em;
    margin-top: 5px;
    background-color: var(--bg-light);
    border: 1px solid var(--border-color);
    color: var(--link-color) !important;
    font-weight: bold;
}

/* --- RECRUITMENT INFO PANEL --- */
#rec-info-panel {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    color: #e7d599;
    text-align: start;
    padding: 10px;
    box-sizing: border-box;
    font-size: 1em;
    font-weight: normal;
    padding-left: 20px;
    padding-right: 20px;
}

.label-modo, .label-metodo {
    font-weight: bold;
}

.rec-info-sec-1 {
    min-height: 2.4em;
    width: 100%;
    margin-top: 10px;
    margin-bottom: 15px;
    text-align: center;
}

.rec-info-sec-2 {
    margin-top: 20px;
    min-height: 2.4em;
    width: 100%;
    margin-bottom: 10px;
    font-size: 0.9em;
    padding-bottom: 5px;
}

.rec-info-sec-3 {
    width: 100%;
    font-size: 0.8em;
    flex-grow: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-style: italic;
    font-weight: 500;
    text-align: center;
}

/* --- CUSTOM TOOLTIPS --- */
.recruitment-tooltip {
    visibility: hidden;
    opacity: 0;
    position: absolute;
    bottom: 110%; /* Posicionado justo encima de la imagen */
    left: 50%;
    transform: translateX(-50%);
    background-color: rgba(0, 0, 0, 0.9);
    color: #e7d599;
    text-align: left;
    padding: 10px 12px;
    border-radius: 6px;
    border: 1px solid rgba(231, 213, 153, 0.3);
    width: 250px; /* Ancho para el texto del tooltip */
    font-size: 0.9em;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: normal;
    z-index: 100;
    pointer-events: none;
    box-shadow: 0 4px 6px rgba(0,0,0,0.5);
    transition: opacity 0.3s ease 0.35s, visibility 0.3s ease 0.35s; /* Delay de 0.35s en hover */
}

/* Flecha del tooltip */
.recruitment-tooltip::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: rgba(231, 213, 153, 0.3) transparent transparent transparent;
}

.rec-modes-inner-div1:hover .recruitment-tooltip,
.rec-modes-inner-div2:hover .recruitment-tooltip,
.rec-methods-inner-div1:hover .recruitment-tooltip,
.rec-methods-inner-div2:hover .recruitment-tooltip,
.rec-methods-inner-div3:hover .recruitment-tooltip,
.rec-methods-inner-div4:hover .recruitment-tooltip {
    visibility: visible;
    opacity: 1;
}


/* Tooltip alignment for edge columns to prevent clipping */
/* First columns: align left */
.rec-modes-inner-div1 .recruitment-tooltip,
.rec-methods-inner-div1 .recruitment-tooltip {
    left: 0%;
    transform: none;
}
.rec-modes-inner-div1 .recruitment-tooltip::after,
.rec-methods-inner-div1 .recruitment-tooltip::after {
    left: 20px; /* Adjust pointer arrow to roughly center over image */
    margin-left: 0;
    transform: none;
}

/* Last columns: align right */
.rec-modes-inner-div2 .recruitment-tooltip,
.rec-methods-inner-div4 .recruitment-tooltip {
    left: auto;
    right: 0%;
    transform: none;
}
.rec-modes-inner-div2 .recruitment-tooltip::after,
.rec-methods-inner-div4 .recruitment-tooltip::after {
    left: auto;
    right: 20px;
    margin-left: 0;
    transform: none;
}

/* Ratio vs Fixed Button Layout */
.rec-input-container {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    width: 100%;
    gap: 2px;
}

.rec-input-adjusted {
    width: 70%;
    padding: 2px;
}

.rec-ratio-btn {
    width: 30%;
    height: 20px;
    font-size: 10px;
    padding: 0;
    cursor: pointer;
}

/* --- Modal y Contenedor Overlay --- */
.log-modal-overlay {
    position: fixed;
    top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(10, 10, 15, 0.85);
    backdrop-filter: blur(5px);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999;
}
.log-modal-overlay.hidden {
    display: none;
}

/* --- Terminal Premium Oscura --- */
.log-terminal-container {
    width: 90%;
    max-width: 1200px;
    height: 85vh;
    background: #0d0d12;
    border: 1px solid #2a2a35;
    border-radius: 8px;
    box-shadow: 0 0 30px rgba(0, 255, 204, 0.1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.log-terminal-header {
    background: #15151e;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid #2a2a35;
}
.log-terminal-header h3 {
    margin: 0;
    color: #fff;
    font-family: monospace;
    letter-spacing: 1px;
}
.close-btn {
    background: transparent;
    border: none;
    color: #ff3366;
    font-weight: bold;
    cursor: pointer;
    font-size: 16px;
    transition: text-shadow 0.2s;
}
.close-btn:hover {
    text-shadow: 0 0 8px #ff3366;
}

/* --- Consola y Colores Semánticos (Acentos Neón) --- */
.log-terminal-content {
    padding: 20px;
    overflow-y: auto;
    font-family: 'Courier New', Courier, monospace;
    font-size: 19px; /* <-- Cambiado a 19px */
    line-height: 1.5;
    color: #a0a0b0; 
}
.log-line { margin-bottom: 2px; }

/* Paleta de Resaltado */
.log-tick { color: #00ffcc; font-weight: bold; margin-top: 15px; } /* Cian Neón */
.log-res-plus { color: #39ff14; } /* Verde Neón */
.log-res-minus { color: #ff3366; } /* Rosa/Rojo Neón */
.log-build { color: #ffcc00; } /* Ámbar */
.log-recruit { color: #b84dff; font-weight: bold;} /* Púrpura */
.log-culture { color: #00ccff; } /* Azul Claro */
.log-warning { color: #ff6600; font-style: italic; } /* Naranja */

/* --- Controles de la cabecera --- */
.log-terminal-controls {
    display: flex;
    gap: 15px;
    align-items: center;
}

.control-btn {
    background: transparent;
    border: 1px solid #2a2a35;
    color: #00ffcc; /* Cian Neón */
    border-radius: 4px;
    padding: 4px 10px;
    cursor: pointer;
    font-family: monospace;
    font-size: 14px;
    transition: all 0.2s ease-in-out;
}

.control-btn:hover {
    background: #1a1a24;
    border-color: #00ffcc;
    box-shadow: 0 0 8px rgba(0, 255, 204, 0.4);
}

#confirm-modal-ok-container button, 
#confirm-modal-cancel-container button {
    min-width: 100px;
}