/* SOURCE bte-contrast-canonical-r31.css — preserved in original cascade order */
/* R31: Single colour ownership for public surfaces. Explicitly scoped, never depend on inherited theme colours. */
body.bte-app { --bte-text-on-light:#172838; --bte-muted-on-light:#415568; --bte-text-on-dark:#f7f7fc; --bte-muted-on-dark:#cbd4e2; }
/* Default standard reading areas and light tables. */
body.bte-app .bte-white-panel:not(.bte-r25-wind-history):not(.bte-r25-tide),
/* R46: removed incorrect blanket light-card text assignment; surface owns colour. */
/* Hourly forecast has a light card; make the body and each row own the light background, overriding old dark table theme. */
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window,body.bte-app[data-bte-page="weather"] .bte-r25-riding-window .table-responsive{background:#fff!important;color:#172838!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window :is(table,thead,tbody,tr,td,th) {background-color:#fff!important;color:#172838!important;-webkit-text-fill-color:#172838!important;opacity:1!important;--bs-table-bg:#fff;--bs-table-color:#172838;}
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window tbody tr:nth-child(even) td {background-color:#f1f5f9!important;--bs-table-bg:#f1f5f9;}
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window :is(td,th){border-bottom:1px solid #d5dfe7!important;padding:12px 14px!important;white-space:nowrap;}
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window a {color:#5730a8!important;-webkit-text-fill-color:#5730a8!important;text-decoration:underline!important;font-weight:700;}
body.bte-app[data-bte-page="weather"] .bte-r25-riding-window a:is(:hover,:focus-visible){color:#2f165f!important;-webkit-text-fill-color:#2f165f!important;}
/* Dark weather cards: prevent global light-panel heading rules from painting navy onto midnight backgrounds. */
body.bte-app[data-bte-page="weather"] :is(.bte-r25-wind-history,.bte-r25-tide) {color:#f7f7fc!important;}
body.bte-app[data-bte-page="weather"] :is(.bte-r25-wind-history,.bte-r25-tide) :is(h1,h2,h3,h4,h5,h6,strong){color:#f7f7fc!important;-webkit-text-fill-color:#f7f7fc!important;opacity:1!important;}
body.bte-app[data-bte-page="weather"] :is(.bte-r25-wind-history,.bte-r25-tide) :is(p,small,li,dt,dd,label,span,summary){color:#cbd4e2!important;-webkit-text-fill-color:#cbd4e2!important;opacity:1!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-tide .bte-kicker{color:#c6a8ef!important;-webkit-text-fill-color:#c6a8ef!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-tide a:not(.btn){color:#dbc2ff!important;-webkit-text-fill-color:#dbc2ff!important;text-decoration:underline!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-tide a:not(.btn):is(:hover,:focus-visible){color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-wind-history :is(.btn-outline-light,[data-weather-window]){color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-wind-history :is(.btn-outline-light,[data-weather-window]):is(:hover,:focus-visible){background:#48306d!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}
/* Gear inventory is a deliberate DARK surface, not a white panel. */
body.bte-app[data-bte-page="equipment"] .bte-gear-item{background:#1b1823!important;color:#f9f7fc!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item :is(h2,h3,h4,h5,h6){color:#f9f7fc!important;-webkit-text-fill-color:#f9f7fc!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item>p{color:#d0b4ef!important;-webkit-text-fill-color:#d0b4ef!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item>strong{color:#d9b9ff!important;-webkit-text-fill-color:#d9b9ff!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item :is(details,summary,p,dt,dd,small,span){color:#e0dbe9!important;-webkit-text-fill-color:#e0dbe9!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item summary:is(:hover,:focus-visible){color:#fff!important;-webkit-text-fill-color:#fff!important;text-decoration:underline;cursor:pointer;}
body.bte-app[data-bte-page="equipment"] .bte-gear-heading :is(h1,h2,h3,p,.bte-kicker){color:#f8fbff!important;-webkit-text-fill-color:#f8fbff!important;text-shadow:0 2px 10px #0008!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-heading .btn-bte-outline{background:#20182dd9!important;color:#fff!important;-webkit-text-fill-color:#fff!important;border:1px solid #c6aadf!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-heading .btn-bte-outline:is(:hover,:focus-visible){background:#57359b!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-feature :is(h2,h3,h4,p,small,figcaption){color:#f6f3fb!important;-webkit-text-fill-color:#f6f3fb!important;opacity:1!important;}
/* Generic dark cards used across other pages: prefer contrast consistent with their actual surface. */
body.bte-app :is(.bte-dark-panel,.bte-dark-card,.bte-feature-band) :is(h1,h2,h3,h4,h5,h6,strong){color:#faf9ff!important;-webkit-text-fill-color:#faf9ff!important;opacity:1!important;}
body.bte-app :is(.bte-dark-panel,.bte-dark-card,.bte-feature-band) :is(p,small,li,span){color:#dce1ec!important;-webkit-text-fill-color:#dce1ec!important;opacity:1!important;}
body.bte-app a:focus-visible,body.bte-app button:focus-visible {outline:3px solid #f0a64a!important;outline-offset:3px!important;}
@media(max-width:767px){body.bte-app[data-bte-page="weather"] .bte-r25-riding-window :is(td,th){padding:10px 12px!important;}}

/* R32 verified surface rules: measurement caption on white, labels on dark cards. */
body.bte-app[data-bte-page="weather"] .bte-r25-conditions #weather-conditions > .col-12.small { color:#405368!important;-webkit-text-fill-color:#405368!important;opacity:1!important; }
body.bte-app[data-bte-page="weather"] .bte-r25-conditions #weather-conditions .rounded[style*="background:#1c1828"] :is(.small,.text-secondary) {color:#d8d2e0!important;-webkit-text-fill-color:#d8d2e0!important;opacity:1!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-conditions #weather-conditions .rounded[style*="background:#1c1828"] strong {color:#fff!important;-webkit-text-fill-color:#fff!important;}

/* R33: exact dark surface text ownership, including nested B6 typography rules. */
body.bte-app[data-bte-page="weather"] :is(.bte-r25-wind-history,.bte-r25-tide) :is(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.bte-kicker) { color:#f8f7ff!important; -webkit-text-fill-color:#f8f7ff!important; opacity:1!important; }
body.bte-app[data-bte-page="weather"] :is(.bte-r25-wind-history,.bte-r25-tide) :is(p,.small,small,#weather-history-source,#bte-tide-reference) { color:#dce2ef!important; -webkit-text-fill-color:#dce2ef!important; opacity:1!important; }
body.bte-app[data-bte-page="weather"] .bte-r25-wind-history svg text { fill:#dce2ef!important; }
body.bte-app[data-bte-page="weather"] .bte-r25-conditions #weather-conditions .rounded .small { color:#dce2ef!important; -webkit-text-fill-color:#dce2ef!important; }
body.bte-app[data-bte-page="weather"] .bte-r25-conditions #weather-conditions .col-12.small { color:#425468!important; -webkit-text-fill-color:#425468!important; }
/* R37 root-cause fixes: light data tables remain readable inside light panels. */
body.bte-app .bte-white-panel table.table :is(thead,tbody,tr,td,th){background-color:#fff!important;color:#193047!important;-webkit-text-fill-color:#193047!important;--bs-table-bg:#fff!important;--bs-table-color:#193047!important;}
body.bte-app .bte-white-panel table.table tbody tr:nth-child(even) :is(td,th){background-color:#eef3f7!important;--bs-table-bg:#eef3f7!important;}
body.bte-app .bte-white .bte-section-heading > p:not(.bte-kicker){color:#40566d!important;-webkit-text-fill-color:#40566d!important;opacity:1!important;}
body.bte-app .bte-home-performance a.btn-light{background:#fff!important;color:#142b3c!important;-webkit-text-fill-color:#142b3c!important;}
body.bte-app .bte-home-performance a.btn-light:is(:hover,:focus-visible){background:#e8eef5!important;color:#101f33!important;-webkit-text-fill-color:#101f33!important;}
/* Source comparison is dark even though legacy markup calls it a white panel. */
body.bte-app[data-bte-page="weather"] .bte-r25-source-comparison{background:#101521!important;color:#f2f5fc!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-source-comparison :is(summary,h2,h3,h4,p,small,span,li,td,th){color:#eff3fd!important;-webkit-text-fill-color:#eff3fd!important;opacity:1!important;}
body.bte-app[data-bte-page="weather"] .bte-r25-source-comparison :is(summary,a):is(:hover,:focus-visible){color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app .bte-skip:focus-visible{background:#fff!important;color:#092136!important;-webkit-text-fill-color:#092136!important;}


/* SOURCE bte-surface-contrast-r34.css — preserved in original cascade order */
/* R34: explicit surface ownership, imagery stacking; no weather-data or OCR changes. */
/* Make picture layers visible ABOVE opaque section backgrounds, BELOW text. */
body.bte-app .bte-home-hero{isolation:isolate!important;position:relative!important;}
body.bte-app .bte-home-hero::before{z-index:0!important;content:""!important;position:absolute!important;inset:0!important;background:linear-gradient(90deg,rgba(5,11,22,.87),rgba(5,11,22,.63) 48%,rgba(5,11,22,.05) 100%),url('../img/homepage-hero.webp') center 43% / cover no-repeat!important;opacity:1!important;filter:none!important;}
body.bte-app .bte-home-hero::after{z-index:0!important;pointer-events:none!important;}
body.bte-app .bte-home-hero>.container{position:relative!important;z-index:1!important;}
body.bte-app .bte28-intro{isolation:isolate!important;position:relative!important;}
body.bte-app .bte28-intro>.bte28-intro-photo{z-index:0!important;opacity:1!important;filter:none!important;}
body.bte-app .bte28-intro>.bte28-intro-content{z-index:2!important;position:relative!important;}
body.bte-app .bte28-intro::before,body.bte-app .bte28-intro::after{z-index:1!important;pointer-events:none!important;}
body.bte-app .bte-rider-heading,body.bte-app .bte-gear-heading{isolation:isolate!important;position:relative!important;}
body.bte-app .bte-rider-heading::before,body.bte-app .bte-gear-heading::before{z-index:0!important;}
body.bte-app .bte-rider-heading>* ,body.bte-app .bte-gear-heading>* {position:relative!important;z-index:1!important;}
body.bte-app .bte-coast-hero>img,body.bte-app .bte-glossary-hero>img{z-index:0!important;}
body.bte-app .bte-coast-hero::after,body.bte-app .bte-glossary-hero::after{z-index:1!important;}
body.bte-app .bte-coast-hero>div,body.bte-app .bte-glossary-hero>div{position:relative!important;z-index:2!important;}
/* DARK: independent of ancestor .bte-white rules. */
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide,.bte-gear-item,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.bte-coast-page,.bte-coast-outro,.bte-rider-heading,.bte-gear-heading) {color:#f5f6fc!important;}
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide,.bte-gear-item,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.bte-coast-page,.bte-coast-outro,.bte-rider-heading,.bte-gear-heading) :is(h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,strong) {color:#f7f8ff!important;-webkit-text-fill-color:#f7f8ff!important;opacity:1!important;}
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide,.bte-gear-item,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.bte-coast-page,.bte-coast-outro,.bte-rider-heading,.bte-gear-heading) :is(p,small,.small,span,li,dt,dd,figcaption,summary,label) {color:#dce3f0!important;-webkit-text-fill-color:#dce3f0!important;opacity:1!important;}
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide) :is(#weather-history-source,#bte-tide-reference,.text-secondary,.text-muted) {color:#dce3f0!important;-webkit-text-fill-color:#dce3f0!important;opacity:1!important;}
body.bte-app .bte-r25-tide :is(a:not(.btn),a:not(.btn) span){color:#e3c7ff!important;-webkit-text-fill-color:#e3c7ff!important;}
body.bte-app .bte-r25-tide a:not(.btn):hover,body.bte-app .bte-r25-tide a:not(.btn):focus-visible{color:white!important;-webkit-text-fill-color:white!important;}
/* LIGHT: set standard panels separately. */
body.bte-app :is(.bte-white-panel,.bte-r25-riding-window,.bte-r25-conditions,.bte-section-heading):not(.bte-r25-wind-history):not(.bte-r25-tide) {color:#193047!important;}
body.bte-app :is(.bte-r25-riding-window,.bte-r25-conditions) :is(h1,h2,h3,h4,h5,h6){color:#173047!important;-webkit-text-fill-color:#173047!important;opacity:1!important;}
body.bte-app .bte-r25-conditions #weather-conditions > .col-12.small {color:#405268!important;-webkit-text-fill-color:#405268!important;}
body.bte-app .bte-r25-conditions #weather-conditions .rounded[style*="background:#1c1828"] :is(p,small,.small,span){color:#dce3f0!important;-webkit-text-fill-color:#dce3f0!important;}
body.bte-app .bte-r25-conditions #weather-conditions .rounded[style*="background:#1c1828"] strong{color:#fff!important;-webkit-text-fill-color:#fff!important;}
/* Interactive text legibility on dark backgrounds and hover. */
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide,.bte-gear-item,.bte-dark-panel,.bte-feature-band) :is(a,button){opacity:1!important;}
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide,.bte-gear-item,.bte-dark-panel,.bte-feature-band) a:hover{color:#fff!important;-webkit-text-fill-color:#fff!important;}
@media(max-width:700px){body.bte-app .bte-home-hero::before{background-position:58% center!important;}}


/* SOURCE bte-dark-text-r35.css — preserved in original cascade order */
/* R35 targeted readability repair. No data, OCR, routing or image changes. */
/* Dark component surfaces must own their foreground, even inside white page wrappers. */
body.bte-app :is(.coach-panel){color:#f3f1fa!important;-webkit-text-fill-color:#f3f1fa!important;opacity:1!important;}
body.bte-app :is(.coach-panel) :is(p,small,span,strong,em,li,dt,dd){color:#f3f1fa!important;-webkit-text-fill-color:#f3f1fa!important;opacity:1!important;}
/* Explicitly repair review archive cards, including small captions. */
body.bte-app .bte-review-visual-card{color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app .bte-review-visual-card :is(span,strong,small){color:#f6f8ff!important;-webkit-text-fill-color:#f6f8ff!important;opacity:1!important;text-shadow:0 1px 2px #00101899!important;}
body.bte-app .bte-review-visual-card small{color:#e1e9f2!important;-webkit-text-fill-color:#e1e9f2!important;}
/* Header and data source content: proper white text on dark station/tide panels. */
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide) :is(h1,h2,h3,h4,h5,h6,.bte-kicker){color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important;}
body.bte-app :is(.bte-r25-wind-history,.bte-r25-tide) :is(p,small,span,li,label,#weather-history-source,#bte-tide-reference,#bte-tide-status){color:#e3e8f1!important;-webkit-text-fill-color:#e3e8f1!important;opacity:1!important;}
/* Six-axis spider chart legend, hover text, toggles */
body.bte-app .bte-interactive-chart .bte-chart-legend label{color:#f2edfc!important;-webkit-text-fill-color:#f2edfc!important;opacity:1!important;}
body.bte-app .bte-interactive-chart .bte-chart-legend label:hover,body.bte-app .bte-interactive-chart .bte-chart-legend label:focus-within{color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app .bte-interactive-chart [data-chart-status]{color:#e5def1!important;-webkit-text-fill-color:#e5def1!important;opacity:1!important;}
/* Equipment hero and photographed kite family cards. */
body.bte-app[data-bte-page="equipment"] .bte-gear-heading :is(h1,h2,h3,p,.bte-kicker),
body.bte-app[data-bte-page="equipment"] .bte-gear-feature :is(h2,h3,h4,p,span,figcaption,small,.bte-kicker){color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important;text-shadow:0 1px 4px #08111b77;}
body.bte-app[data-bte-page="equipment"] .bte-gear-feature .bte-gear-sizes{color:#e6c9ff!important;-webkit-text-fill-color:#e6c9ff!important;}
/* Inventory cards: every recorded family, size and expandable details. */
body.bte-app[data-bte-page="equipment"] .bte-gear-item{color:#f5f1fa!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item :is(h4,h3,strong){color:#f9f6ff!important;-webkit-text-fill-color:#f9f6ff!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item>p{color:#dcc4ef!important;-webkit-text-fill-color:#dcc4ef!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item :is(summary,details,dl,dt,dd,details p,small,span){color:#e9e3f2!important;-webkit-text-fill-color:#e9e3f2!important;opacity:1!important;}
body.bte-app[data-bte-page="equipment"] .bte-gear-item summary:is(:hover,:focus-visible){color:#fff!important;-webkit-text-fill-color:#fff!important;text-decoration:underline!important;}
/* The entire site uses light-on-dark only for dark cards; don't invert light panels. */
body.bte-app .bte-r25-conditions #weather-conditions .rounded[style*="background:#1c1828"] :is(p,small,span){color:#e3e8f1!important;-webkit-text-fill-color:#e3e8f1!important;}
@media (prefers-contrast:more){body.bte-app .bte-review-visual-card small{color:#fff!important;-webkit-text-fill-color:#fff!important}}

/* R38 Season page: dark statistic/location cards and month panels own light text.
   The legacy R21/R24 rules set dark p/label colours despite dark gradients. */
body.bte-app[data-bte-page="season"] .bte-card {
  color:#f7f9ff!important;
  -webkit-text-fill-color:#f7f9ff!important;
}
body.bte-app[data-bte-page="season"] .bte-card :is(h2,h3,h4,strong) {
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  opacity:1!important;
}
body.bte-app[data-bte-page="season"] .bte-card :is(p,small,span,li) {
  color:#e2e9f5!important;
  -webkit-text-fill-color:#e2e9f5!important;
  opacity:1!important;
}
/* R44: Season's white-panel heading/body now inherit the R42 light-surface palette. */
body.bte-app[data-bte-page="season"] .bte-month-grid :is(span,strong,small) { color:#e2e9f5!important;-webkit-text-fill-color:#e2e9f5!important;opacity:1!important; }
body.bte-app[data-bte-page="season"] .bte-month {
  background:#222330!important;
  border-color:#556075!important;
}
body.bte-app[data-bte-page="season"] .bte-month-meter {
  background:#3a4357!important;
}
/* Keep the season breakdown's actual light table cells dark-on-light. */
body.bte-app[data-bte-page="season"] .bte-white-panel table.table :is(th,td) {
  color:#193047!important;
  -webkit-text-fill-color:#193047!important;
}



/* R44: removed obsolete R41 global foreground forcing, which incorrectly
   treated opaque white cards as dark and caused cascade contradictions.
   R42's surface-aware ownership immediately below is retained. */
/* R42: surface-aware contrast: white-panel means white except the three
   explicit dark-weather sections. Earlier releases wrongly forced near-white
   foregrounds into real #fff panels. Keep this as the final colour owner. */
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) {
 color:#193047!important;-webkit-text-fill-color:#193047!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) > :is(h1,h2,h3,h4,h5,h6,p,small,span,label,li,dt,dd,strong,em,summary,output) {
 color:#193047!important;-webkit-text-fill-color:#193047!important;opacity:1!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) > :is(.bte-kicker,.text-muted,.small,.form-text) {
 color:#415568!important;-webkit-text-fill-color:#415568!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) > a:not(.btn) {
 color:#45318a!important;-webkit-text-fill-color:#45318a!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) > a:not(.btn):is(:hover,:focus-visible){color:#25155b!important;-webkit-text-fill-color:#25155b!important;}
/* Named dark inset surfaces and controls must stay light within a white card. */
body.bte-app .bte-white-panel :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card,.bte-chart-legend) :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,em,li,dt,dd,label,output) {
 color:#edf0f8!important;-webkit-text-fill-color:#edf0f8!important;
}
body.bte-app .bte-white-panel :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card,.bte-chart-legend) a:not(.btn) {
 color:#e6c9ff!important;-webkit-text-fill-color:#e6c9ff!important;
}
/* Restores contrast for Equipment counts on the light inventory heading. */
body.bte-app[data-bte-page=equipment] .bte-gear-category span {color:#425568!important;-webkit-text-fill-color:#425568!important;}
/* Inset dark notices can themselves contain all text (no nested p element). */
body.bte-app .bte-white-panel :is(.bte-dark-panel,.bte-dark-card) {
 color:#edf0f8!important;-webkit-text-fill-color:#edf0f8!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) :is(.bte-dark-panel,.bte-dark-card) {
 color:#edf0f8!important;-webkit-text-fill-color:#edf0f8!important;
}

/* R43 Rider: the portrait and copy belong to a dark, photographic story surface.
   Explicit colours prevent legacy light-section typography from leaking in. */
body.bte-app[data-bte-page="rider"] .bte-rider-story :is(h2,h3,.bte-kicker),
body.bte-app[data-bte-page="rider"] .bte-rider-heading :is(h1,.bte-kicker){color:#f9faff!important;-webkit-text-fill-color:#f9faff!important;}
body.bte-app[data-bte-page="rider"] .bte-rider-story > div > p:not(.bte-kicker),
body.bte-app[data-bte-page="rider"] .bte-rider-intro :is(p,.bte-rider-identity),
body.bte-app[data-bte-page="rider"] .bte-rider-method article p {color:#e2e8f2!important;-webkit-text-fill-color:#e2e8f2!important;}
body.bte-app[data-bte-page="rider"] .bte-rider-story figcaption,
body.bte-app[data-bte-page="rider"] .bte-rider-milestones :is(p,small),
body.bte-app[data-bte-page="rider"] .bte-rider-action figcaption {color:#d7dce7!important;-webkit-text-fill-color:#d7dce7!important;}
body.bte-app[data-bte-page="rider"] .bte-rider-method :is(h2,h3) {color:#f9faff!important;-webkit-text-fill-color:#f9faff!important;}


/* R45 — Progress / Sessions scoped dark-card colour ownership.
   These two card families must never inherit the light panel's navy text.
   Keep light analysis and data tables under their existing light-panel rules. */
body.bte-app[data-bte-page="progress"] .bte-card:not(.bte-gear-item),
body.bte-app[data-bte-page="sessions"] .v5-feature {
  background:linear-gradient(150deg,#172637,#0b1622)!important;
  border:1px solid #50657b!important;
  color:#f5f9ff!important;
  -webkit-text-fill-color:#f5f9ff!important;
  border-radius:16px!important;
}
body.bte-app[data-bte-page="progress"] .bte-card:not(.bte-gear-item) :is(h1,h2,h3,h4,h5,h6,strong,.bte-big-number,.bte-stat-value),
body.bte-app[data-bte-page="sessions"] .v5-feature :is(h1,h2,h3,h4,h5,h6,strong,.v5-big-number) {
  color:#fff!important;-webkit-text-fill-color:#fff!important;opacity:1!important;
}
body.bte-app[data-bte-page="progress"] .bte-card:not(.bte-gear-item) :is(p,small,span,li,dt,dd,label,.bte-kicker),
body.bte-app[data-bte-page="sessions"] .v5-feature :is(p,small,span,li,dt,dd,label,.v5-feature-number) {
  color:#d7e4f1!important;-webkit-text-fill-color:#d7e4f1!important;opacity:1!important;
}
body.bte-app[data-bte-page="sessions"] a.v5-feature,
body.bte-app[data-bte-page="sessions"] .v5-feature :is(a,.v5-feature-action),
body.bte-app[data-bte-page="progress"] .bte-card a {
  color:#d3eaff!important;-webkit-text-fill-color:#d3eaff!important;text-decoration-color:currentColor!important;
}
body.bte-app[data-bte-page="sessions"] a.v5-feature:is(:hover,:focus-visible),
body.bte-app[data-bte-page="progress"] .bte-card:is(:hover,:focus-within) {
  background:linear-gradient(150deg,#20354b,#0d1b2a)!important;
  border-color:#b5d4ef!important;
}
body.bte-app[data-bte-page="sessions"] a.v5-feature:focus-visible,
body.bte-app[data-bte-page="progress"] .bte-card a:focus-visible {
  outline:3px solid #f5d48a!important;outline-offset:3px!important;
}


/* R47 SURFACE-CONTRACT REPAIR: generic .bte-card is not intrinsically dark.
   Explicitly dark components own light ink; white .bte-card retains foundation dark ink.
   R46 DARK SURFACE CONTRACT: foreground is owned by the actual dark component.
   Overrides old presentation/legacy light-text defaults without changing all page text. */
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-review-visual-card,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.coach-panel,.bte-gear-item,.bte-r25-wind-history,.bte-r25-tide,.bte-r25-source-comparison,.bte-month,.bte-interactive-chart) {
  --bte-dark-heading:#f8faff;
  --bte-dark-body:#e0e9f4;
  --bte-dark-link:#e3c5ff;
  color:var(--bte-dark-body)!important;
  -webkit-text-fill-color:var(--bte-dark-body)!important;
}
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-review-visual-card,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.coach-panel,.bte-gear-item,.bte-r25-wind-history,.bte-r25-tide,.bte-r25-source-comparison,.bte-month,.bte-interactive-chart) :is(h1,h2,h3,h4,h5,h6,strong,.bte-big-number,.bte-stat-value,.v5-big-number) {
  color:var(--bte-dark-heading)!important;
  -webkit-text-fill-color:var(--bte-dark-heading)!important;
  opacity:1!important;
}
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-review-visual-card,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.coach-panel,.bte-gear-item,.bte-r25-wind-history,.bte-r25-tide,.bte-r25-source-comparison,.bte-month,.bte-interactive-chart) :is(p,span,small,li,dt,dd,label,summary,figcaption,.text-muted,.text-secondary,.bte-muted,.bte-kicker,.form-text) {
  color:var(--bte-dark-body)!important;
  -webkit-text-fill-color:var(--bte-dark-body)!important;
  opacity:1!important;
}
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-review-visual-card,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.coach-panel,.bte-gear-item,.bte-r25-wind-history,.bte-r25-tide,.bte-r25-source-comparison,.bte-month,.bte-interactive-chart) a:not(.btn) {
 color:var(--bte-dark-link)!important;-webkit-text-fill-color:var(--bte-dark-link)!important;
}
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-review-visual-card,.bte-dark-panel,.bte-dark-card,.bte-feature-band,.coach-panel,.bte-gear-item,.bte-r25-wind-history,.bte-r25-tide,.bte-r25-source-comparison,.bte-month,.bte-interactive-chart) a:not(.btn):is(:hover,:focus-visible){color:#fff!important;-webkit-text-fill-color:#fff!important;}
/* Explicit light islands within dark cards: text must follow the visible white background. */
body.bte-app :is(body[data-bte-page="sessions"] .v5-feature,.bte-dark-panel,.bte-interactive-chart) :is(.table,.table-responsive,.bg-white,.bte-light-panel,.bte-r25-riding-window) :is(td,th,p,span,small,strong,label,h2,h3,h4) {
 color:#193047!important;-webkit-text-fill-color:#193047!important;
}
/* Chart.js/SVG labels are drawn using their own paint values; do not flood these. */

/* R47: Opaque light surfaces own dark ink, including when nested inside dark containers.
   Do NOT set foreground for dark inset notices, charts or photo cards. */
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) {
  color:#193047!important;
  -webkit-text-fill-color:#193047!important;
}
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) > :is(h1,h2,h3,h4,h5,h6,p,small,span,strong,label,li,figcaption,summary),
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) :is(.text-muted,.form-text) {
  color:#253c4e!important;
  -webkit-text-fill-color:#253c4e!important;
  opacity:1!important;
}
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) :is(table.table,table.table-striped,thead,tbody,tr,td,th) {
  color:#193047!important;
  -webkit-text-fill-color:#193047!important;
}
/* Generic cards can be white: restrict the light contract to non-dark sections. */
body.bte-app:not([data-bte-page="season"]):not([data-bte-page="progress"]) .bte-card:not(.bte-dark-card):not(.bte-review-visual-card) {
  color:#193047!important;-webkit-text-fill-color:#193047!important;
}
body.bte-app:not([data-bte-page="season"]):not([data-bte-page="progress"]) .bte-card:not(.bte-dark-card):not(.bte-review-visual-card) > :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,label,li) {
  color:#253c4e!important;-webkit-text-fill-color:#253c4e!important;
}
/* Explicit dark inset surfaces retain light ink; this comes after the light contract. */
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card,.bte-chart-legend) {
  color:#e4edf8!important;-webkit-text-fill-color:#e4edf8!important;
}
body.bte-app :is(.bte-white,.bte-white-panel,.bg-white,.bte-light-panel) :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card,.bte-chart-legend) :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,li,label) {
  color:#e4edf8!important;-webkit-text-fill-color:#e4edf8!important;
}
/* R61: Obsolete R47 white Season-card declarations removed. R53 gives
   the actual dark statistic cards their foreground and background together. */
/* Dark notes within white panels override the white-panel descendant rules. */
body.bte-app .bte-white-panel :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card) :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,li,label) {
 color:#e4edf8!important;-webkit-text-fill-color:#e4edf8!important;
}
body.bte-app .bte-white-panel:not(.bte-r25-tide):not(.bte-r25-wind-history):not(.bte-r25-source-comparison) :is(.bte-dark-panel,.bte-dark-card,.bte-review-visual-card) :is(h1,h2,h3,h4,h5,h6,p,span,small,strong,li,label) {
 color:#e4edf8!important;-webkit-text-fill-color:#e4edf8!important;
}

/* R48: chart controls have explicit readable ink independently of generic card styles.
   Native option popups use the same dark surface as the closed control. */
body.bte-app .bte-interactive-chart .bte-chart-legend label,
body.bte-app .bte-interactive-chart .bte-chart-legend label :is(span,small,strong),
body.bte-app .bte-interactive-chart > label,
body.bte-app .bte-interactive-chart > label :is(span,small,strong),
body.bte-app .bte-interactive-chart [data-chart-status] {
  color:#f4efff!important;
  -webkit-text-fill-color:#f4efff!important;
  opacity:1!important;
}
body.bte-app .bte-interactive-chart :is(select,[data-chart-ride],[data-chart-jump]),
body.bte-app .bte-interactive-chart select option,
body.bte-app .bte-interactive-chart select optgroup {
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  background-color:#251b34!important;
  opacity:1!important;
  color-scheme:dark;
}
body.bte-app .bte-interactive-chart select:focus-visible {
  outline:3px solid #e2bbff!important;
  outline-offset:2px!important;
}
body.bte-app .bte-interactive-chart .bte-chart-legend label:is(:hover,:focus-within){
  color:#fff!important;-webkit-text-fill-color:#fff!important;
  background-color:#3b2b51!important;
}

/* R49 structural chart control correction: not dependent on inherited light/dark panel styles. */
body.bte-app .bte-interactive-chart .bte-chart-picker{margin:18px 0 8px;display:flex;flex-direction:column;gap:9px;max-width:680px}
body.bte-app .bte-interactive-chart .bte-chart-picker-label,
body.bte-app .bte-interactive-chart .bte-chart-legend label,
body.bte-app .bte-interactive-chart [data-chart-status]{color:#f8f4ff!important;-webkit-text-fill-color:#f8f4ff!important;opacity:1!important}
body.bte-app .bte-interactive-chart select.bte-chart-native-select,
body.bte-app .bte-interactive-chart select.bte-chart-native-select option,
body.bte-app .bte-interactive-chart select.bte-chart-native-select optgroup{background-color:#fff!important;color:#14263a!important;-webkit-text-fill-color:#14263a!important;color-scheme:light!important;opacity:1!important}
body.bte-app .bte-interactive-chart select.bte-chart-native-select:focus-visible{outline:3px solid #d2aaff!important;outline-offset:3px!important}

/* R50: WOO Evidence Lab summary cards: actual dark surfaces, explicit light ink.
   Prevent the light-panel descendants from painting dark navy onto these cards. */
body.bte-app .bte-white-panel.bte-lab #jump-insights .bte-jump-stat {
  background:#1f1a29!important;
  border-color:#51445f!important;
  color:#edf0f8!important;
  -webkit-text-fill-color:#edf0f8!important;
}
body.bte-app .bte-white-panel.bte-lab #jump-insights .bte-jump-stat small {
  display:block;
  color:#c8c4d6!important;
  -webkit-text-fill-color:#c8c4d6!important;
  opacity:1!important;
}
body.bte-app .bte-white-panel.bte-lab #jump-insights .bte-jump-stat strong {
  display:block;
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  opacity:1!important;
}


/* R52: focussed Review & Progress design-system uplift.
   Only presentation elements: does not change metrics, filters or stored evidence. */
body.bte-app[data-bte-page="progress"] .bte-r52-metric {
  position:relative;display:flex;flex-direction:column;justify-content:space-between;
  min-height:216px;padding:clamp(20px,2vw,30px)!important;overflow:hidden;
  background:linear-gradient(155deg,#202332 0%,#181a27 65%,#141723 100%)!important;
  border:1px solid #485368!important;border-radius:18px!important;
  box-shadow:0 10px 28px rgba(10,15,25,.10)!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-metric::before {
  content:"";position:absolute;left:0;top:22px;bottom:22px;width:3px;
  background:#80d9e9;border-radius:0 5px 5px 0;
}
body.bte-app[data-bte-page="progress"] .bte-r52-metric .bte-kicker {
  font-size:.76rem!important;font-weight:750!important;letter-spacing:.13em!important;
  line-height:1.45!important;color:#d5dfef!important;-webkit-text-fill-color:#d5dfef!important;
  opacity:1!important;margin:0 0 18px!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-metric h3 {
  font-size:clamp(1.9rem,3.1vw,3rem)!important;line-height:1.07!important;
  font-weight:750!important;letter-spacing:-.045em!important;margin:0 0 15px!important;
  color:#fff!important;-webkit-text-fill-color:#fff!important;overflow-wrap:anywhere;
}
body.bte-app[data-bte-page="progress"] .bte-r52-metric .bte-r52-metric-detail {
  font-size:.9rem!important;line-height:1.5!important;margin:0!important;
  color:#cdd7e5!important;-webkit-text-fill-color:#cdd7e5!important;opacity:1!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-interpretation {
  margin:16px 0 4px!important;padding:15px 19px!important;
  background:#eef4f8!important;color:#24394d!important;-webkit-text-fill-color:#24394d!important;
  border:1px solid #dce7ed;border-left:4px solid #387d98;border-radius:11px;
  font-size:.94rem!important;line-height:1.55!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-interpretation strong {
  color:#17354b!important;-webkit-text-fill-color:#17354b!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-chart-section {
  border-radius:20px!important;overflow:hidden;
}
body.bte-app[data-bte-page="progress"] .bte-r52-chart-section > h2 {
  font-size:clamp(1.45rem,2.35vw,2.2rem)!important;line-height:1.2!important;
  letter-spacing:-.035em!important;
}
body.bte-app[data-bte-page="progress"] .bte-r52-chart-section > p {
  max-width:96ch;line-height:1.6!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-grid {
  gap:clamp(12px,1.5vw,22px)!important;margin-bottom:clamp(18px,3vw,32px)!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-card {
  min-height:clamp(218px,20vw,300px)!important;
  padding:clamp(20px,2.3vw,34px)!important;border-radius:18px!important;
  border:1px solid rgba(255,255,255,.3)!important;
  box-shadow:0 10px 25px rgba(19,23,34,.15)!important;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-card strong {
  font-size:clamp(1.6rem,2.4vw,2.45rem)!important;
  letter-spacing:-.035em!important;line-height:1.1!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-card small {
  font-size:clamp(.9rem,1.1vw,1.05rem)!important;line-height:1.45!important;
  color:#e7eef6!important;-webkit-text-fill-color:#e7eef6!important;opacity:1!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-card:is(:hover,:focus-visible) {
  transform:translateY(-3px)!important;border-color:#c5def3!important;
  box-shadow:0 15px 30px rgba(18,22,36,.25)!important;
}
body.bte-app[data-bte-page="review"] .bte-review-visual-card:focus-visible {
  outline:3px solid #7e48d5!important;outline-offset:4px!important;
}
@media(max-width:760px) {
 body.bte-app[data-bte-page="progress"] .bte-r52-metric {min-height:184px;padding:22px!important}
 body.bte-app[data-bte-page="review"] .bte-review-visual-card {min-height:205px!important}
}
@media(prefers-reduced-motion:reduce) {
 body.bte-app[data-bte-page="review"] .bte-review-visual-card {transition:none!important;transform:none!important}
}


/* R53: Active V6 Season and Session explorer. Explicit light/dark surfaces. */
body.bte-app[data-bte-page="season"] .bte-r53-season-context{background:#172737!important;border:1px solid #385267!important;border-radius:17px;padding:clamp(18px,2vw,28px);margin:23px 0;color:#eef5fc!important;}
body.bte-app[data-bte-page="season"] .bte-r53-season-context strong{display:block;font-size:clamp(1.12rem,1.7vw,1.45rem);color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app[data-bte-page="season"] .bte-r53-season-context p{color:#deebf4!important;-webkit-text-fill-color:#deebf4!important;line-height:1.65!important;max-width:95ch;margin:.45rem 0 0!important;}
body.bte-app[data-bte-page="season"] .bte-card{display:flex!important;flex-direction:column;justify-content:center;gap:12px;min-height:170px;padding:clamp(20px,2vw,30px)!important;background:linear-gradient(145deg,#202636,#141d2b)!important;border:1px solid #465c71!important;border-radius:17px!important;box-shadow:0 10px 25px rgba(16,35,54,.1)!important;}
body.bte-app[data-bte-page="season"] .bte-card h3{color:#eef7ff!important;-webkit-text-fill-color:#eef7ff!important;margin:0!important;font-size:clamp(1.12rem,1.7vw,1.5rem)!important;}
body.bte-app[data-bte-page="season"] .bte-card p{color:#d0e1ef!important;-webkit-text-fill-color:#d0e1ef!important;font-size:clamp(1rem,1.5vw,1.25rem)!important;line-height:1.5!important;margin:0!important;}
body.bte-app[data-bte-page="season"] .bte-month-grid{gap:clamp(10px,1.4vw,18px)!important;}
body.bte-app[data-bte-page="season"] .bte-month{background:#1d2838!important;border:1px solid #4b6174!important;border-radius:14px!important;padding:clamp(16px,1.7vw,24px)!important;}
body.bte-app[data-bte-page="season"] .bte-month :is(strong,span,small,p){color:#e5eef8!important;-webkit-text-fill-color:#e5eef8!important;opacity:1!important;}
body.bte-app[data-bte-page="season"] .bte-white-panel{border-radius:17px!important;}
body.bte-app[data-bte-page="season"] .bte-white-panel > :is(h2,h3){color:#17334a!important;-webkit-text-fill-color:#17334a!important;}
body.bte-app[data-bte-page="season"] .bte-white-panel > p{color:#2e4c61!important;-webkit-text-fill-color:#2e4c61!important;}
body.bte-app[data-bte-page="sessions"] .bte-r53-session-guide{color:#37556b!important;-webkit-text-fill-color:#37556b!important;font-size:.97rem;line-height:1.6;margin:0 0 22px!important;max-width:95ch;}
body.bte-app[data-bte-page="sessions"] label.form-label{color:#203b50!important;-webkit-text-fill-color:#203b50!important;opacity:1!important;font-weight:700!important;}
body.bte-app[data-bte-page="sessions"] :is(input.form-control,select.form-select){background:#fff!important;color:#1a3449!important;-webkit-text-fill-color:#1a3449!important;border:1px solid #9db5c5!important;border-radius:10px!important;min-height:46px;}
body.bte-app[data-bte-page="sessions"] select.form-select option{background:#fff!important;color:#1a3449!important;}
body.bte-app[data-bte-page="sessions"] #session-result-count{color:#254358!important;-webkit-text-fill-color:#254358!important;font-weight:700;}
body.bte-app[data-bte-page="sessions"] .bte-session-list{border:1px solid #d6e3ec;border-radius:16px;overflow:hidden;box-shadow:0 7px 28px rgba(22,52,72,.05);}
body.bte-app[data-bte-page="sessions"] .bte-session-row{min-height:84px;padding:clamp(15px,1.5vw,23px)!important;background:#fff!important;border-bottom:1px solid #d9e5ec!important;transition:background .16s ease;}
body.bte-app[data-bte-page="sessions"] .bte-session-row:nth-child(even){background:#f5f9fb!important;}
body.bte-app[data-bte-page="sessions"] .bte-session-row:is(:hover,:focus-visible){background:#eaf4fb!important;}
body.bte-app[data-bte-page="sessions"] .bte-session-row .bte-session-index{font-weight:800;color:#285978!important;-webkit-text-fill-color:#285978!important;}
body.bte-app[data-bte-page="sessions"] .bte-session-row .bte-session-info strong,body.bte-app[data-bte-page="sessions"] .bte-session-row .bte-session-height{color:#122f43!important;-webkit-text-fill-color:#122f43!important;font-weight:750!important;}
body.bte-app[data-bte-page="sessions"] .bte-session-row .bte-session-info small{color:#435e71!important;-webkit-text-fill-color:#435e71!important;}
body.bte-app[data-bte-page="sessions"] .bte-session-row:focus-visible{outline:3px solid #854fba!important;outline-offset:-3px!important;}
@media(prefers-reduced-motion:reduce){body.bte-app[data-bte-page="sessions"] .bte-session-row{transition:none!important;}}
/* R53 correction: outrank the older R47 white-season-card rule explicitly. */
body.bte-app[data-bte-page="season"] .bte-white .bte-card:not(.bte-dark-card):not(.bte-month){background:#1c2939!important;background-color:#1c2939!important;color:#eef6ff!important;-webkit-text-fill-color:#eef6ff!important;}
body.bte-app[data-bte-page="season"] .bte-white .bte-card:not(.bte-dark-card):not(.bte-month) :is(h1,h2,h3,h4,h5,h6,strong){color:#fff!important;-webkit-text-fill-color:#fff!important;}
body.bte-app[data-bte-page="season"] .bte-white .bte-card:not(.bte-dark-card):not(.bte-month) :is(p,small,span){color:#d8e7f3!important;-webkit-text-fill-color:#d8e7f3!important;}

/* R54 — Season monthly cards: dark child surfaces inside a light wrapper.
   The legacy :not() light-panel selector has higher specificity than the
   R53 month rules. Anchor the actual month grid to override it safely. */
body.bte-app[data-bte-page="season"] .bte-white-panel #bte-month-grid .bte-month {
  background:#1d2838!important;
  color:#e5eef8!important;
  -webkit-text-fill-color:#e5eef8!important;
}
body.bte-app[data-bte-page="season"] .bte-white-panel #bte-month-grid .bte-month > span,
body.bte-app[data-bte-page="season"] .bte-white-panel #bte-month-grid .bte-month > strong,
body.bte-app[data-bte-page="season"] .bte-white-panel #bte-month-grid .bte-month > small {
  color:#e5eef8!important;
  -webkit-text-fill-color:#e5eef8!important;
  opacity:1!important;
}

/* R59: TRUE LIGHT INSETS. These are #f3effe, #f8f7ff, #f7f5fc and #fff8eb
   in the original component styles; prior releases misclassified them as
   dark merely because they occur within a white panel. One surface contract
   owns ink and background, regardless of their parent. */
body.bte-app :is(.bte-notice,.bte-evidence-field,.bte-jump-detail,.bte-station-status,.bte-rider-note) {
  color:#223448!important;-webkit-text-fill-color:#223448!important;
  border-radius:14px;line-height:1.55;
}
body.bte-app .bte-notice { background:#f3effe!important;border-left-color:#7a45c6!important; }
body.bte-app .bte-evidence-field {background:#f8f7ff!important;border-color:#ded8ef!important;}
body.bte-app .bte-jump-detail {background:#f7f5fc!important;border-color:#e1dbeb!important;}
body.bte-app .bte-station-status {background:#fff8eb!important;}
body.bte-app .bte-rider-note {background:#faf9ff!important;}
body.bte-app :is(.bte-notice,.bte-evidence-field,.bte-jump-detail,.bte-station-status,.bte-rider-note)
  :is(h1,h2,h3,h4,h5,h6,p,strong,span,small,li,dt,dd,label,em,summary,output) {
  color:#223448!important;-webkit-text-fill-color:#223448!important;opacity:1!important;
}
body.bte-app :is(.bte-notice,.bte-evidence-field,.bte-jump-detail,.bte-station-status,.bte-rider-note)
  :is(.text-muted,.text-secondary,.bte-muted,.form-text,.small) {
  color:#44576e!important;-webkit-text-fill-color:#44576e!important;opacity:1!important;
}
body.bte-app :is(.bte-notice,.bte-evidence-field,.bte-jump-detail,.bte-station-status,.bte-rider-note) a:not(.btn) {
  color:#583193!important;-webkit-text-fill-color:#583193!important;
  text-decoration:underline;text-underline-offset:2px;
}
body.bte-app :is(.bte-notice,.bte-evidence-field,.bte-jump-detail,.bte-station-status,.bte-rider-note) a:not(.btn):is(:hover,:focus-visible) {
  color:#2c1758!important;-webkit-text-fill-color:#2c1758!important;
}
/* Better rhythm for the evidence suite without touching measurements. */
body.bte-app .bte-evidence-grid{gap:clamp(10px,1.25vw,18px)!important;}
body.bte-app .bte-evidence-field{padding:clamp(16px,1.55vw,23px)!important;box-shadow:0 5px 16px rgba(25,33,70,.045);}
body.bte-app .bte-evidence-field > strong{font-weight:780!important;font-size:clamp(1.05rem,1.45vw,1.32rem)!important;line-height:1.25!important;overflow-wrap:anywhere;}
body.bte-app .bte-evidence-field > span{letter-spacing:.045em!important;font-size:.78rem!important;}
@media(max-width:560px){body.bte-app .bte-evidence-grid{grid-template-columns:1fr!important;}}

/* R60 — full-frame coaching/evidence notice banners.
   A notice is a block-level status banner, not a narrow reading paragraph.
   Respect its containing panel and the site's responsive gutters. */
body.bte-app .bte-notice {
  display:block!important;
  box-sizing:border-box!important;
  inline-size:100%!important;
  width:100%!important;
  max-inline-size:none!important;
  max-width:none!important;
  min-width:0!important;
  margin-inline:0!important;
  overflow-wrap:break-word;
}
body.bte-app .bte-white-panel > .bte-notice,
body.bte-app .bte-section-pad > .bte-notice {
  grid-column:1 / -1;
  justify-self:stretch;
}

/* R61 stabilisation: dark descendants own their foreground independently of
   light ancestors. The blanket R42 descendant selector above is now limited
   to direct white-panel copy; dark insets retain the existing owned colours. */

/* R67 | Shared interaction and layout contract. No service or metric changes. */
body.bte-app :is(input:not([type="hidden"]),select,textarea,button,a[href],summary):focus-visible {
  outline:3px solid #b477ee!important;outline-offset:3px!important;
}
body.bte-app :is(input:not([type="hidden"]),select,textarea) {
  max-width:100%;min-width:0;
}
body.bte-app :is(.bte-white-panel,.bte-dark-panel,.bte-dark-card,.bte-card,.bte-notice) {
  min-width:0;overflow-wrap:break-word;
}
body.bte-app :is(.bte-white-panel,.bte-card) :is(h1,h2,h3,h4,h5,h6) {
  text-wrap:balance;
}
body.bte-app .table-responsive {max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
body.bte-app :is(button,.btn,.btn-bte,.nav-link) {touch-action:manipulation;}
@media(max-width:767px){
  body.bte-app :is(.bte-white-panel,.bte-dark-panel,.bte-dark-card,.bte-card){max-width:100%;}
  body.bte-app :is(.bte-white-panel,.bte-dark-panel) :is(pre,code){overflow-wrap:anywhere;}
}
@media(prefers-reduced-motion:reduce){
  body.bte-app :is(button,.btn,.btn-bte,.nav-link){scroll-behavior:auto;}
}
