*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.admin-layout{background-color:#f5f5f5;display:flex;min-height:100vh}.mobile-topbar{display:none}.mobile-menu-toggle{align-items:center;background:#1976d21f;border:none;border-radius:10px;color:#1976d2;cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;width:44px}.mobile-menu-toggle:hover{background:#1976d233}.mobile-menu-toggle:focus-visible{outline:2px solid #1976d2;outline-offset:2px}.mobile-menu-toggle svg{font-size:1.5rem}.mobile-topbar-title{color:#0f172a;flex:1 1;font-size:1.05rem;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-logout{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#b91c1c;cursor:pointer;display:inline-flex;flex-shrink:0;font-size:.875rem;font-weight:600;gap:6px;justify-content:center;min-height:44px;padding:0 12px}.mobile-logout:hover{background:#fef2f2}.mobile-logout:focus-visible{outline:2px solid #1976d2;outline-offset:2px}.mobile-logout svg{font-size:1.15rem}@media (max-width:360px){.mobile-logout-label{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:absolute;width:1px}.mobile-logout{padding:0 10px}}.sidebar-backdrop{display:none}.sidebar{background:#1976d2;color:#fff;height:100vh;left:0;position:fixed;top:0;transition:transform .25s ease;width:250px;z-index:1000}.sidebar,.sidebar-header{display:flex;flex-direction:column}.sidebar-header{align-items:center;border-bottom:1px solid #ffffff1a;gap:12px;padding:16px 12px 20px;position:relative}.sidebar-close{align-items:center;background:#ffffff26;border:none;border-radius:8px;color:#fff;cursor:pointer;display:none;height:40px;justify-content:center;padding:0;position:absolute;right:12px;top:12px;width:40px}.sidebar-close:hover{background:#ffffff40}.sidebar-close:focus-visible{outline:2px solid #ffc107;outline-offset:2px}.sidebar-close svg{font-size:1.35rem}.sidebar-logo{display:block;height:auto;max-width:180px;object-fit:contain;width:100%}.sidebar-header h2{font-size:1.1rem;font-weight:700;margin:0}.sidebar-nav{-webkit-overflow-scrolling:touch;flex:1 1;min-height:0;overflow-y:auto;padding:20px 0}.nav-item{align-items:center;color:#fffc;display:flex;gap:12px;padding:12px 20px;text-decoration:none;transition:all .3s}.nav-item:hover{background:#ffffff1a;color:#fff}.nav-item.active{background:#fff3;border-left:4px solid #ffc107;color:#fff}.nav-item svg{font-size:1.2rem}.logout-button{align-items:center;background:#ffffff1a;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;gap:12px;margin:20px;padding:12px 20px;transition:background .3s}.logout-button:hover{background:#fff3}.main-content{box-sizing:border-box;flex:1 1;margin-left:250px;min-width:0;padding:30px;width:100%}@media (max-width:768px){.mobile-topbar{align-items:center;background:#fff;border-bottom:1px solid #e2e8f0;box-shadow:0 1px 3px #0000000f;display:flex;gap:12px;height:52px;left:0;min-height:calc(52px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));position:fixed;right:0;top:0;z-index:900}.sidebar-backdrop{animation:layout-backdrop-in .2s ease;background:#0f172a73;border:none;cursor:pointer;display:block;inset:0;margin:0;padding:0;position:fixed;z-index:1001}@keyframes layout-backdrop-in{0%{opacity:0}to{opacity:1}}.sidebar{box-shadow:none;transform:translateX(-100%);width:min(280px,88vw);z-index:1002}.sidebar.sidebar--open{box-shadow:8px 0 32px #0003;transform:translateX(0)}.sidebar-close{display:flex}.main-content{margin-left:0;padding:calc(72px + env(safe-area-inset-top)) 16px 20px}}.dashboard{max-width:1400px}.page-title{color:#333;font-size:2rem;margin-bottom:30px}.stats-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:30px}.stat-card{background:#fff;box-shadow:0 2px 8px #0000001a;gap:20px;padding:20px}.stat-card,.stat-icon{align-items:center;border-radius:12px;display:flex}.stat-icon{color:#fff;font-size:1.5rem;height:60px;justify-content:center;width:60px}.stat-icon.blue{background:#1976d2}.stat-icon.green{background:#4caf50}.stat-icon.orange{background:#ff9800}.stat-icon.purple{background:#9c27b0}.stat-content h3{color:#666;font-size:.9rem;margin-bottom:5px}.stat-value{color:#333;font-size:1.8rem;font-weight:700}.dashboard-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr}.dashboard-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:20px}.dashboard-card h2{color:#333;margin-bottom:20px}.status-list{display:flex;flex-direction:column;gap:15px}.status-item{background:#f5f5f5;border-radius:8px;display:flex;justify-content:space-between;padding:12px}.status-value{font-weight:700}.status-value.pending{color:#ff9800}.status-value.payment-completed{color:#4caf50}.status-value.visited{color:#0c5460}.status-value.cancelled{color:#f44336}.status-value.upcoming{color:#1976d2}.bookings-list{display:flex;flex-direction:column;gap:10px}.booking-item{align-items:center;background:#f5f5f5;border-radius:8px;display:flex;justify-content:space-between;padding:12px}.booking-info{display:flex;flex-direction:column;gap:5px}.booking-info strong{color:#333}.booking-info span{color:#666;font-size:.9rem}.booking-customer{color:#333;font-weight:600}.booking-mobile{color:#888;font-size:.85rem}.booking-meta{align-items:center;display:flex;gap:15px}.no-data{padding:20px}.error,.loading{font-size:1.2rem;padding:50px;text-align:center}@media (max-width:968px){.dashboard-grid{grid-template-columns:1fr}}.bookings-page{max-width:1400px}.page-header{margin-bottom:20px}.filters-row{align-items:flex-end;background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:24px;padding:20px}.filters-row .search-box{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;gap:10px;min-width:220px;padding:10px 15px}.filters-row .search-box input{border:none;font-size:1rem;min-width:180px;outline:none}.filter-group{display:flex;flex-direction:column;gap:6px}.filter-group .filter-label{color:#444;font-size:.85rem;font-weight:600}.filters-row .filter-group select{background:#fff;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:1rem;min-width:140px;padding:10px 15px}.date-range-group{display:flex;flex-direction:column;gap:6px}.filters-row .date-range-group{background:#fff;border:1px solid #dee2e6;border-radius:10px;box-shadow:0 1px 3px #0000000f;padding:14px 16px}.date-range-label{color:#444;font-size:.85rem;font-weight:600}.date-range-inputs{align-items:center;display:flex;gap:8px}.date-range-inputs input[type=date]{background:#fff;border:1px solid #e0e0e0;border-radius:8px;font-size:.95rem;padding:10px 12px}.date-range-inputs input[type=date]:focus{border-color:#1976d2;outline:none}.date-separator{color:#666;font-size:.9rem;font-weight:500}.bookings-table-wrap{margin-bottom:8px;position:relative}.bookings-table-wrap__inner{position:relative}.bookings-table-wrap--busy .bookings-table-wrap__inner{opacity:.55;pointer-events:none}.bookings-table-wrap--busy:after{content:"";cursor:wait;inset:0;position:absolute;z-index:2}.bookings-table{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.bookings-table table{border-collapse:collapse;width:100%}.bookings-table th{background:#f5f5f5;border-bottom:2px solid #e0e0e0;color:#333;font-weight:600;padding:15px;text-align:left}.bookings-table td{border-bottom:1px solid #e0e0e0;padding:15px}.bookings-table td.bookings-table__col-amount,.bookings-table th.bookings-table__col-amount{text-align:right;vertical-align:middle}.bookings-table tr:hover{background:#f9f9f9}.customer-mobile,.email{color:#666;font-size:.85rem}.status-badge{border-radius:12px;font-size:.85rem;font-weight:600;padding:4px 12px}.status-badge.pending{background:#fff3cd;color:#856404}.status-badge.payment_completed{background:#d4edda;color:#155724}.status-badge.visited{background:#d1ecf1;color:#0c5460}.status-badge.cancelled{background:#f8d7da;color:#721c24}.action-buttons{display:flex;gap:8px}.btn-cancel,.btn-confirm,.btn-visited{border:none;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 12px;transition:all .3s}.btn-confirm{background:#4caf50;color:#fff}.btn-confirm:hover{background:#45a049}.btn-visited{background:#2196f3;color:#fff}.btn-visited:hover{background:#1976d2}.btn-cancel{background:#f44336;color:#fff}.btn-cancel:hover{background:#da190b}.no-data{color:#666;padding:40px;text-align:center}.bookings-pagination{align-items:center;background:#fff;border:1px solid #e9ecef;border-radius:12px;box-shadow:0 1px 4px #0000000f;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-top:4px;padding:16px 20px}.bookings-pagination--top{margin-bottom:16px;margin-top:0}.bookings-pagination--bottom{margin-top:16px}.bookings-pagination__summary{color:#475569;font-size:.95rem;margin:0}.bookings-pagination__summary strong{color:#0f172a;font-weight:700}.bookings-pagination__controls{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.bookings-pagination__page{color:#64748b;font-size:.9rem;min-width:7rem;text-align:center}.bookings-pagination__page strong{color:#0f172a}.bookings-pagination__btn{align-items:center;background:#e3f2fd;border:1px solid #90caf9;border-radius:8px;color:#1565c0;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:6px;padding:8px 14px;transition:background .2s,border-color .2s}.bookings-pagination__btn:hover:not(:disabled){background:#bbdefb;border-color:#64b5f6}.bookings-pagination__btn:disabled{cursor:not-allowed;opacity:.45}.bookings-pagination__btn:focus-visible{outline:2px solid #1976d2;outline-offset:2px}.bookings-pagination__btn svg{height:18px;width:18px}@media (max-width:640px){.bookings-pagination{align-items:stretch;flex-direction:column}.bookings-pagination__controls{justify-content:center}}.bookings-amount-cell{grid-column-gap:8px;align-items:center;column-gap:8px;display:grid;grid-template-columns:minmax(0,1fr) 32px;margin-left:auto;width:100%}.bookings-amount-cell__value{font-feature-settings:"tnum" 1,"tnum";color:#1a237e;font-variant-numeric:tabular-nums;font-weight:600;line-height:32px;min-width:0;text-align:right}.bookings-amount-info-btn{align-items:center;background:#e3f2fd;border:none;border-radius:50%;color:#1565c0;cursor:pointer;display:inline-flex;height:32px;justify-content:center;justify-self:end;padding:0;transition:background .2s,color .2s,transform .15s;width:32px}.bookings-amount-info-btn:hover{background:#bbdefb;color:#0d47a1}.bookings-amount-info-btn:focus-visible{outline:2px solid #1976d2;outline-offset:2px}.bookings-amount-info-btn svg{height:18px;width:18px}.bookings-modal-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.bookings-amount-modal{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 24px 48px #0000002e;max-height:min(90vh,640px);max-width:420px;overflow:auto;width:100%}.bookings-amount-modal__header{border-bottom:1px solid #eef2f7;padding:22px 24px 16px}.bookings-amount-modal__header h2{color:#0f172a;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin:0}.bookings-amount-modal__ref{color:#64748b;font-family:ui-monospace,Cascadia Code,SFMono-Regular,Menlo,monospace;font-size:.875rem;font-weight:600;margin:8px 0 0}.bookings-amount-modal__body{padding:18px 24px 8px}.bookings-amount-block{margin-bottom:14px}.bookings-amount-block__hint{color:#64748b;font-size:.78rem;line-height:1.4;margin:6px 0 0}.bookings-amount-row{align-items:baseline;border-bottom:1px solid #f1f5f9;display:flex;gap:16px;justify-content:space-between;padding:10px 0}.bookings-amount-row--compact{padding:8px 0}.bookings-amount-row__label{color:#475569;font-size:.95rem;font-weight:500}.bookings-amount-row__value{font-feature-settings:"tnum";color:#0f172a;font-size:.95rem;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.bookings-amount-modal__section-label{color:#94a3b8;font-size:.7rem;font-weight:700;letter-spacing:.06em;margin:16px 0 4px;text-transform:uppercase}.bookings-amount-row--subtotal{border-bottom:none;padding-top:4px}.bookings-amount-row--subtotal .bookings-amount-row__label,.bookings-amount-row--subtotal .bookings-amount-row__value{color:#334155;font-weight:700}.bookings-amount-row--total{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;margin-top:8px;padding:14px 16px}.bookings-amount-row--total .bookings-amount-row__label{color:#0f172a;font-size:1rem;font-weight:800}.bookings-amount-row--total .bookings-amount-row__value{color:#0d47a1;font-size:1.15rem;font-weight:800}.bookings-amount-modal__footer{padding:16px 24px 22px}.bookings-amount-modal__close-btn{background:#1976d2;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;padding:12px 16px;transition:background .2s;width:100%}.bookings-amount-modal__close-btn:hover{background:#1565c0}.bookings-amount-modal__close-btn:focus-visible{outline:2px solid #1976d2;outline-offset:2px}.locations-page{max-width:1400px}.btn-primary{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:8px;padding:10px 20px;transition:background .3s}.locations-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.location-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden;transition:transform .3s}.location-card:hover{transform:translateY(-5px)}.location-image{height:200px;object-fit:cover;width:100%}.location-info{padding:20px}.location-info h3{color:#333;margin-bottom:8px}.location-info p{color:#666;margin-bottom:12px}.location-badges{display:flex;gap:8px}.badge.new{background:#9c27b0;color:#fff}.location-actions{border-top:1px solid #e0e0e0;display:flex;gap:8px;padding:15px 20px}.modal-content{max-width:600px}.form-group input,.form-group textarea{border:1px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:10px;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:#1976d2;outline:none}.form-row{grid-gap:15px;display:grid;gap:15px;grid-template-columns:1fr 1fr}.btn-secondary{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;padding:10px 20px;transition:background .3s}.tickets-page{max-width:1400px}.badge-event{background:#7b1fa2;color:#fff}.badge-standard{background:#eceff1;color:#455a64}.event-ticket-fields{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-top:8px;padding:16px}.event-fields-title{color:#334155;font-size:1rem;font-weight:600;margin:0 0 12px}.event-date-column{display:flex;flex-direction:column;gap:0;max-width:280px}.form-dimensions-hint{color:#64748b;font-size:.85rem;line-height:1.45;margin:0 0 8px}.form-hint{color:#64748b;margin:8px 0 0}.form-hint--warn{color:#b45309}.modal-content .form-group input[type=file]{font-size:.9rem}.page-header>div,.tickets-page .page-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.tickets-page .view-toggle{background:#f5f5f5;border:1px solid #e0e0e0;border-radius:8px;display:flex;overflow:hidden}.tickets-page .view-toggle-btn{align-items:center;background:#0000;border:none;color:#666;cursor:pointer;display:flex;font-size:.95rem;font-weight:500;gap:6px;padding:8px 14px;transition:all .2s}.tickets-page .view-toggle-btn:hover{background:#eee;color:#333}.tickets-page .view-toggle-btn.active{background:#1976d2;color:#fff}.tickets-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:24px}.tickets-toolbar .search-wrap{flex:1 1;max-width:360px;min-width:220px;position:relative}.tickets-toolbar .search-icon{color:#888;font-size:1.1rem;left:12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tickets-toolbar .search-input{background:#fff;border:1px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:10px 12px 10px 40px;transition:border-color .2s;width:100%}.tickets-toolbar .search-input:focus{border-color:#1976d2;outline:none}.tickets-toolbar .filter-wrap{align-items:center;display:flex;gap:10px}.tickets-toolbar .filter-label{color:#444;font-size:.95rem;font-weight:600}.tickets-toolbar .filter-select{background:#fff;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:.95rem;min-width:120px;padding:10px 14px}.tickets-toolbar .filter-select:focus{border-color:#1976d2;outline:none}.tickets-list-wrap{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.tickets-table{border-collapse:collapse;font-size:.95rem;width:100%}.tickets-table thead{background:#f5f5f5;border-bottom:2px solid #e0e0e0}.tickets-table th{color:#444;font-weight:600;padding:14px 16px;text-align:left}.tickets-table th.th-actions{text-align:right;width:100px}.tickets-table tbody tr{border-bottom:1px solid #eee;transition:background .2s}.tickets-table tbody tr:hover{background:#fafafa}.tickets-table td{padding:12px 16px;vertical-align:middle}.tickets-table .td-name{color:#333;font-weight:600}.tickets-table .td-desc{color:#666;max-width:240px}.tickets-table .td-price{color:#1976d2;font-weight:700}.tickets-table .td-actions{text-align:right;white-space:nowrap}.tickets-table .td-actions .btn-delete,.tickets-table .td-actions .btn-edit{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;justify-content:center;margin-left:4px;padding:6px 8px}.tickets-table .td-empty{color:#666;font-size:.95rem;padding:40px 16px;text-align:center}.tickets-page .no-data{color:#666;margin-top:20px;padding:40px 20px;text-align:center}.tickets-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.ticket-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;justify-content:space-between;padding:20px}.ticket-info h3{color:#333;margin-bottom:8px}.ticket-category{color:#666;font-size:.9rem;margin-bottom:8px;text-transform:capitalize}.ticket-description{color:#666;font-size:.9rem;margin-bottom:12px}.ticket-price{color:#1976d2;font-weight:700;margin-bottom:12px}.ticket-actions{border-top:1px solid #e0e0e0;display:flex;gap:8px;margin-top:15px;padding-top:15px}.categories-page{max-width:1400px}.categories-page .page-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:30px}.categories-page .page-header h1{color:#333;font-size:2rem}.categories-page .btn-primary{align-items:center;background:#1976d2;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:8px;padding:10px 20px}.categories-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.category-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;justify-content:space-between;padding:20px}.category-info h3{color:#333;margin-bottom:8px}.category-code{color:#666;font-size:.9rem;margin-bottom:12px}.category-actions{border-top:1px solid #e0e0e0;display:flex;gap:8px;margin-top:15px;padding-top:15px}.category-actions .btn-delete,.category-actions .btn-edit{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;flex:1 1;justify-content:center;padding:8px}.category-actions .btn-edit{background:#1976d2;color:#fff}.category-actions .btn-delete{background:#f44336;color:#fff}.badge.inactive{border-radius:12px;font-size:.85rem;font-weight:600;padding:4px 12px}.categories-page .modal-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.categories-page .modal-content{background:#fff;border-radius:12px;max-height:90vh;max-width:500px;overflow-y:auto;padding:30px;width:90%}.categories-page .form-group{margin-bottom:20px}.categories-page .form-group label{color:#666;display:block;font-weight:600;margin-bottom:8px}.categories-page .form-group input{border:1px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:10px;width:100%}.categories-page .checkbox-group label{align-items:center;cursor:pointer;display:flex;gap:8px}.categories-page .checkbox-group input[type=checkbox]{width:auto}.categories-page .modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.categories-page .btn-secondary{background:#e0e0e0;border:none;border-radius:8px;color:#333;cursor:pointer;font-size:1rem;font-weight:600;padding:10px 20px}.form-hint{color:#888;display:block;font-size:.85rem;margin-top:4px}.categories-page .loading{font-size:1.2rem;padding:50px;text-align:center}.addons-page{max-width:1400px}.page-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:30px}.page-header h1{color:#333;font-size:2rem}.page-header>div{display:flex;gap:10px}.addons-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.addon-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;justify-content:space-between;padding:20px}.addon-info h3{color:#333;margin-bottom:8px}.addon-type{color:#666;font-size:.9rem;margin-bottom:8px;text-transform:capitalize}.addon-description{color:#666;font-size:.9rem;margin-bottom:12px}.addon-price{color:#1976d2;font-weight:700;margin-bottom:12px}.dietary-badges{display:flex;gap:8px;margin-bottom:12px}.badge{border-radius:12px;display:inline-block;font-size:.85rem;font-weight:600;padding:4px 12px}.badge.veg{background:#4caf50;color:#fff}.badge.non-veg{background:#f44336;color:#fff}.badge.active{background:#4caf50;color:#fff}.badge.inactive{background:#ccc;color:#666}.addon-actions{border-top:1px solid #e0e0e0;display:flex;gap:8px;margin-top:15px;padding-top:15px}.btn-delete,.btn-edit{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;flex:1 1;justify-content:center;padding:8px;transition:all .3s}.btn-edit{background:#1976d2;color:#fff}.btn-edit:hover{background:#1565c0}.btn-delete{background:#f44336;color:#fff}.btn-delete:hover{background:#da190b}.modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:12px;max-height:90vh;max-width:500px;overflow-y:auto;padding:30px;width:90%}.modal-content h2{color:#333}.form-group,.modal-content h2{margin-bottom:20px}.form-group label{color:#666}.form-group input,.form-group select,.form-group textarea{border:1px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:10px;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#1976d2;outline:none}.checkbox-group{display:flex;flex-wrap:wrap;gap:20px}.checkbox-group label{align-items:center;cursor:pointer;display:flex;gap:8px}.checkbox-group input[type=checkbox]{width:auto}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.btn-primary,.btn-secondary{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;padding:10px 20px;transition:background .3s}.btn-primary{background:#1976d2;color:#fff}.btn-primary:hover{background:#1565c0}.btn-secondary{background:#e0e0e0;color:#333}.btn-secondary:hover{background:#d0d0d0}.loading{font-size:1.2rem;padding:50px;text-align:center}.promocodes-page{max-width:1400px}.promocodes-page .page-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:30px}.promocodes-page .page-header h1{color:#333;font-size:2rem}.promocodes-page .page-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.promocodes-page .view-toggle{background:#f5f5f5;border:1px solid #e0e0e0;border-radius:8px;display:flex;overflow:hidden}.promocodes-page .view-toggle-btn{align-items:center;background:#0000;border:none;color:#666;cursor:pointer;display:flex;font-size:.95rem;font-weight:500;gap:6px;padding:8px 14px;transition:all .2s}.promocodes-page .view-toggle-btn:hover{background:#eee;color:#333}.promocodes-page .view-toggle-btn.active{background:#1976d2;color:#fff}.promocodes-list-wrap{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.promocodes-table{border-collapse:collapse;font-size:.95rem;width:100%}.promocodes-table thead{background:#f5f5f5;border-bottom:2px solid #e0e0e0}.promocodes-table th{color:#444;font-weight:600;padding:14px 16px;text-align:left}.promocodes-table th.th-actions{text-align:right;width:100px}.promocodes-table tbody tr{border-bottom:1px solid #eee;transition:background .2s}.promocodes-table tbody tr:hover{background:#fafafa}.promocodes-table td{padding:12px 16px;vertical-align:middle}.promocodes-table .td-code{color:#1976d2;font-weight:700;letter-spacing:.05em}.promocodes-table .td-desc{color:#666;max-width:200px}.promocodes-table .td-value{color:#2e7d32;font-weight:600}.promocodes-table .td-actions{text-align:right;white-space:nowrap}.promocodes-table .td-actions .btn-delete,.promocodes-table .td-actions .btn-edit{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;justify-content:center;margin-left:4px;padding:6px 8px}.promocodes-table .td-actions .btn-edit{background:#e3f2fd;color:#1976d2}.promocodes-table .td-actions .btn-delete{background:#ffebee;color:#c62828}.promocodes-table .td-empty{color:#666;font-size:.95rem;padding:40px 16px;text-align:center}.promocodes-page .btn-primary{align-items:center;background:#1976d2;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:8px;padding:10px 20px;transition:background .3s}.promocodes-page .btn-primary:hover{background:#1565c0}.promocodes-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:20px;margin-bottom:24px}.promocodes-toolbar .search-wrap{flex:1 1;max-width:360px;min-width:220px;position:relative}.promocodes-toolbar .search-icon{color:#888;font-size:1.1rem;left:12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.promocodes-toolbar .search-input{background:#fff;border:1px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:10px 12px 10px 40px;transition:border-color .2s;width:100%}.promocodes-toolbar .search-input:focus{border-color:#1976d2;outline:none}.promocodes-toolbar .filter-wrap{align-items:center;display:flex;gap:10px}.promocodes-toolbar .filter-label{color:#444;font-size:.95rem;font-weight:600}.promocodes-toolbar .filter-select{background:#fff;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:.95rem;min-width:120px;padding:10px 14px}.promocodes-toolbar .filter-select:focus{border-color:#1976d2;outline:none}.promocodes-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.promo-card{align-items:flex-start;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;gap:16px;justify-content:space-between;padding:20px;transition:transform .2s}.promo-card:hover{transform:translateY(-2px)}.promo-info{flex:1 1;min-width:0}.promo-code{color:#1976d2;font-size:1.25rem;font-weight:700;letter-spacing:.05em;margin-bottom:6px}.promo-desc{color:#666;font-size:.9rem;margin-bottom:8px}.promo-value{color:#2e7d32;font-weight:600;margin-bottom:8px}.promo-meta{color:#666;display:flex;flex-direction:column;font-size:.85rem;gap:4px;margin-bottom:10px}.promo-badges{display:flex;gap:8px}.promo-badges .badge{border-radius:12px;display:inline-block;font-size:.85rem;font-weight:600;padding:4px 12px}.promo-badges .badge.active{background:#4caf50;color:#fff}.promo-badges .badge.inactive{background:#ccc;color:#666}.promo-actions{display:flex;flex-shrink:0;gap:8px}.promo-actions .btn-delete,.promo-actions .btn-edit{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .2s}.promo-actions .btn-edit{background:#e3f2fd;color:#1976d2}.promo-actions .btn-edit:hover{background:#1976d2;color:#fff}.promo-actions .btn-delete{background:#ffebee;color:#c62828}.promo-actions .btn-delete:hover{background:#c62828;color:#fff}.promocodes-page .no-data{color:#666;padding:40px 20px;text-align:center}.promocodes-page .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding:20px;position:fixed;right:0;top:0;z-index:1000}.promocodes-page .modal-content{background:#fff;border-radius:14px;flex-shrink:0;margin:auto;max-width:720px;min-width:560px;padding:36px 48px;width:92%}.promocodes-page .modal-content h2{color:#333;font-size:1.75rem;margin-bottom:24px}.promocodes-page .form-group{margin-bottom:20px}.promocodes-page .form-group label{color:#444;display:block;font-size:1rem;font-weight:600;margin-bottom:8px}.promocodes-page .form-group input,.promocodes-page .form-group select{border:1px solid #e0e0e0;border-radius:8px;box-sizing:border-box;font-size:1.05rem;padding:12px 14px;width:100%}.promocodes-page .form-group input:focus,.promocodes-page .form-group select:focus{border-color:#1976d2;outline:none}.promocodes-page .form-group small{color:#666;display:block;font-size:.85rem;margin-top:4px}.promocodes-page .form-row{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr}.promocodes-page .form-row-actions .checkbox-group{align-items:flex-end;display:flex;padding-bottom:2px}.promocodes-page .checkbox-group label{align-items:center;cursor:pointer;display:flex;font-weight:400;gap:8px}.promocodes-page .checkbox-group input[type=checkbox]{width:auto}.promocodes-page .modal-actions{border-top:1px solid #eee;display:flex;gap:14px;justify-content:flex-end;margin-top:28px;padding-top:24px}.promocodes-page .btn-secondary,.promocodes-page .modal-actions .btn-primary,.promocodes-page .modal-actions .btn-secondary{font-size:1.05rem;padding:12px 24px}.promocodes-page .btn-secondary{background:#f5f5f5;border:none;border-radius:8px;color:#333;cursor:pointer}.promocodes-page .btn-secondary:hover{background:#eee}.promocodes-page .loading{color:#666;padding:40px;text-align:center}.payment-logs-page{max-width:100%;overflow-x:hidden;padding:24px}.payment-logs-page .page-header{margin-bottom:24px}.payment-logs-page .page-header h1{color:#333;font-size:1.5rem;font-weight:600}.payment-logs-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.payment-logs-toolbar .search-wrap{flex:1 1;max-width:400px;min-width:200px;position:relative}.payment-logs-toolbar .search-icon{color:#888;font-size:1rem;left:12px;position:absolute;top:50%;transform:translateY(-50%)}.payment-logs-toolbar .search-input{border:1px solid #ddd;border-radius:8px;font-size:.95rem;padding:10px 12px 10px 40px;width:100%}.payment-logs-toolbar .filter-wrap{align-items:center;display:flex;gap:8px}.payment-logs-toolbar .filter-label{color:#666;font-size:.9rem}.payment-logs-toolbar .filter-select{border:1px solid #ddd;border-radius:8px;font-size:.95rem;padding:8px 12px}.payment-logs-table-wrap{background:#fff;border-radius:8px;box-shadow:0 1px 3px #00000014;overflow:hidden}.payment-logs-table{border-collapse:collapse;width:100%}.payment-logs-table td,.payment-logs-table th{border-bottom:1px solid #eee;padding:12px 16px;text-align:left}.payment-logs-table th{background:#f8f9fa;color:#333;font-size:.85rem;font-weight:600}.payment-logs-table tbody tr:hover{background:#f8f9fa}.payment-logs-table .btn-view-details{align-items:center;background:#1976d2;border:1px solid #1976d2;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;font-size:.85rem;gap:6px;padding:6px 12px;transition:all .2s}.payment-logs-table .btn-view-details:hover{background:#1565c0;border-color:#1565c0}.payment-logs-table .td-empty{color:#888;padding:40px;text-align:center}.payment-logs-table .td-txn-id{font-family:monospace;font-weight:500}.payment-logs-table .td-razorpay{font-family:monospace;font-size:.95rem}.payment-logs-table .badge{border-radius:12px;display:inline-block;font-size:.8rem;font-weight:500;padding:4px 10px}.payment-logs-table .badge-initiated{background:#fff3cd;color:#856404}.payment-logs-table .badge-order{background:#cce5ff;color:#004085}.payment-logs-table .badge-success{background:#d4edda;color:#155724}.payment-logs-table .badge-webhook{background:#d1ecf1;color:#0c5460}.payment-logs-table .badge-failed{background:#f8d7da;color:#721c24}.payment-log-detail{background:#fff;border-radius:8px;box-shadow:0 1px 3px #00000014;margin-top:24px;padding:20px}.payment-log-detail h3{color:#333;font-size:1rem;margin-bottom:12px}.payment-log-detail pre{background:#f8f9fa;border-radius:6px;font-size:.85rem;max-height:400px;overflow-x:auto;overflow-y:auto;padding:16px}.payment-logs-pagination{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-top:20px;padding:12px 0}.payment-logs-pagination .pagination-info{color:#666;font-size:.9rem}.payment-logs-pagination .pagination-buttons{display:flex;gap:8px}.payment-logs-pagination .pagination-btn{align-items:center;background:#fff;border:1px solid #ddd;border-radius:8px;cursor:pointer;display:flex;font-size:.9rem;gap:6px;padding:8px 14px;transition:all .2s}.payment-logs-pagination .pagination-btn:hover:not(:disabled){background:#f5f5f5;border-color:#1976d2;color:#1976d2}.payment-logs-pagination .pagination-btn:disabled{cursor:not-allowed;opacity:.5}.payment-logs-page .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.payment-logs-page .modal-content.payment-log-modal{background:#fff;border-radius:12px;max-height:90vh;max-width:560px;overflow-y:auto;padding:24px;width:90%}.payment-logs-page .modal-content.payment-log-modal h2{color:#333;font-size:1.25rem;margin-bottom:20px}.payment-log-form{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.payment-log-form .form-group{margin-bottom:0}.payment-log-form .form-group label{color:#666;display:block;font-size:.85rem;font-weight:600;margin-bottom:6px}.payment-log-form .form-group input,.payment-log-form .form-group textarea{background:#fafafa;border:1px solid #e0e0e0;border-radius:6px;font-size:.95rem;padding:8px 12px;width:100%}.payment-log-form .form-group-full{grid-column:1/-1}.payment-log-form .form-group-full textarea{font-family:monospace;font-size:.85rem;min-height:120px}.payment-log-form .form-group-full textarea.payload-empty,.payment-log-form .form-group-full textarea.webhook-empty{color:#888;font-style:italic}.payment-flow-section{border-top:1px solid #e8e8e8;margin-top:8px;padding-top:16px}.payment-flow-section:first-of-type{border-top:none;margin-top:0;padding-top:0}.payment-flow-section label{color:#1976d2;font-size:.95rem}.modal-loading{color:#666;padding:40px;text-align:center}.payload-meta{color:#666;font-size:.8rem;margin-bottom:6px}.payment-logs-page .modal-actions{display:flex;justify-content:flex-end;margin-top:24px}.payment-logs-page .modal-actions .btn-secondary{background:#fff;border:1px solid #ddd;border-radius:8px;cursor:pointer;font-size:.95rem;padding:10px 20px;transition:all .2s}.payment-logs-page .modal-actions .btn-secondary:hover{background:#f5f5f5;border-color:#1976d2;color:#1976d2}.login-page{align-items:center;display:flex;justify-content:center;min-height:100vh;overflow:hidden;padding:24px;position:relative}.login-page-bg{background-color:#1565c0;background-position:50%;background-repeat:no-repeat;background-size:cover;inset:0;position:absolute;z-index:0}.login-page-bg:before{background:linear-gradient(145deg,#1565c0d9,#0d47a1e0 50%,#1565c0d9);inset:0}.login-page-bg:after,.login-page-bg:before{content:"";pointer-events:none;position:absolute}.login-page-bg:after{background:linear-gradient(0deg,#00000040 0,#0000);bottom:0;height:50%;left:0;right:0}.login-card{animation:loginCardIn .5s ease-out;background:linear-gradient(180deg,#fff,#fafbff);border-radius:24px;box-shadow:0 0 0 1px #0000000a,0 2px 4px #0000000a,0 12px 24px #00000014,0 24px 48px #0000001f;max-width:440px;overflow:hidden;padding:0;position:relative;width:100%;z-index:1}.login-card:before{background:linear-gradient(90deg,#1976d2,#7c4dff 50%,#1565c0);content:"";height:4px;left:0;opacity:.9;position:absolute;right:0;top:0}@keyframes loginCardIn{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-card-logo{border-bottom:1px solid #0000000f;margin:0 auto;padding:32px 44px 16px;text-align:center}.login-logo-img{display:block;height:auto;margin:0 auto;max-width:200px;object-fit:contain;width:100%}.login-title{color:#1a1a2e;font-size:1.65rem;font-weight:700;letter-spacing:-.03em;margin:0;padding:24px 44px 4px;text-align:center}.login-subtitle{color:#64748b;font-size:.9rem;line-height:1.5;margin:0 0 28px;padding:0 44px;text-align:center}.login-form{display:flex;flex-direction:column;padding:0 44px 40px}.form-group{margin-bottom:18px}.form-group label{color:#334155;display:block;font-size:.875rem;font-weight:600;margin-bottom:8px}.input-wrap{align-items:center;display:flex;position:relative}.input-icon{color:#94a3b8;font-size:1.1rem;left:14px;pointer-events:none;position:absolute;transition:color .2s ease}.form-group input{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:12px;font-size:1rem;padding:13px 14px 13px 44px;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease;width:100%}.form-group input::placeholder{color:#94a3b8}.form-group input:hover{background:#fff;border-color:#cbd5e1}.form-group input:focus{background:#fff;border-color:#1976d2;box-shadow:0 0 0 3px #1976d21f;outline:none}.input-wrap:focus-within .input-icon{color:#1976d2}.error-message{align-items:center;background:#fef2f2;border:1px solid #fecaca;border-radius:12px;color:#b91c1c;display:flex;font-size:.9rem;font-weight:500;gap:10px;margin-bottom:16px;padding:12px 14px}.error-icon{flex-shrink:0;font-size:1.2rem}.login-button{align-items:center;background:linear-gradient(135deg,#1976d2,#1565c0);border:none;border-radius:12px;box-shadow:0 2px 8px #1976d259;color:#fff;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:600;gap:10px;justify-content:center;letter-spacing:.02em;margin-top:6px;padding:15px;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;width:100%}.login-button:hover:not(:disabled){box-shadow:0 6px 20px #1976d266;transform:translateY(-2px)}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:focus-visible{box-shadow:0 0 0 3px #fff,0 0 0 6px #1976d2;outline:none}.login-button:disabled{cursor:not-allowed;opacity:.85;transform:none}.btn-spinner{animation:spin .7s linear infinite;border:2px solid #ffffff59;border-radius:50%;border-top-color:#fff;height:18px;width:18px}@keyframes spin{to{transform:rotate(1turn)}}.change-password-page{align-items:center;background:linear-gradient(135deg,#1976d2,#1565c0);display:flex;justify-content:center;min-height:100vh}.change-password-card{background:#fff;border-radius:16px;box-shadow:0 4px 16px #0003;max-width:400px;padding:40px;width:100%}.change-password-icon{align-items:center;background:#1976d21f;border-radius:50%;color:#1976d2;display:flex;font-size:1.5rem;height:56px;justify-content:center;margin:0 auto 20px;width:56px}.change-password-card h1{color:#333;margin-bottom:8px;text-align:center}.change-password-subtitle{color:#666;font-size:.95rem;margin-bottom:24px;text-align:center}.change-password-card .form-group{margin-bottom:20px}.change-password-card .form-group label{color:#666;display:block;font-weight:600;margin-bottom:8px}.change-password-card .form-group input{border:1px solid #e0e0e0;border-radius:8px;box-sizing:border-box;font-size:1rem;padding:12px;width:100%}.change-password-card .form-group input:focus{border-color:#1976d2;outline:none}.change-password-card .error-message{color:#f44336;font-size:.9rem;margin-bottom:15px;text-align:center}.change-password-card .login-button{background:#1976d2;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px;transition:background .3s;width:100%}.change-password-card .login-button:hover:not(:disabled){background:#1565c0}.change-password-card .login-button:disabled{cursor:not-allowed;opacity:.7}.scanner-page{--theme-admin:#1976d2;--theme-admin-dark:#1565c0;--theme-admin-light:#e3f2fd;--theme-admin-soft:#f5f9ff;--scanner-bg:#f8fafc;--scanner-card:#fff;--scanner-border:#e2e8f0;--scanner-text:#0f172a;--scanner-muted:#64748b;--scanner-primary:#1976d2;--scanner-primary-hover:#1565c0;--scanner-success:#2e7d32;--scanner-danger:#c62828;--scanner-radius:clamp(12px,2vw,16px);--scanner-shadow:0 4px 24px #0f172a14;--scanner-touch:48px;box-sizing:border-box;color:var(--scanner-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:min(1200px,100%);min-height:min(85vh,100%);padding:clamp(12px,3vw,24px) clamp(12px,3vw,24px) max(clamp(16px,4vw,32px),env(safe-area-inset-bottom));width:100%}.scanner-visually-hidden{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.scanner-header{margin-bottom:clamp(16px,3vw,24px)}.scanner-title{font-size:clamp(1.35rem,4vw,1.85rem);font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0 0 .35em}.scanner-sub{color:var(--scanner-muted);font-size:clamp(.875rem,2.4vw,1rem);line-height:1.5;margin:0;max-width:52ch}.scanner-layout{grid-gap:clamp(16px,3vw,28px);align-items:start;display:grid;gap:clamp(16px,3vw,28px)}.scanner-scan-section{min-width:0}.scanner-camera-card{background:var(--scanner-card);border:1px solid var(--scanner-border);border-radius:var(--scanner-radius);box-shadow:var(--scanner-shadow);padding:clamp(1rem,3vw,1.5rem)}.scanner-controls{display:flex;flex-wrap:wrap;gap:clamp(8px,2vw,12px);margin-bottom:clamp(12px,2vw,16px)}.scanner-btn{align-items:center;border:none;border-radius:12px;cursor:pointer;display:inline-flex;font-size:clamp(.875rem,2.2vw,.95rem);font-weight:600;gap:.5rem;justify-content:center;line-height:1.2;min-height:var(--scanner-touch);padding:.65rem 1.1rem;transition:background .15s ease,transform .15s ease,box-shadow .15s ease}.scanner-btn:focus-visible{outline:3px solid #1565c073;outline-offset:2px}.scanner-btn:disabled{cursor:not-allowed;opacity:.55}.scanner-btn--primary{background:var(--scanner-primary);color:#fff}.scanner-btn--primary:hover:not(:disabled){background:var(--scanner-primary-hover)}.scanner-btn--secondary{background:#f1f5f9;border:1px solid var(--scanner-border);color:var(--scanner-text)}.scanner-btn--secondary:hover:not(:disabled){background:#e2e8f0}.scanner-btn--success{background:var(--scanner-success);color:#fff;flex:1 1 auto;min-width:min(100%,220px)}.scanner-btn--success:hover:not(:disabled){background:#047857}.scanner-btn--danger{background:var(--scanner-danger);color:#fff;flex:1 1 auto;min-width:min(100%,200px)}.scanner-btn--danger:hover:not(:disabled){background:#b91c1c}.scanner-file-input{height:1px;opacity:0;pointer-events:none;position:absolute;width:1px}.scanner-reader-wrap{margin:0 auto;max-width:min(400px,100%);width:100%}.scanner-reader-frame{aspect-ratio:1;background:#0f172a;border-radius:var(--scanner-radius);box-shadow:inset 0 0 0 2px #ffffff14;max-height:min(72vw,420px);overflow:hidden;position:relative;width:100%}.scanner-reader-frame[data-active=true]{box-shadow:inset 0 0 0 2px #ffffff1f,0 0 0 2px #1565c059}.scanner-reader{height:100%;min-height:200px;width:100%}.scanner-reader>*{height:100%!important;object-fit:cover;width:100%!important}.scanner-reader-placeholder{align-items:center;background:linear-gradient(160deg,#1e293b,#0f172a);color:#94a3b8;display:flex;inset:0;justify-content:center;padding:clamp(16px,4vw,24px);pointer-events:none;position:absolute;text-align:center;z-index:1}.scanner-reader-placeholder-inner{max-width:220px}.scanner-reader-placeholder-icon{height:clamp(40px,10vw,52px);margin-bottom:12px;opacity:.6;width:clamp(40px,10vw,52px)}.scanner-reader-placeholder-inner p{font-size:clamp(.875rem,2.5vw,.95rem);line-height:1.4;margin:0}.scanner-reader-hint{font-size:clamp(.75rem,2vw,.8rem)!important;margin-top:8px!important;opacity:.85}.scanner-manual{margin-top:clamp(1.25rem,3vw,1.75rem)}.scanner-manual-label{color:var(--scanner-muted);display:block;font-size:clamp(.8rem,2vw,.875rem);font-weight:600;margin-bottom:8px}.scanner-manual-row{align-items:stretch;display:flex;flex-wrap:wrap;gap:10px}.scanner-manual-row input{font-feature-settings:"tnum";border:1px solid #cbd5e1;border-radius:12px;flex:1 1 180px;font-size:clamp(1rem,2.8vw,1.05rem);font-variant-numeric:tabular-nums;min-height:var(--scanner-touch);min-width:0;padding:.65rem .85rem}.scanner-manual-row input:focus-visible{border-color:var(--scanner-primary);outline:3px solid #1565c059;outline-offset:1px}.scanner-inline-status{align-items:center;background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--scanner-radius);color:var(--scanner-primary);display:flex;font-size:clamp(.875rem,2.2vw,.95rem);font-weight:600;gap:.65rem;justify-content:center;margin-top:clamp(12px,2vw,16px);padding:clamp(.75rem,2vw,1rem)}.scanner-spinner{flex-shrink:0}.scanner-spinner,.scanner-spinner-inline{animation:scanner-spin .85s linear infinite}@keyframes scanner-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.scanner-spinner,.scanner-spinner-inline{animation:none}.scanner-btn{transition:none}}.scanner-alert{align-items:flex-start;border-radius:var(--scanner-radius);display:flex;font-size:clamp(.875rem,2.2vw,.95rem);gap:12px;line-height:1.45;padding:clamp(12px,2vw,16px)}.scanner-alert--error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.scanner-alert--modal{margin-bottom:1rem}.scanner-alert-icon{flex-shrink:0;margin-top:2px}.scanner-result{animation:scanner-result-in .25s ease-out;border:1px solid var(--scanner-border);border-radius:var(--scanner-radius);padding:clamp(1rem,3vw,1.35rem)}.scanner-modal-body--flow{padding:clamp(16px,4vw,24px)}.scanner-popup-inline-error{background:#ffebee;border:1px solid #ffcdd2;border-radius:10px;color:#b71c1c;font-size:.9rem;font-weight:600;margin-bottom:16px;padding:10px 14px;text-align:center}.scanner-popup{margin:0 auto;max-width:380px;text-align:center}.scanner-popup-icon{align-items:center;border-radius:50%;display:flex;height:72px;justify-content:center;margin:0 auto 18px;width:72px}.scanner-popup-icon svg{height:36px;width:36px}.scanner-popup-icon--success{background:#e8f5e9;color:#2e7d32}.scanner-popup-icon--reject{background:#ffebee;color:#c62828}.scanner-popup-icon--error{background:#fce4ec;color:#ad1457}.scanner-popup-icon--future{background:#fff3e0;color:#ef6c00}.scanner-popup-icon--warn{background:#fff8e1;color:#f57f17}.scanner-popup-text{color:#37474f;font-size:clamp(1rem,2.8vw,1.125rem);line-height:1.5;margin:0 0 18px}.scanner-popup-text--success{color:#1b5e20;font-weight:700}.scanner-popup-text--error{color:#b71c1c;font-weight:700}.scanner-members-badge{align-items:center;background:linear-gradient(145deg,#0d47a1,#1565c0 55%,#1976d2);border:2px solid #ffffff59;border-radius:14px;box-shadow:0 4px 16px #0d47a173,inset 0 1px 0 #fff3;color:#fff;display:flex;flex-direction:column;gap:6px;justify-content:center;margin:0 auto 16px;max-width:280px;padding:14px 18px}.scanner-members-badge--approved{background:linear-gradient(145deg,#1b5e20,#2e7d32 50%,#388e3c);border-color:#ffffff4d;box-shadow:0 4px 16px #1b5e2066,inset 0 1px 0 #fff3}.scanner-members-badge--neutral{background:linear-gradient(145deg,#37474f,#455a64);border-color:#ffffff38;box-shadow:0 4px 14px #37474f59,inset 0 1px 0 #ffffff26}.scanner-members-badge__label{font-size:.68rem;font-weight:800;letter-spacing:.08em;line-height:1.2;opacity:.95;text-transform:uppercase}.scanner-members-badge__value{font-size:clamp(1.85rem,6vw,2.25rem);font-weight:800;letter-spacing:-.03em;line-height:1;text-shadow:0 2px 4px #0003}.scanner-popup-minimal{background:var(--theme-admin-soft);border:1px solid #bbdefb;border-radius:12px;margin-bottom:20px;padding:14px 16px;text-align:left}.scanner-popup-line{align-items:baseline;border-bottom:1px solid #1976d21f;display:flex;font-size:.95rem;gap:12px;justify-content:space-between;padding:8px 0}.scanner-popup-line:last-child{border-bottom:none;padding-bottom:0}.scanner-popup-line span{color:var(--scanner-muted);font-weight:600}.scanner-popup-line strong{color:var(--theme-admin-dark);font-weight:700;text-align:right}.scanner-popup-id{font-family:ui-monospace,Cascadia Code,SFMono-Regular,Menlo,monospace;font-size:.85rem;letter-spacing:.04em}.scanner-popup-actions{display:flex;flex-direction:column;gap:10px}.scanner-popup-actions--single{margin:0 auto;max-width:220px;width:100%}.scanner-btn--popup{justify-content:center;min-height:48px;width:100%}@keyframes scanner-result-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.scanner-result{animation:none}}.scanner-result--ok{background:#f0fdf4;border-color:#6ee7b7}.scanner-result--warn{background:#fffbeb;border-color:#fcd34d}.scanner-result-banner{align-items:flex-start;color:var(--scanner-text);display:flex;font-size:clamp(.95rem,2.4vw,1.05rem);font-weight:700;gap:10px;line-height:1.35;margin-bottom:clamp(12px,2vw,16px)}.scanner-result-banner svg{flex-shrink:0;margin-top:2px}.scanner-details{display:flex;flex-direction:column;font-size:clamp(.85rem,2.2vw,.92rem);gap:clamp(10px,2vw,12px);margin:0}.scanner-details-row{grid-gap:8px 12px;align-items:baseline;border-bottom:1px solid #94a3b859;display:grid;gap:8px 12px;grid-template-columns:minmax(100px,34%) 1fr;padding-bottom:10px}.scanner-details-row:last-of-type{border-bottom:none;padding-bottom:0}@media (max-width:380px){.scanner-details-row{gap:4px;grid-template-columns:1fr}}.scanner-details dt{color:var(--scanner-muted);font-weight:600;margin:0}.scanner-details dd{color:var(--scanner-text);margin:0;word-break:break-word}.scanner-details-sep{opacity:.55}.scanner-status-pill{background:#0f172a14;border:1px solid var(--scanner-border);border-radius:8px;display:inline-block;font-size:.95em;font-weight:700;padding:.2em .55em;text-transform:capitalize}.scanner-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(1rem,3vw,1.25rem)}.scanner-actions--modal{flex-direction:column}.scanner-actions--modal .scanner-btn{justify-content:center;width:100%}@media (min-width:480px){.scanner-actions--modal{flex-direction:row;flex-wrap:wrap}.scanner-actions--modal .scanner-btn{flex:1 1 auto;width:auto}}.scanner-modal-backdrop{align-items:center;animation:scanner-modal-backdrop-in .2s ease;background:#0f172a8c;box-sizing:border-box;display:flex;inset:0;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));position:fixed;z-index:10050}@keyframes scanner-modal-backdrop-in{0%{opacity:0}to{opacity:1}}.scanner-modal{animation:scanner-modal-in .22s ease;background:#fff;border:1px solid var(--scanner-border);border-radius:var(--scanner-radius);box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:min(90vh,100%);max-width:min(420px,100%);overflow:hidden;width:100%}@keyframes scanner-modal-in{0%{opacity:0;transform:scale(.98) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@media (prefers-reduced-motion:reduce){.scanner-modal,.scanner-modal-backdrop{animation:none}}.scanner-modal-header{align-items:center;background:linear-gradient(180deg,var(--theme-admin-soft) 0,#fafafa 100%);border-bottom:1px solid #e3f2fd;display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:clamp(14px,3vw,18px) clamp(16px,3vw,20px)}.scanner-modal-title{color:var(--theme-admin-dark);font-size:clamp(1.05rem,3vw,1.2rem);font-weight:700;margin:0}.scanner-modal-close{align-items:center;background:#0000;border:none;border-radius:10px;color:var(--scanner-muted);cursor:pointer;display:flex;flex-shrink:0;height:44px;justify-content:center;padding:0;width:44px}.scanner-modal-close:hover{background:#1976d21a;color:var(--theme-admin)}.scanner-modal-close:focus-visible{outline:3px solid #1976d259;outline-offset:2px}.scanner-modal-close svg{font-size:1.35rem}.scanner-modal-body{flex:1 1;min-height:0;overflow-y:auto;padding:clamp(16px,3vw,20px)}@media print{.scanner-controls,.scanner-modal-backdrop,.scanner-reader-placeholder{display:none}}
/*# sourceMappingURL=main.bbd5e93d.css.map*/