* { margin: 0; padding: 0; box-sizing: border-box; } /* Dark Mode Variables */ :root { --bg-primary: #2c2c2c; --bg-secondary: #ffffff; --bg-tertiary: #f5f5f5; --bg-quaternary: #fafafa; --text-primary: #000000; --text-secondary: #666666; --border-color: #e0e0e0; --accent-blue: #3A3A3C; --accent-blue-hover: #2a2a2c; --accent-green: #10b981; --accent-green-hover: #059669; --accent-red: #ef4444; --accent-red-hover: #dc2626; --shadow: 0 2px 8px rgba(0, 0, 0, 0.1); --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08); } html { height: 100%; width: 100%; } body { width: 100%; overflow-x: hidden; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background-color: var(--bg-primary); color: var(--text-primary); } .container { display: flex; height: 100vh; gap: 16px; padding: 16px; } /* Left Panel */ .left-panel { width: 320px; background-color: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; padding: 24px; overflow-y: auto; box-shadow: none; } .logo-section { text-align: center; margin-bottom: 32px; } .logo { max-width: 140px; height: auto; border-radius: 8px; } .result-section { margin-bottom: 32px; } .result-section h3, .stats-section h3 { font-size: 14px; font-weight: 600; margin-bottom: 16px; color: var(--accent-blue); border-bottom: 2px solid var(--accent-blue); padding-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; } .stats-section { margin-bottom: 32px; } .stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .stat-card { background: var(--bg-quaternary); border: 1px solid var(--border-color); border-radius: 8px; padding: 16px; text-align: center; box-shadow: none; } .stat-label { font-size: 12px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; margin-bottom: 8px; } .stat-value { font-size: 28px; font-weight: 700; color: var(--accent-blue); } .form-group { margin-bottom: 16px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 500; font-size: 13px; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; } .form-group select, .form-group input { width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 8px; font-size: 14px; background-color: var(--bg-tertiary); color: var(--text-primary); transition: all 0.2s ease; } .form-group select:focus, .form-group input:focus { outline: none; border-color: var(--accent-blue); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); background-color: var(--bg-tertiary); } .result-card { background: var(--bg-quaternary); border: 2px solid var(--border-color); border-radius: 8px; padding: 24px; text-align: center; min-height: 160px; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 12px; } .result-logo { max-width: 280px; height: auto; border-radius: 8px; display: block !important; margin: 0 auto 20px auto; } .result-card.pass { background: #f0fdf4; border-color: var(--accent-green); } .result-card.fail { background: #fef2f2; border-color: var(--accent-red); } .result-card.fail .result-uid-box { border-color: var(--accent-red); } .result-card.fail .result-name { border-color: var(--accent-red); } .result-uid-box { display: flex; align-items: center; justify-content: center; gap: 6px; margin-bottom: 12px; border: 2px solid var(--accent-green); border-radius: 6px; padding: 10px 14px; background-color: #ffffff; min-width: 200px; } .result-uid { font-size: 12px; color: var(--text-primary); text-transform: uppercase; letter-spacing: 0.3px; font-weight: 600; } .result-name { font-size: 14px; margin-bottom: 8px; color: var(--text-primary); text-transform: uppercase; letter-spacing: 0.3px; border: 2px solid var(--accent-green); border-radius: 6px; padding: 10px 14px; background-color: #ffffff; font-weight: 600; min-width: 200px; text-align: center; } .copy-btn { background: none; border: none; padding: 0; cursor: pointer; color: var(--text-secondary); display: flex; align-items: center; justify-content: center; transition: color 0.2s ease; } .copy-btn:hover { color: var(--accent-blue); } .copy-btn svg { transition: transform 0.2s ease; } .copy-btn:hover svg { transform: scale(1.15); } .result-status { font-size: 28px; font-weight: 700; margin-top: 16px; letter-spacing: 1px; } .result-card.pass .result-status { color: var(--accent-green); } .result-card.fail .result-status { color: var(--accent-red); } /* Right Panel */ .right-panel { flex: 1; background-color: var(--bg-secondary); border: 1px solid var(--border-color); border-radius: 8px; padding: 0; overflow: hidden; display: flex; flex-direction: column; box-shadow: none; gap: 0; border-width: 1px; } /* Admin Section - similar to result-section */ .admin-section { margin-bottom: 32px; } .admin-section h3 { font-size: 14px; font-weight: 600; margin-bottom: 16px; color: var(--accent-blue); border-bottom: 2px solid var(--accent-blue); padding-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; } .admin-btn { width: 100%; padding: 16px; font-size: 14px; font-weight: 600; border: none; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 0.5px; background-color: #3A3A3C; color: #ffffff; } .admin-btn:hover { background-color: #2a2a2c; } .admin-btn:active { transform: translateY(0); } .admin-btn.active { background-color: var(--accent-green); color: #ffffff; } .admin-btn.active:hover { background-color: var(--accent-green-hover); } /* Tab Navigation */ .tab-nav { display: flex; gap: 0; border-bottom: none; background-color: transparent; padding: 12px 0 0 0; margin: 0; } .tab-nav-btn { flex: 1; padding: 14px 24px; background-color: #e8e8e8; border: 2px solid var(--border-color); border-bottom: none; border-radius: 8px 8px 0 0; color: var(--text-secondary); font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px; position: relative; margin: 0 4px; } .tab-nav-btn:first-child { margin-left: 0; } .tab-nav-btn:last-child { margin-right: 0; } .tab-nav-btn:hover { color: var(--accent-blue); border-color: var(--accent-blue); } .tab-nav-btn.active { color: #ffffff; background-color: var(--accent-blue); border-color: var(--accent-blue); border-bottom: none; } /* Tab Panels */ .tab-panel { display: none; flex: 1; overflow: hidden; background-color: var(--bg-secondary); flex-direction: column; border: 2px solid var(--border-color); border-radius: 0 0 8px 8px; margin: 0 0 12px 0; border-top-width: 0; } .tab-panel.active { display: flex; border: 2px solid var(--accent-blue); border-top-width: 2px; background-color: var(--bg-secondary); } .tab-panel::-webkit-scrollbar { width: 8px; } .tab-panel::-webkit-scrollbar-track { background: var(--bg-tertiary); } .tab-panel::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; } .tab-panel::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } /* Panel Header */ .panel-header { padding: 12px 16px; border-bottom: 1px solid var(--border-color); background-color: var(--bg-secondary); display: flex; justify-content: space-between; align-items: center; gap: 12px; } .panel-header h2 { font-size: 14px; font-weight: 600; color: var(--text-primary); margin: 0; text-transform: uppercase; letter-spacing: 0.5px; flex-shrink: 0; } .header-actions { display: flex; gap: 10px; flex-wrap: nowrap; flex-shrink: 0; } .header-actions .btn { width: auto; margin: 0; padding: 8px 14px; font-size: 12px; white-space: nowrap; flex-shrink: 0; } /* Panel Filters */ .panel-filters { padding: 12px 16px; border-bottom: 1px solid var(--border-color); background-color: var(--bg-secondary); display: flex; flex-direction: row; gap: 16px; flex-shrink: 0; align-items: center; flex-wrap: wrap; } .filters-row { display: flex; gap: 14px; flex-wrap: nowrap; align-items: center; flex: 1; } .filters-quick { display: flex; gap: 8px; flex-wrap: nowrap; align-items: center; margin-left: auto; } /* Panel Content */ .panel-content { flex: 1; padding: 16px; overflow-y: auto; min-height: 0; } /* Two-column layout for tab content */ .tab-layout { display: flex; gap: 20px; flex: 1; height: 100%; } .tab-left-column { width: 250px; flex-shrink: 0; overflow-y: auto; padding: 0 8px 0 20px; } .tab-right-column { flex: 1; overflow-y: auto; padding: 0 20px 0 0; } .tab-left-column::-webkit-scrollbar, .tab-right-column::-webkit-scrollbar { width: 8px; } .tab-left-column::-webkit-scrollbar-track, .tab-right-column::-webkit-scrollbar-track { background: var(--bg-tertiary); } .tab-left-column::-webkit-scrollbar-thumb, .tab-right-column::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; } .tab-left-column::-webkit-scrollbar-thumb:hover, .tab-right-column::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } .filter-group { display: flex; flex-direction: row; gap: 6px; align-items: center; flex: 1; min-width: 0; } .filter-group label { font-weight: 600; font-size: 11px; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; white-space: nowrap; flex-shrink: 0; } .filter-group select, .filter-group input { padding: 10px 12px; border: 1px solid var(--border-color); border-radius: 4px; font-size: 13px; background-color: var(--bg-secondary); color: var(--text-primary); cursor: pointer; transition: all 0.2s ease; flex: 1; min-width: 0; height: 40px; } .filter-group select:hover, .filter-group input:hover { border-color: var(--accent-blue); } .filter-group select:focus, .filter-group input:focus { outline: none; border-color: var(--accent-blue); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); background-color: var(--bg-secondary); } .btn-filter { padding: 10px 18px; background-color: #3A3A3C; color: #ffffff; border: none; border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.3px; white-space: nowrap; flex-shrink: 0; height: 40px; display: flex; align-items: center; } .btn-filter:hover { background-color: #2a2a2c; } .quick-filter-buttons { display: flex; gap: 8px; flex-wrap: nowrap; } .btn-quick-filter { padding: 10px 14px; background-color: #f5f5f5; color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.3px; white-space: nowrap; flex: 1; height: 40px; display: flex; align-items: center; justify-content: center; } .btn-quick-filter:hover { border-color: var(--accent-blue); background-color: #efefef; } .btn-quick-filter.active { background-color: var(--accent-blue); color: #ffffff; border-color: var(--accent-blue); } .table-container { overflow-x: auto; border: 1px solid var(--border-color); border-radius: 8px; background-color: var(--bg-secondary); -webkit-overflow-scrolling: touch; } table { width: 100%; border-collapse: collapse; font-size: 13px; table-layout: auto; } table thead { background-color: var(--bg-tertiary); position: sticky; top: 0; z-index: 10; } table th { padding: 14px 12px; text-align: left; font-weight: 600; color: var(--text-primary); border-bottom: 2px solid var(--border-color); text-transform: uppercase; letter-spacing: 0.3px; font-size: 12px; word-wrap: break-word; } table td { padding: 12px; border-bottom: 1px solid #f0f0f0; word-wrap: break-word; overflow-wrap: break-word; color: var(--text-primary); } table td[style*="display: none"], table th[style*="display: none"] { display: none !important; width: 0 !important; padding: 0 !important; border: none !important; } table tbody tr { background-color: var(--bg-secondary); transition: background-color 0.15s ease; } table tbody tr:hover { background-color: #f9f9f9; } table tbody tr.expired { background-color: #fef2f2; border-left: 3px solid var(--accent-red); } table tbody tr.expired:hover { background-color: #ffe5e5; } table .pass { color: var(--accent-green); font-weight: 600; } table .fail { color: var(--accent-red); font-weight: 600; } table .manual { color: #8b5cf6; font-weight: 600; } table tbody tr.duplicate-warning { background-color: #fffbf0; border-left: 3px solid #f59e0b; } table tbody tr.duplicate-warning:hover { background-color: #fffaf5; } .action-btn { padding: 8px 14px; margin-right: 6px; font-size: 12px; font-weight: 500; border: none; border-radius: 6px; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.3px; } .edit-btn { background-color: #3A3A3C; color: #ffffff; } .edit-btn:hover { background-color: #2a2a2c; } .delete-btn { background-color: var(--accent-red); color: white; } .delete-btn:hover { background-color: var(--accent-red-hover); } .btn { width: 100%; padding: 12px; margin-bottom: 12px; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px; } .btn-primary { background-color: #3A3A3C; color: #ffffff; } .btn-primary:hover { background-color: #2a2a2c; } /* Modal */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); backdrop-filter: blur(4px); } .modal.show { display: flex; align-items: center; justify-content: center; } .modal-content { background-color: var(--bg-secondary); padding: 32px; border-radius: 8px; border: 1px solid var(--border-color); width: 90%; max-width: 420px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .modal-content h2 { margin-bottom: 24px; color: var(--accent-blue); font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; } .close { float: right; font-size: 28px; font-weight: bold; cursor: pointer; color: var(--text-secondary); transition: color 0.2s ease; line-height: 1; margin-top: -4px; } .close:hover { color: var(--text-primary); } /* Login Modal Styling */ #loginModal .modal-content { background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%); border: 2px solid var(--accent-blue); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); } #loginModal .modal-content h2 { color: var(--accent-blue); margin-bottom: 28px; text-align: center; font-size: 18px; } #loginModal .form-group label { color: var(--accent-blue); font-weight: 700; font-size: 12px; margin-bottom: 10px; } #loginModal .form-group input { padding: 14px 16px; font-size: 15px; border: 2px solid var(--border-color); border-radius: 8px; transition: all 0.3s ease; background-color: var(--bg-secondary); } #loginModal .form-group input:focus { border-color: var(--accent-blue); box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15); background-color: var(--bg-secondary); } #loginModal .form-group input::placeholder { color: var(--text-secondary); } #loginModal .btn-primary { background: linear-gradient(135deg, #3A3A3C 0%, #2a2a2c 100%); border: 2px solid transparent; font-size: 13px; letter-spacing: 1px; padding: 14px; margin-top: 8px; } #loginModal .btn-primary:hover { background: linear-gradient(135deg, #2a2a2c 0%, #1a1a1c 100%); border-color: var(--accent-blue); } /* Scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--bg-tertiary); } ::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--text-secondary); } /* Desktop View */ @media (min-width: 1024px) { .container { gap: 20px; padding: 20px; } .left-panel { width: 360px; padding: 28px; } .right-panel { padding: 28px; } } /* Tablet View */ @media (min-width: 769px) and (max-width: 1023px) { .container { gap: 14px; padding: 14px; } .left-panel { width: 300px; padding: 20px; } .right-panel { padding: 20px; } .tab-btn { padding: 10px 16px; font-size: 13px; } } /* Login Modal Mobile */ @media (max-width: 768px) { #loginModal .modal-content { padding: 28px; max-width: 85%; } #loginModal .modal-content h2 { font-size: 16px; margin-bottom: 24px; } .admin-bar { padding: 12px 16px; gap: 8px; } .admin-bar span { font-size: 10px; } .btn-admin { padding: 8px 16px; font-size: 11px; } } /* Mobile View */ @media (max-width: 768px) { html, body { height: auto; min-height: 100vh; } .container { flex-direction: column; gap: 12px; padding: 12px; height: auto; } .tab-layout { flex-direction: column; gap: 12px; } .tab-left-column { width: 100%; flex-shrink: 0; } .left-panel { width: 100%; padding: 16px; min-height: auto; } .right-panel { width: 100%; padding: 16px; min-height: 60vh; } .logo-section { margin-bottom: 20px; } .logo { max-width: 100px; } .result-section { margin-bottom: 24px; } .result-card { min-height: 120px; padding: 16px; } .result-status { font-size: 24px; } .tabs { gap: 4px; margin-bottom: 16px; } .tab-btn { padding: 10px 14px; font-size: 12px; } .add-section, .list-section { margin-bottom: 20px; } .action-btn { padding: 6px 10px; font-size: 11px; margin-right: 4px; } .table-container { font-size: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; width: 100%; border-radius: 8px; } table { min-width: 600px; table-layout: auto; } table th, table td { padding: 10px 12px; font-size: 12px; word-wrap: break-word; white-space: normal; } .filters-container { grid-template-columns: 1fr; gap: 12px; } .filter-group { width: 100%; } .filter-group select, .filter-group input { width: 100%; } .btn-filter { width: 100%; } .controls-section { flex-direction: column; } .btn { padding: 10px; font-size: 13px; margin-bottom: 10px; } .modal-content { padding: 24px; max-width: 90%; } } /* Small Mobile View */ @media (max-width: 480px) { .container { padding: 8px; gap: 8px; } .left-panel, .right-panel { padding: 12px; } .logo { max-width: 80px; } .form-group { margin-bottom: 12px; } .action-btn { padding: 6px 8px; font-size: 10px; margin-bottom: 4px; display: inline-block; margin-right: 2px; } .tab-btn { padding: 8px 12px; font-size: 11px; } .modal-content { padding: 20px; } } /* High DPI / Retina Display */ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } /* Landscape Mobile */ @media (max-height: 600px) and (orientation: landscape) { .container { height: auto; min-height: 100vh; } .left-panel, .right-panel { padding: 12px; } .result-card { min-height: auto; padding: 12px; } .tab-content { flex: auto; } } /* Dark Mode - Additional refinements for better readability */ @media (prefers-color-scheme: dark) { /* Already using dark mode as default */ } /* Documents Grid */ .documents-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 20px; padding: 4px; } .document-card { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 24px 16px; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; text-align: center; } .document-icon { color: var(--text-secondary); } .document-name { font-size: 13px; font-weight: 500; color: var(--text-primary); word-break: break-word; line-height: 1.4; } .document-print-btn { width: 100%; padding: 8px 12px; font-size: 13px; } /* ===== STORE ===== */ .store-balance-display { display: flex; align-items: center; gap: 10px; } .store-balance-label { font-size: 13px; font-weight: 600; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; } .store-balance-value { font-size: 20px; font-weight: 700; color: var(--accent-blue); min-width: 80px; } .store-tab-scroll { display: flex; flex-direction: column; gap: 0; min-height: 0; } .store-layout { display: grid; grid-template-columns: 1fr 340px; align-items: stretch; gap: 20px; flex: 1; min-height: 0; } .store-inventory, .store-cart { display: flex; flex-direction: column; gap: 12px; overflow: hidden; } .store-inventory { overflow-y: auto; } .store-section-header { display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; } .store-section-header h3 { font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: var(--accent-blue); border-bottom: 2px solid var(--accent-blue); padding-bottom: 6px; flex: 1; margin-right: 12px; } .store-section-header .btn { width: auto; margin: 0; padding: 8px 14px; font-size: 12px; white-space: nowrap; } .inventory-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; overflow-y: auto; padding-bottom: 4px; } .inventory-card { background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: 8px; overflow: hidden; display: flex; flex-direction: column; transition: box-shadow 0.15s ease; } .inventory-card:hover { box-shadow: var(--shadow); } .inventory-card.out-of-stock { opacity: 0.55; } .inventory-card-img { width: 100%; height: 120px; object-fit: cover; display: block; background: var(--bg-quaternary); } .inventory-card-img-placeholder { width: 100%; height: 120px; display: flex; align-items: center; justify-content: center; background: var(--bg-quaternary); border-bottom: 1px solid var(--border-color); } .inventory-card-body { padding: 10px 12px 6px; display: flex; flex-direction: column; gap: 4px; flex: 1; } .inventory-card-name { font-size: 13px; font-weight: 600; color: var(--text-primary); word-break: break-word; line-height: 1.3; } .inventory-card-price { font-size: 17px; font-weight: 700; color: var(--accent-blue); } .inventory-card-stock { font-size: 11px; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.3px; } .inventory-card-stock.stock-empty { color: var(--accent-red); font-weight: 600; } .inventory-card-actions { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 12px 12px; } .inventory-add-btn { width: 100%; margin: 0; padding: 8px; font-size: 12px; } .inventory-add-btn:disabled { opacity: 0.4; cursor: not-allowed; } .inventory-card-actions .action-btn { flex: 1; margin: 0; padding: 6px 8px; font-size: 11px; text-align: center; } /* Image upload */ .image-upload-area { border: 2px dashed var(--border-color); border-radius: 8px; cursor: pointer; overflow: hidden; min-height: 100px; display: flex; align-items: center; justify-content: center; transition: border-color 0.2s ease; background: var(--bg-tertiary); } .image-upload-area:hover { border-color: var(--accent-blue); } .image-upload-placeholder { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 20px; color: var(--text-secondary); font-size: 12px; font-weight: 500; text-align: center; } .btn-remove-image { margin-top: 6px; padding: 4px 10px; background: var(--accent-red); color: #fff; border: none; border-radius: 4px; font-size: 11px; font-weight: 600; cursor: pointer; text-transform: uppercase; letter-spacing: 0.3px; } .btn-remove-image:hover { background: var(--accent-red-hover); } /* Payment history panel */ .payment-history-panel { border-top: 2px solid var(--border-color); padding-top: 16px; flex-shrink: 0; max-height: 320px; overflow-y: auto; } /* Cart */ .store-cart { background: var(--bg-quaternary); border: 1px solid var(--border-color); border-radius: 8px; padding: 16px; overflow: hidden; align-self: stretch; } .cart-items { flex: 1; overflow-y: auto; min-height: 0; } .cart-item { display: flex; align-items: center; gap: 8px; padding: 10px 0; border-bottom: 1px solid var(--border-color); } .cart-item-name { flex: 1; font-size: 13px; font-weight: 500; color: var(--text-primary); word-break: break-word; } .cart-item-controls { display: flex; align-items: center; gap: 6px; flex-shrink: 0; } .cart-qty-btn { width: 26px; height: 26px; border: 1px solid var(--border-color); border-radius: 4px; background: var(--bg-secondary); color: var(--text-primary); font-size: 16px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s ease; line-height: 1; padding: 0; } .cart-qty-btn:hover { background: var(--accent-blue); color: #fff; border-color: var(--accent-blue); } .cart-qty { min-width: 22px; text-align: center; font-size: 13px; font-weight: 600; } .cart-item-subtotal { font-size: 13px; font-weight: 700; color: var(--accent-blue); min-width: 52px; text-align: right; flex-shrink: 0; } .cart-total { border-top: 2px solid var(--border-color); padding-top: 12px; margin-top: 4px; display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; } .cart-total-row { display: flex; justify-content: space-between; align-items: center; font-size: 14px; font-weight: 600; color: var(--text-primary); } .cart-balance-row { font-size: 12px; color: var(--text-secondary); font-weight: 500; } .cart-total-amount { font-size: 20px; font-weight: 700; color: var(--accent-blue); } .cart-balance-after { font-weight: 600; color: var(--accent-green); } .cart-balance-after.negative { color: var(--accent-red); } .cart-pay-btn { margin: 8px 0 0 0; width: 100%; padding: 12px; font-size: 14px; } @media (max-width: 900px) { .store-layout { grid-template-columns: 1fr; } .store-cart { min-height: 300px; } } /* Print Styles */ @media print { body { background: #fff !important; color: #000 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } body * { visibility: hidden; } #print-header, #print-header *, #logs-tab, #logs-tab * { visibility: visible; } #print-header { position: fixed; top: 0; left: 0; width: 100%; text-align: center; padding: 16px 0 8px; background: #fff; border: none !important; outline: none !important; box-shadow: none !important; visibility: visible !important; display: block !important; } #print-header img { height: 64px; display: block; margin: 0 auto 8px; } #logs-tab { position: absolute; top: 160px; left: 0; width: 100%; background: #fff !important; border: none !important; outline: none !important; box-shadow: none !important; } .panel-header { border: none !important; box-shadow: none !important; } .panel-content, .table-container { border: none !important; box-shadow: none !important; overflow: visible !important; } .panel-header .header-actions, .panel-filters, .action-btn, #logs-actions-header { display: none !important; } .table-container { border: 1px solid #e0e0e0; border-radius: 8px; background: #fff; overflow: visible !important; } table { width: 100%; border-collapse: collapse; font-size: 13px; table-layout: auto; } table thead { background-color: #f5f5f5 !important; } table th { padding: 14px 12px; text-align: left; font-weight: 600; color: #000 !important; border-bottom: 2px solid #e0e0e0 !important; text-transform: uppercase; letter-spacing: 0.3px; font-size: 12px; background-color: #f5f5f5 !important; } table td { padding: 12px; border-bottom: 1px solid #f0f0f0 !important; color: #000 !important; background-color: #fff !important; } table tbody tr:nth-child(even) td { background-color: #fafafa !important; } table .pass { color: #10b981 !important; font-weight: 600; } table .fail { color: #ef4444 !important; font-weight: 600; } table .manual { color: #8b5cf6 !important; font-weight: 600; } } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }