.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.login-card{background:var(--card-bg);border-radius:16px;padding:3rem;text-align:center;box-shadow:0 20px 60px var(--shadow);max-width:400px;width:100%}.login-card h1{font-size:2.5rem;margin:0 0 .25rem}.login-subtitle{color:var(--text-secondary);font-size:1rem;margin:0 0 1.5rem}.login-divider{height:1px;background:var(--border);margin:1.5rem 0}.login-prompt{color:var(--text-muted);font-size:.9rem;margin-bottom:1.5rem}.login-btn-wrapper{display:flex;justify-content:center}.bot-status{background:var(--card-bg);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem}.bot-status.loading{opacity:.5}.status-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.status-indicator{width:12px;height:12px;border-radius:50%}.status-indicator.running{background:#4ade80;box-shadow:0 0 8px #4ade8066}.status-indicator.stopped{background:var(--text-muted)}.status-label{font-weight:600;flex:1}.btn-start{background:#059669!important;color:#fff!important}.btn-stop{background:#dc2626!important;color:#fff!important}.status-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat{display:flex;flex-direction:column;align-items:center}.stat-value{font-size:1.25rem;font-weight:700}.stat-label{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.email-toggle{display:flex;align-items:center;gap:.5rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border);font-size:.8rem;color:var(--text-secondary);cursor:pointer}.email-toggle input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--bg-secondary);border-radius:12px;width:100%;max-width:700px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px var(--shadow)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:1.1rem}.modal-close{background:none!important;border:none!important;color:var(--text-secondary)!important;font-size:1.5rem!important;padding:0!important;cursor:pointer;line-height:1}.modal-close:hover{color:var(--text-primary)!important}.modal-body{padding:1.25rem}.config-list{margin-bottom:1.5rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-header h2{margin:0;font-size:1.25rem}.btn-add{background:#3b82f6!important;color:#fff!important;font-size:.875rem!important;padding:.4rem .8rem!important}.config-card{background:var(--card-bg);border-radius:10px;padding:1rem;margin-bottom:.75rem;border-left:3px solid var(--success)}.config-card.inactive{border-left-color:var(--text-muted);opacity:.6}.config-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.config-courses{display:flex;flex-wrap:wrap;gap:.4rem}.course-tag{background:var(--bg-hover);padding:.2rem .5rem;border-radius:4px;font-size:.75rem}.status-chip{padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.status-chip.status-active{background:var(--success-bg);color:var(--success)}.status-chip.status-completed{background:#1e40af;color:#93c5fd}.status-chip.status-failed{background:var(--danger-bg);color:var(--danger)}.config-actions{display:flex;gap:.4rem}.btn-sm{font-size:.75rem!important;padding:.25rem .5rem!important}.btn-danger{background:var(--danger-bg)!important;color:var(--danger)!important}.config-details{display:flex;gap:1rem;font-size:.8rem;color:var(--text-secondary)}.config-last-scan{font-size:.7rem;color:var(--text-muted);margin-top:.4rem}.empty{color:var(--text-muted);text-align:center;padding:2rem}.config-form{margin:0}.form-group{margin-bottom:.75rem}.form-group label{display:block;font-size:.8rem;color:var(--text-secondary);margin-bottom:.3rem}.form-group input,.form-group select{width:100%;padding:.4rem .6rem;border-radius:6px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);font-size:.875rem;box-sizing:border-box}.form-row{display:grid;grid-template-columns:3fr 3fr 1.2fr 1.2fr 2fr;gap:1rem;margin-bottom:.75rem}.form-row .form-group{min-width:0}.course-picker{display:flex;flex-wrap:wrap;gap:.4rem}.course-chip{font-size:.75rem!important;padding:.3rem .6rem!important;background:var(--bg-hover)!important;color:var(--text-secondary)!important;border-radius:16px!important}.course-chip.selected{background:#1d4ed8!important;color:#fff!important}.course-select{position:relative}.course-select-trigger{display:flex;align-items:center;justify-content:space-between;min-height:2.5rem;padding:.4rem .6rem;background:var(--bg-hover);border:1px solid var(--border);border-radius:8px;cursor:pointer;gap:.5rem}.course-select-placeholder{color:var(--text-muted);font-size:.85rem}.course-select-arrow{font-size:.65rem;color:var(--text-muted);flex-shrink:0}.course-select-tags{display:flex;flex-wrap:wrap;gap:.3rem;flex:1}.course-select-tag{display:inline-flex;align-items:center;gap:.3rem;background:#1d4ed8;color:#fff;font-size:.7rem;padding:.2rem .5rem;border-radius:12px}.course-select-tag .tag-remove{background:none!important;border:none!important;color:#ffffffb3!important;font-size:.85rem!important;padding:0!important;margin:0!important;cursor:pointer;line-height:1}.course-select-tag .tag-remove:hover{color:#fff!important}.course-select-dropdown{position:absolute;top:100%;left:0;right:0;z-index:50;margin-top:4px;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);overflow:hidden}.course-select-search{width:100%;padding:.6rem .75rem;border:none;border-bottom:1px solid var(--border);background:var(--bg-hover);color:var(--text-primary);font-size:.85rem;outline:none}.course-select-options{max-height:240px;overflow-y:auto}.course-select-group-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.5rem .75rem .25rem;font-weight:600}.course-select-option{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;cursor:pointer;font-size:.8rem;color:var(--text-primary);transition:background .1s}.course-select-option:hover{background:var(--bg-hover)}.course-select-option.selected{background:#1d4ed81a}.course-select-option.no-creds{opacity:.7}.course-select-check{width:1rem;text-align:center;color:#3b82f6;font-weight:700;font-size:.75rem}.course-select-name{flex:1}.course-select-empty{padding:1rem;text-align:center;color:var(--text-muted);font-size:.8rem}.btn-submit{flex:1;margin-top:.5rem;background:#059669!important;color:#fff!important}.btn-submit:disabled{opacity:.4;cursor:not-allowed}.form-actions{display:flex;gap:.75rem}.btn-cancel{flex:1;margin-top:.5rem;background:var(--bg-hover)!important;color:var(--text-secondary)!important}.form-error{background:var(--danger-bg);color:var(--danger);padding:.6rem 1rem;border-radius:6px;font-size:.85rem;margin-bottom:.75rem}.course-chip.no-creds{border:1px dashed #f59e0b!important}.cred-warning{font-size:.65rem}.cred-missing-hint{color:#f59e0b;font-size:.8rem;margin-top:.4rem}.mini-cal{background:var(--bg-tertiary);border-radius:8px;padding:.75rem;margin-top:.25rem}.mini-cal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.mini-cal-title{font-size:.8rem;font-weight:600}.cal-nav-sm{background:var(--bg-hover)!important;color:var(--text-primary)!important;font-size:1rem!important;width:1.5rem!important;height:1.5rem!important;padding:0!important;border-radius:50%!important;display:flex;align-items:center;justify-content:center}.mini-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.mini-cal-dow{text-align:center;font-size:.6rem;color:var(--text-muted);padding:.2rem 0;font-weight:600}.mini-cal-cell{text-align:center;padding:.3rem 0;font-size:.7rem;border-radius:4px;cursor:pointer;transition:background .1s}.mini-cal-cell:hover:not(.empty):not(.past){background:var(--bg-hover)}.mini-cal-cell.empty{cursor:default}.mini-cal-cell.past{opacity:.3;cursor:default}.mini-cal-cell.today{border:1px solid #3b82f6}.mini-cal-cell.selected{background:#1d4ed8;color:#fff;font-weight:600}.selected-dates-list{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem}.date-chip{display:inline-flex;align-items:center;gap:.25rem;background:#374151;padding:.2rem .5rem;border-radius:12px;font-size:.7rem;color:#d1d5db}.date-chip-remove{background:none!important;border:none!important;color:#9ca3af!important;font-size:.85rem!important;padding:0!important;cursor:pointer;line-height:1}.date-chip-remove:hover{color:#f87171!important}.form-toggle-row{margin-top:.5rem}.toggle-label{display:flex;align-items:center;gap:.75rem;font-size:.875rem;cursor:pointer;line-height:1}.toggle-label input[type=checkbox]{width:1rem;height:1rem;margin:0 .25rem 0 0;cursor:pointer;vertical-align:middle}.tooltip-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;margin-left:.25rem;border-radius:50%;background:var(--color-border, #d1d5db);color:var(--color-text-secondary, #6b7280);font-size:.7rem;font-weight:600;cursor:help}.tooltip-trigger:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:#1f2937;color:#fff;font-size:.75rem;font-weight:400;padding:.4rem .6rem;border-radius:4px;white-space:normal;width:max-content;max-width:220px;text-align:center;opacity:0;pointer-events:none;transition:opacity .15s;z-index:100}.tooltip-trigger:hover:after{opacity:1}.booking-list h2{font-size:1.25rem;margin-bottom:1rem}.booking-card{background:var(--card-bg);border-radius:10px;padding:1rem;margin-bottom:.75rem;display:flex;justify-content:space-between;align-items:center}.booking-card.cancelled{opacity:.5}.booking-info{display:flex;gap:1rem;align-items:center}.booking-course{font-weight:600}.booking-time{color:var(--text-secondary);font-size:.875rem}.booking-players{color:var(--text-muted);font-size:.8rem}.booking-meta{display:flex;align-items:center;gap:.75rem}.booking-status{font-size:.75rem;padding:.2rem .5rem;border-radius:4px;text-transform:uppercase;font-weight:600}.status-booked{background:var(--success-bg);color:var(--success)}.status-cancelled{background:var(--danger-bg);color:var(--danger)}.status-played{background:#1e3a5f;color:#93c5fd}.btn-sm.btn-outline{background:transparent;border:1px solid var(--text-muted);color:var(--text-secondary);font-size:.75rem;padding:.25rem .5rem;border-radius:4px;cursor:pointer}.btn-sm.btn-outline:hover{border-color:var(--text-secondary);color:var(--text-primary)}.credentials{margin-bottom:1.5rem}.cred-form{background:var(--card-bg);border-radius:10px;padding:1.25rem;margin-bottom:1rem}.cred-card{background:var(--card-bg);border-radius:10px;padding:.75rem 1rem;margin-bottom:.5rem;display:flex;justify-content:space-between;align-items:center}.cred-tenant{font-weight:600;margin-right:1rem}.cred-email{color:var(--text-secondary);font-size:.875rem}.calendar{background:var(--card-bg);border-radius:12px;padding:1.5rem;box-sizing:border-box}.cal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.cal-title{font-weight:600;font-size:1.1rem}.cal-nav{background:var(--bg-hover)!important;color:var(--text-primary)!important;font-size:1.2rem!important;width:2rem!important;height:2rem!important;min-width:2rem!important;padding:0!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;line-height:1!important}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-dow{text-align:center;font-size:.8rem;color:var(--text-muted);padding:.4rem 0;font-weight:600}.cal-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:6px;cursor:pointer;position:relative;transition:background .15s;padding:.6rem 0}.cal-cell:hover:not(.empty):not(.past){background:var(--bg-hover)}.cal-cell.empty{cursor:default}.cal-cell.past{opacity:.35;cursor:default}.cal-cell.today{border:1px solid var(--accent)}.cal-cell.selected{background:#1d4ed8;color:#fff}.cal-day{font-size:.9rem;font-weight:500;line-height:1}.cal-dots{display:flex;gap:2px;margin-top:3px}.cal-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.cal-dot.status-booked{background:var(--success)}.cal-dot.status-cancelled{background:var(--danger)}.cal-legend{display:flex;gap:1rem;margin-top:1rem;font-size:.8rem;color:var(--text-secondary);flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:3px}.legend-selected{width:8px;height:8px;border-radius:2px;background:#1d4ed8;display:inline-block}.cal-bookings{margin-top:.75rem;border-top:1px solid var(--border);padding-top:.6rem;max-height:200px;overflow-y:auto}.cal-bookings-title{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:.4rem}.cal-booking-day{margin-bottom:.4rem}.cal-booking-date{font-size:.8rem;font-weight:600;color:var(--text-secondary);display:block;margin-bottom:.25rem}.cal-booking-item{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;padding:.3rem .5rem;border-radius:4px;margin-bottom:3px;background:var(--bg-tertiary);gap:.5rem}.cal-booking-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-booking-item span:first-child{flex:1;min-width:0}.cal-booking-item.status-booked{border-left:2px solid var(--success)}.cal-booking-item.status-cancelled{border-left:2px solid var(--danger);opacity:.6}.badge-booked{color:var(--success);font-size:.6rem;text-transform:uppercase}.badge-cancelled{color:var(--danger);font-size:.6rem;text-transform:uppercase}.cal-cell.has-snipe{background:#3b82f614}.cal-dot.snipe{background:var(--accent)}.cal-tooltip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;min-width:180px;max-width:240px;z-index:100;box-shadow:0 4px 12px #0000004d;pointer-events:none}.cal-tooltip-title{font-size:.75rem;font-weight:600;color:var(--text-primary);margin-bottom:.4rem;border-bottom:1px solid var(--border);padding-bottom:.3rem}.cal-tooltip-item{display:flex;flex-direction:column;gap:.15rem;padding:.3rem 0;border-bottom:1px solid var(--border)}.cal-tooltip-item:last-child{border-bottom:none}.cal-tooltip-courses{font-size:.7rem;color:var(--text-primary);font-weight:500}.cal-tooltip-time{font-size:.65rem;color:var(--accent)}.cal-tooltip-meta{font-size:.6rem;color:var(--text-muted)}.cal-tooltip-status{font-size:.6rem;text-transform:uppercase;font-weight:600}.cal-tooltip-status.booked{color:var(--success)}.cal-tooltip-status.cancelled{color:var(--danger)}.cal-tooltip-snipe{border-left:2px solid var(--accent);padding-left:.4rem}.cal-tooltip-booking.status-booked{border-left:2px solid var(--success);padding-left:.4rem}.cal-tooltip-booking.status-cancelled{border-left:2px solid var(--danger);padding-left:.4rem;opacity:.7}.user-menu{position:relative}.user-menu-btn{background:var(--bg-hover)!important;border:2px solid var(--border)!important;border-radius:50%!important;width:2.5rem!important;height:2.5rem!important;padding:0!important;cursor:pointer;display:flex!important;align-items:center!important;justify-content:center!important}.user-avatar{font-size:1rem;font-weight:600;color:var(--text-primary)}.user-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;min-width:200px;box-shadow:0 10px 30px var(--shadow);z-index:100;overflow:hidden}.user-info{padding:.75rem 1rem;display:flex;flex-direction:column;gap:.15rem}.user-name{font-weight:600;font-size:.9rem;color:var(--text-primary)}.user-email{font-size:.75rem;color:var(--text-secondary)}.dropdown-divider{height:1px;background:var(--border)}.dropdown-item{display:block;width:100%;padding:.6rem 1rem;background:none!important;border:none!important;border-radius:0!important;color:var(--text-primary)!important;font-size:.85rem;text-align:left;cursor:pointer}.dropdown-item:hover{background:var(--bg-hover)!important}.dropdown-item.signout{color:var(--danger)!important}.account-modal{min-width:300px}.account-user{margin-bottom:1rem}.account-email{font-size:.85rem;color:var(--text-secondary)}.account-description{font-size:.8rem;color:var(--text-muted);margin:0 0 1rem}.account-fields{display:flex;flex-direction:column;gap:.75rem}.field-row{display:flex;gap:.75rem}.field-group{flex:1;display:flex;flex-direction:column;gap:.25rem}.field-group label{font-size:.75rem;font-weight:600;color:var(--text-secondary)}.field-group input{padding:.5rem .65rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-primary);font-size:.85rem}.field-group input::placeholder{color:var(--text-muted)}.btn-save-account{margin-top:1.25rem;width:100%;padding:.6rem!important;background:var(--accent)!important;color:#fff!important;font-size:.85rem!important;font-weight:600!important;border-radius:8px!important;border:none!important;cursor:pointer}.btn-save-account:disabled{opacity:.5;cursor:not-allowed}.app{width:100%;height:100%;padding:1.5rem;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.pull-indicator{display:flex;align-items:center;justify-content:center;overflow:hidden;margin:0 -1.5rem;transition:height .25s cubic-bezier(.2,0,0,1)}.pull-spinner{width:20px;height:20px;border:2.5px solid rgba(150,150,150,.3);border-top-color:#969696cc;border-radius:50%;opacity:.5;transition:opacity .15s}.pull-spinner.active{opacity:1;border-top-color:var(--text-primary);animation:spin .6s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 600px){.app{padding:1rem}.pull-indicator{margin:0 -1rem}}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.app-header h1{margin:0;font-size:2rem}.subtitle{color:var(--text-muted);font-size:.9rem}.layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start;min-width:0}.dashboard{display:flex;flex-direction:column;gap:1.5rem;min-width:0}.sidebar{position:sticky;top:1rem;min-width:0}@media (max-width: 900px){.layout{grid-template-columns:1fr}.sidebar{position:static}}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;--bg-primary: #242424;--bg-secondary: #1e1e2e;--bg-tertiary: #111827;--bg-hover: #374151;--bg-button: #1a1a1a;--text-primary: rgba(255, 255, 255, .87);--text-secondary: #9ca3af;--text-muted: #6b7280;--border: #374151;--accent: #3b82f6;--success: #4ade80;--success-bg: #065f46;--danger: #f87171;--danger-bg: #7f1d1d;--card-bg: #1e1e2e;--shadow: rgba(0, 0, 0, .4);color-scheme:dark;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=light]{--bg-primary: #f8fafc;--bg-secondary: #ffffff;--bg-tertiary: #f1f5f9;--bg-hover: #e2e8f0;--bg-button: #f1f5f9;--text-primary: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--border: #e2e8f0;--accent: #2563eb;--success: #16a34a;--success-bg: #dcfce7;--danger: #dc2626;--danger-bg: #fee2e2;--card-bg: #ffffff;--shadow: rgba(0, 0, 0, .08);color-scheme:light;color:var(--text-primary);background-color:var(--bg-primary)}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100dvh;width:100%;overflow:hidden}body{min-width:320px}h1{font-size:2rem;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-button);color:var(--text-primary);cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root:not([data-theme=dark]){color:#213547;background-color:#fff}:root:not([data-theme=dark]) a:hover{color:#747bff}:root:not([data-theme=dark]) button{background-color:#f9f9f9}}
