/* Custom styles for TankStopp application with Tabler.io */ :root { --tblr-primary: #206bc4; --tblr-secondary: #626976; --tblr-success: #2fb344; --tblr-danger: #d63384; --tblr-warning: #f76707; --tblr-info: #4299e1; --fuel-gradient: linear-gradient(135deg, #206bc4 0%, #1a5490 100%); --fuel-secondary: linear-gradient(135deg, #2fb344 0%, #1e7e34 100%); --fuel-danger: linear-gradient(135deg, #d63384 0%, #b02a5b 100%); --fuel-warning: linear-gradient(135deg, #f76707 0%, #cc5500 100%); --shadow-custom: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); --shadow-hover: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); --border-radius: 8px; } /* Enhanced navbar styling */ .navbar-brand { font-weight: 700; color: var(--tblr-primary) !important; font-size: 1.5rem; transition: color 0.3s ease; } .navbar-brand:hover { color: #1a5490 !important; } .navbar-brand svg { color: var(--tblr-primary); margin-right: 0.5rem; } /* Enhanced card styling */ .card { border: none; border-radius: var(--border-radius); box-shadow: var(--shadow-custom); transition: all 0.3s ease; } .card:hover { box-shadow: var(--shadow-hover); transform: translateY(-2px); } .card-sm { --tblr-card-spacer-y: 0.75rem; --tblr-card-spacer-x: 1rem; } /* Statistics cards with enhanced styling */ .card-body .subheader { color: #626976; font-size: 0.875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } .card-body .h1 { font-size: 2.5rem; font-weight: 700; color: var(--tblr-primary); } /* Fuel type specific colors */ .fuel-type-super-e5 { border-left: 4px solid var(--tblr-success); } .fuel-type-super-e10 { border-left: 4px solid var(--tblr-primary); } .fuel-type-super-plus { border-left: 4px solid var(--tblr-warning); } .fuel-type-diesel { border-left: 4px solid var(--tblr-danger); } .fuel-type-premium-diesel { border-left: 4px solid #6f42c1; } .fuel-type-lpg { border-left: 4px solid var(--tblr-info); } .fuel-type-cng { border-left: 4px solid #20c997; } /* Enhanced form styling */ .form-control { border-radius: var(--border-radius); border: 1px solid #d0d7de; transition: border-color 0.3s ease, box-shadow 0.3s ease; } .form-control:focus { border-color: var(--tblr-primary); box-shadow: 0 0 0 0.2rem rgba(32, 107, 196, 0.25); } .form-select { border-radius: var(--border-radius); border: 1px solid #d0d7de; transition: border-color 0.3s ease, box-shadow 0.3s ease; } .form-select:focus { border-color: var(--tblr-primary); box-shadow: 0 0 0 0.2rem rgba(32, 107, 196, 0.25); } .form-label { font-weight: 600; color: #1e293b; margin-bottom: 0.5rem; } .form-hint { font-size: 0.875rem; color: #626976; margin-top: 0.25rem; } .input-group-text { background-color: #f8fafc; border: 1px solid #d0d7de; font-weight: 500; } /* Enhanced button styling */ .btn { border-radius: var(--border-radius); font-weight: 500; transition: all 0.3s ease; border: none; } .btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-custom); } .btn-primary { background: var(--fuel-gradient); color: white; } .btn-primary:hover { background: linear-gradient(135deg, #1a5490 0%, #144066 100%); color: white; } .btn-success { background: var(--fuel-secondary); color: white; } .btn-success:hover { background: linear-gradient(135deg, #1e7e34 0%, #155724 100%); color: white; } .btn-danger { background: var(--fuel-danger); color: white; } .btn-danger:hover { background: linear-gradient(135deg, #b02a5b 0%, #8b1f47 100%); color: white; } .btn-warning { background: var(--fuel-warning); color: white; } .btn-warning:hover { background: linear-gradient(135deg, #cc5500 0%, #a34400 100%); color: white; } .btn-outline-primary { border: 1px solid var(--tblr-primary); color: var(--tblr-primary); } .btn-outline-primary:hover { background: var(--tblr-primary); color: white; } .btn-outline-secondary { border: 1px solid var(--tblr-secondary); color: var(--tblr-secondary); } .btn-outline-secondary:hover { background: var(--tblr-secondary); color: white; } .btn-outline-danger { border: 1px solid var(--tblr-danger); color: var(--tblr-danger); } .btn-outline-danger:hover { background: var(--tblr-danger); color: white; } /* Enhanced badges */ .badge { font-size: 0.75rem; font-weight: 500; border-radius: 0.375rem; padding: 0.375rem 0.75rem; } .badge.bg-primary { background: var(--fuel-gradient) !important; } .badge.bg-success { background: var(--fuel-secondary) !important; } .badge.bg-danger { background: var(--fuel-danger) !important; } .badge.bg-warning { background: var(--fuel-warning) !important; } .badge.bg-blue { background: var(--tblr-primary) !important; } .badge.bg-gray { background: #6c757d !important; } .badge.bg-secondary { background: var(--tblr-secondary) !important; } /* Enhanced alerts */ .alert { border: none; border-radius: var(--border-radius); box-shadow: var(--shadow-custom); } .alert-info { background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%); color: #0d47a1; border-left: 4px solid var(--tblr-info); } .alert-success { background: linear-gradient(135deg, #e8f5e8 0%, #c8e6c9 100%); color: #1b5e20; border-left: 4px solid var(--tblr-success); } .alert-warning { background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%); color: #e65100; border-left: 4px solid var(--tblr-warning); } .alert-danger { background: linear-gradient(135deg, #ffebee 0%, #ffcdd2 100%); color: #c62828; border-left: 4px solid var(--tblr-danger); } /* Enhanced avatar styling */ .avatar.bg-primary { background: var(--fuel-gradient) !important; color: white; } .avatar.bg-success { background: var(--fuel-secondary) !important; color: white; } .avatar.bg-danger { background: var(--fuel-danger) !important; color: white; } .avatar.bg-warning { background: var(--fuel-warning) !important; color: white; } /* Enhanced empty state */ .empty { text-align: center; padding: 3rem 1rem; } .empty-img svg { width: 8rem; height: 8rem; color: #d0d7de; margin-bottom: 1rem; } .empty-title { font-size: 1.5rem; font-weight: 600; color: #1e293b; margin-bottom: 0.5rem; } .empty-subtitle { font-size: 1rem; color: #626976; margin-bottom: 1.5rem; } /* Enhanced page header */ .page-header { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-bottom: 1px solid #e2e8f0; } .page-title { font-size: 1.875rem; font-weight: 700; color: #1e293b; margin-bottom: 0.25rem; } .page-pretitle { font-size: 0.875rem; font-weight: 500; color: #626976; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 0.25rem; } /* Enhanced footer */ .footer { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-top: 1px solid #e2e8f0; padding: 1.5rem 0; margin-top: 3rem; } .footer .list-inline-item { font-size: 0.875rem; color: #626976; } .footer .link-secondary { color: var(--tblr-primary); text-decoration: none; font-weight: 500; } .footer .link-secondary:hover { color: #1a5490; text-decoration: underline; } /* Enhanced table styling */ .table { border-radius: var(--border-radius); overflow: hidden; box-shadow: var(--shadow-custom); } .table th { background: var(--fuel-gradient); color: white; font-weight: 600; border: none; padding: 1rem; } .table td { border-color: #e2e8f0; padding: 1rem; } .table-hover tbody tr:hover { background-color: rgba(32, 107, 196, 0.04); } /* Enhanced progress bars */ .progress { height: 0.5rem; background-color: #e2e8f0; border-radius: 0.25rem; overflow: hidden; } .progress-bar { background: var(--fuel-gradient); transition: width 0.6s ease; } .progress-bar.bg-primary { background: var(--fuel-gradient); } .progress-bar.bg-success { background: var(--fuel-secondary); } .progress-bar.bg-danger { background: var(--fuel-danger); } .progress-bar.bg-warning { background: var(--fuel-warning); } /* Enhanced card headers */ .card-header { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-bottom: 1px solid #e2e8f0; padding: 1rem 1.5rem; } .card-header .card-title { font-size: 1.125rem; font-weight: 600; color: #1e293b; margin-bottom: 0; } .card-header .card-title svg { color: var(--tblr-primary); } /* Enhanced card footer */ .card-footer { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); border-top: 1px solid #e2e8f0; padding: 1rem 1.5rem; } /* Icon enhancements */ .icon { transition: color 0.3s ease; } .icon.text-primary { color: var(--tblr-primary) !important; } .icon.text-success { color: var(--tblr-success) !important; } .icon.text-danger { color: var(--tblr-danger) !important; } .icon.text-warning { color: var(--tblr-warning) !important; } .icon.text-info { color: var(--tblr-info) !important; } .icon.text-green { color: var(--tblr-success) !important; } .icon.text-red { color: var(--tblr-danger) !important; } .icon.text-blue { color: var(--tblr-primary) !important; } .icon.text-yellow { color: var(--tblr-warning) !important; } /* Enhanced row cards */ .row-cards .card { height: 100%; } .row-cards .card-body { display: flex; flex-direction: column; } .row-cards .card-body > *:last-child { margin-top: auto; } /* Utility classes */ .text-gradient { background: var(--fuel-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .bg-gradient-primary { background: var(--fuel-gradient) !important; } .bg-gradient-success { background: var(--fuel-secondary) !important; } .bg-gradient-danger { background: var(--fuel-danger) !important; } .bg-gradient-warning { background: var(--fuel-warning) !important; } .shadow-custom { box-shadow: var(--shadow-custom) !important; } .shadow-hover:hover { box-shadow: var(--shadow-hover) !important; } .border-radius-custom { border-radius: var(--border-radius) !important; } /* Responsive adjustments */ @media (max-width: 768px) { .card-body .h1 { font-size: 2rem; } .page-title { font-size: 1.5rem; } .empty-img svg { width: 6rem; height: 6rem; } .card-header, .card-footer { padding: 0.75rem 1rem; } .card-body { padding: 1rem; } } /* Animation classes */ .fade-in { animation: fadeIn 0.5s ease-in; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .slide-in { animation: slideIn 0.5s ease-out; } @keyframes slideIn { from { transform: translateX(-100%); } to { transform: translateX(0); } } /* Loading animation */ .loading { border: 4px solid #f3f4f6; border-top: 4px solid var(--tblr-primary); border-radius: 50%; width: 40px; height: 40px; animation: spin 2s linear infinite; margin: 20px auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Enhanced hover effects */ .btn-list .btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-custom); } .card-sm:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); } .navbar-brand:hover svg { color: #1a5490; } /* Enhanced focus states */ .form-control:focus, .form-select:focus { outline: none; box-shadow: 0 0 0 0.2rem rgba(32, 107, 196, 0.25); } .btn:focus { outline: none; box-shadow: 0 0 0 0.2rem rgba(32, 107, 196, 0.25); } /* Enhanced spacing */ .card-body { padding: 1.5rem; } .card-header + .card-body { padding-top: 1.5rem; } .card-footer + .card-body { padding-bottom: 1.5rem; } /* Enhanced typography */ .font-weight-medium { font-weight: 500; } .text-success { color: var(--tblr-success) !important; } .text-primary { color: var(--tblr-primary) !important; } .text-danger { color: var(--tblr-danger) !important; } .text-warning { color: var(--tblr-warning) !important; } .text-info { color: var(--tblr-info) !important; } .text-muted { color: #626976 !important; }