:root {
    --color-primary: #0a1f44;
    --color-secondary: #ff6f4c;
    --color-text: #333;
    --color-text-light: #ffffff;
    --color-bg-light: #ffffff;
    --color-bg-page: #f0f2f5;
    --color-success: #2ecc71;
    --color-danger: #e74c3c;
    --color-info: #3498db;
    --color-border: #cccccc;
    --color-warning: #f39c12;
}

/* ==========================================================================
   1. Layout General y Contenedores
   ========================================================================== */

body {
    font-family: 'Arial', sans-serif;
    background-color: var(--color-bg-page);
    color: var(--color-text);
    margin: 0;
    padding: 0;
}

/* Contenedor principal para páginas de dashboard (ventas, stock, etc.) */
.container {
    max-width: 1200px;
    margin: 20px auto;
    background: var(--color-bg-light);
    padding: 20px;
    border-radius: 10px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

/* Contenedor principal para la vista de la app móvil */
.mobile-container {
    width: 100%;
    max-width: 450px;
    background-color: var(--color-bg-light);
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    position: relative;
    margin: 0 auto;
}

.main-wrapper {
    display: flex;
    flex-direction: column;
    flex-grow: 1;
    overflow: hidden;
}

.top-header {
    background-color: var(--color-primary);
    color: var(--color-text-light);
    padding: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: sticky;
    top: 0;
    z-index: 10;
}

.app-title {
    font-size: 18px;
    font-weight: bold;
}

.content-area {
    flex-grow: 1;
    padding: 15px;
    overflow-y: auto;
}

/* Layout para páginas con sidebar (ej. notifications_log.php) */
.main-container {
    display: flex;
    height: 100vh;
}

.sidebar {
    width: 280px;
    background-color: #fff;
    box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    padding: 20px;
    border-right: 1px solid #eee;
    flex-shrink: 0;
}

.content {
    flex-grow: 1;
    padding: 20px;
    overflow-y: auto;
}


/* ==========================================================================
   2. Tipografía y Títulos
   ========================================================================== */

h1, h2 {
    color: var(--color-primary);
    border-bottom: 3px solid var(--color-secondary);
    padding-bottom: 10px;
    margin-bottom: 20px;
}

h1 {
    font-size: 24px;
    margin-top: 0;
}

h2 {
    font-size: 20px;
    margin-top: 0;
    display: flex;
    align-items: center;
    gap: 10px;
}


/* ==========================================================================
   3. Modales
   ========================================================================== */

.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    padding: 10px 0;
}

.modal-content {
    background: var(--color-bg-light);
    padding: 20px;
    border-radius: 10px;
    width: 90%;
    max-width: 450px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
    animation: fadeIn 0.3s ease-out;
    max-height: 85vh;
    overflow-y: auto;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.modal-content h3 {
    margin-top: 0;
    border-bottom: 2px solid var(--color-secondary);
    padding-bottom: 5px;
    color: var(--color-primary);
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
}

.modal-btn {
    padding: 10px 18px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-weight: bold;
    font-size: 1em;
    transition: background-color 0.2s;
}

.modal-btn.primary {
    background-color: var(--color-success);
    color: var(--color-text-light);
}

.modal-btn.secondary {
    background-color: var(--color-danger);
    color: var(--color-text-light);
}

.modal-btn.cancel {
    background-color: #6c757d;
    color: var(--color-text-light);
}

.modal-actions.spaced {
    justify-content: space-between;
    flex-wrap: wrap;
}

.modal-actions.spaced .modal-btn {
    flex-grow: 1;
    margin: 5px 0;
}

.modal-actions.spaced .modal-btn.cancel {
    flex-grow: 0;
    width: 100px;
    margin-right: 10px;
}

/* Modal de Bloqueo */
.blocked-modal .modal-content {
    background-color: var(--color-danger);
    color: white;
    text-align: center;
}

.blocked-modal h3 {
    color: white;
    border-bottom-color: rgba(255, 255, 255, 0.5);
}

.blocked-modal .fa-user-lock {
    font-size: 48px;
    margin-bottom: 15px;
}


/* ==========================================================================
   4. Formularios y Controles
   ========================================================================== */

.modal-content label, .filter-group label {
    display: block;
    margin-top: 10px;
    font-weight: bold;
}

.modal-content input,
.modal-content textarea,
.modal-content select,
.filter-group input,
.filter-group select {
    width: calc(100% - 22px);
    padding: 10px;
    margin-top: 5px;
    border: 1px solid var(--color-border);
    border-radius: 5px;
    font-size: 1em;
    box-sizing: border-box;
}

.modal-content input[type="number"] {
    width: 80px;
    text-align: center;
}

.controls-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 15px;
}

