/* Original logo is not supplied; no substitute graphic is used. Fonts are self-hosted with their OFL licenses. */
@font-face{font-family:'Oswald';font-style:normal;font-weight:200 700;font-display:swap;src:url('/assets/fonts/oswald.ttf') format('truetype')}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url('/assets/fonts/montserrat.ttf') format('truetype')}
:root{--navy:#00213a;--midnight:#0e151f;--lime:#cef271;--slate:#12364e;--paper:#f3f7fa;--muted:#a8b9c5;--ink:#163047;--line:#dbe3e9;color:var(--paper);background:var(--midnight);font:400 16px/1.6 'Montserrat',Arial,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #79a71d;outline-offset:4px}h1,h2,h3,.wordmark{font-family:'Oswald','Arial Narrow',Arial,sans-serif;line-height:1.12;font-weight:600;letter-spacing:-.03em}h1{font-size:clamp(2.6rem,5.2vw,4.7rem);margin:.35em 0}h2{font-size:2.25rem;margin:.25em 0 .65em}h3{font-size:1.35rem;margin:0 0 .65em}p{margin:.75em 0}small,.helper{font-size:.83rem;line-height:1.6;color:#516675}.site-header{max-width:1256px;margin:auto;padding:32px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff18}.wordmark{font-size:1.2rem;letter-spacing:.09em;text-decoration:none;white-space:nowrap}.wordmark span{color:var(--lime)}.header-note,.eyebrow,.quiet{font-size:.65rem;font-weight:700;letter-spacing:.19em}.header-note,.quiet{color:var(--muted)}.eyebrow{color:var(--lime);margin:0 0 20px}.student-layout{max-width:1256px;min-height:76vh;margin:auto;display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center;padding:55px 40px 65px}.intro{position:relative;overflow:hidden}.intro-copy{color:var(--muted);font-size:1rem;line-height:1.9}.court{position:relative;width:230px;height:120px;border:1px solid #cef27140;transform:skewY(-12deg);margin:48px 0 40px}.court:before{content:'';position:absolute;inset:13% 0;border-top:1px solid #cef27140;border-bottom:1px solid #cef27140}.court:after{content:'';position:absolute;left:50%;height:100%;border-left:1px solid #cef27180}.court i{position:absolute;inset:13% 20%;border:1px solid #cef27140}.panel{background:var(--paper);color:var(--ink);padding:40px;border-radius:4px;box-shadow:0 24px 70px #0002;min-width:0}.panel .eyebrow{color:#53751d}.panel p{color:#506575}.form{display:grid;gap:18px;margin-top:24px}label{display:grid;gap:7px;font-size:.85rem;font-weight:600;color:var(--ink)}input,select,textarea{width:100%;min-height:48px;border:1px solid #a8bbc9;border-radius:3px;background:#fff;color:var(--ink);padding:12px;min-width:0}textarea{resize:vertical}input[type=checkbox]{width:20px;min-height:20px;accent-color:var(--navy);margin:3px 0}.check{display:flex;align-items:flex-start;gap:12px;font-weight:400}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 22px;border:1px solid var(--navy);border-radius:3px;background:var(--navy);color:var(--paper);font-size:.86rem;font-weight:600;text-decoration:none}.button.primary{background:var(--lime);color:var(--navy);border-color:var(--lime)}.button.secondary{background:transparent;color:var(--ink);border-color:#9db0be}.button.danger{background:transparent;color:#a02635;border-color:#dcb4ba}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.actions .button{flex:1 1 auto}.text-link{font-size:.8rem;text-underline-offset:5px;color:var(--muted)}.panel .text-link{color:var(--ink)}#notice:not(:empty){border-left:3px solid #87a936;background:#edf3e3;padding:12px 15px;font-size:.85rem;color:var(--ink)}#notice.error{border-color:#c74750;background:#fff0f0;color:#842431}.divider{border:0;border-top:1px solid var(--line);margin:24px 0}.badge{display:inline-block;border:1px solid #cbd7b6;background:#ecf2df;color:#3d5918;border-radius:30px;font-size:.7rem;padding:4px 10px;font-weight:600}.badge.muted{color:#526575;background:#edf1f5;border-color:var(--line)}.privacy{background:#e9eff2;border-radius:3px;padding:16px;font-size:.8rem;margin:20px 0}.privacy p{margin:0 0 10px}.privacy p:last-child{margin:0}footer{max-width:1256px;margin:auto;padding:24px 40px;border-top:1px solid #ffffff18;display:flex;gap:18px;justify-content:space-between;color:var(--muted);font-size:.68rem}footer span{color:#6f8899}.skip{position:absolute;top:-90px;left:16px;z-index:20;padding:15px;background:var(--lime);color:var(--navy)}.skip:focus{top:8px}.coach-layout{max-width:1256px;margin:auto;padding:40px;min-height:78vh}.desk-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:32px}.desk-heading h1{font-size:clamp(2.4rem,4vw,3.5rem)}.desk-heading p:not(.eyebrow){color:var(--muted)}.desk-heading .eyebrow{margin-bottom:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:25px 0}.tab{padding:11px 17px;background:transparent;color:var(--muted);border:1px solid #ffffff25;border-radius:3px;font-size:.85rem}.tab[aria-pressed=true]{background:var(--lime);color:var(--navy);border-color:var(--lime)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:20px}.card{background:var(--paper);color:var(--ink);border-radius:4px;padding:25px;min-width:0;overflow-wrap:anywhere}.card p{color:#506575;font-size:.85rem}.card .meta{font-size:.73rem;line-height:1.8}.card .actions{margin-top:15px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:25px 0}.toolbar h2{font-size:1.65rem;margin:0}.empty{color:var(--muted);padding:25px 0}.secret{border:1px solid var(--lime);padding:24px;background:var(--slate);border-radius:4px;margin:20px 0}.secret textarea{font-family:ui-monospace,monospace;overflow-wrap:anywhere;font-size:.83rem}.secret label{color:var(--paper)}.secret .helper{color:var(--muted)}.secret .button.secondary{color:var(--paper)}.review{background:var(--paper);color:var(--ink);padding:30px;border-radius:4px;margin:24px 0;max-width:650px}.review .eyebrow{color:#53751d}.review h2{font-size:1.7rem}.device{padding:16px 0;border-bottom:1px solid var(--line)}.device:last-child{border:0}.error-note{color:#9b2934}.welcome-name{overflow-wrap:anywhere}.welcome-mark{color:#557529;font-size:2rem;margin-bottom:15px}.welcome-note{padding-top:20px;border-top:1px solid var(--line);margin-top:24px}.secret,#screen{scroll-margin-top:20px}[hidden]{display:none!important}
@media(max-width:760px){.site-header{padding:24px}.header-note{font-size:.53rem;letter-spacing:.08em}.wordmark{font-size:1rem}.student-layout{display:block;padding:32px 20px 40px}.intro{margin:0 4px 32px}.intro h1{font-size:2.8rem}.intro .eyebrow{font-size:.59rem;margin-bottom:12px}.intro-copy{font-size:.85rem}.court,.intro .quiet{display:none}.panel{padding:28px 24px}.panel h2{font-size:2rem}footer{padding:24px;font-size:.6rem;gap:12px}.coach-layout{padding:28px 20px}.desk-heading{display:block}.desk-heading .text-link{display:inline-block;margin-top:12px}.toolbar{align-items:flex-start}.toolbar .button{padding:10px 14px}.card{padding:23px}.review{padding:24px}.tabs{gap:6px}.tab{padding:10px 12px}}
@media(prefers-reduced-motion:no-preference){.button,.tab{transition:background .15s ease,border-color .15s ease}.button:hover:not(:disabled){filter:brightness(.94)}}

/* Training Journal: no replacement logo; existing local fonts and brand palette. */
.site-header{background:var(--navy)}
.student-layout:has(.journal){display:block;max-width:860px;padding-top:28px}.student-layout:has(.journal)>.intro{display:none}.student-layout:has(.journal)>.panel{border-radius:16px;padding:28px;background:#f3f7fa}.journal{max-width:760px;color:var(--ink)}.journal .eyebrow{color:#53751d}.journal h2{font-size:2.25rem}.journal>p{color:#506575}.journal-question,.journal-history-card{padding:24px;background:#fff;border:1px solid var(--line);border-radius:14px;margin:0 0 18px}.journal-question.mobility{background:#eef7d8;border-color:#dceab8}.journal-question h3{font-size:1.35rem;letter-spacing:0;line-height:1.35;margin:4px 0 18px}.journal-question .question-number{font-size:.68rem;font-weight:700;letter-spacing:.1em;color:#536a31;margin:0}.journal-question label{margin-top:16px}.answer-choices,.duration-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.journal-question .answer-tile{display:flex;align-items:center;justify-content:center;gap:9px;margin:0;min-height:62px;padding:12px;background:#fff;border:1px solid #a9bb8f;border-radius:10px;cursor:pointer;font-size:.9rem}.answer-tile input[type=radio]{width:18px;min-height:18px;height:18px;padding:0;accent-color:var(--navy);margin:0}.answer-tile:has(input:checked){background:var(--lime);border:2px solid var(--navy);padding:11px;color:var(--navy)}.answer-tile:focus-within{outline:3px solid #79a71d;outline-offset:3px}.journal-save{width:100%;font-size:1rem;min-height:56px;border-radius:10px}.journal-answer{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink)}.saved-journal h4{font-size:.85rem;margin-bottom:8px}.coach-layout .journal{background:var(--paper);padding:28px;border-radius:14px}.journal-history-card h3{font-size:1.25rem}.journal-history-card p{font-size:.83rem}
@media(max-width:760px){.student-layout:has(.journal){padding:20px 12px}.student-layout:has(.journal)>.panel{padding:20px 14px}.journal-question{padding:20px 16px}.journal-question h3{font-size:1.22rem}.coach-layout .journal{padding:20px 14px}.duration-grid{gap:10px}}

/* Weekly Serve Practice: exact option grids, shared brand assets and typography. */
.serve-days-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.serve-aspects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.serve-vertical{display:grid;grid-template-columns:1fr;gap:10px}.serve-question .answer-tile{display:flex;align-items:center;gap:10px;margin:0;padding:14px 12px;min-height:58px;border:1px solid #a9bb8f;border-radius:10px;background:#fff;cursor:pointer;font-size:.85rem}.serve-days-grid .answer-tile{flex-direction:column;justify-content:center;gap:5px;text-align:center;padding:10px 4px;font-size:.75rem}.serve-question .answer-tile:has(input:checked){background:var(--lime);border:2px solid var(--navy);padding:13px 11px}.serve-days-grid .answer-tile:has(input:checked){padding:9px 3px}.serve-question .answer-tile input{width:18px;min-height:18px;height:18px;accent-color:var(--navy);padding:0;margin:0;flex-shrink:0}.weekly-serve .week-label{font-size:.85rem;font-weight:600}.weekly-serve .privacy .button{margin-top:12px}.serve-question .journal-answer{margin-bottom:0}.serve-question input[type=number]{font-size:1.1rem}

.clear-answer{border:0;background:transparent;color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:12px 0;min-height:44px;font-size:.8rem}

/* Fitness: each selected activity keeps its own duration and measurements. */
.fitness-card{border:2px solid #dce5e9;border-radius:18px;background:#fff;margin:14px 0;color:#0E151F;overflow:hidden}
.fitness-card.selected{border-color:#12364E;background:#f8fceF}
.fitness-card summary{padding:20px;cursor:pointer;min-height:64px}
.fitness-card summary label{display:flex;align-items:center;justify-content:space-between;font-family:Oswald,sans-serif;font-size:1.35rem;gap:14px}
.fitness-card input[type=checkbox]{width:24px;height:24px;accent-color:#00213A;flex-shrink:0}
.fitness-fields{padding:0 20px 20px;display:grid;gap:16px}
.fitness-fields[hidden]{display:none}
.fitness-summary{background:#00213A;color:#fff;padding:22px;border-radius:18px;margin:18px 0;overflow-wrap:anywhere}
.fitness-summary h3,.fitness-summary strong{color:#CEF271}
.fitness-summary p{color:inherit}
.fitness-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.fitness-metrics p{margin:0 0 6px;font-size:.85rem}.fitness-metrics strong{font-size:1.4rem}
.fitness-breakdown{display:flex;justify-content:space-between;gap:20px;padding:14px 4px;border-bottom:1px solid #dce5e9}

/* Checkpoint 10: memory-only Match Report, sections 1–3. */
.match-report{min-width:0}.match-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:24px 0}.match-nav .button{padding:12px 8px;font-size:.78rem;border-radius:10px}.match-section-title{margin-top:24px}.match-question input[readonly]{background:#e9eff2;font-weight:600}.match-question select{margin-top:8px}.match-anchors{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;color:#506575;font-size:.8rem;margin:14px 0}.match-set-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.match-physical-question{display:block;margin:0;line-height:1.7}.match-condition-anchors{margin-top:28px}.match-upcoming{margin-top:32px;padding:20px;background:#e9eff2;border-radius:14px;font-size:.85rem}.match-upcoming li{padding:5px 0}.match-unsaved{line-height:1.7}.match-question textarea{min-height:140px}
@media(max-width:380px){.match-nav{grid-template-columns:1fr}.match-set-grid{grid-template-columns:1fr}}

/* Checkpoint 11: bounded tactical selections and independent serve allocations. */
.match-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.match-choices .answer-tile{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid #9db0be;border-radius:10px;background:#fff;min-height:54px}.match-choices .answer-tile:has(input:checked){background:#CEF271;border-color:#00213A}.match-choices .answer-tile:has(input:disabled){opacity:.55}.match-choices input{width:20px;min-height:20px;margin:0;accent-color:#00213A}.match-holds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.match-report input[type=range]{padding:10px 0;accent-color:#12364E;min-height:48px}.match-percent{display:block;font-family:Oswald,sans-serif;font-size:1.5rem;color:#12364E;margin:10px 0}.match-variety-row{padding:14px 0;border-bottom:1px solid #dbe3e9}.match-distribution{display:flex;height:18px;background:#e1e8ed;border-radius:9px;overflow:hidden;margin:16px 0}.match-distribution span{height:100%;flex-shrink:0}.distribution-flat{background:#CEF271}.distribution-slice{background:#47a6db}.distribution-kick{background:#9b82d4}.serve-live-summary{background:#00213A;color:#fff;border-radius:16px;padding:22px;margin-top:12px}.serve-live-summary h3,.serve-live-summary dd{color:#CEF271}.serve-live-summary dl{margin:0}.serve-live-summary dl>div{padding:12px 0;border-bottom:1px solid #ffffff25}.serve-live-summary dt{font-size:.85rem}.serve-live-summary dd{font-weight:700;margin:4px 0;overflow-wrap:anywhere}.match-dno-count,.match-variety-total{font-weight:700}.match-report .error{color:#842431}
@media(max-width:380px){.match-choices,.match-holds{grid-template-columns:1fr}}
.match-variety-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:center}.match-variety-row .match-percent{margin:0}.match-variety-row>.button{grid-column:1/-1;justify-self:start}

/* Checkpoint 12: long reflections and read-only page-memory report review. */
.match-personal-comments{min-height:340px;line-height:1.8}.match-personal-intro{font-size:1rem;line-height:1.8}.match-review-section{margin:28px 0 40px}.match-review-section>h3{background:#00213A;color:#CEF271;padding:18px;border-radius:12px}.match-review-section h4{font-family:Oswald,sans-serif;font-size:1.2rem;line-height:1.4;margin:8px 0 16px}.match-review-label{font-size:.8rem;font-weight:700;margin-bottom:4px}.match-full-review .journal-answer{margin-top:0;overflow-wrap:anywhere;white-space:pre-wrap}.match-report:has(.match-full-review){max-width:100%}
/* Saved Match Reports: immutable snapshots, history and full review. */
.match-saved{max-width:900px;margin:auto}.snapshot-summary,.snapshot-affirmation{padding:24px;background:#00213A;color:#CEF271;border-radius:16px}.snapshot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.snapshot-metric{padding:18px;background:#F3F7FA;border:1px solid #c8d7e1;border-radius:14px;overflow-wrap:anywhere}.snapshot-metric dt{font-size:.85rem}.snapshot-metric dd{margin:10px 0 0;font-family:Oswald,sans-serif;font-size:1.5rem}.snapshot-focus{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.snapshot-focus span,.snapshot-focus strong{display:block}.snapshot-focus strong{font-family:Oswald,sans-serif;font-size:1.6rem}.snapshot-focus .snapshot-metric{padding:12px}.snapshot-affirmation{text-align:center;font-family:Oswald,sans-serif;font-size:1.4rem}.match-saved .journal-answer{white-space:pre-wrap;overflow-wrap:anywhere}
/* Checkpoint 14 reuses the existing cards, tabs, questions and navy/lime tokens. */
.student-layout:has(.dashboard){display:block;max-width:1256px}.student-layout:has(.dashboard)>.intro{display:none}.dashboard{min-width:0;width:100%;color:var(--ink)}.coach-layout:has(.dashboard){max-width:1256px}.dashboard-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:28px}.dashboard .dashboard-nav .button{flex:1 1 100px}.dashboard-filters{display:flex;gap:16px;flex-wrap:wrap;align-items:end;margin:20px 0}.dashboard-filters>label{flex:1 1 180px}.dashboard-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:16px;margin:24px 0}.dashboard .card{min-width:0;overflow-wrap:anywhere}.dashboard-value{font-family:Oswald,sans-serif;font-size:2rem}.dashboard-scroll{overflow-x:auto;max-width:100%;margin:24px 0}.dashboard-table{border-collapse:collapse;width:100%;min-width:520px;color:var(--ink);background:var(--paper)}.dashboard-table caption{text-align:left;font-family:Oswald,sans-serif;font-size:1.3rem;margin:12px 0}.dashboard-table th,.dashboard-table td{padding:14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.dashboard-table thead th{background:var(--navy);color:var(--lime)}.dashboard-table th[scope=row]{font-weight:600}.dashboard-match-date{display:block;font-size:.8rem;font-weight:400;margin-top:8px}.dashboard-table .button{min-width:48px}.dashboard-match-choices{border:1px solid var(--line);padding:20px;display:grid;gap:14px}.dashboard-match-choices label{display:flex;align-items:center;gap:12px}.dashboard-match-choices input{width:22px;min-height:22px}.dashboard-chart{margin:28px 0;padding:22px;border:1px solid var(--line);border-radius:14px;background:#fff}.dashboard-bars{display:flex;align-items:stretch;gap:clamp(5px,1.5vw,18px);height:240px;border-bottom:1px solid #90a6b6}.dashboard-bar-column{display:flex;flex:1 1 0;min-width:0;flex-direction:column;align-items:center}.dashboard-bar-track{display:flex;width:100%;flex:1;align-items:end;justify-content:center;min-height:0}.dashboard-bar{width:70%;max-width:50px;background:var(--lime);border:1px solid #789b39;border-radius:4px 4px 0 0;min-height:0}.dashboard-bar-label{font-size:.7rem;margin:10px 0;white-space:nowrap}.dashboard-bar-value{font-size:.8rem;overflow-wrap:anywhere}.dashboard-period-total{background:var(--navy);color:var(--lime)!important;padding:22px;border-radius:14px;font-family:Oswald,sans-serif;font-size:1.5rem}.dashboard pre{white-space:pre-wrap;overflow-wrap:anywhere}.dashboard [data-weekly-summary]{margin-top:36px}.dashboard-chart details .dashboard-table{min-width:0}.dashboard-records{margin:22px 0}.dashboard .match-review-section>h3{font-size:1.4rem}
@media(max-width:600px){.student-layout:has(.dashboard){padding:24px 14px}.student-layout:has(.dashboard)>.panel{padding:20px 14px}.dashboard-chart{padding:16px 10px}.dashboard-nav .button{padding:10px}.dashboard-filters>label{flex-basis:100%}.dashboard-bars{height:210px}}
.coach-layout .dashboard{background:var(--paper);padding:32px;border-radius:14px}.dashboard-chart-plot{display:flex;gap:8px}.dashboard-chart-plot .dashboard-bars{flex:1;min-width:0}.dashboard-axis{display:flex;flex-direction:column;justify-content:space-between;min-width:24px;font-size:.7rem;color:#516675;padding-bottom:34px;max-width:60px;overflow-wrap:anywhere}@media(max-width:600px){.coach-layout .dashboard{padding:20px 12px}}
.dashboard .eyebrow{color:#53751d}
