:root{--brand-lime:#7ed957;--brand-navy:#0c1a2e;--primary:#00a8e8;--primary-dark:#0086b8;--primary-light:#4cc4f0;--accent:#5b7d6e;--accent-dark:#476456;--accent-light:#749685;--sport-football:#fff;--sport-basket:#f58220;--sport-tennis:#9ccc65;--bg-main:#0a1628;--bg-secondary:#0f2138;--bg-card:#ffffff0a;--bg-card-hover:#ffffff0f;--glass:#ffffff0f;--glass-strong:#ffffff1a;--blur:blur(12px);--text-secondary-dark:#14213de6;--shell-panel-glass:color-mix(in srgb, var(--bg-secondary) 100%, transparent);--shell-panel-glass-scrolled:color-mix(in srgb, var(--bg-secondary) 93%, transparent);--text-primary:#fff;--text-secondary:#b7c3d8;--text-muted:#6b7280;--border:#ffffff14;--border-strong:#ffffff29;--gradient-primary:linear-gradient(135deg, var(--primary) 0%, var(--accent-light) 100%);--gradient-bg:linear-gradient(180deg, var(--bg-main) 0%, var(--bg-secondary) 100%);--gradient-card:linear-gradient(145deg, color-mix(in srgb, var(--primary) 18%, transparent), color-mix(in srgb, var(--accent) 16%, transparent));--danger:#ff5d5d;--warning:#ffb020;--success:var(--accent-light);--shadow-soft:0 4px 20px #00000040;--shadow-glow:0 0 22px color-mix(in srgb, var(--primary) 28%, transparent);--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--page-gutter:10px;--home-inline-pad:48px;--home-inline-pad-sm:40px}@media (width<=900px){:root{--home-inline-pad:22px;--home-inline-pad-sm:18px}}@media (width<=520px){:root{--home-inline-pad:16px;--home-inline-pad-sm:14px}}:root{--backoffice-head-line:var(--border-strong);--backoffice-row-line:var(--border);--backoffice-row-hover:color-mix(in srgb, var(--primary) 6%, transparent);--btn-primary-bg:var(--primary);--btn-primary-bg-hover:var(--primary-dark);--btn-primary-text:#fff}.app-shell{--sp-background:#0b0f19;--sp-surface:#111827;--sp-surface-soft:#1a2233;--sp-border-soft:#ffffff0f;--sp-text-primary:#f3f4f6;--sp-text-secondary:#d1d5db;--sp-text-muted:#9ca3af;--sp-primary:#3b82f6;--sp-primary-alt:#06b6d4;--sp-action:#7ed957;--sp-action-dark:#5ea53f;--sp-action-bright:#a3e635;--sp-success:#a3e635;--sp-warning:#f97316;--sp-danger:#ef4444;--sp-radius-sm:10px;--sp-radius-md:14px;--sp-radius-lg:18px;--sp-radius-xl:22px;--sp-shadow-card:0 4px 16px #00000047;--sp-shadow-hover:0 8px 24px #00000059;--sp-transition:.18s ease;--bg-main:var(--sp-background);--bg-secondary:var(--sp-surface);--bg-card:var(--sp-surface-soft);--bg-card-hover:color-mix(in srgb, var(--sp-surface-soft) 88%, #fff 12%);--glass:#ffffff0a;--glass-strong:#ffffff12;--shell-panel-glass:color-mix(in srgb, var(--sp-surface) 94%, transparent);--shell-panel-glass-scrolled:color-mix(in srgb, var(--sp-surface-soft) 96%, transparent);--primary:var(--sp-primary);--primary-dark:#2563eb;--primary-light:#60a5fa;--accent:var(--sp-surface-soft);--accent-dark:var(--sp-surface);--accent-light:color-mix(in srgb, var(--sp-primary-alt) 35%, var(--sp-surface-soft));--text-primary:var(--sp-text-primary);--text-secondary:var(--sp-text-secondary);--text-muted:var(--sp-text-muted);--border:var(--sp-border-soft);--border-strong:#ffffff1a;--gradient-primary:linear-gradient(135deg, var(--sp-primary) 0%, var(--sp-primary-alt) 100%);--gradient-action:linear-gradient(135deg, var(--sp-action) 0%, var(--sp-action-dark) 100%);--gradient-bg:linear-gradient(180deg, var(--sp-background) 0%, var(--sp-surface) 100%);--gradient-card:linear-gradient(160deg, color-mix(in srgb, var(--sp-surface-soft) 92%, var(--sp-primary) 8%), var(--sp-surface));--success:var(--sp-success);--warning:var(--sp-warning);--danger:var(--sp-danger);--shadow-soft:var(--sp-shadow-card);--shadow-glow:var(--sp-shadow-hover);--btn-primary-bg:var(--sp-action);--btn-primary-bg-hover:var(--sp-action-dark);--btn-primary-text:#fff;--radius-sm:var(--sp-radius-sm);--radius-md:var(--sp-radius-md);--radius-lg:var(--sp-radius-xl);--page-gutter:16px;--home-inline-pad:20px;--home-inline-pad-sm:16px;--shell-bottom-nav:72px;color:var(--sp-text-primary);font-family:Inter,system-ui,-apple-system,sans-serif}@media (width<=520px){.app-shell{--page-gutter:12px;--home-inline-pad:16px}}body:has(.app-shell){background:var(--sp-background);background:var(--gradient-bg);color:var(--sp-text-primary)}body:has(.app-shell) #root{background:0 0}.app-shell--jugador{padding-bottom:calc(var(--shell-bottom-nav) + env(safe-area-inset-bottom,0px))}.app-shell .home-feed,.app-shell .reserva-public-page{gap:20px}.app-shell .section-title,.app-shell .swipe-section h3{letter-spacing:-.02em;color:var(--sp-text-primary);margin:0 0 12px;font-size:1.05rem;font-weight:700}.app-shell .feed-empty{color:var(--sp-text-muted);border-radius:var(--sp-radius-md);background:var(--sp-surface-soft);border:1px solid var(--sp-border-soft);padding:16px}.app-shell .hero-pro{--header-logo-height:52px;border-radius:var(--sp-radius-lg);border:1px solid var(--sp-border-soft);background:var(--shell-panel-glass);min-height:auto;box-shadow:var(--sp-shadow-card);-webkit-backdrop-filter:blur(12px);transition:box-shadow var(--sp-transition), border-color var(--sp-transition), background var(--sp-transition);margin-bottom:8px;padding:10px 14px}.app-shell .hero-pro.scrolled{border-color:var(--border-strong);box-shadow:var(--sp-shadow-hover)}.app-shell .hero-top{min-height:52px}.app-shell .header-soft-clubes-badge{background:var(--sp-surface-soft)!important;border:1px solid var(--sp-border-soft)!important;color:var(--sp-text-secondary)!important;box-shadow:none!important}.app-shell .btn-google-login{background:var(--sp-action);border:1px solid color-mix(in srgb, var(--sp-action) 80%, #fff);color:#fff;border-radius:var(--sp-radius-sm);box-shadow:var(--sp-shadow-card);transition:transform var(--sp-transition), background var(--sp-transition), box-shadow var(--sp-transition);font-weight:700}.app-shell .btn-google-login:hover{background:var(--sp-action-dark);box-shadow:var(--sp-shadow-hover);transform:translateY(-1px)}.app-shell .icon-btn{border:1px solid var(--sp-border-soft);background:var(--sp-surface-soft);color:var(--sp-text-secondary);transition:background var(--sp-transition), border-color var(--sp-transition), color var(--sp-transition), transform var(--sp-transition)}.app-shell .icon-btn:hover{background:color-mix(in srgb, var(--sp-primary) 14%, var(--sp-surface-soft));border-color:color-mix(in srgb, var(--sp-primary) 35%, transparent);color:var(--sp-text-primary)}.app-shell .icon-btn--highlight{color:var(--sp-primary-light)}.app-shell .home-hero-card{border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);box-shadow:var(--sp-shadow-card);background-color:var(--sp-surface)}.app-shell .home-hero-card:before{display:none}.app-shell .home-hero-title{letter-spacing:-.03em;font-size:clamp(1.5rem,4vw,2rem);font-weight:800}.app-shell .home-hero-title__name{color:var(--sp-primary-light)}.app-shell .home-hero-btn--reserve{background:var(--gradient-action);border-color:color-mix(in srgb, var(--sp-action) 48%, transparent)}.app-shell .home-hero-btn--partidos{background:var(--sp-surface-soft);border:1px solid var(--sp-border-soft);color:var(--sp-text-primary)}.app-shell .booking-card{border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);background-color:var(--sp-surface);box-shadow:var(--sp-shadow-card);padding:18px var(--home-inline-pad)}.app-shell .booking-card:before{display:none}.app-shell .booking-item{background:var(--sp-background);border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-md);transition:border-color var(--sp-transition), box-shadow var(--sp-transition)}.app-shell .booking-item:focus-within{border-color:color-mix(in srgb, var(--sp-action) 55%, transparent);box-shadow:0 0 0 3px color-mix(in srgb, var(--sp-action) 20%, transparent)}.app-shell .booking-tag{background:color-mix(in srgb, var(--sp-warning) 18%, var(--sp-surface-soft));color:var(--sp-warning);border:1px solid color-mix(in srgb, var(--sp-warning) 35%, transparent)}.app-shell .swipe-card{border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);background:var(--sp-surface);min-width:272px;max-width:300px;box-shadow:var(--sp-shadow-card);transition:transform var(--sp-transition), box-shadow var(--sp-transition), border-color var(--sp-transition);gap:10px;padding:16px}.app-shell .swipe-card:hover{border-color:color-mix(in srgb, var(--sp-primary) 28%, transparent);box-shadow:var(--sp-shadow-hover);transform:translateY(-3px)}.app-shell .swipe-card__top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.app-shell .swipe-card__time{letter-spacing:-.03em;color:var(--sp-text-primary);font-size:1.35rem;font-weight:800;line-height:1.1}.app-shell .swipe-card__cupos{background:color-mix(in srgb, var(--sp-success) 16%, var(--sp-surface-soft));color:var(--sp-success);border:1px solid color-mix(in srgb, var(--sp-success) 35%, transparent);border-radius:999px;flex-shrink:0;padding:6px 10px;font-size:.75rem;font-weight:700}.app-shell .swipe-badge{background:color-mix(in srgb, var(--sp-primary) 18%, var(--sp-surface-soft));color:var(--sp-primary-light);text-shadow:none;padding:4px 8px;font-size:.7rem;font-weight:700}.app-shell .swipe-time{color:var(--sp-text-muted);font-size:.8rem}.app-shell .swipe-title{color:var(--sp-text-secondary);font-size:1rem;font-weight:600}.app-shell .swipe-info{color:var(--sp-text-muted);gap:4px;font-size:.85rem}.app-shell .swipe-reason{color:var(--sp-text-muted);font-size:.8rem}.app-shell .match-card{border:1px solid var(--sp-border-soft);box-shadow:var(--sp-shadow-card)}.app-shell .match-card:before{display:none}.app-shell .match-card .badge{background:color-mix(in srgb, var(--sp-surface) 75%, transparent);border:1px solid var(--sp-border-soft);color:var(--sp-text-secondary)}.app-shell .recommended-carousel__nav{border:1px solid var(--sp-border-soft);background:var(--sp-surface-soft);color:var(--sp-text-primary)}.app-shell .cta-btn{border-radius:var(--sp-radius-sm);transition:transform var(--sp-transition), box-shadow var(--sp-transition), filter var(--sp-transition);border-width:1px;font-weight:700}.app-shell .cta-btn:active:not(:disabled){transform:scale(.98)}.app-shell .cta-btn--reserve,.app-shell .cta-btn--featured,.app-shell .cta-btn--nearby,.app-shell .cta-btn--partidos,.app-shell .cta-btn--urgent{background:var(--gradient-action);border-color:color-mix(in srgb, var(--sp-action) 45%, transparent);color:#fff;box-shadow:var(--sp-shadow-card)}.app-shell .cta-btn--urgent{background:linear-gradient(135deg, var(--sp-warning), #ea580c);border-color:color-mix(in srgb, var(--sp-warning) 50%, transparent)}.app-shell .cta-btn--nearby.is-joined{opacity:.65;filter:grayscale(.2)}.app-shell .card{background:var(--sp-surface);border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);box-shadow:var(--sp-shadow-card);-webkit-backdrop-filter:none;backdrop-filter:none}.app-shell .home-footer{border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);background:var(--sp-surface);box-shadow:var(--sp-shadow-card)}.app-shell .home-footer__tagline--green{color:var(--sp-primary-light);text-shadow:none}.app-shell .login-modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0b0f19b8}.app-shell .login-modal{border:1px solid var(--sp-border-soft);background:var(--sp-surface);border-radius:var(--sp-radius-xl);box-shadow:var(--sp-shadow-hover)}.app-shell .login-modal__title{color:var(--sp-text-primary);letter-spacing:-.02em;font-weight:800}.app-shell .login-modal__subtitle{color:var(--sp-text-muted)}.app-shell .reserva-public-card,.app-shell .mis-reservas-card{border:1px solid var(--sp-border-soft);border-radius:var(--sp-radius-xl);background:var(--sp-surface);box-shadow:var(--sp-shadow-card)}.app-shell .mis-reservas-card__badge{color:var(--sp-primary-light)}.app-shell .mis-reservas-card__estadoBadge--success{background:color-mix(in srgb, var(--sp-success) 14%, transparent);border-color:color-mix(in srgb, var(--sp-success) 40%, transparent);color:var(--sp-success)}.app-shell .mis-reservas-card__estadoBadge--pending{background:color-mix(in srgb, var(--sp-warning) 14%, transparent);border-color:color-mix(in srgb, var(--sp-warning) 40%, transparent);color:var(--sp-warning)}.app-shell .mis-reservas-page__title{color:var(--sp-text-primary);letter-spacing:-.02em;font-weight:800}.app-shell .skeleton{background:linear-gradient(90deg, var(--sp-surface) 25%, var(--sp-surface-soft) 37%, var(--sp-surface) 63%);border-radius:var(--sp-radius-md)}.app-shell--software-clubes .clubes-hero,.app-shell--software-clubes .clubes-plan-card{border:1px solid var(--sp-border-soft);background:var(--sp-surface);box-shadow:var(--sp-shadow-card)}@media (width>=900px){.app-shell--jugador{padding-bottom:0}}.container{width:100%;max-width:960px;margin-inline:auto;padding-inline:1.25rem}.container-fluid{width:100%;padding-inline:1.25rem}.py-5{padding-block:3rem}.mt-2{margin-top:.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.small{font-size:.875rem}.text-muted{color:color-mix(in srgb, var(--text-main,#eef3fb) 65%, transparent)}.d-flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-2{gap:.5rem}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.shadow-sm{box-shadow:var(--shadow-soft,0 4px 14px #0000001f)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.alert{border-radius:var(--radius-md,12px);border:1px solid var(--border,#ffffff1f);padding:1rem 1.15rem}.alert-danger{background:color-mix(in srgb, #dc3545 18%, var(--bg-card,#1a2744));color:var(--text-main,#eef3fb);border-color:#dc354573}.alert-heading{margin:0 0 .35rem;font-size:1.125rem;font-weight:700}.btn{border-radius:var(--radius-sm,8px);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.35rem;padding:.55rem 1rem;font-size:.875rem;font-weight:600;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--btn-primary-bg,var(--primary));color:var(--btn-primary-text,#fff);border-color:var(--btn-primary-bg,var(--primary))}.btn-primary:hover:not(:disabled){background:var(--btn-primary-bg-hover,var(--primary-dark));border-color:var(--btn-primary-bg-hover,var(--primary-dark))}.btn-outline-secondary{color:var(--text-main,#eef3fb);border-color:var(--border-strong,#fff3);background:0 0}.btn-outline-secondary:hover:not(:disabled){background:var(--bg-card-hover,#ffffff0f)}.btn-outline-primary{color:var(--primary-light,#7eb8ff);border-color:color-mix(in srgb, var(--primary) 50%, transparent);background:0 0}.btn-outline-primary:hover:not(:disabled){background:color-mix(in srgb, var(--primary) 12%, transparent);color:var(--primary,#4a9eff)}.spinner-border{border:.2em solid color-mix(in srgb, var(--primary) 25%, transparent);border-right-color:var(--primary);border-radius:50%;width:2.5rem;height:2.5rem;animation:.7s linear infinite sp-spin}.text-primary{color:var(--primary)}@keyframes sp-spin{to{transform:rotate(360deg)}}.form-control{width:100%}html{background-color:var(--bg-secondary)}body{background:var(--gradient-bg);background-color:var(--bg-secondary);min-height:100svh;margin:0;font-family:Inter,system-ui,sans-serif}#root{background:0 0;width:100%;min-height:100svh}*{box-sizing:border-box}button{font-family:inherit}.skeleton{background:linear-gradient(90deg,#ffffff0d 25%,#ffffff14 37%,#ffffff0d 63%) 0 0/400% 100%;border-radius:12px;height:80px;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.app-shell svg.svg-inline--fa{color:var(--sport-tennis)}.app-shell .hero-pro svg.svg-inline--fa{color:unset}.app-shell{box-sizing:border-box;width:100%;max-width:1600px;min-height:100svh;padding-left:max(var(--page-gutter,10px), env(safe-area-inset-left));padding-right:max(var(--page-gutter,10px), env(safe-area-inset-right));margin:0 auto}.weather-banner{border-radius:var(--radius-md);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--border);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.weather-banner--hot{background:color-mix(in srgb, var(--sport-basket) 12%, var(--bg-card));border-color:color-mix(in srgb, var(--sport-basket) 30%, transparent)}.weather-banner--cold{background:color-mix(in srgb, var(--primary) 10%, var(--bg-card))}.weather-banner--ideal{background:color-mix(in srgb, var(--accent-light) 12%, var(--bg-card))}.weather-banner-top{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.weather-banner-icon{font-size:14px}.weather-banner-temp{font-size:20px;font-weight:700}.weather-banner-text{color:var(--text-secondary);font-size:12px}.app{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;padding:1rem;display:flex}.home-cover{border-radius:.5rem;width:min(100%,1100px);height:auto}.backend-status{align-items:center;gap:.5rem;font-weight:600;display:flex}.status-dot{border-radius:50%;width:.8rem;height:.8rem;display:inline-block}.status-loading{background-color:#f5a623}.status-connected{background-color:#2ecc71}.status-disconnected{background-color:#e74c3c}.toast-host{z-index:10800;inset-inline:.75rem;pointer-events:none;justify-content:center;display:flex;position:fixed;bottom:1rem}.toast-host__list{border-radius:var(--radius-md,10px);box-shadow:var(--shadow-md,0 8px 24px #0000001f);pointer-events:auto;flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.toast-host__item{border-radius:var(--radius-md,10px);border:1px solid var(--border-strong,#e2e8f0);background-color:var(--bg-card,black);box-shadow:var(--shadow-md,0 8px 24px #0000001f);align-items:flex-start;gap:.5rem;padding:.65rem .75rem;font-size:.9rem;line-height:1.35;display:flex}.toast-host__item--success{background-color:var(--success,#16a34a)}.toast-host__item--error{border-color:color-mix(in srgb, var(--danger,#dc2626) 45%, var(--border-strong,#e2e8f0))}.toast-host__item--info{border-color:color-mix(in srgb, var(--primary,#2563eb) 35%, var(--border-strong,#e2e8f0))}.toast-host__content{min-width:0;color:var(--text-primary,#0f172a);flex:1}.toast-host__close{color:var(--text-secondary,#64748b);cursor:pointer;border-radius:var(--radius-sm,6px);background:0 0;border:none;flex-shrink:0;margin:-.15rem -.2rem -.15rem 0;padding:.1rem .45rem;font-size:1.25rem;line-height:1}.toast-host__close:hover{color:var(--text-primary,#0f172a);background:color-mix(in srgb, var(--text-primary,#0f172a) 6%, transparent)}.toast-host__close:focus-visible{outline:2px solid var(--primary,#2563eb);outline-offset:2px}.cta-btn{cursor:pointer;box-sizing:border-box;border-style:solid;border-width:2px;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:700;line-height:1.2;transition:transform .2s,filter .2s,box-shadow .2s;display:inline-flex}.cta-btn__icon{flex-shrink:0;width:1em;height:1em}.cta-btn--block{width:90%;margin:0 auto}.cta-btn--urgent{background:linear-gradient(145deg, var(--sport-basket), color-mix(in srgb, var(--sport-basket) 78%, #2b1400));color:var(--text-primary);border-color:#ffffff61;box-shadow:0 4px 18px #00000073,inset 0 1px #ffffff61}.cta-btn--reserve{background:linear-gradient(145deg, color-mix(in srgb, var(--accent-light) 92%, #1e4a38), color-mix(in srgb, var(--accent-dark) 88%, #0d2118));color:var(--text-primary);border-color:color-mix(in srgb, var(--brand-lime) 35%, transparent);box-shadow:0 4px 18px color-mix(in srgb, var(--accent) 42%, transparent), inset 0 1px 0 #ffffff42}.cta-btn--partidos{background:linear-gradient(145deg, var(--primary), color-mix(in srgb, var(--primary-dark) 90%, #021428));color:var(--text-primary);border-color:color-mix(in srgb, var(--primary-light) 48%, transparent);box-shadow:0 4px 18px color-mix(in srgb, var(--primary) 36%, transparent), inset 0 1px 0 #ffffff47}.cta-btn--featured{background:linear-gradient(145deg, var(--primary), color-mix(in srgb, var(--primary-dark) 88%, #000510));color:var(--text-primary);border-color:color-mix(in srgb, var(--primary-light) 52%, transparent);box-shadow:0 4px 18px color-mix(in srgb, var(--primary) 38%, transparent), inset 0 1px 0 #ffffff47}.cta-btn--nearby{background:linear-gradient(145deg, color-mix(in srgb, var(--sport-tennis) 85%, var(--primary-light)), color-mix(in srgb, var(--primary) 55%, var(--accent-light)));color:var(--brand-navy);box-shadow:0 4px 16px color-mix(in srgb, var(--primary) 26%, transparent), inset 0 1px 0 #ffffff59;border-color:#ffffff6b}.cta-btn:hover:not(:disabled){filter:brightness(1.06);transform:scale(1.03)}.cta-btn:active:not(:disabled){transform:scale(.98)}.cta-btn:disabled,.cta-btn.is-joined{opacity:.65;cursor:not-allowed;filter:none;transform:none}.cta-btn:disabled:hover,.cta-btn.is-joined:hover{filter:none;transform:none}.cta-btn.is-joined{background:color-mix(in srgb, var(--bg-secondary) 88%, transparent);color:var(--text-muted);border-color:var(--border);box-shadow:none}.cta-btn:focus-visible{outline:2px solid var(--primary-light);outline-offset:2px}