.search-box {
    display: flex;
    align-items: center;
    background-color: rgba(255, 255, 255, 0.15);
    border-radius: 5px;
    padding: 5px 10px;
    flex-grow: 1;
    margin-left: 15px;
}

.search-box input {
    background: none;
    border: none;
    color: var(--color-text-light);
    margin-left: 5px;
    outline: none;
    width: 100%;
}


/* ==========================================================================
   5. Botones
   ========================================================================== */

.btn-add {
    background-color: var(--color-success);
    color: var(--color-text-light);
    border: none;
    padding: 8px 12px;
    border-radius: 5px;
    cursor: pointer;
    font-weight: bold;
}

.btn-action {
    color: white;
    border: none;
    padding: 10px 15px;
    font-size: 1em;
    font-weight: bold;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.2s;
}

.action-btn {
    background-color: transparent;
    border: none;
    cursor: pointer;
    font-size: 16px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    transition: background-color 0.2s;
}

.add-btn { color: var(--color-success); }
.edit-btn { color: var(--color-info); }
.delete-btn { color: var(--color-danger); }


/* ==========================================================================
   6. Tablas de Datos
   ========================================================================== */

.table-container {
    width: 100%;
    overflow-x: auto;
}

.data-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 15px;
}

.data-table th,
.data-table td {
    padding: 12px;
    text-align: left;
    border-bottom: 1px solid #eee;
}

.data-table th {
    background-color: var(--color-primary);
    color: white;
    position: sticky;
    top: 0;
}

.data-table tr:nth-child(even) {
    background-color: #f9f9f9;
}

.no-data {
    text-align: center;
    padding: 30px;
    color: #777;
    font-size: 1.2em;
}


/* ==========================================================================
   7. Elementos Específicos de Módulos
   ========================================================================== */

/* --- Mensaje de Feedback --- */
#action-message {
    background-color: var(--color-info);
    color: var(--color-text-light);
    padding: 12px;
    text-align: center;
    margin-bottom: 15px;
    border-radius: 5px;
    display: none;
    font-weight: bold;
}

/* --- Módulo: index.php (Menú, Mesas, Cocina) --- */
.main-nav {
    background-color: var(--color-primary);
    display: flex;
    justify-content: space-around;
    padding: 5px 0;
    box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
    position: sticky;
    bottom: 0;
    z-index: 10;
    order: 2;
}

.nav-item {
    color: #aaa;
    text-align: center;
    padding: 8px 0;
    flex: 1;
    cursor: pointer;
    transition: color 0.3s, background-color 0.3s;
}

.nav-item.active {
    color: var(--color-secondary);
}

.nav-item i {
    font-size: 22px;
    display: block;
    margin-bottom: 2px;
}

.nav-item span {
    font-size: 12px;
    font-weight: bold;
}

.page-section { display: none; }
.page-section.active { display: block; }

