:root{--ff-bg:#eceff6;--ff-surface:#fff;--ff-surface-elevated:#f8fafc;--ff-surface-2:#f1f5f9;--ff-ink:#0f172a;--ff-text:#334155;--ff-muted:#64748b;--ff-muted-2:#94a3b8;--ff-border:#e2e8f0;--ff-border-strong:#cbd5e1;--ff-navy:#0c1e3d;--ff-accent:#2563eb;--ff-accent-hover:#1d4ed8;--ff-accent-soft:#dbeafe;--ff-teal-soft:#ccfbf1;--ff-import-accent:#6d28d9;--ff-import-border:#6d28d947;--ff-import-surface:linear-gradient(165deg, #faf5ff 0%, #f5f3ff 45%, #fff 100%);--ff-import-glow:0 1px 0 #ffffffe6 inset, 0 4px 20px #6d28d912;--ff-practice-accent:#1d4ed8;--ff-practice-border:#2563eb38;--ff-practice-surface:linear-gradient(165deg, #eff6ff 0%, #f0fdf4 38%, #fff 100%);--ff-practice-glow:0 1px 0 #fffffff2 inset, 0 4px 20px #2563eb0f;--ff-space-1:.25rem;--ff-space-2:.5rem;--ff-space-3:.75rem;--ff-space-4:1rem;--ff-space-5:1.25rem;--ff-space-6:1.5rem;--ff-space-8:2rem;--ff-space-10:2.5rem;--ff-radius-sm:8px;--ff-radius-md:12px;--ff-radius-lg:16px;--ff-radius-xl:20px;--ff-radius-pill:999px;--ff-shadow:0 1px 2px #0f172a0a, 0 4px 20px #0f172a0d;--ff-shadow-md:0 4px 12px #0f172a0f, 0 12px 40px #0f172a0f;--ff-shadow-lg:0 20px 50px #0f172a1a;--ff-ease:cubic-bezier(.4, 0, .2, 1);--ff-transition:.18s var(--ff-ease);--ff-transition-slow:.28s var(--ff-ease);--ff-text-xs:.6875rem;--ff-text-sm:.8125rem;--ff-text-base:.9375rem;--ff-text-lg:1.0625rem;--ff-text-xl:1.25rem;--ff-text-2xl:1.5rem;--ff-text-3xl:1.875rem;--ff-tracking-tight:-.025em;--ff-tracking-label:.06em;color:var(--ff-text);background:var(--ff-bg);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:DM Sans,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.55}*,:before,:after{box-sizing:border-box}body{margin:0}#root{text-align:left;border:none;width:100%;max-width:none;min-height:100svh;margin:0}h1,h2,h3{color:var(--ff-ink);font-family:inherit}a{color:var(--ff-accent);transition:color var(--ff-transition)}a:hover{color:var(--ff-accent-hover)}::selection{background:var(--ff-accent-soft);color:var(--ff-ink)}.ff-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}.ff-boot{min-height:100svh;padding:var(--ff-space-8);background:var(--ff-bg);place-items:center;display:grid}.ff-boot__inner{text-align:center;gap:var(--ff-space-4);justify-items:center;display:grid}.ff-boot__mark{border-radius:var(--ff-radius-md);background:var(--ff-navy);color:#f8fafc;width:56px;height:56px;font-weight:800;font-size:var(--ff-text-lg);letter-spacing:var(--ff-tracking-tight);box-shadow:var(--ff-shadow-md);place-items:center;display:grid}.ff-boot__text{font-size:var(--ff-text-base);color:var(--ff-muted);margin:0}.ff-auth{min-height:100svh;padding:var(--ff-space-6) var(--ff-space-4);background:linear-gradient(165deg, #e8edf7 0%, var(--ff-bg) 45%, #e2e8f0 100%);place-items:center;display:grid}.ff-auth__card{background:var(--ff-surface);border-radius:var(--ff-radius-lg);width:100%;max-width:420px;padding:var(--ff-space-8);box-shadow:var(--ff-shadow-md);border:1px solid var(--ff-border);gap:var(--ff-space-5);display:grid}.ff-auth__brand{align-items:center;gap:var(--ff-space-3);display:flex}.ff-auth__logo{border-radius:var(--ff-radius-sm);background:var(--ff-navy);color:#f1f5f9;width:44px;height:44px;font-weight:800;font-size:var(--ff-text-sm);place-items:center;display:grid}.ff-auth__titles{gap:2px;display:grid}.ff-auth__product{font-weight:700;font-size:var(--ff-text-lg);color:var(--ff-ink);letter-spacing:var(--ff-tracking-tight)}.ff-auth__tagline{font-size:var(--ff-text-xs);color:var(--ff-muted);text-transform:uppercase;letter-spacing:var(--ff-tracking-label)}.ff-auth__title{font-size:var(--ff-text-xl);color:var(--ff-ink);margin:0;font-weight:700}.ff-auth__footer{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0}.ff-auth__message{font-size:var(--ff-text-sm);padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-sm);background:var(--ff-surface-2);border:1px solid var(--ff-border);color:var(--ff-text);margin:0}.ff-auth__message--error{color:#991b1b;background:#fef2f2;border-color:#fecaca}.ff-label{font-size:var(--ff-text-xs);text-transform:uppercase;letter-spacing:var(--ff-tracking-label);color:var(--ff-muted);margin-bottom:var(--ff-space-2);font-weight:600;display:block}.ff-input{width:100%;font-size:var(--ff-text-base);border-radius:var(--ff-radius-sm);border:1px solid var(--ff-border-strong);background:var(--ff-surface);color:var(--ff-ink);transition:border-color var(--ff-transition), box-shadow var(--ff-transition);padding:.7rem .85rem}.ff-input:hover{border-color:#94a3b8}.ff-input:focus{border-color:var(--ff-accent);box-shadow:0 0 0 3px var(--ff-accent-soft);outline:none}.ff-input:disabled{opacity:.65;cursor:not-allowed;background:var(--ff-surface-2)}.ff-btn{justify-content:center;align-items:center;gap:var(--ff-space-2);font-family:inherit;font-size:var(--ff-text-sm);border-radius:var(--ff-radius-sm);cursor:pointer;transition:background var(--ff-transition), border-color var(--ff-transition), color var(--ff-transition), box-shadow var(--ff-transition), opacity var(--ff-transition);box-sizing:border-box;border:1px solid #0000;min-height:44px;padding:.65rem 1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.ff-btn:disabled{opacity:.5;cursor:not-allowed}.ff-btn--primary{background:var(--ff-accent);color:#fff;border-color:#0000;box-shadow:0 1px 2px #0f172a14}.ff-btn--primary:hover:not(:disabled){background:var(--ff-accent-hover)}.ff-btn--secondary{background:var(--ff-surface);color:var(--ff-ink);border-color:var(--ff-border-strong)}.ff-btn--secondary:hover:not(:disabled){background:var(--ff-surface-elevated);border-color:#94a3b8}.ff-btn--block{width:100%}.ff-btn--ghost-light{color:#e2e8f0;background:0 0;border-color:#fff3}.ff-btn--ghost-light:hover:not(:disabled){color:#fff;background:#ffffff14}.ff-app{background:var(--ff-bg);min-height:100svh;display:flex}.ff-sidebar{background:var(--ff-navy);color:#cbd5e1;z-index:50;width:260px;transition:transform var(--ff-transition-slow);flex-direction:column;flex-shrink:0;display:flex}.ff-sidebar a{color:inherit}.ff-sidebar__brand{align-items:center;gap:var(--ff-space-3);padding:var(--ff-space-5) var(--ff-space-5);border-bottom:1px solid #ffffff14;display:flex}.ff-sidebar__logo{border-radius:var(--ff-radius-sm);color:#f8fafc;width:40px;height:40px;font-weight:800;font-size:var(--ff-text-sm);letter-spacing:-.04em;background:linear-gradient(145deg,#1e40af 0%,#172554 100%);place-items:center;display:grid}.ff-sidebar__titles{gap:2px;min-width:0;display:grid}.ff-sidebar__product{font-weight:700;font-size:var(--ff-text-base);color:#f8fafc;letter-spacing:var(--ff-tracking-tight)}.ff-sidebar__tagline{font-size:var(--ff-text-xs);color:#94a3b8;text-transform:uppercase;letter-spacing:var(--ff-tracking-label)}.ff-nav{padding:var(--ff-space-4);flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.ff-nav__link{border-radius:var(--ff-radius-sm);font-size:var(--ff-text-sm);color:#cbd5e1;transition:background var(--ff-transition), color var(--ff-transition);align-items:center;padding:.65rem .75rem;font-weight:500;text-decoration:none;display:flex}.ff-nav__link:hover{color:#f8fafc;background:#ffffff0f}.ff-nav__link.is-active{color:#fff;background:#2563eb47;font-weight:600}.ff-sidebar__footer{padding:var(--ff-space-4) var(--ff-space-5);gap:var(--ff-space-4);border-top:1px solid #ffffff14;display:grid}.ff-sidebar__user{gap:var(--ff-space-2);display:grid}.ff-sidebar__user-email{font-size:var(--ff-text-xs);color:#94a3b8;word-break:break-all}.ff-main{flex-direction:column;flex:1;min-width:0;display:flex}.ff-topbar{align-items:center;gap:var(--ff-space-3);padding:var(--ff-space-3) var(--ff-space-4);background:var(--ff-surface);border-bottom:1px solid var(--ff-border);z-index:30;display:none;position:sticky;top:0}.ff-topbar__title{font-weight:700;font-size:var(--ff-text-base);color:var(--ff-ink)}.ff-topbar__menu{border-radius:var(--ff-radius-sm);background:var(--ff-surface-2);cursor:pointer;border:none;place-items:center;width:44px;height:44px;padding:0;display:grid}.ff-topbar__menu-icon{background:var(--ff-ink);width:18px;height:2px;box-shadow:0 -6px 0 var(--ff-ink), 0 6px 0 var(--ff-ink);border-radius:1px}.ff-main__scroll{padding:var(--ff-space-6) var(--ff-space-6) var(--ff-space-10);flex:1;width:100%;max-width:1120px;margin:0 auto}.ff-sidebar-backdrop{display:none}@media (width<=900px){.ff-sidebar{box-shadow:var(--ff-shadow-lg);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.ff-sidebar.is-open{transform:translate(0)}.ff-sidebar-backdrop{z-index:40;cursor:pointer;background:#0f172a73;border:none;padding:0;display:block;position:fixed;inset:0}.ff-topbar{display:flex}}.ff-page{gap:var(--ff-space-6);display:grid}.ff-page-header{gap:var(--ff-space-2);display:grid}.ff-page-title{font-size:var(--ff-text-2xl);color:var(--ff-ink);letter-spacing:var(--ff-tracking-tight);margin:0;font-weight:700}.ff-page-lead{font-size:var(--ff-text-base);color:var(--ff-muted);max-width:52rem;margin:0;line-height:1.55}.ff-muted{color:var(--ff-muted)}.ff-badge{border-radius:var(--ff-radius-pill);width:fit-content;max-width:100%;font-size:var(--ff-text-xs);letter-spacing:.02em;align-items:center;padding:.2rem .55rem;font-weight:600;display:inline-flex}.ff-badge--district{color:#bfdbfe;background:#2563eb33}.ff-badge--owner{color:#fef9c3;background:#fbbf2438}.ff-badge--school{color:#bae6fd;background:#0ea5e933}.ff-badge--coach{color:#a7f3d0;background:#34d3992e}.ff-badge--family{color:#ddd6fe;background:#c4b5fd33}.ff-badge--muted{color:#e2e8f0;background:#94a3b833}.ff-badge-surface{border-radius:var(--ff-radius-pill);width:fit-content;max-width:100%;font-size:var(--ff-text-xs);align-items:center;padding:.2rem .65rem;font-weight:600;display:inline-flex}.ff-badge-surface--district{color:#1e40af;background:#dbeafe}.ff-badge-surface--owner{color:#92400e;background:#fef3c7}.ff-badge-surface--school{color:#0369a1;background:#e0f2fe}.ff-badge-surface--coach{color:#047857;background:#d1fae5}.ff-badge-surface--family{color:#5b21b6;background:#ede9fe}.ff-badge-surface--muted{background:var(--ff-surface-2);color:var(--ff-muted);border:1px solid var(--ff-border)}.ff-alert{padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-sm);font-size:var(--ff-text-sm);margin-bottom:var(--ff-space-4)}.ff-alert--error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.ff-card{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius-md);box-shadow:var(--ff-shadow);transition:box-shadow var(--ff-transition), border-color var(--ff-transition)}.ff-card:hover{box-shadow:var(--ff-shadow-md);border-color:#cbd5e1}.ff-card--pad{padding:var(--ff-space-5);gap:var(--ff-space-3);display:grid}.ff-card__title{font-size:var(--ff-text-base);color:var(--ff-ink);margin:0;font-weight:600}.ff-card__desc{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;line-height:1.5}.ff-card__empty{padding:var(--ff-space-4);border-radius:var(--ff-radius-sm);border:1px dashed var(--ff-border-strong);background:var(--ff-surface-elevated);font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;line-height:1.5}.ff-card__empty strong{color:var(--ff-text)}.ff-dashboard-grid{gap:var(--ff-space-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.ff-stat-grid{gap:var(--ff-space-3);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));display:grid}.ff-stat{text-align:center;padding:var(--ff-space-4);border-radius:var(--ff-radius-sm);background:var(--ff-surface-elevated);border:1px solid var(--ff-border)}.ff-stat__label{font-size:var(--ff-text-xs);color:var(--ff-muted);margin-bottom:var(--ff-space-2)}.ff-stat__value{font-size:var(--ff-text-2xl);color:var(--ff-ink);font-weight:700}.ff-panel{padding:var(--ff-space-4) var(--ff-space-5);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);background:var(--ff-surface);gap:var(--ff-space-3);display:grid}.ff-panel--accent{background:linear-gradient(135deg,#eff6ff 0%,#f8fafc 100%);border-color:#bfdbfe}.ff-panel__title{font-size:var(--ff-text-sm);color:var(--ff-ink);margin:0;font-weight:600}.ff-panel__text{font-size:var(--ff-text-sm);color:var(--ff-text);margin:0;line-height:1.55}.ff-panel code{font-size:var(--ff-text-xs);background:var(--ff-surface-2);border-radius:4px;padding:.1rem .35rem}.ff-select{width:100%;max-width:28rem;font-size:var(--ff-text-sm);border-radius:var(--ff-radius-sm);border:1px solid var(--ff-border-strong);background:var(--ff-surface);color:var(--ff-ink);padding:.65rem .75rem}.ff-select:focus{border-color:var(--ff-accent);box-shadow:0 0 0 3px var(--ff-accent-soft);outline:none}.ff-profile{background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);max-width:560px;padding:var(--ff-space-6);box-shadow:var(--ff-shadow);gap:var(--ff-space-5);display:grid}.ff-profile__header{gap:var(--ff-space-2);display:grid}.ff-profile__title{font-size:var(--ff-text-xl);margin:0;font-weight:700}.ff-profile__intro{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;line-height:1.55}.ff-readonly{border-radius:var(--ff-radius-sm);background:var(--ff-surface-2);border:1px solid var(--ff-border);font-size:var(--ff-text-base);color:var(--ff-text);padding:.65rem .85rem;line-height:1.45}.ff-profile__divider{border:0;border-top:1px solid var(--ff-border);margin:0}.ff-profile__success{padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-sm);color:#065f46;font-size:var(--ff-text-sm);background:#ecfdf5;border:1px solid #a7f3d0}.ff-profile__error{padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-sm);color:#991b1b;font-size:var(--ff-text-sm);background:#fef2f2;border:1px solid #fecaca}.ff-profile__footer{font-size:var(--ff-text-xs);color:var(--ff-muted-2)}.ff-workspace{gap:var(--ff-space-6);display:grid}.ff-workspace__toolbar{justify-content:space-between;align-items:center;gap:var(--ff-space-3);flex-wrap:wrap;display:flex}.ff-workspace__email{font-size:var(--ff-text-sm);color:var(--ff-muted)}.ff-callout{padding:var(--ff-space-3) var(--ff-space-4);border-radius:var(--ff-radius-sm);font-size:var(--ff-text-sm);background:var(--ff-accent-soft);color:var(--ff-text);border:1px solid #bfdbfe;margin:0;line-height:1.55}.ff-callout--subtle{background:var(--ff-surface-2);border-color:var(--ff-border)}.ff-empty-lg{padding:var(--ff-space-8);border-radius:var(--ff-radius-md);border:1px dashed var(--ff-border-strong);background:var(--ff-surface-elevated);text-align:center;margin:0}.ff-empty-lg__title{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-lg);color:var(--ff-ink);font-weight:600}.ff-empty-lg__body{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;line-height:1.55}.ff-section-heading{font-size:var(--ff-text-xl);color:var(--ff-ink);letter-spacing:var(--ff-tracking-tight);margin:0;font-weight:700}.ff-sidebar a.ff-nav__link:hover{color:#f8fafc}
