:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-surface-dim:#f1f3f5;--color-text:#1a1d21;--color-text-muted:#6b7280;--color-accent:#4f46e5;--color-accent-hover:#4338ca;--color-accent-subtle:#4f46e50f;--color-border:#00000014;--color-border-strong:#00000029;--color-eyebrow:#6b7280;--color-error:#dc2626;--color-error-bg:#dc26260d;--color-error-border:#dc262626;--color-queued:#4f46e5;--color-on-accent:#fff;--color-success:#16a34a;--color-warning:#d97706;--font-sans:"DM Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9375rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--space-xs:4px;--space-sm:6px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--space-section:40px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-pill:999px;font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;line-height:1.5}@media (prefers-color-scheme:dark){:root{--color-bg:#111113;--color-surface:#1a1a1f;--color-surface-dim:#141417;--color-text:#e4e4e7;--color-text-muted:#8b8b96;--color-accent:#818cf8;--color-accent-hover:#a5b4fc;--color-accent-subtle:#818cf814;--color-border:#ffffff14;--color-border-strong:#ffffff29;--color-eyebrow:#8b8b96;--color-error:#f87171;--color-error-bg:#f8717114;--color-error-border:#f8717133;--color-queued:#818cf8;--color-on-accent:#fff;--color-success:#4ade80;--color-warning:#fbbf24;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app-logo,.app-logo-lg{mix-blend-mode:multiply}.app-logo-navbar{mix-blend-mode:normal}}*,:before,:after{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;min-height:100vh;margin:0}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{width:100%;max-width:480px;padding:0 var(--space-lg) var(--space-xl);min-height:100vh;margin:0 auto}.login-screen{min-height:100vh;padding:var(--space-xl) 16px;justify-content:center;align-items:flex-start;display:flex}.login-card{width:min(420px,100%);padding:var(--space-xl) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.login-title{margin:0 0 var(--space-md);font-size:var(--text-2xl);letter-spacing:-.01em;font-weight:700;line-height:1.15}.status-inline{margin:0 0 var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-error-bg);border:1px solid var(--color-error-border);color:var(--color-error);font-size:var(--text-sm)}.service-error{margin:var(--space-md) 0 var(--space-sm);padding:var(--space-md);border-radius:var(--radius-sm);background:var(--color-error-bg);border:1px solid var(--color-error-border);gap:var(--space-sm);display:grid}.service-error-title{color:var(--color-text);margin:0;font-weight:700}.service-error-body{color:var(--color-text-muted);font-size:var(--text-sm);overflow-wrap:anywhere;margin:0}.service-error-retry{justify-self:start}.provider-picker{gap:var(--space-sm);margin:var(--space-md) 0;flex-wrap:wrap;display:flex}.provider-option{min-width:140px;min-height:44px;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text-muted);font-weight:600;font-size:var(--text-sm);cursor:pointer;background:0 0;flex:1;justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s;display:flex}.provider-option:hover{background:var(--color-surface-dim);color:var(--color-text)}.provider-option-active{background:var(--color-accent-subtle);border-color:var(--color-accent);color:var(--color-accent)}.loading-screen{justify-content:center;align-items:center;gap:var(--space-sm);flex-direction:column;min-height:100vh;display:flex}.app-brand{align-items:center;gap:var(--space-sm);display:flex}.app-logo,.app-logo-navbar{object-fit:contain;width:24px;height:24px}.app-logo-lg{object-fit:contain;width:64px;height:64px}.app-header{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) 0;display:flex}.app-brand .eyebrow{margin:0}.app-header-gym{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:capitalize;margin:0;font-weight:400}.login-card .eyebrow{margin:0 0 var(--space-md)}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:var(--text-xs);color:var(--color-text-muted);font-weight:700}.box-selector{padding:0 var(--space-md);margin-bottom:var(--space-sm)}.credit-summary-card{justify-content:space-between;align-items:flex-start;gap:var(--space-md);margin:0 var(--space-md) var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-surface), var(--color-surface-dim));flex-wrap:wrap;display:flex}.credit-summary-card-empty{border-style:dashed}.credit-summary-copy{min-width:0}.credit-summary-eyebrow{margin:0 0 var(--space-xs)}.credit-summary-count{font-size:var(--text-lg);letter-spacing:-.02em;font-weight:700;display:block}.credit-summary-hint{margin:var(--space-xs) 0 0}.credit-summary-pill{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);background:var(--color-accent-subtle);color:var(--color-accent);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;flex-shrink:0;margin:0;font-weight:700}.credit-summary-pill-muted{background:var(--color-surface-raised);color:var(--color-text-muted)}.credit-summary-action{flex-shrink:0}.searchable-select{width:100%;position:relative}.searchable-select-trigger{justify-content:space-between;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-sans);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;text-align:left;min-height:44px;font-weight:500;display:flex}.searchable-select-placeholder{color:var(--color-text-muted)}.searchable-select-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .15s}.searchable-select-chevron-open{transform:rotate(180deg)}.searchable-select-dropdown{z-index:50;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 4px 12px #0000001a}.searchable-select-search{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-family:var(--font-sans);border:none;border-bottom:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);outline:none}.searchable-select-search::placeholder{color:var(--color-text-muted)}.searchable-select-list{overscroll-behavior:contain;max-height:240px;margin:0;padding:0;list-style:none;overflow-y:auto}.searchable-select-option{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);cursor:pointer;align-items:center;min-height:44px;display:flex}.searchable-select-option-highlight{background:var(--color-accent-bg,#2d7a4f14)}.searchable-select-option-selected{color:var(--color-accent);font-weight:600}.searchable-select-empty{padding:var(--space-md);font-size:var(--text-sm);color:var(--color-text-muted);text-align:center}.searchable-select-loading{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);color:var(--color-text-muted);text-align:center}.searchable-select-sentinel{height:1px}.tab-bar{margin-bottom:var(--space-xl);border-bottom:1px solid var(--color-border);gap:0;display:flex}.tab-btn{padding:var(--space-sm) var(--space-lg);min-height:44px;color:var(--color-text-muted);font-weight:600;font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;justify-content:center;align-items:center;margin-bottom:-1px;transition:color .15s,border-color .15s;display:inline-flex}.tab-btn:hover{color:var(--color-text)}.tab-btn-active{color:var(--color-text);border-bottom-color:var(--color-accent)}.status-pill{padding:var(--space-xs) var(--space-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full,999px);font-weight:500;font-size:var(--text-xs);color:var(--color-text-muted);white-space:normal;overflow-wrap:anywhere;max-width:min(100%,520px)}.app-toast{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);border:1px solid var(--color-border-strong);background:var(--color-surface);width:min(100vw - 24px,460px);color:var(--color-text);font-size:var(--text-sm);z-index:1200;border-radius:10px;padding:10px 14px;line-height:1.35;animation:.16s ease-out appToastIn;position:fixed;transform:translate(-50%);box-shadow:0 8px 22px #0000001f}.app-toast-sticky{justify-content:space-between;align-items:flex-start;gap:var(--space-sm);display:flex}.app-toast-close{appearance:none;color:inherit;cursor:pointer;background:0 0;border:0;padding:0 0 0 8px;font-size:20px;line-height:1}.app-toast-close:hover{opacity:.72}@keyframes appToastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.section-group{gap:var(--space-xl);display:grid}.card{background:0 0;border:none;border-radius:0;padding:0}.card+.card{padding-top:var(--space-lg);border-top:1px solid var(--color-border)}.card h2{margin:0 0 var(--space-md);font-size:var(--text-lg);letter-spacing:-.02em;font-weight:700}.panel-header{justify-content:space-between;align-items:center;display:flex}.muted{color:var(--color-text-muted);font-size:var(--text-sm)}.dashboard{gap:var(--space-lg);display:grid}.activity-group{background:var(--color-border);border-radius:var(--radius-md);gap:1px;display:grid;overflow:hidden}.activity-panel{background:var(--color-surface);border-radius:0;overflow:hidden}.activity-panel-header{padding:var(--space-md);font-size:var(--text-sm);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;font-weight:600;list-style:none;display:flex}.activity-panel-header::-webkit-details-marker{display:none}.activity-panel-header:before{content:"›";margin-right:var(--space-sm);color:var(--color-text-muted);font-size:1.1em;transition:transform .15s;display:inline-block}.activity-panel[open]>.activity-panel-header:before{transform:rotate(90deg)}.activity-panel-body{padding:0 var(--space-md) var(--space-md)}.form{gap:var(--space-md);display:grid}.form-note{margin:0}.form-hint{font-size:var(--text-xs);color:var(--color-text-muted);opacity:.7}.gym-toggle-link{font-size:var(--text-sm);color:var(--color-accent);cursor:pointer;text-align:left;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.empty-state{text-align:center;padding:var(--space-xl) var(--space-lg)}.empty-state-icon{margin:0 0 var(--space-sm);font-size:2rem}.empty-state-title{font-size:var(--text-base);margin:0 0 var(--space-xs);font-weight:600}.form label{gap:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500;display:grid}.form input,.form select{width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-bg);color:var(--color-text)}.form select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-md) center;padding-right:calc(var(--space-md) + 20px)}.form input::placeholder{color:var(--color-text-muted);opacity:.6}.btn-primary{border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-lg);background:var(--color-accent);min-height:44px;color:var(--color-on-accent);cursor:pointer;font-weight:600;font-size:var(--text-sm);border:none;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.btn-primary:hover{background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;min-height:44px;font-weight:600;font-size:var(--text-sm);background:0 0;justify-content:center;align-items:center;transition:background .15s,border-color .15s;display:inline-flex}.btn-secondary:hover{background:var(--color-surface-dim);border-color:var(--color-text-muted)}.btn-ghost{color:var(--color-accent);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);cursor:pointer;min-height:32px;font-weight:600;font-size:var(--text-xs);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.btn-ghost:hover{background:var(--color-accent-subtle)}.btn-danger{color:var(--color-error);border:1px solid var(--color-error-border);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;min-height:44px;font-weight:600;font-size:var(--text-sm);background:0 0;justify-content:center;align-items:center;width:100%;transition:background .15s;display:inline-flex}.btn-danger:hover{background:var(--color-error-bg)}.btn-ghost-active{color:var(--color-error)}.btn-sm{padding:var(--space-xs) var(--space-sm);min-height:32px;font-size:var(--text-xs)}.schedule-browser{gap:var(--space-sm);display:grid}.week-header{justify-content:space-between;align-items:center;display:flex}.week-month{font-size:var(--text-sm);color:var(--color-text);text-transform:capitalize;font-weight:600}.week-nav-btn{width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.2rem;font-weight:600;display:inline-flex}.week-nav-btn:hover{color:var(--color-text);background:var(--color-surface-dim)}.week-nav-btn:disabled{opacity:.3;cursor:not-allowed}.week-strip{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-xs);grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.week-day{padding:var(--space-xs) 0 var(--space-sm);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;min-height:52px;transition:background .1s;display:flex}.week-day:hover{background:var(--color-surface-dim)}.week-day-name{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:.625rem;font-weight:600}.week-day-num{font-size:var(--text-sm);border-radius:var(--radius-sm);justify-content:center;align-items:center;width:32px;height:32px;font-weight:600;display:flex}.week-day-selected .week-day-num{background:var(--color-accent);color:var(--color-on-accent)}.week-day-selected{color:var(--color-text)}.week-day-today .week-day-num{box-shadow:inset 0 0 0 1.5px var(--color-accent);color:var(--color-accent)}.week-day-dot{background:var(--color-accent);border-radius:50%;width:6px;height:6px;margin-top:2px}.class-list{gap:var(--space-sm);display:grid}.refresh-hint{margin:0 0 var(--space-sm);font-size:var(--text-xs)}.class-card{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);display:flex}.class-card-booked{border-color:var(--color-accent);background:var(--color-accent-subtle)}.class-card-waitlist{border-color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 8%, var(--color-surface))}.class-card-scheduled{border-color:var(--color-warning);border-style:dashed}.class-card-time{font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;min-width:36px;font-weight:600}.class-badge{padding:1px var(--space-xs);border-radius:var(--radius-sm);letter-spacing:.02em;text-transform:uppercase;flex-shrink:0;align-items:center;font-size:.625rem;font-weight:700;display:inline-flex}.class-badge-booked{background:var(--color-accent);color:var(--color-on-accent)}.class-badge-scheduled,.class-badge-waitlist{background:var(--color-warning);color:#fff}.class-badge-rule{background:var(--color-success,#2d7a4f);color:#fff}.class-card-body{flex:1;min-width:0}.class-card-title{align-items:center;gap:var(--space-xs);display:flex}.class-card-name{font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.class-card-meta{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.class-card-credit{gap:var(--space-xs);font-size:var(--text-xs);color:var(--color-text-muted);flex-wrap:wrap;align-items:center;margin:2px 0 0;display:flex}.class-credit-ok{color:var(--color-success);font-weight:600}.class-credit-low{color:var(--color-warning);font-weight:600}.class-credit-unknown{color:var(--color-text-muted);font-weight:600}.class-card-submeta{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;overflow:hidden}.status-available{color:var(--color-success)}.status-waitlist{color:var(--color-warning)}.status-full{color:var(--color-error)}.status-booked{color:var(--color-accent)}.status-not-open{color:var(--color-muted)}.class-card-actions{gap:var(--space-xs);flex-shrink:0;align-items:center;display:flex}.my-bookings-section{margin-bottom:var(--space-xl)}.my-bookings-heading{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:0 0 var(--space-md);font-weight:700}.inline-rule-bar{align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;margin-top:var(--space-xs);display:flex}.inline-rule-hint{font-size:var(--text-xs);color:var(--color-text-muted);flex:1;margin:0;font-style:italic}.inline-rule-actions{gap:var(--space-xs);flex-shrink:0;display:flex}.inline-rule-actions .btn-primary{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs)}.inline-rule-actions .btn-ghost{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}.booking-queue{gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-accent);background:var(--color-accent-subtle);margin-top:var(--space-md);display:grid}.booking-queue-header{justify-content:space-between;align-items:center;display:flex}.booking-results{gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-surface-dim);margin-top:var(--space-sm);display:grid}.booking-result-row{gap:var(--space-xs);align-items:start;display:grid}.booking-result-row-action{padding:var(--space-md);border-radius:var(--radius-lg);border:1px solid color-mix(in srgb, var(--color-warning) 28%, transparent);background:color-mix(in srgb, var(--color-warning) 8%, var(--color-surface))}.booking-result-meta{font-size:var(--text-xs);color:var(--color-text-muted);margin:0 0 2px}.schedule-item{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.schedule-item p{font-size:var(--text-xs);color:var(--color-text-muted);margin:2px 0 0}.list,.stack{gap:var(--space-sm);display:grid}.list-row{justify-content:space-between;gap:var(--space-sm);font-size:var(--text-sm);padding:var(--space-xs) 0;align-items:center;display:flex}.list-row+.list-row{border-top:1px solid var(--color-border);padding-top:var(--space-sm)}.rule-card{align-items:center;gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);grid-template-columns:1fr auto;display:grid}.rule-card strong{font-size:var(--text-sm)}.rule-card p{color:var(--color-text-muted);font-size:var(--text-xs);margin:2px 0 0;line-height:1.4}.audit-item{padding:var(--space-md);border-radius:var(--radius-sm);background:var(--color-surface);border:1px solid var(--color-border)}.audit-item pre{padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--color-bg);font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;word-break:break-word;max-height:200px;overflow:auto}.loading{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-text);color:var(--color-bg);font-size:var(--text-xs);z-index:101;font-weight:600;position:fixed;bottom:24px;right:16px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width>=640px){.shell{padding:var(--space-lg) var(--space-xl) var(--space-xl)}}@media (width<=639px){.app-header{align-items:flex-start;gap:var(--space-sm);flex-direction:column}}
