.parking-dashboard{padding:10px 0 30px}.dashboard-header{margin-bottom:25px}.dashboard-title{font-size:2rem;font-weight:700;margin-bottom:5px}.dashboard-subtitle{font-size:1.05rem;color:#6c757d}.available-card{background:linear-gradient(135deg,#0d6efd,#0b5ed7);color:#fff;border-radius:20px;padding:35px;min-height:210px;box-shadow:0 8px 25px rgba(13,110,253,.25);position:relative;overflow:hidden}.available-card::after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.08);right:-70px;top:-70px}.available-label{font-size:1.15rem;font-weight:500;opacity:.9}.available-number{font-size:5rem;line-height:1;font-weight:800;margin:15px 0 8px}.available-description{font-size:1rem;opacity:.85}.parking-icon-large{position:absolute;right:40px;bottom:25px;font-size:7rem;opacity:.15}.summary-card{height:100%;border-radius:18px;padding:25px;background:#fff;border:1px solid #e9ecef;box-shadow:0 5px 20px rgba(0,0,0,.05)}.summary-icon{width:60px;height:60px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;margin-bottom:18px}.summary-label{color:#6c757d;font-size:1rem;margin-bottom:5px}.summary-number{font-size:2.3rem;font-weight:750}.available-icon{background-color:#e7f5ec;color:#198754}.occupied-icon{background-color:#fff0f0;color:#dc3545}.total-icon{background-color:#eaf2ff;color:#0d6efd}.parking-section{margin-top:30px;background:#fff;border-radius:20px;padding:30px;border:1px solid #e9ecef;box-shadow:0 5px 20px rgba(0,0,0,.04)}.parking-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.parking-section-title{font-size:1.5rem;font-weight:700;margin:0}.parking-legend{display:flex;gap:20px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:7px;font-size:.95rem;color:#6c757d}.legend-dot{width:15px;height:15px;border-radius:50%}.legend-available{background-color:#198754}.legend-occupied{background-color:#dc3545}.parking-row{margin-bottom:25px}.parking-row-label{font-weight:700;font-size:1.1rem;margin-bottom:12px;color:#495057}.parking-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:15px}.parking-loading,.parking-empty-state{grid-column:1/-1;display:flex;min-height:180px;align-items:center;justify-content:center;gap:12px;border:1px dashed #cbd5e1;border-radius:8px;background:#f8fafc;color:#667085;font-weight:700}.parking-empty-state{flex-direction:column;gap:8px;text-align:center}.parking-empty-state i{color:#0f766e;font-size:2rem}.parking-empty-state span{color:#667085;font-size:.95rem;font-weight:500}.parking-error-state i{color:#dc2626}.parking-slot{min-height:145px;border-radius:16px;border:3px solid #198754;background-color:#eaf8ef;color:#198754;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;user-select:none}.parking-slot:hover{transform:translateY(-3px);box-shadow:0 7px 18px rgba(25,135,84,.18)}.parking-slot:active{transform:scale(.97)}.slot-icon{font-size:2.7rem;margin-bottom:8px}.slot-number{font-size:1.35rem;font-weight:800}.slot-status{font-size:.9rem;margin-top:3px;font-weight:600}.parking-slot.occupied{border-color:#dc3545;background-color:#fff0f0;color:#dc3545}@media(min-width:1200px){.parking-slot{min-height:165px}.slot-icon{font-size:3rem}.slot-number{font-size:1.5rem}}@media(max-width:991.98px){.available-card{margin-bottom:15px}.parking-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:575.98px){.dashboard-title{font-size:1.6rem}.available-card{padding:25px}.available-number{font-size:4rem}.parking-section{padding:20px 15px}.parking-section-header{align-items:flex-start;flex-direction:column;gap:15px}.parking-grid{grid-template-columns:repeat(2,1fr);gap:10px}.parking-slot{min-height:125px}}.rfid-modal-dialog{max-width:600px}.rfid-modal{border:0;border-radius:24px;overflow:hidden;box-shadow:0 15px 50px rgba(0,0,0,.2)}.rfid-modal .modal-header{min-height:15px;padding:10px 25px 0}.rfid-modal .modal-body{padding:10px 50px 45px}.rfid-slot-label{color:#6c757d;font-size:1.1rem;font-weight:500}.rfid-slot-code{margin-top:5px;color:#0d6efd;font-size:3.5rem;font-weight:800}.rfid-icon-wrapper{position:relative;width:160px;height:160px;margin:35px auto;border-radius:50%;background-color:#eaf2ff;display:flex;align-items:center;justify-content:center;color:#0d6efd;font-size:4.8rem}.rfid-waves{position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none}.rfid-waves span{position:absolute;border:2px solid #0d6efd;border-radius:50%;opacity:0;animation:rfidWave 2.2s infinite}.rfid-waves span:nth-child(1){width:170px;height:170px;top:-5px;left:-5px}.rfid-waves span:nth-child(2){width:205px;height:205px;top:-22px;left:-22px;animation-delay:.5s}.rfid-waves span:nth-child(3){width:240px;height:240px;top:-40px;left:-40px;animation-delay:1s}@keyframes rfidWave{0%{transform:scale(.8);opacity:.7}100%{transform:scale(1);opacity:0}}.rfid-title{margin-bottom:10px;font-size:2.2rem;font-weight:750}.rfid-description{max-width:430px;margin:0 auto 25px;color:#6c757d;font-size:1.1rem;line-height:1.6}.rfid-status{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;border-radius:50px;background-color:#f8f9fa;color:#6c757d;font-size:1rem;font-weight:600}.rfid-status-dot{width:11px;height:11px;border-radius:50%;background-color:#ffc107;animation:statusPulse 1.5s infinite}@keyframes statusPulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}.rfid-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.rfid-cancel-btn{display:block;width:100%;min-height:65px;margin-top:30px;border-radius:14px;font-size:1.15rem;font-weight:600}@media(max-width:575.98px){.rfid-modal-dialog{margin:15px}.rfid-modal .modal-body{padding:5px 25px 30px}.rfid-slot-code{font-size:2.8rem}.rfid-icon-wrapper{width:125px;height:125px;margin:25px auto;font-size:3.5rem}.rfid-title{font-size:1.7rem}.rfid-description{font-size:1rem}}.dashboard-header{display:flex;align-items:end;justify-content:space-between;gap:20px}.dashboard-title{font-weight:800;color:#182230}.available-card{border-radius:8px;background:linear-gradient(135deg,#0f766e,#155e75);box-shadow:0 18px 38px rgba(15,118,110,.22)}.summary-card,.parking-section{border:1px solid #d8dee8;border-radius:8px;box-shadow:0 12px 30px rgba(18,38,63,.08)}.summary-icon,.parking-slot,.rfid-modal,.rfid-cancel-btn{border-radius:8px}.total-icon{background-color:#ecfeff;color:#155e75}.parking-slot{border-width:2px;border-color:#16a34a;background-color:#f0fdf4;color:#15803d}.parking-slot:hover{box-shadow:0 12px 24px rgba(21,128,61,.16)}.parking-slot.occupied{border-color:#dc2626;background-color:#fef2f2;color:#b91c1c}@media(max-width:575.98px){.dashboard-header{align-items:flex-start;flex-direction:column}}.rfid-registration-form{max-width:430px;margin:26px auto 0;padding:18px;border:1px solid #d8dee8;border-radius:8px;background:#f8fafc}.rfid-registration-form .form-control{max-width:none;border-radius:8px}.rfid-save-btn{width:100%;min-height:52px;margin-top:18px;border-radius:8px;font-weight:700}.parking-alert-modal{border:0;border-radius:8px;box-shadow:0 18px 50px rgba(15,23,42,.18)}.parking-alert-modal .modal-body{padding:34px}.parking-alert-icon{display:inline-flex;width:64px;height:64px;align-items:center;justify-content:center;border-radius:50%;background:#fef2f2;color:#dc2626;font-size:1.8rem}.parking-alert-title{margin:18px 0 10px;color:#182230;font-size:1.45rem;font-weight:800}.parking-alert-message{margin:0 auto;max-width:360px;color:#667085;line-height:1.6}.parking-alert-button{min-width:130px;margin-top:24px;border-radius:8px;font-weight:700}.dashboard-subtitle,.slot-number,.slot-status,.rfid-description,.rfid-status,.parking-alert-message{overflow-wrap:anywhere}.parking-section,.parking-grid,.parking-slot,.rfid-modal{min-width:0}.rfid-modal{max-width:100%}.rfid-status{justify-content:center;max-width:100%;text-align:center}.slot-status{text-align:center}@media(max-width:575.98px){.parking-dashboard{padding-bottom:18px}.available-card{min-height:180px;padding:22px}.available-number{font-size:3.4rem}.parking-icon-large{right:18px;bottom:18px;font-size:5rem}.summary-card{padding:20px}.summary-icon{width:52px;height:52px;margin-bottom:14px;font-size:1.45rem}.summary-number{font-size:2rem}.parking-section{margin-right:-4px;margin-left:-4px;padding:18px 12px}.parking-legend{gap:10px 14px}.parking-loading,.parking-empty-state{min-height:150px;padding:18px}.slot-icon{font-size:2.15rem}.slot-number{font-size:1.15rem}.slot-status{font-size:.82rem}.rfid-modal-dialog{max-width:calc(100% - 24px)}.rfid-waves span:nth-child(1){width:132px;height:132px;top:-4px;left:-4px}.rfid-waves span:nth-child(2){width:158px;height:158px;top:-17px;left:-17px}.rfid-waves span:nth-child(3){width:184px;height:184px;top:-30px;left:-30px}.rfid-status{display:flex;width:100%;border-radius:8px;padding:12px 14px;line-height:1.35}.rfid-registration-form{padding:14px}.parking-alert-modal .modal-body{padding:26px 20px}.parking-alert-title{font-size:1.25rem}.parking-alert-button{width:100%}}