:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#111311;background:#f5f7f2;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.72}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 100% 0%,rgba(70,182,220,.25),transparent 36%),radial-gradient(circle at 0% 100%,rgba(150,183,2,.22),transparent 42%),#f5f7f2}.login-panel{width:min(100%,430px);padding:40px 28px 28px;border:1px solid rgba(0,0,0,.06);border-radius:28px;background:#ffffffeb;box-shadow:0 24px 60px #111f0d1f}.brand-mark{display:grid;place-items:center;width:52px;height:52px;margin-bottom:28px;border-radius:16px;color:#fff;font-size:1.55rem;font-weight:900;background:#000;box-shadow:inset 0 -4px #96b702}.eyebrow{margin:0 0 8px;color:#687064;font-size:.7rem;font-weight:800;letter-spacing:.12em}h1{margin:0;color:#000;font-size:clamp(2.5rem,12vw,3.5rem);line-height:.95;letter-spacing:-.07em}.subtitle{margin:10px 0 32px;color:#566052;font-size:1.05rem}.login-form{display:grid;gap:10px}label{margin-top:8px;color:#2a3028;font-size:.86rem;font-weight:700}input{width:100%;padding:15px 16px;border:1px solid #dce2d8;border-radius:12px;outline:none;background:#fff;color:#111;transition:border-color .15s,box-shadow .15s}input:focus{border-color:#46b6dc;box-shadow:0 0 0 3px #46b6dc2e}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;margin-top:18px;border:0;border-radius:14px;background:#96b702;color:#101800;font-weight:900;letter-spacing:.045em;text-decoration:none;transition:transform .15s,background .15s}.primary-button:hover{background:#abcf02;transform:translateY(-1px)}.form-notice{margin:4px 0 0;color:#596653;font-size:.85rem;text-align:center}.form-error{margin:4px 0 0;color:#b3261e;font-size:.85rem;text-align:center}.phase-links{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 12px;margin-top:30px;color:#717a6e;font-size:.78rem}.phase-links a{color:#187b9d;text-decoration:none}.app-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f5f7f2}.coming-soon{width:min(100%,680px);padding:42px;border-radius:24px;background:#fff;box-shadow:0 16px 48px #00000014}.coming-soon h1{font-size:clamp(2rem,7vw,3.4rem)}.coming-soon p:not(.eyebrow){color:#566052;line-height:1.6}.secondary-button{width:max-content;padding:0 20px;margin-top:16px;background:#000;color:#fff}@media(min-width:700px){.login-panel,.login-page{padding:48px}}.status-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:#f5f7f2;color:#566052}.status-card{width:min(100%,440px);padding:34px;border-radius:22px;background:#fff;box-shadow:0 16px 48px #00000014;text-align:center}.status-card h1{font-size:2.25rem}.status-card p:not(.eyebrow){line-height:1.6}.status-card .secondary-button{width:100%}.text-button{margin-top:16px;border:0;background:transparent;color:#187b9d;text-decoration:underline}.portal{min-height:100vh;background:#f5f7f2}.portal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;color:#fff;background:#000}.portal-brand{color:#fff;font-size:1.25rem;font-weight:900;letter-spacing:-.06em;text-decoration:none}.portal-header div{display:flex;align-items:center;gap:12px;font-size:.85rem}.logout-button{border:1px solid #454545;border-radius:8px;padding:7px 10px;color:#fff;background:transparent}.portal-body{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 72px)}.portal-nav{display:grid;align-content:start;gap:4px;padding:18px 12px;border-right:1px solid #e1e5df;background:#fff}.portal-nav a{padding:11px 12px;border-radius:9px;color:#4e574b;font-size:.9rem;font-weight:700;text-decoration:none}.portal-nav a.active{color:#162000;background:#e9f2bf}.portal-content{width:min(100%,900px);padding:clamp(28px,5vw,64px)}.portal-content h1{font-size:clamp(2.1rem,5vw,3.4rem)}.empty-card{margin-top:30px;padding:26px;border:1px solid #e0e5dd;border-radius:18px;background:#fff}.empty-card h2{margin:0;font-size:1.15rem}.empty-card p{margin-bottom:0;color:#5d665a;line-height:1.6}@media(max-width:699px){.portal-body{display:block;padding-bottom:70px}.portal-nav{position:fixed;z-index:2;right:0;bottom:0;left:0;display:flex;gap:0;overflow-x:auto;padding:7px 8px;border-top:1px solid #e1e5df;border-right:0}.portal-nav a{flex:0 0 auto;padding:10px 12px}.portal-header{padding:16px 20px}.portal-header div>span{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-content{padding:30px 22px}}.admin-form,.admin-controls{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0}.admin-form input,.admin-form select,.admin-controls input,.admin-controls select{min-height:46px;padding:10px 12px;border:1px solid #dce2d8;border-radius:10px;background:#fff}.admin-form .primary-button{margin:0;padding:0 18px}.admin-list{display:grid;gap:10px;margin-top:22px}.admin-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:16px;border:1px solid #e0e5dd;border-radius:14px;color:#141814;background:#fff}.admin-item div{display:grid;gap:4px}.admin-item span{color:#697267;font-size:.87rem}.link-item{text-decoration:none}.athlete-period{margin-top:32px}.credit-card{display:grid;gap:12px;margin-top:10px;padding:26px;border-radius:20px;color:#fff;background:#000}.credit-card p{margin:0;color:#dce2d8;font-weight:700}.credit-card strong{color:#96b702;font-size:4.5rem;line-height:.85;letter-spacing:-.08em}.credit-card b{color:#fff;font-size:.75rem;letter-spacing:.1em}.credit-breakdown{display:flex;flex-wrap:wrap;gap:8px 14px;color:#c7d0c1;font-size:.86rem}.schedule-section{margin-top:34px}.schedule-section h2{margin:0;font-size:1rem;letter-spacing:.08em}.schedule-section>p{color:#5d665a}.session-card{align-items:stretch}.session-link{align-self:center;min-height:42px;margin:0;padding:0 14px;font-size:.72rem}.session-detail{display:grid;gap:3px}.session-detail p{margin:0}.next-session{display:grid;gap:8px;color:#4f594b}.next-session strong{color:#111311;text-transform:capitalize}.attendance-list{display:grid;gap:10px;margin-top:16px}.attendance-item{padding:16px;border:1px solid #e0e5dd;border-radius:14px;background:#fff}.attendance-item>p{margin:7px 0 12px;color:#5d665a;font-size:.9rem;font-weight:700}.attendance-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.attendance-button{min-height:46px;border:1px solid #cfd7ca;border-radius:11px;background:#fff;color:#263021;font-size:.78rem;font-weight:900;letter-spacing:.04em}.attendance-button.selected.present{border-color:#5f8500;color:#243300;background:#e9f2bf}.attendance-button.selected.absent{border-color:#b3261e;color:#8c1c17;background:#fde9e7}.attendance-save{width:100%;margin-top:16px}.session-cancelled{color:#8c1c17!important;font-weight:800}.athlete-history{width:min(100%,680px)}.month-switcher{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;margin:26px 0 18px;text-align:center;text-transform:capitalize}.month-switcher button{width:44px;height:44px;border:1px solid #dce2d8;border-radius:12px;background:#fff;color:#111311;font-size:1.8rem;line-height:1}.history-summary{padding:22px;border-radius:18px;color:#fff;background:#000}.history-summary p{margin:0 0 18px;color:#dce2d8;font-weight:800;text-transform:capitalize}.history-summary div{display:grid;grid-template-columns:1fr 1fr;gap:14px}.history-summary span{display:grid;gap:3px;color:#c7d0c1;font-size:.8rem}.history-summary b{color:#96b702;font-size:1.55rem}.history-list{display:grid;gap:12px;margin-top:22px}.history-class{display:grid;gap:6px;padding:20px;border:1px solid #e0e5dd;border-radius:16px;background:#fff}.history-class>span{color:#596553}.history-class hr{width:100%;margin:8px 0;border:0;border-top:1px solid #edf0eb}.history-status{display:flex;justify-content:space-between;gap:16px;margin-top:10px;padding-top:12px;border-top:1px solid #edf0eb;font-size:.86rem}.history-status b{color:#426000}.history-status b.cancelled{color:#8c1c17}.history-status span{color:#596553}@media(min-width:700px){.history-summary div{grid-template-columns:repeat(4,1fr)}}