.platos-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.plato-card {
    background-color: var(--color-bg-light);
    border: 1px solid #eee;
    border-radius: 8px;
    padding: 12px 15px;
    margin-bottom: 10px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.plato-info { display: flex; align-items: center; }
.plato-info i { font-size: 20px; margin-right: 15px; color: #555; }
.plato-details strong { display: block; font-size: 16px; color: var(--color-primary); }
.plato-details span { font-size: 14px; color: #777; }
.plato-actions { display: flex; gap: 5px; flex-shrink: 0; }
.plato-card.selected-for-assign { border: 2px solid var(--color-secondary); box-shadow: 0 0 10px rgba(255, 111, 76, 0.5); background-color: #fff8f5; }

.plato-group { margin-bottom: 25px; }
.plato-group-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 18px;
    color: var(--color-text);
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 8px;
    margin-bottom: 15px;
    font-weight: bold;
}
.plato-group-title i { color: var(--color-secondary); font-size: 20px; }

.mesas-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); gap: 10px; padding: 5px; }
.mesa-item { position: relative; background-color: var(--color-bg-light); border: 1px solid var(--color-border); border-radius: 8px; padding: 15px 5px; text-align: center; cursor: pointer; transition: background-color 0.2s, border-color 0.2s; }
.mesa-item.ocupada { background-color: var(--color-secondary); color: var(--color-text-light); border-color: var(--color-secondary); }
.mesa-item.mesa-selectable { animation: pulse-border 1s infinite alternate; }
@keyframes pulse-border { from { border-color: var(--color-info); } to { border-color: var(--color-secondary); } }
.mesa-number { font-weight: bold; font-size: 22px; }
.mesa-details { font-size: 12px; margin-top: 5px; word-wrap: break-word; min-height: 20px; }
.mesa-waiter { font-size: 11px; margin-top: 4px; opacity: 0.8; display: flex; align-items: center; justify-content: center; gap: 4px; }

.orden-card { background-color: var(--color-bg-light); border: 1px solid #ccc; border-radius: 8px; margin-bottom: 15px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); }
.orden-header { background-color: var(--color-primary); color: var(--color-text-light); padding: 10px 15px; border-radius: 8px 8px 0 0; display: flex; justify-content: space-between; align-items: center; }
.orden-header.high-priority { background-color: var(--color-danger); }
.orden-header.medium-priority { background-color: var(--color-warning); }
.orden-items { padding: 10px 15px; }
.plato-cocina-item { display: flex; justify-content: space-between; align-items: center; padding: 5px 0; border-bottom: 1px dashed #eee; }
.plato-cocina-item:last-child { border-bottom: none; }
.plato-cantidad { font-weight: bold; color: var(--color-secondary); margin-right: 10px; }
.btn-servir { background-color: var(--color-info); color: var(--color-text-light); border: none; padding: 5px 10px; border-radius: 5px; cursor: pointer; font-size: 12px; margin-top: 5px; transition: background-color 0.2s; }
.btn-servir:hover { background-color: #2980b9; }
.btn-servir-todo { background: none; border: none; color: white; font-size: 18px; cursor: pointer; opacity: 0.8; transition: opacity 0.2s; }
.btn-servir-todo:hover { opacity: 1; }
.plato-comment { font-size: 12px; color: #555; font-style: italic; padding-left: 25px; }
.time-ago { font-size: 12px; font-style: italic; opacity: 0.8; }
.orden-header-actions { display: flex; align-items: center; gap: 15px; }
.btn-print-comanda { background: none; border: none; color: white; font-size: 18px; cursor: pointer; opacity: 0.8; transition: opacity 0.2s; }
.btn-print-comanda:hover { opacity: 1; }

.info-display-box { margin-bottom: 20px; padding: 10px; border: 1px solid var(--color-border); border-radius: 5px; }
.info-display-box p {
    margin: 0;
}


.mesa-item.mesa-seleccionada { border: 2px solid var(--color-success); box-shadow: 0 0 10px rgba(46, 204, 113, 0.5); background-color: #f0fff5; }
.btn-select-mesa { position: absolute; top: 5px; right: 5px; background-color: #eee; border: 1px solid #ccc; color: #555; width: 28px; height: 28px; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; z-index: 5; }
.btn-select-mesa:hover { background-color: #ddd; }
.btn-select-mesa.active { background-color: var(--color-success); color: white; border-color: var(--color-success); }

/* --- Módulo: Notificaciones --- */
.notifications-bell { position: relative; cursor: pointer; margin-left: 15px; }
.notification-dot { position: absolute; top: -3px; right: -3px; width: 10px; height: 10px; background-color: var(--color-danger); border-radius: 50%; border: 2px solid var(--color-primary); display: none; }
#notifications-panel { display: none; position: absolute; top: 50px; right: 15px; width: 300px; max-height: 400px; overflow-y: auto; background-color: white; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); z-index: 1001; border: 1px solid #ddd; }
.notification-item { padding: 12px 15px; border-bottom: 1px solid #eee; font-size: 13px; color: #333; }
.notification-item:last-child { border-bottom: none; }
.notification-item strong { color: var(--color-danger); }
.notification-item .time { display: block; font-size: 11px; color: #888; margin-top: 4px; }
.notification-item .delete-notif { float: right; color: #aaa; cursor: pointer; padding: 10px; margin: -10px; font-size: 1.1em; }
.notifications-header { padding: 12px 15px; font-weight: bold; border-bottom: 1px solid #ddd; background-color: #f9f9f9; }
.no-notifications { padding: 20px; text-align: center; color: #888; }

/* --- Módulo: Stock --- */
.stock-bar-container { width: 100%; background-color: #e0e0e0; border-radius: 5px; height: 8px; margin-top: 4px; overflow: hidden; }
.stock-bar { height: 100%; border-radius: 5px; transition: width 0.5s ease-in-out; }
.stock-bar.high { background-color: var(--color-success); }
.stock-bar.medium { background-color: var(--color-warning); }
.stock-bar.low { background-color: var(--color-danger); }
.stock-low { background-color: #fff3f3; color: var(--color-text); }
.stock-low > td { font-weight: bold; }
.stock-deleted { background-color: #f8f9fa; opacity: 0.6; text-decoration: line-through; }

/* --- Módulo: Ventas --- */
.summary-card { background-color: var(--color-primary); color: white; padding: 15px; border-radius: 8px; text-align: center; margin-bottom: 20px; display: flex; justify-content: space-around; flex-wrap: wrap; }
.summary-item strong { display: block; font-size: 2em; }
.summary-item span { font-size: 0.9em; opacity: 0.8; }
.venta-anulada { text-decoration: line-through; color: var(--color-danger); background-color: #fff3f3 !important; }
.btn-toggle-delete { background: var(--color-danger); color: white; border: none; border-radius: 5px; padding: 5px 8px; cursor: pointer; margin-left: 5px; }
.btn-toggle-delete.restore { background: var(--color-success); }

/* --- Módulo: Launcher --- */
.launcher-grid { display: grid; grid-template-columns: 1fr; gap: 15px; }
.launcher-btn { display: flex; align-items: center; justify-content: flex-start; gap: 15px; padding: 20px; font-size: 18px; font-weight: bold; color: var(--color-text-light); background-color: var(--color-info); border: none; border-radius: 8px; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; text-decoration: none; text-align: left; width: 100%; box-sizing: border-box; }
.launcher-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15); }
.launcher-btn i { font-size: 24px; width: 30px; text-align: center; }

/* --- Módulo: Reservas --- */
.view-toggle-container { display: flex; align-items: center; gap: 8px; font-weight: bold; }
.view-toggle-switch { position: relative; display: inline-block; width: 50px; height: 24px; }
.view-toggle-switch input { display: none; }
.view-toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--color-primary); transition: .4s; border-radius: 24px; }
.view-toggle-slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; }
input:checked + .view-toggle-slider { background-color: var(--color-secondary); }
input:checked + .view-toggle-slider:before { transform: translateX(26px); }
#reservas-grid-view { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 15px; }
.reserva-grid-item { border-radius: 8px; padding: 10px; text-align: center; cursor: pointer; transition: all 0.2s; min-height: 100px; display: flex; flex-direction: column; justify-content: center; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.reserva-grid-item:hover { transform: translateY(-3px); box-shadow: 0 4px 8px rgba(0,0,0,0.1); }
.grid-mesa-id { font-weight: bold; font-size: 1.3em; margin-bottom: 5px; }
.grid-reserva-details { font-size: 0.9em; display: flex; flex-direction: column; }
.reserva-grid-item.reservada { background-color: var(--color-secondary); color: white; border: 2px solid var(--color-secondary); }
.reserva-grid-item.reservada .grid-mesa-id { color: white; }
.reserva-grid-item.reservada strong { color: white; }
.reserva-grid-item.libre { background-color: #f8f8f8; color: #aaa; border: 2px dashed #ccc; }
.reserva-grid-item.libre .grid-mesa-id { color: var(--color-success); }
.reserva-grid-item.libre .fa-plus-circle { font-size: 1.5em; color: var(--color-success); }

/* --- Módulo: Notifications Log --- */
.sidebar.updating { animation: pulse-bg 0.5s ease-out; }
@keyframes pulse-bg { from { background-color: #e8f4ff; } to { background-color: #fff; } }
.waiter-item { display: flex; align-items: center; justify-content: space-between; padding: 10px; border-radius: 5px; margin-bottom: 8px; background-color: #f9f9f9; }
.waiter-info { display: flex; align-items: center; gap: 10px; font-weight: bold; }
.waiter-status-icon { font-size: 1.2em; }
.waiter-status-icon.active { color: var(--color-success); }
.waiter-status-icon.recent { color: var(--color-warning); }
.waiter-status-icon.offline { color: #95a5a6; }
.waiter-actions { display: flex; gap: 8px; }
.waiter-actions button { background: var(--color-info); color: white; border: none; border-radius: 50%; width: 30px; height: 30px; cursor: pointer; font-size: 14px; }
.btn-toggle-block.blocked { background-color: var(--color-danger) !important; }
.btn-broadcast { width: 100%; padding: 12px; background-color: var(--color-secondary); color: white; border: none; border-radius: 5px; font-weight: bold; cursor: pointer; margin-top: 15px; }
.read-by-tag {
    background-color: #e9ecef;
    color: #495057;
    padding: 2px 6px;
    border-radius: 4px;
    font-size: 0.85em;
    font-family: monospace;
    margin-right: 4px;
    display: inline-block;
    margin-bottom: 4px;
}


/* ==========================================================================
   8. Media Queries y Responsividad
   ========================================================================== */

@media (min-width: 768px) {
    /* Layout General */
    .mobile-container { flex-direction: row; max-width: 1400px; width: 95%; min-height: calc(100vh - 40px); margin: 20px auto; border-radius: 10px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); overflow: hidden; }
    .main-wrapper { flex-grow: 1; }
    .top-header { position: static; border-radius: 0 10px 0 0; }
    .content-area { padding: 25px; }

    /* Navegación Principal */
    .main-nav { order: 1; position: static; flex-direction: column; width: 180px; flex-shrink: 0; justify-content: flex-start; padding: 20px 0; box-shadow: none; }
    .nav-item { display: flex; align-items: center; justify-content: flex-start; padding: 15px 20px; text-align: left; flex-grow: 0; }
    .nav-item:hover { background-color: rgba(255, 255, 255, 0.05); }
    .nav-item.active { background-color: rgba(0,0,0,0.2); }
    .nav-item i { margin-right: 15px; margin-bottom: 0; font-size: 20px; width: 25px; }
    .nav-item span { font-size: 14px; }

    /* Grids y Listas */
    #platos-list, #cocina-pedidos { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; }
    .plato-card, .orden-card { margin-bottom: 0; }
    #platos-list { display: block; }
    .plato-group-items { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 15px; }
    .mesas-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 20px; }
    .mesa-number { font-size: 28px; }
    .mesa-details { font-size: 14px; }
    .launcher-grid { grid-template-columns: 1fr 1fr; }

    /* Paneles */
    #notifications-panel { width: 350px; }
    .main-container { flex-direction: row; }
    .sidebar { width: 320px; }
    .content { padding: 25px; }

    /* Tablas Responsivas (para Stock) */
    .data-table.responsive thead { display: table-header-group; }
    .data-table.responsive tr { display: table-row; margin-bottom: 0; border: 0; box-shadow: none; }
    .data-table.responsive td { display: table-cell; justify-content: flex-start; padding: 12px; text-align: left; border-bottom: 1px solid #eee; }
    .data-table.responsive td::before { content: none; }
    .data-table.responsive td.actions-cell .action-btn { flex-grow: 0; padding: 5px; font-size: 1.1em; border-radius: 50%; color: initial; background-color: transparent; }
    .data-table.responsive td.actions-cell .btn-edit { color: var(--color-info); }
    .data-table.responsive td.actions-cell .btn-delete { color: var(--color-danger); }
}

@media (max-width: 767px) {
    body { padding: 0; }
    .container { margin: 0; padding: 15px; border-radius: 0; box-shadow: none; }
    #notifications-panel { width: calc(100% - 30px); }
    .main-container { flex-direction: column; }
    .sidebar { width: 100%; height: auto; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
    .content { padding: 15px; }

    /* Tabla Responsiva para Móviles (Stock) */
    .data-table.responsive { border: 0; }
    .data-table.responsive thead { display: none; }
    .data-table.responsive tr { display: block; margin-bottom: 15px; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
    .data-table.responsive td { display: flex; justify-content: space-between; align-items: center; padding: 10px 15px; text-align: right; border-bottom: 1px solid #eee; }
    .data-table.responsive td:last-child { border-bottom: 0; }
    .data-table.responsive td::before { content: attr(data-label); float: left; font-weight: bold; text-align: left; }
    .data-table.responsive td.actions-cell { padding: 5px; }
    .data-table.responsive td.actions-cell .action-btn { flex-grow: 1; padding: 10px; font-size: 1em; border-radius: 5px; color: white; }
    .data-table.responsive td.actions-cell .btn-edit { background-color: var(--color-info); }
    .data-table.responsive td.actions-cell .btn-delete { background-color: var(--color-danger); margin-left: 5px; }
}