/* v0.9: canonical readable type scale. Colors continue to use app.html tokens. */
.season-page{grid-template-columns:minmax(0,1fr)}.season-page>*{min-width:0}.season-heading>div{min-width:0}.season-heading h1{overflow-wrap:anywhere}.season-toolbar select{min-width:0;max-width:100%}
:root{--font-body:'Manrope',system-ui,sans-serif;--font-heading:'Manrope',system-ui,sans-serif;--text-body:1rem;--leading-body:1.6;--tracking-body:0;--tracking-heading:0}
body{font-family:var(--font-body);font-size:var(--text-body);font-weight:400;line-height:var(--leading-body);letter-spacing:var(--tracking-body)}
h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;letter-spacing:var(--tracking-heading);text-transform:none;line-height:1.3}
button,input,select,textarea{font-family:var(--font-body);letter-spacing:0}
button,.btn{font-weight:600;letter-spacing:0;text-transform:none;line-height:1.4}
.btn{font-size:.94rem;min-height:44px;padding:.7rem 1.05rem}.btn.sm{font-size:.86rem;min-height:40px}
input,select,textarea{font-size:1rem;line-height:1.5;min-height:44px}label{font-size:.9rem;font-weight:600;line-height:1.5;letter-spacing:0;text-transform:none;margin-bottom:.4rem}
.brand,.landing-brand{font-family:var(--font-heading);font-weight:700;letter-spacing:0;text-transform:none;font-size:1.2rem}
.landing-brand b,.landing-brand span{color:var(--acc)}
.landing-copy h1{font-size:clamp(2.5rem,5vw,4.25rem);font-weight:700;line-height:1.12;letter-spacing:0;max-width:700px}
.landing-lead{font-size:1.12rem;line-height:1.75}.landing-kicker,.section-kicker,.dash-eyebrow,.eyebrow{font-size:.86rem;letter-spacing:0;text-transform:none;font-weight:600;color:var(--acc)}
.landing-links a,.landing-lang button,.auth-panel .tabsw button{font-size:.9rem;letter-spacing:0;text-transform:none}
.auth-panel h2{font-size:1.4rem}.auth-panel{padding:1.6rem}.benefits li{font-size:.86rem;letter-spacing:0;text-transform:none}
.landing-section-head h2{font-size:clamp(1.7rem,3vw,2.4rem)}.landing-section-head p,.simple-steps p{font-size:1rem}
.compact-faq summary{font-size:1rem}.compact-faq p{font-size:.96rem;line-height:1.7}
nav.tabs#nav>button,#nav .nav-more-panel button,.nav-more>summary{font-size:.94rem;font-weight:600;letter-spacing:0}
.nav-more-panel{width:260px}.nav-icon{width:18px;height:18px;flex-shrink:0}
.focus-intro h1{font-size:1.8rem;letter-spacing:0}.focus-intro p{font-size:1rem}.next-race h2{letter-spacing:0;font-size:clamp(1.6rem,3vw,2.3rem)}
.race-facts{font-size:.96rem}.race-checklist strong{font-size:.94rem}.race-checklist p,.muted-note,.season-week-note{font-size:.875rem;line-height:1.6}
.card h3,.panel-head h3{font-size:1.12rem}.schedule-line strong{font-size:1rem}.schedule-line small,.schedule-line time{font-size:.875rem}
.pill,.tag{font-size:.8rem;letter-spacing:0;text-transform:none;font-weight:600}.tool-links button{font-size:.98rem}.quiet-footer{font-size:.875rem}
#subnav .stitle{font-family:var(--font-heading);font-size:1.45rem;font-weight:700;letter-spacing:0}.modal .mhead h3{font-size:1.25rem;font-family:var(--font-heading)}
table{font-size:.9rem}th{font-size:.85rem;letter-spacing:0;text-transform:none}td{line-height:1.55}.integration-panel h3{font:700 1.1rem/1.4 var(--font-heading);letter-spacing:0;text-transform:none}
.admin-hero h2,.security-heading{letter-spacing:0!important}.season-page{display:grid;gap:1.25rem;min-width:0}.season-heading{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin:.3rem 0 .6rem}
.season-heading h1{font-size:clamp(1.6rem,3vw,2.3rem);margin:.25rem 0 .65rem}.season-heading p{margin:0;max-width:690px}.season-heading .eyebrow{margin:0 0 .45rem}
.season-loading{min-height:260px;padding:2rem;color:var(--mut)}.season-toolbar{display:flex;align-items:end;justify-content:space-between;gap:1.5rem;padding:1.2rem;background:var(--bg2);border:1px solid var(--line)}
.season-toolbar>div:first-child{width:min(100%,450px)}.season-toolbar label{margin-top:0}.season-plan-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.season-menu{position:relative}.season-menu>summary{cursor:pointer;list-style:none;padding:.65rem;min-width:44px;min-height:44px;border:1px solid var(--line);text-align:center}.season-menu>summary::-webkit-details-marker{display:none}.season-menu>summary:hover{background:var(--card2)}.season-menu>div{position:absolute;z-index:15;right:0;top:100%;padding:.5rem;background:var(--bg2);border:1px solid var(--line);min-width:220px;display:grid;gap:.4rem}
.season-tabs{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.75rem}.season-tabs>button:not(.btn){border:0;border-bottom:2px solid transparent;background:none;color:var(--mut);padding:.8rem 1rem;font-size:.95rem;cursor:pointer}.season-tabs>button.active{border-color:var(--acc);color:var(--txt)}.season-tabs>button:hover{background:var(--card)}.season-tabs span{color:var(--mut);margin-left:.5rem;font-variant-numeric:tabular-nums}
.season-week-rail{display:flex;overflow-x:auto;gap:.4rem;padding:.2rem .1rem .8rem;scrollbar-gutter:stable}.season-week-rail button{flex:1 0 68px;display:grid;gap:.1rem;align-content:center;background:var(--bg2);color:var(--mut);border:1px solid var(--line);padding:.7rem .45rem;cursor:pointer;min-height:92px;font-size:.8rem;font-variant-numeric:tabular-nums}.season-week-rail button strong{font-size:.9rem;color:var(--txt)}.season-week-rail button small{font-size:.78rem}.season-week-rail button:hover{background:var(--card2);border-color:var(--mut)}.season-week-rail button.selected{background:var(--card2);border-color:var(--acc);box-shadow:inset 0 3px var(--acc)}.season-week-rail button.current-week strong{color:var(--acc)}.season-week-note{color:var(--mut);margin:.2rem 0 0}
.season-filterbar{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,.8fr);gap:1rem}.season-filterbar:has(#seasonStatusBox[hidden]){grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.season-filterbar label{margin-top:0}.season-filterbar .search-wrap input{width:100%}.season-results-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;color:var(--mut);font-size:.9rem;margin:.5rem 0}.season-results-head p{margin:.5rem 0}
.season-race-list{border-top:1px solid var(--line)}.season-race{display:grid;grid-template-columns:65px minmax(0,1fr) 200px auto;align-items:center;gap:1.25rem;border-bottom:1px solid var(--line);padding:1.4rem 0}.season-race-week{display:grid;text-align:center;border-right:1px solid var(--line);padding-right:.9rem;font-size:.82rem;color:var(--mut)}.season-race-week strong{font-size:1.4rem;font-weight:600;color:var(--txt);font-variant-numeric:tabular-nums}.season-race-week small{font-size:.78rem}.season-race-info{min-width:0}.season-race-info h3{font-size:1.07rem;margin:0 0 .35rem;overflow-wrap:anywhere;line-height:1.4}.season-race-info>p{color:var(--mut);font-size:.94rem;margin:0 0 .65rem;overflow-wrap:anywhere}.season-race-meta{display:flex;gap:.25rem 1rem;flex-wrap:wrap;color:var(--mut);font-size:.83rem;line-height:1.65}.season-race-date{display:grid;justify-items:start;gap:.5rem;font-size:.9rem}.season-state{display:inline-block;padding:.15rem .55rem;background:var(--card2);border:1px solid var(--line);font-size:.8rem;color:var(--mut)}.state-planned{border-color:color-mix(in srgb,var(--acc) 55%,var(--line));color:var(--txt)}.state-completed{color:var(--txt)}.season-private-note{margin:.7rem 0 0;color:var(--mut);font-size:.85rem}.season-private-note summary{cursor:pointer;width:fit-content}.season-private-note summary:hover{color:var(--txt)}.season-private-note p{white-space:pre-wrap;overflow-wrap:anywhere;max-width:700px}.catalog-race{grid-template-columns:65px minmax(0,1fr) auto}
.season-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin:1.5rem 0;font-size:.875rem;color:var(--mut)}.season-empty{padding:2.5rem 1.5rem;background:var(--bg2);border:1px solid var(--line);min-height:220px}.season-empty h2{font-size:1.4rem;margin:0 0 .8rem}.season-empty p{color:var(--mut);max-width:660px}.season-source{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;padding:1rem 1.2rem;background:var(--bg2);border-left:2px solid var(--line);margin-top:.6rem;font-size:.875rem}.season-source p{color:var(--mut);margin:.35rem 0 0;max-width:750px}.season-source-note{font-size:.9rem;border-left:2px solid var(--acc);padding:.7rem 1rem;background:var(--bg2);margin-top:0}
.season-welcome{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:3rem;border:1px solid var(--line);background:var(--bg2);padding:2.5rem;margin:.5rem 0 1.5rem}.season-welcome h2{font-size:2rem;margin:.5rem 0 1rem}.season-welcome p{color:var(--mut);max-width:560px}.season-welcome .eyebrow{color:var(--acc)}.season-start-steps{counter-reset:season-steps;list-style:none;margin:0;padding:0;display:grid;align-content:center;gap:1.7rem}.season-start-steps li{position:relative;padding-left:3rem;counter-increment:season-steps}.season-start-steps li:before{content:counter(season-steps);position:absolute;left:0;top:0;color:var(--acc);font-size:1.2rem;border-bottom:1px solid var(--line);width:28px}.season-start-steps strong{display:block;font-size:1rem}.season-start-steps span{color:var(--mut);font-size:.9rem}.season-editor{max-width:720px;width:100%}.season-editor .mbody{padding:1.35rem}.season-editor textarea{min-height:120px}
.shared-season{max-width:1200px;margin:auto;padding:0 1.5rem 3rem}.shared-season-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.4rem 0;margin-bottom:1.5rem;border-bottom:1px solid var(--line)}.shared-season-head>div{display:flex;align-items:center;gap:.5rem}.shared-season .season-race{grid-template-columns:65px minmax(0,1fr) 220px}
.season-overview-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.2rem;padding:1.5rem;border:1px solid var(--line);background:var(--bg2)}.season-overview-strip h2{font-size:1.35rem;margin:.3rem 0}.season-overview-strip p{margin:0}.season-overview-races{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;border-top:1px solid var(--line);padding-top:1rem}.season-overview-races strong{font-size:.9rem;display:block}.season-overview-races span{color:var(--mut);font-size:.85rem}
button:disabled,.btn:disabled{cursor:not-allowed;opacity:.5}summary:focus-visible{outline:2px solid var(--acc);outline-offset:3px}[hidden]{display:none!important}
@media(max-width:850px){.season-race{grid-template-columns:55px minmax(0,1fr) auto}.season-race-date{grid-column:2;grid-row:2}.season-race-actions{grid-column:3;grid-row:1/3}.season-race{gap:.75rem 1rem}.catalog-race .season-race-actions{grid-row:1}.season-race-week{align-self:start}.season-filterbar{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.season-filterbar>#seasonStatusBox{grid-column:2}.season-toolbar{align-items:start;flex-wrap:wrap}.season-toolbar>div:first-child{width:100%}.season-welcome{grid-template-columns:1fr;gap:2rem;padding:1.5rem}.season-overview-races{grid-template-columns:1fr}.shared-season .season-race{grid-template-columns:55px minmax(0,1fr)}.shared-season .season-race-date{grid-column:2;grid-row:2}}
@media(max-width:550px){nav.tabs#nav{display:grid;grid-template-columns:1fr 1.4fr 1fr .8fr;gap:.15rem;padding:.3rem .6rem .7rem}nav.tabs#nav>button{padding:.65rem .15rem;font-size:.8rem;min-width:0}nav.tabs#nav .nav-more{grid-column:4;grid-row:1;margin:0;justify-self:stretch}nav.tabs#nav .nav-more>summary{text-align:center;font-size:.84rem;padding:.5rem;min-height:40px}nav.tabs#nav>button[data-tab=overview]{grid-column:1}nav.tabs#nav>button[data-tab=season]{grid-column:2}nav.tabs#nav>button[data-tab=calendar]{grid-column:3}#app .hwrap{padding:1rem .8rem .5rem}.brand{font-size:1.08rem}.brand-mark{display:none}.landing-copy h1{font-size:2.6rem}.landing-lead{font-size:1rem}.landing-brand{font-size:1.1rem}.landing-lang button{font-size:.85rem}.landing-nav-inner{padding:.85rem 1rem}.focus-intro h1{font-size:1.6rem}.season-heading h1{font-size:1.8rem}.season-heading>button{width:100%}.season-toolbar{padding:1rem;gap:.9rem}.season-plan-actions{width:100%;gap:.5rem}.season-plan-actions .season-menu{margin-left:auto}.season-tabs{gap:.2rem}.season-tabs>button:not(.btn){font-size:.9rem;padding:.7rem .5rem}.season-tabs>.btn{margin-top:.5rem;width:100%}.season-tabs>.spacer{display:none}.season-filterbar,.season-filterbar:has(#seasonStatusBox[hidden]){grid-template-columns:1fr 1fr;gap:.7rem}.season-filterbar>div:first-child{grid-column:1/-1}.season-filterbar>#seasonStatusBox{grid-column:auto}.season-race{grid-template-columns:40px minmax(0,1fr);gap:.7rem}.season-race-week{padding-right:.5rem}.season-race-week strong{font-size:1.2rem}.season-race-info h3{font-size:1rem}.season-race-actions,.catalog-race .season-race-actions{grid-column:2;grid-row:auto}.season-race-date{grid-column:2;grid-row:auto}.catalog-race{grid-template-columns:40px minmax(0,1fr)}.season-race-meta{font-size:.84rem;gap:.2rem .7rem}.season-source{align-items:start;flex-direction:column;padding:1rem}.season-empty{padding:1.5rem 1rem}.season-welcome h2{font-size:1.7rem}.season-editor .mfoot{padding:.8rem;gap:.5rem}.season-editor .mfoot .spacer{display:none}.season-editor .mfoot .btn{flex:1}.shared-season{padding:0 1rem 2rem}.shared-season-head{align-items:start;flex-wrap:wrap}.shared-season-head .landing-brand{width:100%}.shared-season .season-race{grid-template-columns:40px minmax(0,1fr)}.season-overview-strip{padding:1.2rem}.season-overview-strip>.btn{width:100%}}

/* Saved plans use a compact working header, not the first-use introduction. */
.season-heading.has-plan{flex-wrap:nowrap;align-items:center;gap:.75rem}.season-heading.has-plan h1{font-size:1.75rem;margin:0 0 .2rem}.season-heading.has-plan p{font-size:.9rem}.season-heading.has-plan>button{width:auto;flex-shrink:0}.season-page:has(.has-plan){gap:1rem}.season-page:has(.has-plan) .season-week-rail button{min-height:76px;padding:.45rem}.season-page:has(.has-plan) .season-toolbar{padding:1rem}.season-page:has(.has-plan) .season-tabs{padding-bottom:.4rem}
@media(max-width:550px){.season-heading.has-plan h1{font-size:1.5rem}.season-heading.has-plan>button{font-size:.85rem;padding:.6rem .75rem}.season-page:has(.has-plan) .season-toolbar{padding:.85rem}.season-page:has(.has-plan) .season-heading{margin:0}}
