: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)}.page{padding-bottom:var(--ff-space-2)}.page__intro{margin-bottom:var(--ff-space-6)}.page__title{font-size:var(--ff-text-2xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.2}.page__lede{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-base);color:var(--ff-muted);max-width:46rem;line-height:1.6}.page__intro--row{justify-content:space-between;align-items:flex-start;gap:var(--ff-space-4) var(--ff-space-5);flex-wrap:wrap;display:flex}.page__intro--row .page__lede{max-width:40rem}.page__eyebrow,.dashboard__eyebrow{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-muted);font-weight:800}.page__intro .page__title{letter-spacing:var(--ff-tracking-tight)}.page--admin .page__lede{max-width:44rem}.section-divider{height:1px;margin:var(--ff-space-6) 0;background:linear-gradient(90deg, transparent, var(--ff-border-strong), transparent);border:none}.empty-state{text-align:center;padding:var(--ff-space-8) var(--ff-space-5);border-radius:var(--ff-radius-lg);border:1px dashed var(--ff-border-strong);background:var(--ff-surface-elevated)}.empty-state__title{font-size:var(--ff-text-lg);color:var(--ff-ink);margin:0;font-weight:700}.empty-state__hint{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);max-width:26rem;margin-inline:auto;line-height:1.55}.demo-domain-legend{align-items:center;gap:var(--ff-space-3) var(--ff-space-4);padding:var(--ff-space-4) var(--ff-space-5);margin-bottom:var(--ff-space-6);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);box-shadow:var(--ff-shadow);background:linear-gradient(135deg,#2563eb0a,#6d28d90d);flex-wrap:wrap;display:flex}.demo-domain-legend--compact{padding:var(--ff-space-3) var(--ff-space-4);margin-bottom:var(--ff-space-4);font-size:var(--ff-text-sm)}.demo-domain-legend__item{align-items:flex-start;gap:var(--ff-space-2);min-width:0;display:inline-flex}.demo-domain-legend__swatch{border-radius:2px;flex-shrink:0;width:.55rem;height:.55rem;margin-top:.35rem}.demo-domain-legend__item--practice .demo-domain-legend__swatch{background:linear-gradient(145deg,#2563eb,#38bdf8);box-shadow:0 0 0 1px #2563eb40}.demo-domain-legend__item--import .demo-domain-legend__swatch{box-shadow:0 0 0 1px var(--ff-import-border);background:linear-gradient(145deg,#6d28d9,#a78bfa)}.demo-domain-legend__text{font-size:var(--ff-text-sm);color:var(--ff-text);line-height:1.45}.demo-domain-legend__text strong{color:var(--ff-ink);font-weight:700}.demo-domain-legend__sep{color:var(--ff-muted-2);-webkit-user-select:none;user-select:none;font-weight:600}@media (width<=720px){.demo-domain-legend__sep{display:none}}.product-explain{margin-bottom:var(--ff-space-6);padding:var(--ff-space-6) var(--ff-space-6) var(--ff-space-5);border-radius:var(--ff-radius-lg);border:1px solid var(--ff-border);background:linear-gradient(165deg, #2563eb0d 0%, #6d28d90a 42%, var(--ff-surface) 100%);box-shadow:var(--ff-shadow)}.product-explain__header{margin-bottom:var(--ff-space-5);max-width:40rem}.product-explain__eyebrow{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-muted);font-weight:800}.product-explain__title{font-size:var(--ff-text-xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.25}.product-explain__subtitle{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);line-height:1.55}.product-explain__grid{gap:var(--ff-space-4);grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;display:grid}.product-explain__card{padding:var(--ff-space-4) var(--ff-space-4) var(--ff-space-5);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);background:var(--ff-surface);position:relative;box-shadow:inset 0 1px #ffffffd9}.product-explain__card:before{content:"";top:0;left:var(--ff-space-4);right:var(--ff-space-4);opacity:.9;border-radius:0 0 3px 3px;height:3px;position:absolute}.product-explain__card--import:before{background:linear-gradient(90deg, var(--ff-import-accent), #a78bfa)}.product-explain__card--bridge:before{background:linear-gradient(90deg,#64748b,#94a3b8)}.product-explain__card--practice:before{background:linear-gradient(90deg, var(--ff-practice-accent), #22c55e)}.product-explain__icon{width:2.25rem;height:2.25rem;margin-bottom:var(--ff-space-3);border-radius:var(--ff-radius-sm);color:var(--ff-muted);background:var(--ff-surface-2);border:1px solid var(--ff-border);justify-content:center;align-items:center;display:flex}.product-explain__card--import .product-explain__icon{color:var(--ff-import-accent);border-color:var(--ff-import-border);background:#6d28d90f}.product-explain__card--bridge .product-explain__icon{color:var(--ff-ink)}.product-explain__card--practice .product-explain__icon{color:var(--ff-practice-accent);border-color:var(--ff-practice-border);background:#2563eb0f}.product-explain__card-title{font-size:var(--ff-text-sm);letter-spacing:-.01em;color:var(--ff-ink);margin:0;font-weight:700;line-height:1.35}.product-explain__card-body{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-xs);color:var(--ff-text);line-height:1.55}.product-explain__card-body strong{color:var(--ff-ink);font-weight:650}@media (width<=960px){.product-explain__grid{grid-template-columns:1fr}.product-explain{padding:var(--ff-space-5) var(--ff-space-4)}}.ff-empty{text-align:center;padding:var(--ff-space-8) var(--ff-space-5);border-radius:var(--ff-radius-lg);border:1px dashed var(--ff-border-strong);background:var(--ff-surface-elevated);flex-direction:column;align-items:center;display:flex}.ff-empty--compact{padding:var(--ff-space-6) var(--ff-space-4)}.ff-empty--practice{border-color:var(--ff-practice-border);background:var(--ff-practice-surface);box-shadow:var(--ff-practice-glow)}.ff-empty--calendar{padding:var(--ff-space-5) var(--ff-space-3);border-radius:var(--ff-radius-md);background:var(--ff-surface-2);border-style:dashed;margin:0}.ff-empty__visual{width:3rem;height:3rem;margin-bottom:var(--ff-space-3);border-radius:var(--ff-radius-md);background:var(--ff-surface);border:1px solid var(--ff-border);color:var(--ff-muted);justify-content:center;align-items:center;display:flex}.ff-empty__visual svg{opacity:.85}.ff-empty__title{font-size:var(--ff-text-base);color:var(--ff-ink);margin:0;font-weight:700;line-height:1.35}.ff-empty__hint{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);max-width:22rem;line-height:1.55}.ff-empty__hint strong{color:var(--ff-ink);font-weight:600}.card>.ff-empty--in-card{box-shadow:none;padding:var(--ff-space-8) var(--ff-space-4);background:0 0;border:none}.card--domain-import{margin-top:var(--ff-space-3);border-style:dashed;border-color:var(--ff-import-border);background:var(--ff-import-surface);box-shadow:var(--ff-import-glow);border-width:1.5px;position:relative}.card--domain-import:before{content:"Imported · read-only";left:var(--ff-space-5);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-import-accent);background:var(--ff-surface);border-radius:var(--ff-radius-sm);border:1px solid var(--ff-import-border);box-shadow:var(--ff-shadow);padding:.2rem .55rem;font-weight:800;position:absolute;top:0;transform:translateY(-50%)}.card--domain-practice{border-color:var(--ff-practice-border);background:var(--ff-practice-surface);box-shadow:var(--ff-practice-glow)}.card--domain-practice:before{content:"Field Flow · practice";left:var(--ff-space-5);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-practice-accent);background:var(--ff-surface);border-radius:var(--ff-radius-sm);border:1px solid var(--ff-practice-border);box-shadow:var(--ff-shadow);padding:.2rem .55rem;font-weight:800;position:absolute;top:0;transform:translateY(-50%)}.card--domain-import,.card--domain-practice{position:relative}.app-shell{background:var(--ff-bg);min-height:100vh;color:var(--ff-text);flex-direction:column;display:flex}.app-shell__routes{flex-direction:column;flex:1;min-height:0;display:flex}.app-frame{flex:1;align-items:stretch;width:100%;min-height:0;display:flex}.app-sidebar{color:#e2e8f0;background:linear-gradient(#0c1a33 0%,#12294d 48%,#0f213f 100%);border-right:1px solid #ffffff14;flex-direction:column;flex-shrink:0;gap:1rem;width:248px;padding:1.35rem 1rem 1.5rem;display:flex;box-shadow:4px 0 24px #0f172a1f}.app-sidebar__brand{align-items:flex-start;gap:.85rem;display:flex}.app-sidebar__logo{background:linear-gradient(145deg,#38bdf859,#6366f173);border:1px solid #fff3;border-radius:12px;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}.app-sidebar__logo-mark{letter-spacing:.04em;font-size:.88rem;font-weight:800}.app-sidebar__titles{min-width:0}.app-sidebar__district{text-transform:uppercase;letter-spacing:.12em;color:#e2e8f08c;margin:0;font-size:.62rem;font-weight:600}.app-sidebar__product{letter-spacing:-.02em;color:#fff;margin:.35rem 0 0;font-size:1.2rem;font-weight:700;line-height:1.2}.app-sidebar__tagline{color:#e2e8f0b8;margin:.25rem 0 0;font-size:.72rem;font-weight:500;line-height:1.35}.app-sidebar__hint{color:#e2e8f0c7;margin:0;font-size:.75rem;line-height:1.45}.app-sidebar__hint strong{color:#fff;font-weight:600}.app-sidebar__nav{flex-direction:column;gap:.25rem;margin-top:.35rem;display:flex}.app-sidebar__link{color:#e2e8f0eb;border:1px solid #0000;border-radius:10px;padding:.5rem .75rem;font-size:.86rem;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:block}.app-sidebar__link:hover{color:#fff;background:#ffffff14}.app-sidebar__link.is-active{color:#fff;background:#ffffff24;border-color:#fff3;font-weight:600}.app-frame__main{background:var(--ff-bg);flex-direction:column;flex:1;min-width:0;display:flex}.app-topbar{border-bottom:1px solid var(--ff-border);background:var(--ff-surface);box-shadow:var(--ff-shadow);flex-shrink:0;align-items:center;gap:1rem;padding:.65rem 1.25rem;display:flex}.app-topbar__start{flex-shrink:0;min-width:0}.app-topbar__spacer{flex:1;min-width:0}.demo-role-switch{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.demo-role-switch__label{font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-muted-2);font-weight:800}.demo-role-switch__tabs{border-radius:var(--ff-radius-pill);border:1px solid var(--ff-border-strong);background:var(--ff-surface-2);gap:2px;padding:3px;display:inline-flex;box-shadow:inset 0 1px #ffffffbf}.demo-role-switch__tab{appearance:none;cursor:pointer;border-radius:var(--ff-radius-pill);font-size:var(--ff-text-xs);color:var(--ff-muted);transition:background var(--ff-transition), color var(--ff-transition), box-shadow var(--ff-transition);white-space:nowrap;background:0 0;border:none;padding:.35rem .65rem;font-weight:700}.demo-role-switch__tab-full{display:none}@media (width>=900px){.demo-role-switch__tab-short{display:none}.demo-role-switch__tab-full{display:inline}.demo-role-switch__tab{font-size:var(--ff-text-sm);padding:.4rem .85rem}}.demo-role-switch__tab:hover{color:var(--ff-ink);background:#ffffff8c}.demo-role-switch__tab.is-active{color:var(--ff-ink);background:var(--ff-surface);box-shadow:var(--ff-shadow)}.app-topbar__actions{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.app-topbar__user{align-items:center;gap:.55rem;display:flex}.app-topbar__avatar{border:1px solid var(--ff-border);width:36px;height:36px;color:var(--ff-ink);background:linear-gradient(135deg,#3b82f633,#6366f140);border-radius:50%;place-items:center;font-size:.68rem;font-weight:700;display:grid}.app-topbar__meta{flex-direction:column;gap:.02rem;display:flex}.app-topbar__name{color:var(--ff-ink);font-size:.86rem;font-weight:600}.app-topbar__role{color:var(--ff-muted);font-size:.72rem}.dashboard__import-block{margin-top:var(--ff-space-2)}.dashboard__import-actions{margin-top:var(--ff-space-3);flex-wrap:wrap;justify-content:flex-end;display:flex}.import-feed-intro{margin:var(--ff-space-5) 0 var(--ff-space-4);max-width:44rem}.import-feed-intro__label{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-import-accent);font-weight:800}.import-feed-intro__title{font-size:var(--ff-text-xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.25}.import-feed-intro__lede{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);line-height:1.55}.import-feed-meta{border-style:dashed;border-color:var(--ff-import-border);background:var(--ff-import-surface);box-shadow:var(--ff-import-glow);border-width:1.5px}.readonly-banner{gap:var(--ff-space-4);padding:var(--ff-space-4) var(--ff-space-5);border-radius:var(--ff-radius-lg);border:1px dashed var(--ff-import-border);background:var(--ff-import-surface);box-shadow:var(--ff-import-glow);margin-bottom:var(--ff-space-5);align-items:flex-start;display:flex}.readonly-banner__icon{color:var(--ff-import-accent);flex-shrink:0;margin-top:.1rem}.readonly-banner__title{color:var(--ff-ink);letter-spacing:-.02em;margin:0;font-size:.95rem;font-weight:700}.readonly-banner__text{color:var(--ff-muted);margin:.35rem 0 0;font-size:.85rem;line-height:1.5}.readonly-banner__text strong{color:var(--ff-ink);font-weight:600}.imported-meta{flex-wrap:wrap;gap:1rem 2rem;margin-bottom:1.25rem;display:flex}.imported-meta__row{flex-direction:column;gap:.2rem;min-width:140px;display:flex}.imported-meta__label{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);font-size:.68rem;font-weight:700}.imported-meta__value{color:var(--ff-ink);font-size:.88rem;font-weight:600}.page__intro--tight{margin-bottom:.65rem}.facilities-scope-banner{background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border:1px solid #cbd5e1;border-radius:12px;margin-bottom:1.1rem;padding:.9rem 1.1rem}.facilities-scope-banner__title{text-transform:uppercase;letter-spacing:.08em;color:#475569;margin:0;font-size:.72rem;font-weight:800}.facilities-scope-banner__text{color:#64748b;margin:.4rem 0 0;font-size:.84rem;line-height:1.5}.facilities-legend{border:1px solid var(--ff-border);background:#fff;border-radius:10px;flex-wrap:wrap;align-items:center;gap:.65rem 1.1rem;margin-bottom:1.15rem;padding:.65rem .85rem;display:flex}.facilities-legend__item{color:#475569;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;display:inline-flex}.facilities-legend__hint{color:#94a3b8;font-size:.72rem;font-weight:500}.facilities-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1rem;display:grid}.facility-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;flex-direction:column;padding:1.1rem 1.15rem 1rem;transition:box-shadow .15s,border-color .15s;display:flex;box-shadow:0 1px 2px #0f172a0a}.facility-card:hover{border-color:#cbd5e1;box-shadow:0 8px 28px #0f172a14}.facility-card--maintenance{background:linear-gradient(#fffbeb 0%,#fff 52%);border-color:#fcd34d}.facility-card--in_use{border-left:4px solid #fb923c}.facility-card--reserved{border-left:4px solid #a78bfa}.facility-card--available{border-left:4px solid #34d399}.facility-card__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.65rem;margin-bottom:.55rem;display:flex}.facility-card__titles{flex:1;min-width:0}.facility-card__name{letter-spacing:-.02em;color:#0f172a;margin:0;font-size:1.08rem;font-weight:800;line-height:1.2}.facility-card__site{color:#475569;margin:.35rem 0 0;font-size:.8rem;line-height:1.4}.facility-card__site-k{color:#64748b;margin-right:.25rem;font-weight:700}.facility-card__type{text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:.25rem 0 0;font-size:.72rem;font-weight:700}.facility-card__schedule{background:linear-gradient(165deg,#f1f5f9e6 0%,#fff 55%);border:1px solid #e2e8f0;border-radius:10px;margin:0 0 .75rem;padding:.65rem .75rem}.facility-card--in_use .facility-card__schedule{background:linear-gradient(165deg,#ffedd573 0%,#fff 50%);border-color:#fb923c59}.facility-card--reserved .facility-card__schedule{background:linear-gradient(165deg,#ede9fe80 0%,#fff 50%);border-color:#a78bfa59}.facility-card--maintenance .facility-card__schedule{background:linear-gradient(165deg,#fef3c780 0%,#fff 50%);border-color:#fcd34d73}.facility-card--available .facility-card__schedule{background:linear-gradient(165deg,#d1fae559 0%,#fff 50%);border-color:#34d3994d}.facility-card__schedule-title{text-transform:uppercase;letter-spacing:.07em;color:#64748b;margin:0 0 .45rem;font-size:.62rem;font-weight:800}.facility-card__schedule-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.facility-card__schedule-item{color:#0f172a;padding-left:.85rem;font-size:.82rem;font-weight:600;line-height:1.45;position:relative}.facility-card__schedule-item:before{content:"";background:#64748b;border-radius:50%;width:5px;height:5px;position:absolute;top:.55em;left:0}.facility-card--in_use .facility-card__schedule-item:before{background:#ea580c}.facility-card--reserved .facility-card__schedule-item:before{background:#7c3aed}.facility-card--maintenance .facility-card__schedule-item:before{background:#ca8a04}.facility-card--available .facility-card__schedule-item:before{background:#059669}.facility-card__detail{color:#475569;margin:0 0 .75rem;font-size:.86rem;line-height:1.45}.facility-card__notes{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;flex:1;margin-bottom:.9rem;padding:.65rem .75rem}.facility-card__notes-label{text-transform:uppercase;letter-spacing:.07em;color:#94a3b8;margin-bottom:.3rem;font-size:.62rem;font-weight:800;display:block}.facility-card__notes-body{color:#64748b;margin:0;font-size:.8rem;line-height:1.45}.facility-card__actions{flex-wrap:wrap;gap:.5rem;margin-top:auto;display:flex}.btn--facility{flex:120px;min-width:0;padding:.5rem .85rem;font-size:.84rem}.facilities-footnote{color:var(--ff-muted-2);margin:1.25rem 0 0;font-size:.78rem;line-height:1.45}.app-banner{text-align:center;font-size:var(--ff-text-sm);color:var(--ff-ink);border-bottom:1px solid var(--ff-border-strong);background:linear-gradient(95deg,#dbeafe 0%,#e0e7ff 45%,#ccfbf1 100%);margin:0;padding:.75rem 1.25rem;font-weight:600;box-shadow:inset 0 1px #fffc}.app-main{width:100%;max-width:1280px;padding:var(--ff-space-6) var(--ff-space-6) var(--ff-space-10);box-sizing:border-box;flex:1;margin:0 auto}.app-footer{padding:var(--ff-space-5) var(--ff-space-6) var(--ff-space-6);border-top:1px solid var(--ff-border);background:linear-gradient(180deg, var(--ff-surface-2) 0%, #e8edf5 100%);margin-top:auto}.app-footer p{font-size:var(--ff-text-xs);letter-spacing:.02em;color:var(--ff-muted);margin:0;max-width:1280px;margin-inline:auto;line-height:1.55}.app-footer strong{color:var(--ff-ink);font-weight:600}.app-header{background:linear-gradient(135deg, var(--ff-navy) 0%, #152a4a 55%, #0f213f 100%);color:#f1f5f9;box-shadow:var(--ff-shadow-lg);border-bottom:1px solid #ffffff0f;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1.25rem 1.5rem;padding:1.25rem 1.5rem 1.35rem;display:flex}.app-header__brand{flex:280px;align-items:flex-start;gap:1rem;min-width:min(100%,320px);display:flex}.app-header__logo{background:linear-gradient(145deg,#38bdf859,#6366f173);border:1px solid #fff3;border-radius:14px;flex-shrink:0;place-items:center;width:48px;height:48px;display:grid}.app-header__logo-mark{letter-spacing:.04em;font-size:.95rem;font-weight:800}.app-header__school{text-transform:uppercase;letter-spacing:.12em;color:#e2e8f0bf;margin:0;font-size:.72rem;font-weight:600}.app-header__product{letter-spacing:-.03em;color:#fff;margin:.15rem 0 0;font-size:1.65rem;font-weight:700;line-height:1.15}.app-header__tagline{color:#e2e8f0e0;max-width:42rem;margin:.45rem 0 0;font-size:.82rem;line-height:1.45}.app-header__tagline strong{color:#fff;font-weight:600}.app-header__nav{flex-wrap:wrap;flex:2 360px;justify-content:center;align-items:center;gap:.35rem;display:flex}.app-header__nav-btn{appearance:none;color:#e2e8f0;cursor:pointer;background:#ffffff0f;border:1px solid #0000;border-radius:999px;padding:.45rem .85rem;font-size:.84rem;font-weight:500;transition:background .15s,border-color .15s,color .15s}.app-header__nav-btn:hover{background:#ffffff1f}.app-header__nav-btn.is-active{color:#fff;background:#ffffff2e;border-color:#ffffff40;font-weight:600}.app-header__actions{flex-wrap:wrap;flex:0 auto;align-items:center;gap:.75rem;display:flex}.app-header__user{align-items:center;gap:.6rem;display:flex}.app-header__user-avatar{background:#ffffff26;border:1px solid #ffffff40;border-radius:50%;place-items:center;width:38px;height:38px;font-size:.72rem;font-weight:700;display:grid}.app-header__user-meta{flex-direction:column;gap:.05rem;display:flex}.app-header__user-name{color:#fff;font-size:.88rem;font-weight:600}.app-header__user-role{color:#e2e8f0bf;font-size:.72rem}.btn{appearance:none;border-radius:var(--ff-radius-md);font-size:var(--ff-text-sm);cursor:pointer;transition:transform var(--ff-transition), box-shadow var(--ff-transition), background var(--ff-transition), border-color var(--ff-transition), filter var(--ff-transition);border:none;padding:.55rem 1.1rem;font-weight:600}.btn:focus-visible{box-shadow:0 0 0 3px var(--ff-accent-soft);outline:none}.btn:active{transform:translateY(1px)}.btn--primary{background:linear-gradient(165deg, #3b82f6 0%, var(--ff-accent) 55%, #1e40af 100%);color:#fff;box-shadow:0 2px 6px #2563eb40,0 8px 24px #2563eb38}.btn--primary:hover{filter:brightness(1.06);box-shadow:0 4px 12px #2563eb4d,0 12px 32px #2563eb2e}.btn--secondary{background:var(--ff-surface);color:var(--ff-ink);border:1px solid var(--ff-border-strong);box-shadow:0 1px 2px #0f172a0a}.btn--secondary:hover{background:var(--ff-surface-elevated);border-color:var(--ff-muted-2)}.btn--ghost{color:#fff;background:#ffffff1a;border:1px solid #ffffff38}.btn--ghost:hover{background:#ffffff2e;border-color:#ffffff59}.btn--sm{border-radius:var(--ff-radius-sm);padding:.3rem .6rem;font-size:.9375rem;line-height:1}.btn--block{width:100%;margin-top:.75rem}.stat-grid{gap:var(--ff-space-4);margin-bottom:var(--ff-space-6);grid-template-columns:repeat(4,1fr);display:grid}.stat-card{background:var(--ff-surface);border-radius:var(--ff-radius-lg);padding:var(--ff-space-5) var(--ff-space-5);border:1px solid var(--ff-border);box-shadow:var(--ff-shadow);transition:box-shadow var(--ff-transition), border-color var(--ff-transition), transform var(--ff-transition)}.stat-card:hover{box-shadow:var(--ff-shadow-md);border-color:var(--ff-border-strong);transform:translateY(-1px)}.stat-card__value{font-size:var(--ff-text-3xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.1}.stat-card__label{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);font-weight:600}.stat-card__hint{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-xs);color:var(--ff-muted-2);line-height:1.4}.dashboard-kpi{gap:var(--ff-space-4);margin-bottom:var(--ff-space-5);grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.dashboard-kpi__card{border-radius:var(--ff-radius-xl);padding:var(--ff-space-5) var(--ff-space-5) var(--ff-space-4);border:1px solid var(--ff-border);min-height:9.5rem;box-shadow:var(--ff-shadow-md);transition:transform var(--ff-transition), box-shadow var(--ff-transition);background:var(--ff-surface);position:relative;overflow:hidden}.dashboard-kpi__card:before{content:"";border-radius:var(--ff-radius-xl) var(--ff-radius-xl) 0 0;opacity:.95;height:4px;position:absolute;inset:0 0 auto}.dashboard-kpi__card:hover{box-shadow:var(--ff-shadow-lg);transform:translateY(-3px)}.dashboard-kpi__card--today:before{background:linear-gradient(90deg,#2563eb,#38bdf8)}.dashboard-kpi__card--today{background:linear-gradient(165deg,#fff 0%,#eff6ff 55%,#fff 100%)}.dashboard-kpi__card--pending:before{background:linear-gradient(90deg,#6366f1,#8b5cf6)}.dashboard-kpi__card--pending{background:linear-gradient(165deg,#fff 0%,#f5f3ff 50%,#fff 100%)}.dashboard-kpi__card--facilities:before{background:linear-gradient(90deg,#059669,#34d399)}.dashboard-kpi__card--facilities{background:linear-gradient(165deg,#fff 0%,#ecfdf5 52%,#fff 100%)}.dashboard-kpi__card--import:before{background:linear-gradient(90deg,#6d28d9,#a78bfa)}.dashboard-kpi__card--import{border-style:dashed;border-color:var(--ff-import-border);background:linear-gradient(165deg,#fff 0%,#faf5ff 48%,#fff 100%)}.dashboard-kpi__card--approvals:before{background:linear-gradient(90deg,#d97706,#fbbf24)}.dashboard-kpi__card--approvals{background:linear-gradient(165deg,#fff 0%,#fffbeb 50%,#fff 100%)}.dashboard-kpi__icon-wrap{border-radius:var(--ff-radius-md);width:2.75rem;height:2.75rem;margin-bottom:var(--ff-space-3);color:var(--ff-ink);background:#ffffffd9;border:1px solid #0f172a0f;justify-content:center;align-items:center;display:flex;box-shadow:0 1px 2px #0f172a0f}.dashboard-kpi__card--today .dashboard-kpi__icon-wrap{color:#1d4ed8;background:#2563eb1a;border-color:#2563eb26}.dashboard-kpi__card--pending .dashboard-kpi__icon-wrap{color:#5b21b6;background:#6366f11f}.dashboard-kpi__card--facilities .dashboard-kpi__icon-wrap{color:#047857;background:#10b9811f}.dashboard-kpi__card--import .dashboard-kpi__icon-wrap{color:var(--ff-import-accent);background:#6d28d91a}.dashboard-kpi__card--approvals .dashboard-kpi__icon-wrap{color:#b45309;background:#f59e0b26}.dashboard-kpi__value{letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);font-variant-numeric:tabular-nums;margin:0;font-size:clamp(2rem,4vw,2.65rem);font-weight:800;line-height:1}.dashboard-kpi__label{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-sm);color:var(--ff-ink);font-weight:700;line-height:1.3}.dashboard-kpi__hint{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-xs);color:var(--ff-muted);line-height:1.45}.dashboard-kpi__badge-ro{letter-spacing:.06em;text-transform:uppercase;color:var(--ff-import-accent);margin-right:.25rem;font-size:.62rem;font-weight:800;display:inline-block}.dashboard-kpi__cta{margin-top:var(--ff-space-3);appearance:none;color:#b45309;width:100%;font-size:var(--ff-text-xs);border-radius:var(--ff-radius-sm);cursor:pointer;transition:background var(--ff-transition), border-color var(--ff-transition);background:#ffffffe6;border:1px solid #b4530959;padding:.45rem .65rem;font-weight:700}.dashboard-kpi__cta:hover{background:#fff;border-color:#d97706}.dashboard-kpi__footnote{margin:0 0 var(--ff-space-6);padding:var(--ff-space-4) var(--ff-space-5);font-size:var(--ff-text-sm);color:var(--ff-muted);background:var(--ff-surface-elevated);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);line-height:1.55}.dashboard-kpi__footnote strong{color:var(--ff-ink);font-weight:700}.card{background:var(--ff-surface);border-radius:var(--ff-radius-lg);padding:var(--ff-space-5) var(--ff-space-6);border:1px solid var(--ff-border);box-shadow:var(--ff-shadow);transition:box-shadow var(--ff-transition), border-color var(--ff-transition), transform var(--ff-transition);position:relative}.card:hover{box-shadow:var(--ff-shadow-md)}.card--muted{background:var(--ff-surface-2)}.card--muted:hover{box-shadow:var(--ff-shadow)}.card--readonly{border-style:dashed;border-color:var(--ff-import-border);background:var(--ff-import-surface)}.card--compact{padding:var(--ff-space-4) var(--ff-space-5)}.card__head{justify-content:space-between;align-items:flex-start;gap:var(--ff-space-3);margin-bottom:var(--ff-space-4);padding-top:var(--ff-space-2);flex-wrap:wrap;display:flex}.card--domain-import .card__head,.card--domain-practice .card__head{padding-top:var(--ff-space-3)}.card__title{font-size:var(--ff-text-lg);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.25}.card__subtitle{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);max-width:42rem;line-height:1.55}.card__subtitle strong{color:var(--ff-ink);font-weight:600}.card__footnote{margin:var(--ff-space-5) 0 0;font-size:var(--ff-text-xs);color:var(--ff-muted-2);line-height:1.5}.badge{letter-spacing:.02em;text-transform:uppercase;border-radius:999px;align-items:center;padding:.25rem .55rem;font-size:.72rem;font-weight:700;display:inline-flex}.badge--live{color:#047857;background:#10b9811f;border:1px solid #10b98159}.badge--pending{color:#b45309;background:#f59e0b1f;border:1px solid #f59e0b59}.badge--readonly{color:#475569;background:#64748b1f;border:1px solid #64748b59}.badge--ok{color:#047857;background:#10b9811f}.badge--no{color:#b91c1c;background:#ef44441a}.pill{text-transform:uppercase;letter-spacing:.04em;border-radius:6px;align-items:center;padding:.15rem .5rem;font-size:.7rem;font-weight:700;display:inline-flex}.pill--home{color:#1d4ed8;background:#3b82f61f}.pill--away{color:#475569;background:#94a3b833}.pill--kind{background:var(--ff-surface-2);color:var(--ff-muted);border:1px solid var(--ff-border)}.dashboard__grid{grid-template-columns:1.35fr .85fr;gap:1.25rem;margin-bottom:1.25rem;display:grid}.dashboard__stack{flex-direction:column;gap:1.25rem;display:flex}.timeline{margin:0;padding:0;list-style:none}.timeline__item{grid-template-columns:auto 1fr;gap:.75rem;padding-bottom:1rem;display:grid}.timeline__item:last-child{padding-bottom:0}.timeline__rail{flex-direction:column;align-items:center;width:12px;display:flex}.timeline__dot{background:var(--ff-accent);border:2px solid #dbeafe;border-radius:50%;flex-shrink:0;width:12px;height:12px}.timeline__line{background:linear-gradient(180deg, var(--ff-border), transparent);flex:1;width:2px;min-height:1.5rem;margin-top:4px}.timeline__body{grid-template-columns:auto 1fr;align-items:start;gap:.75rem 1rem;display:grid}.timeline__time{color:var(--ff-accent);font-variant-numeric:tabular-nums;flex-direction:column;gap:.1rem;min-width:4.5rem;font-size:.78rem;font-weight:600;display:flex}.timeline__dash{display:none}.timeline__content{min-width:0}.timeline__row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.timeline__title{color:var(--ff-ink);margin:0;font-size:.98rem;font-weight:600;line-height:1.3}.timeline__school{margin:.25rem 0 0}.school-pill{border-radius:var(--ff-radius-sm);letter-spacing:.02em;color:var(--ff-practice-accent);border:1px solid var(--ff-practice-border);background:#2563eb14;align-items:center;padding:.12rem .45rem;font-size:.7rem;font-weight:700;display:inline-flex}.timeline__sport{color:var(--ff-muted);margin:.2rem 0 0;font-size:.82rem}.timeline__loc{color:var(--ff-muted-2);margin:.15rem 0 0;font-size:.82rem}.mini-list{margin:0;padding:0;list-style:none}.mini-list__item{border-bottom:1px solid var(--ff-border);flex-direction:column;gap:.15rem;padding:.65rem 0;display:flex}.mini-list__item:last-of-type{border-bottom:none}.mini-list__strong{color:var(--ff-ink);font-size:.9rem;font-weight:600}.mini-list__school{color:var(--ff-practice-accent);font-size:.75rem;font-weight:600}.mini-list__muted{color:var(--ff-muted);font-size:.8rem}.week-strip{grid-template-columns:repeat(7,1fr);gap:.4rem;display:grid}.week-strip__day{background:var(--ff-surface-2);border:1px solid var(--ff-border);text-align:center;border-radius:12px;padding:.55rem .45rem}.week-strip__day.is-today{border-color:var(--ff-accent);background:linear-gradient(#eff6ff,#fff);box-shadow:0 0 0 1px #3b82f633}.week-strip__wd{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted);font-size:.68rem;font-weight:700;display:block}.week-strip__md{color:var(--ff-ink);margin-top:.2rem;font-size:.78rem;font-weight:600;display:block}.week-strip__counts{color:var(--ff-muted-2);margin-top:.35rem;font-size:.68rem;line-height:1.25;display:block}.week-strip__sep{opacity:.5;margin:0 .15rem}.import-list{margin:0;padding:0;list-style:none}.import-row{border-bottom:1px solid var(--ff-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 0;display:flex}.import-row:last-child{border-bottom:none}button.import-row--button{appearance:none;width:100%;font:inherit;color:inherit;cursor:pointer;text-align:left;border:none;border-bottom:1px solid var(--ff-border);background:0 0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 0;display:flex}button.import-row--button:hover{background:#3b82f60d}button.import-row--button:focus-visible{outline:2px solid var(--ff-accent);outline-offset:-2px}.import-list--interactive li:last-child .import-row--button{border-bottom:none}.import-row__main{align-items:flex-start;gap:.75rem;min-width:0;display:flex}.import-row__title{color:var(--ff-ink);margin:0;font-size:.92rem;font-weight:600}.import-row__meta{color:var(--ff-muted);margin:.2rem 0 0;font-size:.8rem}.import-row__school{color:var(--ff-import-accent);font-weight:700}.import-row__source{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);background:var(--ff-surface-2);border:1px solid var(--ff-border);border-radius:6px;padding:.2rem .45rem;font-size:.72rem;font-weight:700}.calendar-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.calendar-toolbar__range{align-items:center;gap:.5rem;display:flex}.calendar-page--master .calendar-toolbar__range{flex-wrap:nowrap;align-items:center}.calendar-page--master .calendar-toolbar__range-week{flex-shrink:0;grid-template-columns:minmax(14rem,26rem) auto auto;align-items:center;gap:.5rem;display:grid}.calendar-toolbar__weeknav[aria-hidden=true]{visibility:hidden;pointer-events:none}.calendar-toolbar__label{color:var(--ff-ink);font-size:.95rem;font-weight:600}.calendar-page--master .calendar-toolbar__range-week .calendar-toolbar__label{align-self:center;min-width:0}.calendar-toolbar__filters{flex-wrap:wrap;gap:.5rem;display:flex}.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}.calendar-toolbar__month{align-items:center;gap:.5rem;margin-left:.75rem;display:inline-flex}.calendar-toolbar__month-select{color:var(--ff-ink);background:var(--ff-surface);border:1px solid var(--ff-border-strong);border-radius:var(--ff-radius-sm);cursor:pointer;padding:.4rem .65rem;font-size:.84rem;font-weight:700}.calendar-toolbar__month-select:focus{outline-offset:1px;border-color:var(--ff-accent);outline:2px solid #2563eb59}.legend-chip{border-radius:6px;padding:.25rem .5rem;font-size:.72rem;font-weight:600}.legend-chip--practice{color:#1e40af;background:#3b82f61f}.legend-chip--import{color:#5b21b6;background:#8b5cf61f}.legend-chip--hold{color:#475569;background:#64748b26}.calendar-shell{overflow:hidden}.week-cal{overflow-x:auto}.week-cal__header{border-bottom:1px solid var(--ff-border);grid-template-columns:72px repeat(7,minmax(96px,1fr));gap:0;display:grid}.week-cal__corner{border-right:1px solid var(--ff-border)}.week-cal__colhead{text-align:center;border-right:1px solid var(--ff-border);background:var(--ff-surface-2);padding:.65rem .5rem}.week-cal__colhead:last-child{border-right:none}.week-cal__colhead.is-today{background:linear-gradient(#dbeafe,#eff6ff)}.week-cal__wd{text-transform:uppercase;letter-spacing:.08em;color:var(--ff-muted);font-size:.68rem;font-weight:700;display:block}.week-cal__md{color:var(--ff-ink);margin-top:.2rem;font-size:.8rem;font-weight:700;display:block}.week-cal__body{flex-direction:column;display:flex}.week-cal__row{border-bottom:1px solid var(--ff-border);grid-template-columns:72px repeat(7,minmax(96px,1fr));min-height:56px;display:grid}.week-cal__row:last-child{border-bottom:none}.week-cal__time{color:var(--ff-muted);border-right:1px solid var(--ff-border);background:var(--ff-surface-2);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:flex-start;padding:.5rem .35rem;font-size:.72rem;font-weight:600;display:flex}.week-cal__cell{border-right:1px solid var(--ff-border);background:var(--ff-surface);padding:4px;position:relative}.week-cal__cell:last-child{border-right:none}.cal-block{border-radius:8px;flex-direction:column;gap:.1rem;padding:.35rem .45rem;font-size:.68rem;line-height:1.25;display:flex}.cal-block__t{color:var(--ff-ink);font-weight:700}.cal-block__s{color:var(--ff-muted);font-size:.65rem}.cal-block--practice{background:#3b82f624;border:1px solid #3b82f659}.cal-block--import{background:#8b5cf61f;border:1px solid #8b5cf659}.cal-block--hold{background:#64748b1f;border:1px solid #64748b4d}.calendar-page__note{margin-top:0;padding:0 1.35rem 1.15rem}.legend-chip--practice-pending{color:#b45309;background:#f59e0b29}.legend-chip--practice-approved{color:#047857;background:#10b98124}.legend-chip--manual{color:#0369a1;background:#0ea5e929}.calendar-page--master .page__intro--row .btn{flex-shrink:0;align-self:center}.calendar-page--master .calendar-toolbar--master{gap:1.25rem}.calendar-filter-bar{align-items:flex-end;gap:var(--ff-space-4) var(--ff-space-5);margin-bottom:var(--ff-space-4);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);box-shadow:var(--ff-shadow);flex-wrap:wrap;display:flex}.calendar-filter-bar__field{flex-direction:column;flex:12rem;gap:.35rem;min-width:min(100%,14rem);display:flex}.calendar-filter-bar__label{font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-muted);font-weight:700}.calendar-filter-bar__select{width:100%;max-width:22rem;font-size:var(--ff-text-sm);color:var(--ff-ink);background:var(--ff-surface-elevated);border:1px solid var(--ff-border-strong);border-radius:var(--ff-radius-sm);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M3 4.5L6 8l3-3.5'/%3E%3C/svg%3E");background-position:right .55rem center;background-repeat:no-repeat;padding:.45rem 2rem .45rem .65rem;font-weight:600}.calendar-filter-bar__select:focus{outline-offset:1px;border-color:var(--ff-accent);outline:2px solid #2563eb59}.calendar-filter-bar__clear{flex:none;align-self:center;margin-left:auto}.calendar-msf{position:relative}.calendar-msf__trigger{width:100%;max-width:22rem;min-height:2.35rem;font-size:var(--ff-text-sm);color:var(--ff-ink);text-align:left;background:var(--ff-surface-elevated);border:1px solid var(--ff-border-strong);border-radius:var(--ff-radius-sm);cursor:pointer;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .65rem;font-weight:600;transition:border-color .12s,box-shadow .12s;display:flex}.calendar-msf__trigger:hover{border-color:var(--ff-muted)}.calendar-msf__trigger:focus{outline-offset:1px;border-color:var(--ff-accent);outline:2px solid #2563eb59}.calendar-msf--open .calendar-msf__trigger{border-color:var(--ff-accent);box-shadow:0 0 0 1px #2563eb1f}.calendar-msf:not(.calendar-msf--open) .calendar-msf__trigger--active{border-color:#2563eb73}.calendar-msf__trigger-text{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;line-height:1.35;overflow:hidden}.calendar-msf__chevron{color:var(--ff-muted);flex:none;font-size:.65rem;line-height:1;transition:transform .15s}.calendar-msf--open .calendar-msf__chevron{transform:rotate(-180deg)}.calendar-msf__panel{z-index:50;border-radius:var(--ff-radius-md);border:1px solid var(--ff-border-strong);background:var(--ff-surface-elevated);flex-direction:column;max-width:min(100vw - 2rem,24rem);max-height:min(18rem,52vh);display:flex;position:absolute;top:calc(100% + .35rem);left:0;right:0;box-shadow:0 10px 28px #0f172a1f,0 2px 8px #0f172a0f}.calendar-msf__toolbar{border-bottom:1px solid var(--ff-border);background:#f1f5f9a6;flex-wrap:wrap;justify-content:space-between;gap:.35rem .75rem;padding:.45rem .6rem;display:flex}.calendar-msf__toolbar-btn{appearance:none;font-size:var(--ff-text-xs);color:var(--ff-accent);text-underline-offset:2px;cursor:pointer;border-radius:var(--ff-radius-sm);background:0 0;border:none;padding:.2rem .1rem;font-weight:700;text-decoration:underline}.calendar-msf__toolbar-btn:hover{color:#1d4ed8}.calendar-msf__toolbar-btn:focus-visible{outline-offset:1px;outline:2px solid #2563eb59}.calendar-msf__empty{font-size:var(--ff-text-xs);color:var(--ff-muted);margin:0;padding:.75rem .85rem;line-height:1.45}.calendar-msf__list{flex:auto;margin:0;padding:.35rem 0;list-style:none;overflow-y:auto}.calendar-msf__row{cursor:pointer;font-size:var(--ff-text-sm);color:var(--ff-ink);align-items:flex-start;gap:.55rem;padding:.35rem .75rem;font-weight:500;transition:background .1s;display:flex}.calendar-msf__row:hover{background:#2563eb0f}.calendar-msf__checkbox{width:1rem;height:1rem;accent-color:var(--ff-accent);cursor:pointer;flex:none;margin-top:.15rem}.calendar-msf__opt{flex:auto;min-width:0;line-height:1.35}.master-month__filter-hint{text-transform:uppercase;letter-spacing:.04em;color:var(--ff-muted);margin-top:.2rem;font-size:.62rem;font-weight:700;display:block}.calendar-toolbar__view{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:10px;display:inline-flex;overflow:hidden;box-shadow:inset 0 1px #fffc}.calendar-view-btn{appearance:none;color:#475569;cursor:pointer;background:0 0;border:none;padding:.45rem 1rem;font-size:.84rem;font-weight:600;transition:background .15s,color .15s}.calendar-view-btn:hover{color:var(--ff-ink);background:#ffffffb3}.calendar-view-btn.is-active{color:#0f172a;background:#fff;box-shadow:0 1px #0f172a0f}.master-cal-foot{margin-top:1rem;padding:0 .25rem}.master-week{background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:0;overflow:hidden}.master-week__head{background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);border-bottom:1px solid #e2e8f0;padding:1rem 1.25rem}.master-week__title{color:#0f172a;margin:0;font-size:1.05rem;font-weight:700}.master-week__sub{color:#64748b;max-width:48rem;margin:.35rem 0 0;font-size:.82rem;line-height:1.45}.master-week__days{border-top:1px solid #e2e8f0;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;display:grid}.master-week-day{background:#fff;border-right:1px solid #e2e8f0;flex-direction:column;min-height:12rem;display:flex}.master-week-day:last-child{border-right:none}.master-week-day--today{background:linear-gradient(#eff6ff 0%,#fff 42%);box-shadow:inset 0 3px #3b82f6}.master-week-day__head{background:#f8fafc;border-bottom:1px solid #e2e8f0;flex-wrap:wrap;align-items:baseline;gap:.35rem;padding:.55rem .5rem;display:flex}.master-week-day--today .master-week-day__head{background:#dbeafe}.master-week-day__wd{text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-size:.65rem;font-weight:800}.master-week-day__md{color:#0f172a;font-size:.82rem;font-weight:700}.master-week-day__badge{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:#3b82f6;border-radius:999px;padding:.15rem .4rem;font-size:.6rem;font-weight:800}.master-week-day__list{flex-direction:column;flex:1;gap:.5rem;padding:.45rem;display:flex;overflow:auto}.master-week-day .ff-empty--calendar{flex:1;justify-content:center;align-self:stretch;min-height:5.5rem;margin:.35rem .35rem .45rem}.mc-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;padding:0;font-size:.78rem;display:flex;overflow:hidden}.mc-card__main{cursor:pointer;text-align:left;font:inherit;color:inherit;background:0 0;border:none;width:100%;padding:.55rem .6rem}.mc-card__main:hover{background:#ffffff59}.mc-card__main:focus{outline-offset:-2px;outline:2px solid #3b82f6}.mc-card--imported{background:linear-gradient(#faf5ff 0%,#fff 100%);border-color:#c4b5fd}.mc-card--pending{background:linear-gradient(#fffbeb 0%,#fff 100%);border-color:#fcd34d}.mc-card--approved{background:linear-gradient(#ecfdf5 0%,#fff 100%);border-color:#6ee7b7}.mc-card--manual{background:linear-gradient(#f0f9ff 0%,#fff 100%);border-color:#7dd3fc}.mc-card__badges{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.35rem;display:flex}.mc-card__pill{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:.12rem .35rem;font-size:.58rem;font-weight:800}.mc-card__pill--type{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0}.mc-card__pill--status-imported{color:#5b21b6;background:#ede9fe}.mc-card__pill--status-pending{color:#b45309;background:#fef3c7}.mc-card__pill--status-approved{color:#047857;background:#d1fae5}.mc-card__pill--status-manual{color:#0369a1;background:#e0f2fe}.mc-card__lock{text-transform:uppercase;color:#64748b;margin-left:auto;font-size:.58rem;font-weight:800}.mc-card__team{color:#0f172a;margin:0 0 .4rem;font-size:.82rem;font-weight:700;line-height:1.25}.mc-card__dl{flex-direction:column;gap:.3rem;margin:0;display:flex}.mc-card__row{grid-template-columns:4.5rem 1fr;align-items:start;gap:.35rem;display:grid}.mc-card__row dt{text-transform:uppercase;letter-spacing:.04em;color:#94a3b8;margin:0;font-size:.58rem;font-weight:800}.mc-card__row dd{color:#334155;margin:0;font-size:.72rem;line-height:1.35}.mc-card__time{font-variant-numeric:tabular-nums}.mc-card__row--notes dd{color:#64748b;font-size:.68rem}.mc-card__footer{border-top:1px dashed #e2e8f0;flex-direction:column;gap:.25rem;margin-top:0;padding:.45rem .6rem .55rem;display:flex}.mc-card__footer-actions{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.mc-card__footer-actions .mc-card__manage{align-self:center}.btn--calendar-remove{color:#b91c1c;box-shadow:none;background:#fef2f2;border:1px solid #fecaca;font-weight:700}.btn--calendar-remove:hover{color:#991b1b;background:#fee2e2;border-color:#f87171}.mc-card__manage{align-self:flex-start}.mc-card__hint{color:#94a3b8;font-size:.62rem;line-height:1.35}.mc-card__import-foot{color:#64748b;border-top:1px dashed #e9d5ff;margin:0;padding:.45rem .6rem .55rem;font-size:.62rem;line-height:1.4}.mc-card__import-foot strong{color:#4338ca}.mc-card__import-foot--family{border-top-color:var(--ff-border);color:var(--ff-muted)}.coach-dash-kpi{gap:var(--ff-space-4);margin-bottom:var(--ff-space-6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=900px){.coach-dash-kpi{grid-template-columns:1fr}}.coach-dash-kpi__card{padding:var(--ff-space-5);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);background:var(--ff-surface);box-shadow:var(--ff-shadow)}.coach-dash-kpi__value{font-size:var(--ff-text-3xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800;line-height:1.1}.coach-dash-kpi__label{margin:var(--ff-space-2) 0 0;font-size:var(--ff-text-sm);color:var(--ff-ink);font-weight:700}.coach-dash-kpi__hint{margin:var(--ff-space-1) 0 0;font-size:var(--ff-text-xs);color:var(--ff-muted);line-height:1.45}.coach-dash-kpi__cta{margin-top:var(--ff-space-3)}.coach-dash__grid{gap:var(--ff-space-5);grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start;display:grid}@media (width<=1100px){.coach-dash__grid{grid-template-columns:1fr}}.coach-dash__stack{gap:var(--ff-space-4);flex-direction:column;display:flex}.coach-dash-mini{gap:var(--ff-space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.coach-dash-mini__row{padding-bottom:var(--ff-space-3);border-bottom:1px solid var(--ff-border);flex-direction:column;gap:.15rem;display:flex}.coach-dash-mini__row:last-child{border-bottom:none;padding-bottom:0}.coach-dash-mini__sport{font-weight:700;font-size:var(--ff-text-sm);color:var(--ff-ink)}.coach-dash-mini__meta{font-size:var(--ff-text-xs);color:var(--ff-text)}.coach-dash-mini__muted{font-size:var(--ff-text-xs);color:var(--ff-muted)}.coach-dash__btn-row{gap:var(--ff-space-3);margin-top:var(--ff-space-4);flex-wrap:wrap;display:flex}.coach-dash-foot{margin-top:var(--ff-space-5)}.family-home-dashboard{max-width:52rem;margin:0 auto}.family-home-hero{margin-bottom:var(--ff-space-6)}.family-home-hero__district{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;color:var(--ff-muted);font-weight:800}.family-home-hero__school{margin:0 0 var(--ff-space-2);font-size:var(--ff-text-sm);color:var(--ff-text);font-weight:600}.family-home-hero__title{font-size:var(--ff-text-3xl);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800}.family-home-hero__sub{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-base);color:var(--ff-muted);max-width:40rem;line-height:1.6}.family-home-upcoming__head{justify-content:space-between;align-items:center;gap:var(--ff-space-3);margin-bottom:var(--ff-space-4);flex-wrap:wrap;display:flex}.family-home-upcoming__title{font-size:var(--ff-text-xl);color:var(--ff-ink);margin:0;font-weight:800}.family-home-empty{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;line-height:1.55}.family-home-list{gap:var(--ff-space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.family-home-list__item{gap:var(--ff-space-4);padding-bottom:var(--ff-space-4);border-bottom:1px solid var(--ff-border);grid-template-columns:minmax(0,9rem) minmax(0,1fr);display:grid}.family-home-list__item:last-child{border-bottom:none;padding-bottom:0}@media (width<=640px){.family-home-list__item{grid-template-columns:1fr}}.family-home-list__date{flex-direction:column;gap:.2rem;display:flex}.family-home-list__date-primary{font-size:var(--ff-text-sm);color:var(--ff-ink);font-weight:700}.family-home-list__time{font-size:var(--ff-text-xs);color:var(--ff-muted);font-variant-numeric:tabular-nums}.family-home-list__body{flex-direction:column;gap:.2rem;display:flex}.family-home-list__kind{font-size:var(--ff-text-xs);letter-spacing:.04em;text-transform:uppercase;width:fit-content;font-weight:800}.family-home-list__kind--practice{color:var(--ff-practice-accent)}.family-home-list__kind--game{color:var(--ff-import-accent)}.family-home-list__team{font-weight:700;font-size:var(--ff-text-base);color:var(--ff-ink)}.family-home-list__sub{font-size:var(--ff-text-sm);color:var(--ff-text)}.family-home-list__loc{font-size:var(--ff-text-sm);color:var(--ff-muted)}.family-home-actions{gap:var(--ff-space-3);margin-top:var(--ff-space-5);flex-wrap:wrap;display:flex}.family-home-footnote{margin:var(--ff-space-6) 0 0;font-size:var(--ff-text-xs);color:var(--ff-muted-2);line-height:1.5}.requests-data-table__coach-pending{font-size:var(--ff-text-xs);color:var(--ff-muted);font-weight:600}.facilities-page__read-only-pill{border-radius:var(--ff-radius-pill);font-size:var(--ff-text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ff-import-accent);border:1px solid var(--ff-import-border);background:#6d28d914;align-self:flex-start;align-items:center;padding:.4rem .75rem;font-weight:800;display:inline-flex}.schedule-drawer{max-width:min(100%,440px)}.schedule-drawer__head{align-items:flex-start}.schedule-drawer__eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);margin:0;font-size:.72rem;font-weight:800}.schedule-drawer__title{margin-top:.35rem}.schedule-drawer__source{margin:.5rem 0 0}.schedule-drawer__source-pill{border:1px solid var(--ff-border);background:var(--ff-surface-2);color:var(--ff-ink);border-radius:999px;padding:.28rem .6rem;font-size:.78rem;font-weight:700;display:inline-block}.schedule-drawer__source-pill.is-imported{color:#5b21b6;background:#8b5cf61a;border-color:#8b5cf659}.schedule-drawer__source-pill.is-ff{color:#1d4ed8;background:#3b82f61a;border-color:#3b82f659}.schedule-drawer__source-pill.is-manual{color:#0369a1;background:#0ea5e91f;border-color:#0ea5e966}.schedule-drawer__body{flex:1;padding:1rem 1.25rem 1.35rem;overflow:auto}.schedule-drawer__school-line{color:var(--ff-muted);margin:0 0 .85rem;font-size:.84rem;line-height:1.45}.schedule-drawer__school-line strong{color:var(--ff-ink);font-weight:700}.schedule-drawer__dl{flex-direction:column;gap:.65rem;margin:0;display:flex}.schedule-drawer__row{grid-template-columns:6.5rem 1fr;align-items:start;gap:.5rem;display:grid}.schedule-drawer__row dt{text-transform:uppercase;letter-spacing:.05em;color:var(--ff-muted-2);margin:0;font-size:.68rem;font-weight:800}.schedule-drawer__row dd{color:var(--ff-ink);margin:0;font-size:.9rem;line-height:1.45}.schedule-drawer__muted{color:var(--ff-muted)!important}.schedule-drawer__readonly-note{color:var(--ff-muted);background:var(--ff-surface-2);border:1px dashed var(--ff-border);border-radius:10px;margin:1rem 0 0;padding:.75rem .85rem;font-size:.82rem;line-height:1.45}.schedule-drawer__hint{color:var(--ff-muted-2);margin:.75rem 0 0;font-size:.78rem;line-height:1.45}.schedule-drawer__actions{border-top:1px solid var(--ff-border);flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding-top:1rem;display:flex}.schedule-drawer__actions--split{justify-content:space-between;align-items:center}.schedule-drawer__actions__end{flex-wrap:wrap;gap:.5rem;display:flex}.schedule-drawer__actions .btn--calendar-remove{flex-shrink:0}.schedule-drawer__form{flex-direction:column;gap:.75rem;display:flex}.manual-cal-modal-root{z-index:60}.manual-cal-modal{z-index:61;width:min(100vw - 2rem,26rem);max-height:min(90vh,36rem);margin:0;padding:0;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%);box-shadow:0 22px 50px #0f172a2e,0 8px 20px #0f172a14}.manual-cal-modal__head{justify-content:space-between;align-items:flex-start;gap:.75rem;padding:1rem 1.15rem 0;display:flex}.manual-cal-modal__title{font-size:var(--ff-text-lg);color:var(--ff-ink);margin:0;font-weight:800}.manual-cal-modal__lede{font-size:var(--ff-text-sm);color:var(--ff-muted);margin:0;padding:.35rem 1.15rem .75rem;line-height:1.45}.manual-cal-modal__form{flex-direction:column;gap:.75rem;padding:0 1.15rem 1.15rem;display:flex}.manual-cal-modal__actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:.25rem;display:flex}.mc-card__import-foot--manual{color:#0369a1;font-size:.68rem}.master-month{background:#fff;border:1px solid #cbd5e1;border-radius:12px;padding:0;overflow:hidden}.master-month__head{background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);border-bottom:1px solid #e2e8f0;padding:1rem 1.25rem}.master-month__title{color:#0f172a;margin:0;font-size:1.05rem;font-weight:700}.master-month__sub{color:#64748b;max-width:44rem;margin:.35rem 0 0;font-size:.82rem;line-height:1.45}.master-month__grid{flex-direction:column;display:flex}.master-month__dow{background:#f8fafc;border-bottom:1px solid #e2e8f0;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.master-month__dow-cell{text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:center;padding:.45rem .35rem;font-size:.65rem;font-weight:800}.master-month__week{border-bottom:1px solid #e2e8f0;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.master-month__week:last-child{border-bottom:none}.master-month__cell{background:#fff;border-right:1px solid #e2e8f0;flex-direction:column;gap:.25rem;min-height:6.5rem;padding:.35rem;display:flex}.master-month__cell:last-child{border-right:none}.master-month__cell--pad{background:#f8fafc;min-height:6.5rem}.master-month__cell--today{background:linear-gradient(#eff6ff 0%,#fff 55%);box-shadow:inset 0 0 0 2px #93c5fd}.master-month__num{color:#0f172a;font-size:.78rem;font-weight:700}.master-month__cell--today .master-month__num{color:#1d4ed8}.master-month__pills{flex-direction:column;flex:1;gap:.2rem;min-height:0;margin:0;padding:0;list-style:none;display:flex}.master-month__pill{appearance:none;width:100%;font-size:.58rem;line-height:1.2;font:inherit;cursor:pointer;text-align:left;border:1px solid #0000;border-radius:6px;flex-direction:column;gap:.05rem;padding:.2rem .3rem;display:flex}.master-month__pill:hover{filter:brightness(.96)}.master-month__pill:focus-visible{outline-offset:1px;outline:2px solid #3b82f6}.master-month__pill--imported{color:#5b21b6;background:#f5f3ff;border-color:#ddd6fe}.master-month__pill--practice-pending{color:#b45309;background:#fffbeb;border-color:#fde68a}.master-month__pill--practice-approved{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.master-month__pill--manual{color:#0369a1;background:#f0f9ff;border-color:#7dd3fc}.master-month__pill-time{font-variant-numeric:tabular-nums;font-weight:800}.master-month__pill-team{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.master-month__more{color:#64748b;font-size:.58rem;font-weight:700}@media (width<=1100px){.master-week__days{grid-template-columns:1fr}.master-week-day{border-bottom:1px solid #e2e8f0;border-right:none;min-height:0}.master-week-day:last-child{border-bottom:none}}@media (width<=720px){.calendar-toolbar--master{flex-direction:column;align-items:stretch}.calendar-toolbar__filters{justify-content:flex-start}.calendar-filter-bar__clear{align-self:flex-start;margin-left:0}}.empty-hint{color:var(--ff-muted);margin:0;padding:.5rem 0 .25rem;font-size:.9rem}.request-list{flex-direction:column;gap:1rem;margin:0;padding:0;list-style:none;display:flex}.request-card{border:1px solid var(--ff-border);background:var(--ff-surface-2);border-radius:14px;padding:1rem 1.1rem}.request-card__top{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.request-card__sport{color:var(--ff-ink);margin:0;font-size:1.05rem;font-weight:700}.request-card__by{color:var(--ff-muted);margin:.25rem 0 0;font-size:.82rem}.request-card__dl{gap:.55rem;margin:.85rem 0 0;display:grid}.request-card__dl dt{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);margin:0;font-size:.68rem;font-weight:700}.request-card__dl dd{color:var(--ff-ink);margin:.15rem 0 0;font-size:.88rem}.request-card__notes{grid-column:1/-1}.request-card__actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.settled-list{margin:0;padding:0;list-style:none}.settled-row{border-bottom:1px solid var(--ff-border);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.55rem 0;font-size:.88rem;display:flex}.settled-row:last-child{border-bottom:none}.settled-row__sport{color:var(--ff-ink);min-width:8rem;font-weight:600}.settled-row__date{color:var(--ff-muted);flex:1}.requests-scope-banner{gap:var(--ff-space-2);padding:var(--ff-space-4) var(--ff-space-5);border-radius:var(--ff-radius-md);border:1px solid var(--ff-practice-border);background:var(--ff-practice-surface);box-shadow:var(--ff-practice-glow);margin-bottom:var(--ff-space-4);flex-direction:column;display:flex}.requests-scope-banner__label{font-size:var(--ff-text-xs);text-transform:uppercase;letter-spacing:var(--ff-tracking-label);color:var(--ff-practice-accent);font-weight:800}.requests-scope-banner__text{color:var(--ff-muted);margin:0;font-size:.84rem;line-height:1.45}.requests-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.requests-toolbar.card--domain-practice{padding-top:var(--ff-space-6)}.requests-toolbar__filters{flex-wrap:wrap;gap:.45rem;display:flex}.requests-filter-chip{appearance:none;border:1px solid var(--ff-border);background:var(--ff-surface);color:var(--ff-ink);cursor:pointer;border-radius:999px;align-items:center;gap:.45rem;padding:.4rem .75rem;font-size:.82rem;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.requests-filter-chip:hover{background:var(--ff-surface-2);border-color:var(--ff-muted-2)}.requests-filter-chip.is-active{background:var(--ff-ink);color:#fff;border-color:var(--ff-ink);box-shadow:0 2px 8px #0f172a1f}.requests-filter-chip__count{min-width:1.35rem;color:var(--ff-muted);background:#64748b26;border-radius:999px;justify-content:center;align-items:center;padding:.1rem .35rem;font-size:.72rem;font-weight:700;display:inline-flex}.requests-filter-chip.is-active .requests-filter-chip__count{color:#fff;background:#fff3}.requests-toolbar__meta{color:var(--ff-muted);margin:0;font-size:.84rem}.requests-toolbar__meta strong{color:var(--ff-ink);font-weight:700}.requests-table-section__head{margin-bottom:1rem}.requests-table-section__title{color:var(--ff-ink);margin:0;font-size:1.05rem;font-weight:700}.requests-table-section__subtitle{color:var(--ff-muted);margin:.35rem 0 0;font-size:.82rem;line-height:1.45}.requests-table-wrap{margin:0 -.15rem;padding:0 .15rem;overflow-x:auto}.requests-data-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.86rem}.requests-data-table thead th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);border-bottom:2px solid var(--ff-border);white-space:nowrap;background:var(--ff-surface-2);padding:.55rem .65rem;font-size:.68rem;font-weight:800}.requests-data-table thead th:first-child{border-radius:10px 0 0}.requests-data-table thead th:last-child{border-radius:0 10px 0 0}.requests-data-table tbody tr{border-bottom:1px solid var(--ff-border);transition:background .12s}.requests-data-table tbody tr:hover{background:#3b82f60a}.requests-data-table tbody tr:last-child{border-bottom:none}.requests-data-table td{vertical-align:top;color:var(--ff-ink);padding:.75rem .65rem}.requests-data-table__strong{font-weight:700}.requests-data-table__school{color:var(--ff-practice-accent);max-width:10rem;font-size:.82rem;font-weight:600;line-height:1.35}.requests-data-table__mono{font-variant-numeric:tabular-nums;white-space:nowrap}.requests-data-table__notes{-webkit-line-clamp:2;max-width:14rem;color:var(--ff-muted);-webkit-box-orient:vertical;line-height:1.4;display:-webkit-box;overflow:hidden}.requests-data-table__empty{color:var(--ff-muted-2)}.requests-data-table__col-actions{text-align:right}.requests-data-table__actions{text-align:right;white-space:nowrap}.requests-data-table__action-btns{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:inline-flex}.requests-data-table__resolved{color:var(--ff-muted);font-size:.8rem;font-weight:600}.requests-data-table__conflicts{min-width:11rem;max-width:22rem}.requests-conflict-none{color:var(--ff-muted-2);font-size:.78rem;font-weight:600}.requests-conflict-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.requests-conflict-list__item{color:#9a3412;background:#fef3c7a6;border:1px solid #fbbf2473;border-radius:8px;padding:.4rem .5rem;font-size:.76rem;line-height:1.4}.requests-conflict-list__item--approved_practice{color:#1e40af;background:#dbeafea6;border-color:#3b82f659}.requests-conflict-list__item--pending_practice{color:#9a3412;background:#fef3c7a6;border-color:#fbbf2473}.requests-conflict-list__item--imported{color:#5b21b6;background:#ede9feb3;border-color:#8b5cf659}.requests-conflict-list__badge{text-transform:uppercase;letter-spacing:.04em;vertical-align:.05em;color:inherit;background:#ffffffa6;border-radius:4px;margin-right:.35rem;padding:.1rem .35rem;font-size:.62rem;font-weight:800;display:inline-block}.requests-data-table__row--conflict{box-shadow:inset 3px 0 #f59e0bd9}.btn--table{border-radius:8px;padding:.38rem .75rem;font-size:.8rem}@media (width<=1020px){.requests-data-table thead{display:none}.requests-data-table tbody tr{border:1px solid var(--ff-border);background:var(--ff-surface-2);border-radius:14px;margin-bottom:1rem;display:block;overflow:hidden}.requests-data-table tbody tr:hover{background:var(--ff-surface-2)}.requests-data-table tbody td{border-bottom:1px solid var(--ff-border);grid-template-columns:minmax(6.5rem,32%) 1fr;align-items:start;gap:.5rem .75rem;padding:.55rem .85rem;display:grid}.requests-data-table tbody td:last-child{border-bottom:none}.requests-data-table tbody td:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.05em;color:var(--ff-muted-2);padding-top:.15rem;font-size:.65rem;font-weight:800}.requests-data-table__actions{text-align:left}.requests-data-table__action-btns{justify-content:flex-start;width:100%}.requests-data-table__notes{-webkit-line-clamp:6;max-width:none}}.family-page{max-width:920px;margin-inline:auto}.family-hero{text-align:center;padding:1.25rem .5rem 1.5rem}.family-hero__school{text-transform:uppercase;letter-spacing:.16em;color:#64748b;margin:0;font-size:.72rem;font-weight:700}.family-hero__campus{letter-spacing:-.02em;color:var(--ff-ink);margin:.35rem 0 0;font-size:1.05rem;font-weight:700}.family-hero__title{letter-spacing:-.035em;color:#0f172a;margin:.5rem 0 0;font-size:clamp(1.65rem,4vw,2.1rem);font-weight:800;line-height:1.15}.family-hero__sub{color:#64748b;max-width:38rem;margin:.75rem auto 0;font-size:1rem;line-height:1.6}.family-layout{grid-template-columns:minmax(0,1fr) minmax(240px,300px);align-items:start;gap:1.75rem;display:grid}.family-schedule__bar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;margin-bottom:1.15rem;display:flex}.family-schedule__heading{letter-spacing:-.02em;color:#0f172a;margin:0;font-size:1.15rem;font-weight:800}.family-filter{flex-direction:column;gap:.35rem;min-width:min(100%,220px);display:flex}.family-filter__label{text-transform:uppercase;letter-spacing:.08em;color:#64748b;font-size:.68rem;font-weight:800}.family-filter__select{font:inherit;color:#0f172a;appearance:none;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E") right .65rem center/12px no-repeat;border:1px solid #cbd5e1;border-radius:10px;padding:.55rem 2.25rem .55rem .75rem;font-size:.95rem;font-weight:600;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0d}.family-filter__select:hover{border-color:#94a3b8}.family-filter__select:focus{border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f633}.family-page .ff-empty--family{margin-top:var(--ff-space-2);background:linear-gradient(165deg,#fff 0%,#f8fafc 100%);border-color:#2563eb33}.family-day-groups{flex-direction:column;gap:1.75rem;display:flex}.family-day__label{text-transform:uppercase;letter-spacing:.08em;color:#64748b;margin:0 0 .65rem;font-size:.78rem;font-weight:800}.family-day__list{flex-direction:column;gap:.85rem;margin:0;padding:0;list-style:none;display:flex}.family-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:1.1rem 1.2rem 1.15rem;transition:box-shadow .2s,transform .2s;box-shadow:0 4px 24px #0f172a0f}.family-card:hover{box-shadow:0 12px 40px #0f172a1a}.family-card--practice{background:linear-gradient(135deg,#f0f9ff 0%,#fff 38%);border-left:4px solid #38bdf8}.family-card--game{background:linear-gradient(135deg,#faf5ff 0%,#fff 40%);border-left:4px solid #a78bfa}.family-card__top{margin-bottom:.45rem}.family-card__kind{text-transform:uppercase;letter-spacing:.07em;color:#0369a1;background:#38bdf833;border-radius:999px;padding:.22rem .55rem;font-size:.65rem;font-weight:800;display:inline-block}.family-card__kind--game{color:#5b21b6;background:#a78bfa38}.family-card__team{letter-spacing:-.02em;color:#0f172a;margin:0;font-size:1.2rem;font-weight:800;line-height:1.25}.family-card__school{color:#4338ca;letter-spacing:.02em;margin:.35rem 0 0;font-size:.78rem;font-weight:700}.family-card__subtitle{color:#475569;margin:.35rem 0 0;font-size:.88rem;font-weight:600;line-height:1.4}.family-card__meta{flex-direction:column;gap:.55rem;margin:1rem 0 0;display:flex}.family-card__meta-row{grid-template-columns:5.5rem 1fr;align-items:baseline;gap:.5rem 1rem;display:grid}.family-card__meta-row dt{text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;margin:0;font-size:.68rem;font-weight:800}.family-card__meta-row dd{color:#1e293b;margin:0;font-size:.95rem;font-weight:600;line-height:1.4}.family-aside__card{background:linear-gradient(#f8fafc 0%,#fff 55%);border:1px solid #e2e8f0;border-radius:16px;padding:1.15rem 1.2rem;position:sticky;top:1rem;box-shadow:0 2px 16px #0f172a0d}.family-aside__title{color:#0f172a;margin:0 0 .75rem;font-size:.95rem;font-weight:800}.family-aside__list{color:#64748b;margin:0;padding-left:1.05rem;font-size:.88rem;line-height:1.55}.family-aside__list li{margin-bottom:.65rem}.family-aside__list strong{color:#0f172a;font-weight:700}.family-aside__note{color:#94a3b8;border-top:1px dashed #cbd5e1;margin:1rem 0 0;padding-top:.85rem;font-size:.82rem;line-height:1.45}@media (width<=520px){.family-card__meta-row{grid-template-columns:1fr;gap:.12rem}.family-card__meta-row dt{margin-bottom:-.1rem}}@media (width<=900px){.app-frame{flex-direction:column}.app-sidebar{border-bottom:1px solid #ffffff1a;border-right:none;flex-flow:wrap;align-items:flex-start;width:100%;padding:1rem 1rem .85rem;box-shadow:0 8px 24px #0f172a1a}.app-sidebar__brand{flex:auto}.app-sidebar__hint{flex:100%;order:3;padding-top:.25rem}.app-sidebar__nav{flex-flow:wrap;order:4;gap:.35rem;width:100%;margin-top:.75rem;padding-bottom:.85rem}.app-sidebar__link{text-align:center;flex:calc(50% - .35rem);min-width:0;padding:.45rem .5rem;font-size:.8rem}}@media (width<=1200px){.dashboard-kpi{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=1100px){.dashboard-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard__grid,.family-layout{grid-template-columns:1fr}.family-aside__card{position:static}.week-strip{grid-template-columns:repeat(4,1fr)}}@media (width<=720px){.app-header__nav{justify-content:flex-start}.dashboard-kpi{grid-template-columns:1fr}.week-strip{grid-template-columns:repeat(2,1fr)}.timeline__body{grid-template-columns:1fr}.timeline__time{flex-direction:row;gap:.35rem;min-width:0}.timeline__dash{display:inline}.page__intro--row{flex-direction:column;align-items:stretch}.page__intro--row .btn{width:100%}}.status-badge{border-radius:var(--ff-radius-pill);font-size:var(--ff-text-xs);letter-spacing:var(--ff-tracking-label);text-transform:uppercase;white-space:nowrap;transition:transform var(--ff-transition), box-shadow var(--ff-transition);border:1px solid #0000;justify-content:center;align-items:center;padding:.3rem .65rem;font-weight:800;display:inline-flex}.status-badge--compact{padding:.2rem .48rem;font-size:.625rem}.status-badge--available{color:#047857;background:linear-gradient(#10b98124,#10b98114);border-color:#10b98161}.status-badge--in_use{color:#c2410c;background:linear-gradient(#f9731629,#f9731614);border-color:#f9731661}.status-badge--reserved{color:#5b21b6;background:linear-gradient(#8b5cf624,#8b5cf612);border-color:#8b5cf661}.status-badge--maintenance{color:#a16207;background:linear-gradient(#eab30833,#eab3081a);border-color:#eab30873}.status-badge--pending{color:#b45309;background:linear-gradient(#f59e0b33,#f59e0b1a);border-color:#f59e0b6b}.status-badge--approved{color:#047857;background:linear-gradient(#10b9812e,#10b9811a);border-color:#10b9816b}.status-badge--declined{color:#b91c1c;background:linear-gradient(#ef444424,#ef44440f);border-color:#ef444461}.status-badge--imported{color:#5b21b6;background:linear-gradient(#6d28d924,#4f46e514);border-color:#6d28d959}.dashboard__btn-row{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.btn--grow{flex:140px;min-width:0}.facility-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.facility-row{border:1px solid var(--ff-border);background:var(--ff-surface-2);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;padding:.65rem .75rem;display:flex}.facility-row__name{color:var(--ff-ink);margin:0;font-size:.9rem;font-weight:700}.facility-row__site{color:var(--ff-muted);margin:.2rem 0 0;font-size:.72rem;line-height:1.4}.facility-row__site-label{color:var(--ff-muted-2);text-transform:uppercase;letter-spacing:.06em;font-size:.62rem;font-weight:700}.facility-row__type{text-transform:uppercase;letter-spacing:.05em;color:var(--ff-muted-2);margin:.1rem 0 0;font-size:.68rem;font-weight:700}.facility-row__detail{color:var(--ff-muted);margin:.15rem 0 0;font-size:.78rem;line-height:1.35}.facility-row__text{flex:200px;min-width:0}.import-row__end{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.35rem;display:flex}.drawer-root{z-index:1000;pointer-events:none;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer-root>*{pointer-events:auto}.drawer-backdrop{cursor:pointer;background:#0f172a73;border:none;margin:0;padding:0;position:absolute;inset:0}.drawer-panel{background:var(--ff-surface);border-left:1px solid var(--ff-border);flex-direction:column;width:min(100%,440px);max-width:100%;height:100%;animation:.22s ease-out drawer-in;display:flex;position:relative;box-shadow:-12px 0 40px #0f172a2e}@keyframes drawer-in{0%{opacity:.85;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.drawer-panel__head{border-bottom:1px solid var(--ff-border);background:linear-gradient(180deg, #f8fafc, var(--ff-surface));justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem 1.25rem 1rem;display:flex}.drawer-panel__title{letter-spacing:-.02em;color:var(--ff-ink);margin:0;font-size:1.2rem;font-weight:800}.drawer-panel__desc{color:var(--ff-muted);margin:.4rem 0 0;font-size:.84rem;line-height:1.45}.drawer-panel__close{appearance:none;background:var(--ff-surface-2);color:var(--ff-muted);cursor:pointer;border:none;border-radius:10px;flex-shrink:0;width:2.25rem;height:2.25rem;font-size:1.35rem;line-height:1}.drawer-panel__close:hover{background:var(--ff-border);color:var(--ff-ink)}.drawer-form{flex-direction:column;flex:1;gap:.85rem;padding:1.1rem 1.25rem 1.5rem;display:flex;overflow:auto}.drawer-form__field{flex-direction:column;gap:.35rem;display:flex}.drawer-form__field label{text-transform:uppercase;letter-spacing:.06em;color:var(--ff-muted-2);font-size:.72rem;font-weight:700}.drawer-form__field input,.drawer-form__field select,.drawer-form__field textarea{font:inherit;border:1px solid var(--ff-border);background:var(--ff-surface);color:var(--ff-ink);border-radius:10px;padding:.55rem .65rem;font-size:.92rem}.drawer-form__field textarea{resize:vertical;min-height:5rem}.drawer-form__field input:focus,.drawer-form__field select:focus,.drawer-form__field textarea:focus{outline-offset:1px;border-color:var(--ff-accent);outline:2px solid #3b82f659}.drawer-form__row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.drawer-form__error{color:#b91c1c;margin:0;font-size:.85rem;font-weight:600}.drawer-form__actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:.25rem;display:flex}.drawer-form__hint{color:var(--ff-muted-2);margin:.5rem 0 0;font-size:.75rem;line-height:1.45}.drawer-form__hint strong{color:var(--ff-muted)}.practice-conflict-layer{z-index:1001;padding:var(--ff-space-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.practice-conflict-layer__backdrop{cursor:pointer;background:#0f172a80;border:none;margin:0;padding:0;position:absolute;inset:0}.practice-conflict-dialog{z-index:1;width:100%;max-width:28rem;padding:var(--ff-space-5);border-radius:var(--ff-radius-lg);border:1px solid var(--ff-border-strong);background:var(--ff-surface);box-shadow:var(--ff-shadow-lg);position:relative}.practice-conflict-dialog__title{font-size:var(--ff-text-lg);letter-spacing:var(--ff-tracking-tight);color:var(--ff-ink);margin:0;font-weight:800}.practice-conflict-dialog__lede{margin:var(--ff-space-3) 0 0;font-size:var(--ff-text-sm);color:var(--ff-muted);line-height:1.5}.practice-conflict-dialog__list{margin:var(--ff-space-4) 0 0;gap:var(--ff-space-2);flex-direction:column;padding:0;list-style:none;display:flex}.practice-conflict-dialog__item{font-size:var(--ff-text-sm);padding:var(--ff-space-3);border-radius:var(--ff-radius-md);border:1px solid var(--ff-border);background:var(--ff-surface-elevated);color:var(--ff-ink);line-height:1.45}.practice-conflict-dialog__item--imported{background:#ede9fe80;border-color:#8b5cf659}.practice-conflict-dialog__item--approved_practice{background:#dbeafe73;border-color:#3b82f659}.practice-conflict-dialog__item--pending_practice{background:#fef3c78c;border-color:#f59e0b66}.practice-conflict-dialog__badge{text-transform:uppercase;letter-spacing:.04em;vertical-align:.06em;color:var(--ff-ink);background:#ffffffbf;border-radius:6px;margin-right:.4rem;padding:.12rem .4rem;font-size:.62rem;font-weight:800;display:inline-block}.practice-conflict-dialog__actions{justify-content:flex-end;gap:var(--ff-space-3);margin-top:var(--ff-space-5);flex-wrap:wrap;display:flex}
