:root{--blue:#0072f5;--blue-tint:#0072f51a;--ink:#1e1e1e;--muted:#868c96;--line:#d9d9d9;--bg:#f5f7fa;--card:#fff;--yellow:#fc3;--green:#00c631;--red:#db1b1b;--warning:#ff9500;--grey-fill:#d9d9d9;--r-small:8px;--r-medium:12px;--r-large:16px;--r-card:20px;--r-pill:100px;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}.centered{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.signin{background:var(--blue);justify-content:center;align-items:center;min-height:100vh;padding:32px 24px;display:flex}.signin-inner{width:100%;max-width:420px}.brand{color:var(--yellow);letter-spacing:-1px;text-align:center;margin:0;font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:clamp(52px,15vw,88px);font-weight:800;line-height:1}.brand-sub{color:#fff;text-align:center;margin:14px 0 36px;font-size:18px}.apple-btn{color:#fff;border-radius:var(--r-medium);background:#000;justify-content:center;align-items:center;gap:8px;width:100%;padding:15px;font-size:17px;font-weight:600;display:flex}.apple-btn svg{margin-top:-2px}.apple-btn:disabled{opacity:.6}.or-divider{color:#ffffffd9;align-items:center;gap:12px;margin:18px 0;font-size:14px;display:flex}.or-divider:before,.or-divider:after{content:"";background:#fff6;flex:1;height:1px}.signin-form{flex-direction:column;display:flex}.field-label{color:#fff;margin-bottom:6px;font-size:15px}.signin:not(.onboarding) input{border-radius:var(--r-medium);background:#fff;border:none;width:100%;margin-bottom:18px;padding:15px 14px;font-size:16px}.signin:not(.onboarding) input:focus{outline:3px solid #ffffff80}.password-wrap{position:relative}.password-wrap input{padding-right:46px}.eye{cursor:pointer;background:0 0;border:none;border-radius:0;padding:6px;line-height:0;position:absolute;top:16px;right:8px}.forgot{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:0;align-self:flex-end;padding:2px 0;font-size:15px;font-weight:500}.signin-btn{width:100%;color:var(--blue);border-radius:var(--r-medium);background:#fff;margin-top:36px;padding:16px;font-size:17px;font-weight:700}.signin-btn:disabled{color:#8a8a8a;opacity:1;cursor:default;background:#d9d9d9}.signin-error,.signin-notice{color:#fff;border-radius:var(--r-small);background:#00000038;margin:16px 0 0;padding:10px 12px;font-size:14px}.signin-notice{background:#00c63159}.signup-note{color:#fff;text-align:center;margin:22px 0 0;font-size:15px}.signup-note span{color:var(--yellow);font-weight:700}.signup-link{color:var(--yellow);cursor:pointer;background:0 0;border:none;border-radius:0;padding:0;font-size:15px;font-weight:700}.onboarding{align-items:flex-start;padding-top:28px;padding-bottom:40px}.small-brand{font-size:clamp(36px,9vw,52px)}.drawer{border-radius:var(--r-modal,28px);background:#fff;flex-direction:column;margin-top:22px;padding:14px 22px 26px;display:flex}.grabber{background:var(--line);border-radius:2px;align-self:center;width:36px;height:4px;margin-bottom:14px}.drawer-title{color:var(--blue);text-align:center;margin:0 0 18px;font-size:22px;font-weight:700}.drawer-sub{text-align:center;margin:0 0 12px;font-size:16px;line-height:1.45}.drawer-label{color:var(--muted);margin-bottom:5px;font-size:14px}.drawer-hint{color:#9ca3af;margin:6px 0 14px;font-size:12px;line-height:1.35}.drawer-input{border-radius:var(--r-medium);width:100%;color:var(--ink);background:#fff;border:1px solid #9ca3af;margin-bottom:14px;padding:13px 14px;font-family:inherit;font-size:16px}.drawer-input:focus{outline:2px solid var(--blue);border-color:#0000}.drawer-btn{background:var(--blue);color:#fff;border-radius:var(--r-medium);width:100%;margin-top:10px;padding:15px;font-size:16px;font-weight:700}.drawer-btn:disabled{background:var(--line);color:#8a8a8a;opacity:1}.drawer-error{color:var(--red);text-align:center;margin:4px 0 0;font-size:14px}.drawer-foot{text-align:center;color:var(--muted);margin:16px 0 0;font-size:15px}.inline-link{color:var(--blue);cursor:pointer;background:0 0;border:none;border-radius:0;padding:0;font-size:15px;font-weight:700}.type-list{flex-direction:column;gap:10px;display:flex}.type-row{background:var(--bg);border:1px solid var(--line);color:var(--ink);border-radius:var(--r-medium);cursor:pointer;align-items:center;gap:14px;padding:16px;font-size:17px;font-weight:600;display:flex}.type-row:hover{border-color:var(--blue)}.type-icon{font-size:22px;line-height:1}.type-label{text-align:left;flex:1}.type-chevron{color:var(--muted);font-size:22px}.dd{margin-bottom:14px}.dd-label{color:var(--muted);margin-bottom:5px;font-size:14px;display:block}.dd-field{width:100%;min-height:48px;color:var(--ink);border-radius:var(--r-medium);cursor:pointer;text-align:left;background:#fff;border:1px solid #9ca3af;justify-content:space-between;align-items:center;gap:10px;padding:13px 14px;font-size:16px;font-weight:400;display:flex}.dd-field:hover{border-color:var(--blue)}.dd-field svg{color:var(--muted);flex:none}.dd-placeholder{color:var(--muted)}.dd-hint{color:#9ca3af;margin:5px 0 0;font-size:12px;line-height:1.35}.dd-field-error{color:var(--red);margin:5px 0 0;font-size:13px}.dd-overlay{background:var(--blue);z-index:200;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dd-popup{border-radius:var(--r-large);background:#fff;flex-direction:column;width:100%;max-width:420px;max-height:80vh;display:flex;overflow:hidden;box-shadow:0 10px 30px #00000040}.dd-head{align-items:center;padding:18px 20px 10px;display:flex}.dd-close{width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:0;flex:none;padding:0;font-size:16px}.dd-title{text-align:center;flex:1;font-size:22px;font-weight:600}.dd-spacer{flex:none;width:32px}.dd-subtitle{color:var(--muted);text-align:center;margin:0;padding:0 20px 12px;font-size:13px}.dd-search{color:var(--muted);border:1px solid #9ca3af;border-radius:10px;align-items:center;gap:8px;margin:0 20px 12px;padding:9px 12px;display:flex}.dd-search input{background:0 0;border:none;outline:none;flex:1;margin:0;padding:0;font-size:16px}.dd-list{padding-bottom:8px;overflow-y:auto}.dd-list.scroll{flex:1}.dd-option{width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;font-size:16px;font-weight:400;display:flex}.dd-option+.dd-option{border-top:1px solid var(--line)}.dd-option:hover{background:var(--bg)}.dd-option.selected{background:var(--blue-tint)}.dd-check{color:var(--blue);font-weight:700}.dd-empty{color:var(--muted);margin:0;padding:12px 20px;font-size:14px}.team-search{align-items:flex-start;gap:8px;display:flex}.team-search .drawer-input{letter-spacing:2px;text-transform:uppercase;flex:1;margin-bottom:0}.find-team-btn{background:var(--blue);color:#fff;border-radius:var(--r-medium);white-space:nowrap;padding:13px 16px;font-size:15px;font-weight:600}.find-team-btn:disabled{background:var(--line);color:#8a8a8a;opacity:1}.found-team{border-radius:var(--r-small);background:#00c6311f;margin-bottom:12px;padding:10px 12px;font-size:14px}.invite-code{letter-spacing:6px;text-align:center;color:var(--blue);background:var(--bg);border-radius:var(--r-medium);margin:4px 0 8px;padding:16px;font-size:30px;font-weight:800}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;gap:12px;width:100%;max-width:360px;padding:28px;display:flex;box-shadow:0 4px 20px #1e1e1e0f}.logo{color:var(--blue);letter-spacing:-.5px;margin:0;font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:32px;font-weight:800}.logo.small{font-size:22px}.muted{color:var(--muted);margin:0}.error{color:#d70015;margin:0;font-size:14px}input{border-radius:var(--r-medium);border:1px solid #9ca3af;padding:12px 14px;font-size:16px}input:focus{outline:2px solid var(--blue);border-color:#0000}button{border-radius:var(--r-medium);background:var(--blue);color:#fff;cursor:pointer;border:none;padding:13px 16px;font-size:16px;font-weight:700}button:disabled{opacity:.6;cursor:default}button.link{color:var(--blue);background:0 0;padding:6px;font-weight:500}.page{max-width:640px;margin:0 auto;padding:16px 20px 60px}.page h2{margin:8px 0 4px;font-size:24px;font-weight:600}.page h3{font-size:20px;font-weight:600}.athlete-row-left{align-items:center;gap:12px;display:flex}.athlete-card{align-items:center;gap:16px;padding:8px 0 16px;display:flex}.athlete-card-info{flex-direction:column;gap:2px;min-width:0;display:flex}.athlete-card-name{color:var(--ink);font-size:20px;font-weight:600}.athlete-card-sub{color:var(--ink);font-size:16px}.topbar{justify-content:space-between;align-items:center;padding:8px 0 16px;display:flex}.events{flex-direction:column;gap:10px;margin:12px 0 0;padding:0;list-style:none;display:flex}.event{background:var(--card);border:1px solid var(--line);border-radius:var(--r-medium);flex-direction:column;gap:6px;padding:12px 14px;display:flex;box-shadow:0 1px 3px #1e1e1e0a}.event.competition{background:#fffbea;border-color:#f2e6b3}.event-top{align-items:center;gap:8px;display:flex}.event-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;font-size:16px;font-weight:600;overflow:hidden}.event-top .event-team{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;overflow:hidden}.chevron{color:var(--muted);margin-left:auto;display:inline-flex}.event-top .event-team+.chevron{margin-left:0}.event-bottom{justify-content:space-between;align-items:center;gap:12px;display:flex}.event-datetime{color:var(--muted);gap:16px;font-size:12px;display:flex}.dt{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.event-icons{align-items:center;gap:8px;display:flex}.ic{line-height:0;display:inline-flex}button.ic{background:0 0;border:none;border-radius:0;padding:0}.ic.attendance.going{color:var(--green)}.ic.attendance.notGoing{color:var(--red)}.ic.attendance.pending{color:var(--muted)}.ic.location{color:var(--blue)}.ic.reminder{color:var(--warning,#ff9500)}.nav{background:var(--card);border-bottom:1px solid var(--line);z-index:10;position:sticky;top:0}.nav-header{justify-content:space-between;align-items:center;gap:16px;max-width:640px;margin:0 auto;padding:12px 20px 8px;display:flex}.nav-links{gap:4px;display:flex}.nav-link{color:var(--muted);border-radius:var(--r-small);padding:6px 12px;font-size:15px;font-weight:600;text-decoration:none}.nav-link.active{color:var(--blue);background:var(--blue-tint)}.nav-sub{justify-content:space-between;align-items:center;gap:12px;max-width:640px;margin:0 auto;padding:4px 20px 10px;display:flex}.nav-icons{align-items:center;gap:12px;display:flex}.icon-btn{color:var(--blue);border-radius:var(--r-pill);opacity:.9;line-height:0;transition:opacity .15s,transform .1s;display:inline-flex}.icon-btn:hover,.icon-btn.active{opacity:1}.avatar-wrap{flex-direction:column;align-items:center;gap:5px;display:flex}.avatar{background:var(--grey-fill);color:var(--muted);border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:flex;overflow:hidden;box-shadow:0 1px 3px #0000001a}.avatar-img{object-fit:cover;width:100%;height:100%;display:block}.avatar-bar{border-radius:2px;height:3px}.athlete-carousel{scrollbar-width:none;gap:12px;padding:2px;display:flex;overflow-x:auto}.athlete-carousel::-webkit-scrollbar{display:none}.athlete-pick{cursor:pointer;background:0 0;border:none;flex:none;padding:0}.sheet-overlay{z-index:100;background:#0006;justify-content:center;align-items:flex-end;padding:12px;display:flex;position:fixed;inset:0}.action-sheet{background:var(--card);border-radius:var(--r-large);width:100%;max-width:420px;animation:.18s sheet-up;overflow:hidden;box-shadow:0 -4px 24px #0003}@keyframes sheet-up{0%{opacity:.5;transform:translateY(24px)}to{opacity:1;transform:none}}.sheet-head{text-align:center;border-bottom:1px solid var(--line);padding:16px}.sheet-head h3{margin:0 0 4px}.sheet-head .muted{font-size:14px}.sheet-btn{background:var(--card);width:100%;color:var(--blue);border-top:1px solid var(--line);border-radius:0;padding:15px;font-size:17px;font-weight:600}.sheet-btn:first-of-type{border-top:none}.sheet-btn:hover{background:var(--bg)}.sheet-btn.cancel{font-weight:700}.link-btn{color:var(--blue);font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:500}.directions-btn{background:var(--card);width:100%;color:var(--blue);border:1.5px solid var(--blue);margin-top:14px}.directions-btn:hover{background:var(--blue-tint)}.empty-state{text-align:center;max-width:400px;margin:0 auto;padding:48px 24px}.empty-badge{background:var(--blue-tint);width:72px;height:72px;color:var(--blue);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;display:flex}.empty-state h3{margin:0 0 8px}.subtitle{margin-top:-6px;margin-bottom:8px}.event{cursor:pointer;color:inherit;text-decoration:none;transition:box-shadow .12s,transform .12s}.event:hover{transform:translateY(-1px);box-shadow:0 3px 10px #1e1e1e1a}.event:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.ic.location{cursor:pointer}.ic.location:hover{filter:brightness(1.1)}.event.next{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}.event.next:hover{box-shadow:0 0 0 1px var(--blue), 0 3px 10px #0072f52e}.event-name-row{align-items:center;gap:8px;display:flex}.next-chip{letter-spacing:.5px;color:#fff;background:var(--blue);border-radius:var(--r-small);padding:2px 7px;font-size:10px;font-weight:800}.ellipsis{text-overflow:ellipsis;max-width:180px;overflow:hidden}.status-chip{border-radius:var(--r-pill);width:fit-content;margin-top:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.status-chip.going{color:#0a8a2c;background:#00c63124}.status-chip.notGoing{color:var(--red);background:#db1b1b1f}.status-chip.pending{color:var(--muted);background:#eef0f2}.back-link{color:var(--blue);margin-bottom:8px;font-weight:600;text-decoration:none;display:inline-block}.type-badge{text-transform:uppercase;letter-spacing:.5px;color:var(--blue);background:#eef;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700;display:inline-block}.type-badge.competition{color:#9a7b00;background:#fff6d6}.detail-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-large);margin-top:14px;padding:16px 18px;box-shadow:0 1px 3px #1e1e1e0a}.detail-heading{margin:0 0 10px;font-size:15px}.detail-row{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:7px 0;display:flex}.detail-row:last-child{border-bottom:none}.detail-label{color:var(--muted);font-size:14px}.detail-value{text-align:right;font-weight:500}.detail-value a{color:var(--blue)}.notes{white-space:pre-wrap;margin:0 0 8px;line-height:1.4}.rsvp{gap:8px;display:flex}.rsvp-btn{background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-medium);flex:1;padding:11px 8px;font-size:14px;font-weight:600}.rsvp-btn.active.going{background:var(--green);color:#fff;border-color:var(--green)}.rsvp-btn.active.notGoing{background:var(--red);color:#fff;border-color:var(--red)}.rsvp-btn.active.pending{background:var(--muted);color:#fff;border-color:var(--muted)}.roster-team{margin-top:20px}.roster-team-head{align-items:baseline;gap:10px;display:flex}.roster-team-head h3{margin:0}.roster-section{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:14px 0 6px;font-size:13px}.roster-list{margin:0;padding:0;list-style:none}.roster-row{background:var(--card);border:1px solid var(--line);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;display:flex}.roster-name{font-weight:600}.roster-sub{color:var(--muted);text-align:right;font-size:13px}a.roster-sub{color:var(--blue);text-decoration:none}.athlete-row{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:12px 14px;display:flex}.athlete-row.selected{border-color:var(--blue)}.check{color:var(--blue);font-weight:700}.small-note{margin-top:8px;font-size:13px}.signout-btn{color:#c0322b;background:#fde4e4;width:100%;margin-top:20px}
