/* ============================================================ ADMIN & POS STYLES ============================================================ */ :root { --primary-color: #2563eb; --primary-hover: #1d4ed8; --bg-card: #ffffff; --text-main: #1f2937; --text-muted: #6b7280; --border-color: #e5e7eb; --danger: #ef4444; --success: #10b981; --warning: #f59e0b; --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } /* ADMIN TABLES */ .admin-table { width: 100%; border-collapse: collapse; background: white; font-size: 14px; } .admin-table th { background: var(--color-ink); color: white; padding: 10px; text-align: left; font-size: 13px; font-weight: 700; } .admin-table td { padding: 10px; border-bottom: 1px solid var(--color-gray-200); } .admin-table tbody tr:hover { background-color: var(--color-gray-50); } /* ADMIN TABS */ .admin-tab { padding: 10px 20px; border: none; background: transparent; cursor: pointer; font-weight: 600; font-size: 14px; color: var(--color-gray-500); transition: all 0.2s; border-bottom: 3px solid transparent; margin-bottom: -3px; } .admin-tab:hover { color: var(--color-ink); } .admin-tab.active { border-bottom-color: var(--color-brand); color: var(--color-brand); font-weight: 800; } /* ADMIN SECTIONS */ .admin-section.active { /* Se mantiene para estado semántico; la visibilidad se controla con la clase `hidden`. */ } /* POS SPECIFIC */ .pos-container { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; height: 100%; padding: 20px; } .pos-left { display: flex; flex-direction: column; gap: 12px; overflow-y: auto; } .pos-right { display: flex; flex-direction: column; background: var(--color-pos-bg); border-radius: 12px; padding: 20px; color: var(--color-pos-text); position: sticky; top: 0; } /* POS DISPLAY */ .pos-display { background: linear-gradient(135deg, #2d2d2d 0%, #1a1a1a 100%); border: 3px solid var(--color-pos-gold); border-radius: 8px; padding: 16px; text-align: center; margin-bottom: 20px; box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.5), 0 0 20px rgba(255, 215, 0, 0.1); } .pos-display-label { font-size: 12px; color: var(--color-pos-gold); font-weight: 700; letter-spacing: 2px; margin-bottom: 8px; text-transform: uppercase; } .pos-display-value { font-family: 'Courier New', monospace; font-size: 36px; font-weight: 800; color: var(--color-pos-gold); text-shadow: 0 0 10px rgba(255, 215, 0, 0.3); word-break: break-all; } /* POS TICKET */ .pos-ticket { flex: 1; overflow-y: auto; background: white; border-radius: 8px; padding: 12px; margin-bottom: 20px; border: 1px solid var(--color-gray-200); font-size: 13px; } .pos-ticket-item { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--color-gray-100); font-size: 12px; color: var(--color-ink); } .pos-ticket-item.header { font-weight: 700; color: var(--color-brand); border-bottom: 2px solid var(--color-brand); margin-bottom: 8px; } .pos-ticket-empty { text-align: center; padding: 40px 0; color: var(--color-gray-400); font-style: italic; } /* POS CUSTOMER SELECT */ .pos-customer-select { background: white; border-radius: 8px; padding: 12px; margin-bottom: 16px; } .pos-customer-select label { display: block; font-weight: 700; font-size: 12px; color: var(--color-pos-text); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 1px; } .pos-customer-select select { width: 100%; background: var(--color-gray-50); border: 1px solid var(--color-gray-200); border-radius: 6px; padding: 8px; font-size: 13px; color: var(--color-ink); } /* POS TYPE SELECT */ .pos-type-select { background: white; border-radius: 8px; padding: 12px; margin-bottom: 16px; } .pos-type-label { display: block; font-weight: 700; font-size: 12px; color: var(--color-pos-text); margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px; } .pos-type-options { display: flex; gap: 12px; } .radio-option { flex: 1; display: flex; align-items: center; gap: 6px; padding: 8px 12px; border: 2px solid var(--color-gray-200); border-radius: 6px; cursor: pointer; transition: all 0.2s; background: white; } .radio-option:hover { border-color: var(--color-brand); } .radio-option input[type="radio"] { cursor: pointer; } .radio-option input[type="radio"]:checked { accent-color: var(--color-brand); } .radio-option.checked { border-color: var(--color-brand); background: rgba(245, 192, 0, 0.05); } /* POS BUTTONS */ .pos-buttons { display: flex; gap: 10px; } .pos-buttons .btn { flex: 1; padding: 12px 16px; font-size: 13px; font-weight: 700; border-radius: 6px; } .pos-btn-process { background: var(--color-success); color: white; } .pos-btn-process:hover { background: #059669; } .pos-btn-print { background: var(--color-brand); color: var(--color-ink); } .pos-btn-print:hover { background: var(--color-brand-dark); } .pos-btn-cancel { background: var(--color-gray-300); color: var(--color-ink); } .pos-btn-cancel:hover { background: var(--color-gray-400); } /* POS ITEMS COUNT */ .pos-items-count { text-align: center; padding: 8px; background: rgba(255, 215, 0, 0.1); border-radius: 6px; font-weight: 700; font-size: 14px; color: var(--color-pos-gold); margin-bottom: 12px; border: 1px solid rgba(255, 215, 0, 0.2); } /* SEARCH INPUT ADMIN */ .admin-search { width: 100%; padding: 10px 16px; border: 2px solid var(--color-gray-200); border-radius: 8px; font-size: 14px; transition: border-color 0.2s; } .admin-search:focus { outline: none; border-color: var(--color-brand); } /* PRODUCT LIST */ .admin-prod-item { display: flex; align-items: center; justify-content: space-between; background: var(--color-gray-50); padding: 12px; border-radius: 8px; border: 1px solid var(--color-gray-200); gap: 12px; } .admin-prod-item-info { flex: 1; min-width: 0; } .admin-prod-item-name { font-weight: 700; font-size: 13px; margin: 0; color: var(--color-ink); } .admin-prod-item-meta { font-size: 11px; color: var(--color-gray-500); margin: 4px 0 0; } .pos-category-filters { display: flex; gap: 8px; flex-wrap: wrap; } .pos-category-btn { border: 1px solid var(--color-gray-200); background: white; color: var(--color-gray-600); border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 700; cursor: pointer; transition: all 0.2s ease; } .pos-category-btn:hover { border-color: var(--color-brand); color: var(--color-ink); } .pos-category-btn.active { background: rgba(245, 192, 0, 0.14); border-color: var(--color-brand); color: var(--color-ink); } /* Product Card Grid for POS */ #admin-prod-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } @media (min-width: 1024px) { #admin-prod-list { grid-template-columns: repeat(4, minmax(0, 1fr)); } } .pos-no-results { margin-top: 10px; font-size: 12px; text-align: center; font-weight: 700; color: var(--color-gray-500); } /* ACTIONS */ .actions { display: flex; gap: 8px; } .action-btn { padding: 6px 12px; font-size: 12px; font-weight: 700; border: none; border-radius: 4px; cursor: pointer; transition: all 0.2s; } .action-btn-edit { background: var(--color-info); color: white; } .action-btn-edit:hover { background: #2563eb; } .action-btn-delete { background: var(--color-error); color: white; } .action-btn-delete:hover { background: #dc2626; } .action-btn-view { background: var(--color-gray-300); color: var(--color-ink); } .action-btn-view:hover { background: var(--color-gray-400); } /* STOCK WARNING */ .stock-warning { color: var(--color-error); font-weight: 700; } .stock-ok { color: var(--color-success); font-weight: 700; } /* FILTER BAR */ .filter-bar { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; padding: 12px; background: white; border-radius: 8px; border: 1px solid var(--color-gray-200); } .filter-bar-group { display: flex; gap: 8px; align-items: center; } .filter-bar-label { font-weight: 600; font-size: 12px; color: var(--color-gray-600); } .filter-bar select, .filter-bar input { padding: 6px 10px; border: 1px solid var(--color-gray-200); border-radius: 4px; font-size: 12px; } /* ADMIN NAVIGATION (DESKTOP + MOBILE) */ :root { --admin-nav-width-expanded: 248px; --admin-nav-width-collapsed: 84px; --admin-mobile-nav-height: 74px; } #nav-admin { display: block; } .admin-nav-desktop { display: none; } .admin-nav-mobile { position: fixed; left: 0; right: 0; bottom: 0; z-index: 55; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); border-top: 1px solid #dbeafe; background: rgba(239, 246, 255, 0.98); backdrop-filter: blur(8px); } .admin-mobile-link { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; padding: 6px 4px; border-radius: 10px; color: #4b5563; text-decoration: none; transition: background-color 0.2s ease, color 0.2s ease; } .admin-mobile-link .admin-nav-icon { width: 21px; height: 21px; } .admin-mobile-label { font-size: 11px; font-weight: 700; line-height: 1.1; } .admin-mobile-link.active { color: #1d4ed8; background: #dbeafe; } body.admin-nav-present #view-admin { padding-bottom: calc(var(--admin-mobile-nav-height) + env(safe-area-inset-bottom)); } @media (min-width: 1024px) { .admin-nav-mobile { display: none; } .admin-nav-desktop { position: fixed; top: 92px; left: 0; bottom: 0; z-index: 30; display: flex; flex-direction: column; width: var(--admin-nav-width-expanded); padding: 12px 10px; border-right: 1px solid #dbeafe; background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%); transition: width 0.24s ease; overflow: hidden; } body.admin-nav-collapsed .admin-nav-desktop { width: var(--admin-nav-width-collapsed); } .admin-nav-desktop-header { display: flex; align-items: center; justify-content: space-between; padding: 4px 8px 10px; } .admin-nav-title { color: #1e3a8a; font-weight: 800; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; transition: opacity 0.2s ease; } .admin-nav-toggle { border: 0; width: 28px; height: 28px; border-radius: 8px; background: #dbeafe; color: #1d4ed8; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; } .admin-nav-toggle svg { width: 16px; height: 16px; transition: transform 0.2s ease; } body.admin-nav-collapsed .admin-nav-toggle svg { transform: rotate(180deg); } .admin-nav-links { display: flex; flex-direction: column; gap: 4px; padding-top: 8px; } .admin-nav-link { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 9px 10px; border-radius: 10px; color: #374151; text-decoration: none; font-weight: 700; transition: background-color 0.2s ease, color 0.2s ease; } .admin-nav-icon { width: 20px; height: 20px; flex-shrink: 0; display: inline-flex; } .admin-nav-icon svg { width: 100%; height: 100%; } .admin-nav-label { white-space: nowrap; transition: opacity 0.2s ease; } .admin-nav-link:hover { color: #1d4ed8; background: #e0e7ff; } .admin-nav-link.active { color: #1d4ed8; background: #dbeafe; } body.admin-nav-present #view-admin { margin-left: var(--admin-nav-width-expanded); transition: margin-left 0.24s ease; padding-bottom: 0; } body.admin-nav-present.admin-nav-collapsed #view-admin { margin-left: var(--admin-nav-width-collapsed); } body.admin-nav-collapsed .admin-nav-title, body.admin-nav-collapsed .admin-nav-label { opacity: 0; pointer-events: none; } body.admin-nav-collapsed .admin-nav-link { justify-content: center; } }