:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#333;background-color:#f4f6fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#4f8cff;text-decoration:inherit}a:hover{color:#3f6df0}body{margin:0;min-width:320px;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}h1{font-size:3.2em;line-height:1.1}button{border-radius:6px;border:1px solid #4f8cff;padding:.5em 1em;font-size:.95em;font-weight:500;font-family:inherit;background-color:#4f8cff;color:#fff;cursor:pointer;transition:background-color .2s,border-color .2s}button:hover{background-color:#3f6df0;border-color:#3f6df0}button:disabled{opacity:.6;cursor:not-allowed}button:focus,button:focus-visible{outline:3px solid rgba(79,140,255,.4)}.jobs-page{padding:20px;height:100%;display:flex;flex-direction:column}.jobs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #ddd}.jobs-header h1{margin:0;color:#333;font-size:24px;font-weight:600}.jobs-stats{display:flex;gap:20px}.stat{display:flex;flex-direction:column;align-items:center;padding:10px 15px;background:#f8f9fa;border-radius:8px;min-width:80px;border:1px solid #e9ecef}.stat-label{font-size:12px;color:#666;margin-bottom:4px;text-transform:uppercase;font-weight:500}.stat-value{font-size:18px;font-weight:700;color:#333}.stat-value.active{color:#28a745}.error-message{background:#f8d7da;color:#721c24;padding:12px;border-radius:6px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;border:1px solid #f5c6cb}.error-message button{background:none;border:none;font-size:18px;cursor:pointer;color:#721c24;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.error-message button:hover{background:#721c24;color:#fff;border-radius:50%}.jobs-filters{display:flex;gap:15px;margin-bottom:20px;align-items:center;flex-wrap:wrap}.jobs-filters input,.jobs-filters select{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;min-width:150px}.jobs-filters input:focus,.jobs-filters select:focus{outline:none;border-color:#4f8cff;box-shadow:0 0 0 2px #4f8cff33}.jobs-filters button{padding:8px 16px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500}.jobs-filters button:hover{background:#0056b3}.bulk-actions{display:flex;justify-content:space-between;align-items:center;padding:10px 15px;background:#e9ecef;border-radius:6px;margin-bottom:20px;border:1px solid #dee2e6}.bulk-actions span{font-weight:500;color:#495057}.bulk-actions button{padding:6px 12px;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500}.bulk-actions button:hover{background:#c82333}.jobs-table-container{flex:1;overflow:auto;border:1px solid #ddd;border-radius:6px;background:#fff}.jobs-table{width:100%;border-collapse:collapse;font-size:14px}.jobs-table th,.jobs-table td{padding:12px;text-align:left;border-bottom:1px solid #ddd}.jobs-table th{background:#f8f9fa;font-weight:600;color:#333;position:sticky;top:0;z-index:1;border-bottom:2px solid #dee2e6}.jobs-table tr:hover{background:#f8f9fa}.jobs-table tr.active{background:#d4edda}.jobs-table tr.paused{background:#fff3cd}.jobs-table tr.completed{background:#d1ecf1}.jobs-table tr.failed{background:#f8d7da}.job-id{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;color:#666;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge{padding:4px 8px;border-radius:12px;font-size:12px;font-weight:500;text-transform:uppercase;display:inline-block;min-width:60px;text-align:center}.status-badge.active{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.status-badge.paused{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.status-badge.completed{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.status-badge.failed{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.actions{display:flex;gap:8px;flex-wrap:wrap}.actions button{padding:4px 8px;border:1px solid #ddd;background:#fff;border-radius:4px;cursor:pointer;font-size:12px;font-weight:500;transition:all .2s ease}.actions button:hover{background:#f8f9fa;border-color:#adb5bd}.actions button.danger{border-color:#dc3545;color:#dc3545}.actions button.danger:hover{background:#dc3545;color:#fff}.no-jobs{text-align:center;padding:40px;color:#666;font-style:italic;background:#f8f9fa;border-radius:6px;margin:20px 0}.jobs-loading{display:flex;justify-content:center;align-items:center;height:200px;color:#666;font-size:16px}@media (max-width: 768px){.jobs-page{padding:10px}.jobs-header{flex-direction:column;gap:15px;align-items:flex-start}.jobs-stats{gap:10px}.stat{min-width:60px;padding:8px 10px}.jobs-filters{flex-direction:column;align-items:stretch}.jobs-filters input,.jobs-filters select{min-width:auto}.jobs-table th,.jobs-table td{padding:8px;font-size:12px}.job-id{max-width:100px}.actions{flex-direction:column;gap:4px}.actions button{width:100%}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}#root,.app-container{display:flex;height:100vh;margin:0;padding:0}.sidebar{width:240px;background:#fff;border-right:1px solid #e0e0e0;padding:16px;box-sizing:border-box;overflow-y:auto;box-shadow:2px 0 4px #0000000a}.sidebar h3{margin-top:0}.sidebar button{width:100%;margin-top:4px}.content{flex:1;padding:24px;overflow:auto;background:#fff}.search-input{padding:6px 8px;border:1px solid #ccc;border-radius:4px}.classes-table th{background:#f9fafc;text-align:left;padding:8px;border-bottom:1px solid #e5e8ec}.classes-table td{padding:8px;border-bottom:1px solid #f1f2f4}.classes-table tr:nth-child(2n){background:#fcfcfd}.classes-table tr:hover{background:#f3f6ff}.favorite-toggle{transition:transform .2s ease}.favorite-toggle:hover{transform:scale(1.2)}.favorite-toggle:active{transform:scale(.9)}.favorites-card{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin-bottom:16px;background:#fff;box-shadow:0 2px 4px #0000000a;transition:box-shadow .2s ease}.favorites-card:hover{box-shadow:0 4px 8px #00000014}.favorites-settings{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;padding:16px;margin-bottom:24px}.tab-navigation{display:flex;border-bottom:1px solid #e0e0e0;background:#f8f9fa}.tab-button{padding:12px 24px;border:none;background:transparent;cursor:pointer;border-bottom:2px solid transparent;transition:all .2s ease}.tab-button:hover{background:#4f8cff0d}.tab-button.active{background:#fff;border-bottom-color:#4f8cff;font-weight:700}.bulk-action-button{background:#4f8cff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background .2s ease}.bulk-action-button:hover{background:#3d7ae0}.bulk-action-button:disabled{background:#ccc;cursor:not-allowed}.occurrence-status{padding:8px;border-radius:4px;font-size:14px}.occurrence-status.upcoming{background:#f0f8ff}.occurrence-status.none{background:#f5f5f5;color:#666}.upcoming-classes-container{padding:24px;max-width:1200px;margin:0 auto}.upcoming-classes-container h2{margin-top:0;margin-bottom:24px;color:#333;border-bottom:2px solid #4f8cff;padding-bottom:8px}.upcoming-classes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e0e0e0}.user-info p{margin:4px 0;color:#666}.refresh-button,.retry-button{background:#4f8cff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background .2s ease;font-size:14px}.refresh-button:hover,.retry-button:hover{background:#3d7ae0}.upcoming-classes-list{display:flex;flex-direction:column;gap:16px}.upcoming-class-card{border:1px solid #e0e0e0;border-radius:8px;padding:20px;background:#fff;box-shadow:0 2px 4px #0000000a;transition:box-shadow .2s ease,transform .2s ease}.upcoming-class-card:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.class-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #f0f0f0}.class-title{margin:0;color:#333;font-size:18px;font-weight:600}.class-status{padding:4px 12px;border-radius:20px;font-size:14px;font-weight:500;background:#e8f5e8;color:#2d7a2d}.class-details{display:grid;grid-template-columns:1fr auto;gap:20px}.class-info{display:flex;flex-direction:column;gap:8px}.class-info p{margin:0;color:#555;font-size:14px}.class-info strong{color:#333;font-weight:600}.class-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end;min-width:180px}.cancel-button{background:#ff6b6b;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background .2s ease;font-size:14px;white-space:nowrap}.cancel-button:hover{background:#ff5252}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:32px;padding:16px}.pagination-button{background:#4f8cff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background .2s ease}.pagination-button:hover:not(:disabled){background:#3d7ae0}.pagination-button:disabled{background:#ccc;cursor:not-allowed}.pagination-info{color:#666;font-weight:500}.no-user-message,.auth-required-message,.loading-message,.error-message,.empty-state{text-align:center;padding:40px 20px;color:#666}.no-user-message p,.auth-required-message p{margin:8px 0;font-size:16px}.loading-message p{color:#4f8cff;font-weight:500}.error-message p{color:#ff6b6b;font-weight:500;margin-bottom:16px}.empty-state p{margin:8px 0;font-size:16px}.empty-state p:first-child{font-size:18px;color:#4f8cff}.qr-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;touch-action:manipulation;min-height:44px;min-width:120px;transition:all .2s ease;box-shadow:0 4px 12px #667eea4d}.qr-button:hover:not(:disabled){background:linear-gradient(135deg,#5a6fd8,#6a4190);transform:translateY(-2px);box-shadow:0 6px 16px #667eea66}.qr-button:active{transform:translateY(0);box-shadow:0 2px 8px #667eea4d}.qr-button:disabled{background:#ccc;cursor:not-allowed;transform:none;box-shadow:none}.qr-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000c;z-index:9999;display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;transform:translateZ(0);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.qr-dialog{background:#fff;border-radius:12px;padding:24px;max-width:90vw;max-height:90vh;max-width:400px;position:relative;transform:translateZ(0);box-shadow:0 20px 40px #0000004d;text-align:center;animation:qr-dialog-appear .3s ease-out}@keyframes qr-dialog-appear{0%{opacity:0;transform:translateZ(0) scale(.9) translateY(20px)}to{opacity:1;transform:translateZ(0) scale(1) translateY(0)}}.qr-canvas-container{display:flex;justify-content:center;margin:20px 0;padding:16px;background:#f8f9fa;border-radius:8px;border:2px dashed #ddd}.qr-canvas-container canvas{border-radius:4px;box-shadow:0 4px 12px #0000001a}.qr-loading{padding:40px 20px}.qr-active h3{margin-top:0;color:#333;font-size:20px}.customer-name{color:#666;font-size:14px;margin:8px 0 16px}.qr-status{margin:16px 0;padding:12px;background:#f0f8ff;border-radius:6px;border-left:4px solid #4f8cff}.countdown{margin:0 0 8px;font-weight:600;color:#333}.countdown-timer{color:#4f8cff;font-size:18px;font-weight:700}.attempts{margin:0;font-size:14px;color:#666}.instruction{color:#666;font-size:14px;margin:16px 0 0;font-style:italic}.qr-success{padding:40px 20px}.success-icon{font-size:48px;color:#28a745;margin-bottom:16px}.qr-success h3{color:#28a745;margin:0 0 12px}.qr-success p{color:#666;margin:0}.qr-expired{padding:40px 20px}.warning-icon{font-size:48px;color:#ffc107;margin-bottom:16px}.qr-expired h3{color:#ffc107;margin:0 0 12px}.qr-expired p{color:#666;margin:0}.qr-error{padding:40px 20px}.error-icon{font-size:48px;color:#dc3545;margin-bottom:16px}.qr-error h3{color:#dc3545;margin:0 0 12px}.qr-error p{color:#666;margin:0 0 20px}.retry-button{background:#dc3545;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s ease}.retry-button:hover{background:#c82333}.loading-spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #4f8cff;border-radius:50%;animation:loading-spin 1s linear infinite;margin:0 auto 16px}@keyframes loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.upcoming-classes-container{padding:16px}.class-details{grid-template-columns:1fr;gap:16px}.class-actions{align-items:flex-start;min-width:auto}.upcoming-classes-header{flex-direction:column;gap:16px;align-items:flex-start}.qr-dialog{margin:16px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);padding:20px}.qr-canvas-container canvas{max-width:100%;height:auto}.qr-button{width:100%;margin:8px 0}}
