/* TempoLock R394: one palette contract across all information, profile and admin pages. */
:root{
 --tl-bg:#14120f;--tl-panel:#181512;--tl-panel2:#1f1b17;--tl-text:#f3eee3;
 --tl-muted:#b5ada1;--tl-line:rgba(243,238,227,.16);--tl-accent:#e1472c;
 --tl-gold:#c9a227;--tl-highlight:#2b211a;--tl-on-accent:#14120f;--tl-scheme:dark;
}
html[data-theme="editorial"][data-editorial-variant="paper"]{
 --tl-bg:#f3eee3;--tl-panel:#ece4d6;--tl-panel2:#e7decf;--tl-text:#191713;
 --tl-muted:#675f54;--tl-line:rgba(25,23,19,.2);--tl-accent:#b8432f;
 --tl-gold:#8a6a24;--tl-highlight:#e5d2bb;--tl-on-accent:#fffaf2;--tl-scheme:light;
}
html[data-theme="editorial"][data-editorial-variant="tl_rainbow"]{
 --tl-bg:#0d0d13;--tl-panel:#15151d;--tl-panel2:#1a1a25;--tl-text:#f7f6ff;
 --tl-muted:#b2afc2;--tl-line:rgba(247,246,255,.2);--tl-accent:#ff5d62;
 --tl-gold:#ffd059;--tl-highlight:#272338;--tl-on-accent:#0d0d13;--tl-scheme:dark;
}
html[data-theme="editorial"][data-editorial-variant="tl_retro"]{
 --tl-bg:#10160c;--tl-panel:#182113;--tl-panel2:#1e2a17;--tl-text:#dce8bd;
 --tl-muted:#a4b18d;--tl-line:rgba(220,232,189,.2);--tl-accent:#a7d46b;
 --tl-gold:#d8b35c;--tl-highlight:#25321a;--tl-on-accent:#10160c;--tl-scheme:dark;
}
html[data-theme="editorial"][data-editorial-variant="tl_pastel"]{
 --tl-bg:#f7f1f7;--tl-panel:#efe7f1;--tl-panel2:#e9deec;--tl-text:#332f38;
 --tl-muted:#736a79;--tl-line:rgba(51,47,56,.18);--tl-accent:#8f75bc;
 --tl-gold:#9b643d;--tl-highlight:#ead9ef;--tl-on-accent:#fffaff;--tl-scheme:light;
}
html[data-theme="rainbow"]{
 --tl-bg:#080a12;--tl-panel:#121622;--tl-panel2:#191f2d;--tl-text:#fbfbff;
 --tl-muted:#aeb3c7;--tl-line:#30384f;--tl-accent:#8caeff;
 --tl-gold:#ffd36a;--tl-highlight:#252540;--tl-on-accent:#111629;--tl-scheme:dark;
}
html[data-theme="neon"]{
 --tl-bg:#030509;--tl-panel:#080c12;--tl-panel2:#0b111a;--tl-text:#f4fbff;
 --tl-muted:#91a4b3;--tl-line:#1e5260;--tl-accent:#39f1ff;
 --tl-gold:#ffd75a;--tl-highlight:#09222c;--tl-on-accent:#00171b;--tl-scheme:dark;
}
html[data-theme="studio"]{
 --tl-bg:#090909;--tl-panel:#151515;--tl-panel2:#1e1d1b;--tl-text:#f7f2e8;
 --tl-muted:#aaa294;--tl-line:#3c3933;--tl-accent:#f2ad3d;
 --tl-gold:#f2ad3d;--tl-highlight:#2b261c;--tl-on-accent:#261704;--tl-scheme:dark;
}
html{color-scheme:var(--tl-scheme)}
/* Unify global tokens, even though older pages use different variable names. */
:root{--bg:var(--tl-bg);--panel:var(--tl-panel);--panel2:var(--tl-panel2);--card:var(--tl-panel);--card2:var(--tl-panel2);--edge:var(--tl-line);--line:var(--tl-line);--text:var(--tl-text);--txt:var(--tl-text);--muted:var(--tl-muted);--gold:var(--tl-gold);--warm:var(--tl-gold);--red:var(--tl-accent);--accent:var(--tl-accent)}
body{background:var(--tl-bg)!important;color:var(--tl-text)!important}
/* The masthead is identical on all 29 secondary pages. */
.tlScreenHeader{background:var(--tl-bg);color:var(--tl-text);border-color:var(--tl-line);font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif}
.tlScreenBrand,.tlScreenWordmark,.tlScreenNav a{color:var(--tl-text)}
.tlScreenTick{color:var(--tl-accent)}
.tlScreenTagline,.tlScreenPlayerCopy b{color:var(--tl-muted)}
.tlScreenPlayer,.tlScreenPlayer:hover{color:var(--tl-text)}
.tlScreenPlayer:hover{border-color:var(--tl-line);background:var(--tl-panel2)}
.tlPlayerIcon{border-color:var(--tl-accent);background:var(--tl-panel2);color:var(--tl-gold)}
.tlScreenPlayerCopy small{color:var(--tl-gold)}
.tlScreenDot{color:var(--tl-muted)}
.tlScreenGear svg{stroke:var(--tl-muted)}
.tlScreenBeatGroup i{background:var(--tl-muted);opacity:.53}
.tlScreenBeatGroup i:first-child{background:var(--tl-muted);opacity:.78}
.tlScreenBeatGroup:first-child i:first-child{background:var(--tl-accent);opacity:1}
.tlScreenNav{border-color:var(--tl-line)}
.tlScreenNav a{border-color:var(--tl-line);color:var(--tl-muted)}
.tlScreenNav a:hover,.tlScreenNav a:focus-visible{color:var(--tl-text);background:var(--tl-panel2)}
.tlScreenPlayer:focus-visible{outline-color:var(--tl-accent)}
/* Public player profiles: remove hardcoded blue cards and support light appearances. */
body:has(#playerName){font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif}
body:has(#playerName) .card,body:has(#playerName) .panel,body:has(#playerName) .hero{
 background:var(--tl-panel);border-color:var(--tl-line);color:var(--tl-text);box-shadow:none
}
body:has(#playerName) :is(.streak-box,.daily-numbers>div,.micro-track,.activity-bar-track,.chart-tabs button,.achievement-earned,.achievement-modal,.achievement-close,.achievement-earned-icon,.icon-picker-grid button){background:var(--tl-panel2);border-color:var(--tl-line);color:var(--tl-text)}
body:has(#playerName) :is(.mode-row,.day-row,.level-row,.panel-heading,.achievement-modal-head,.achievement-modal-foot){border-color:var(--tl-line)}
body:has(#playerName) :is(.hero h1,.panel-heading h2,.achievement-modal h2,.achievement-earned-name,.streak-sub b){color:var(--tl-text)}
body:has(#playerName) :is(.eyebrow,.favourite-line,.badge,.streak-head,.achievement-category,.achievement-action span){color:var(--tl-gold)}
body:has(#playerName) :is(.score,.stat strong,.daily-numbers strong,.streak-main strong,.score-summary strong,.activity-value,.days-count){color:var(--tl-gold)}
body:has(#playerName) :is(.avatar,.badge,.achievement-action,.share,.chart-tabs button.selected,.achievement-earned-icon){background:var(--tl-highlight);border-color:var(--tl-line);color:var(--tl-text)}
body:has(#playerName) .avatar{border-color:var(--tl-gold);color:var(--tl-gold);box-shadow:none}
body:has(#playerName) :is(.share,.achievement-action){color:var(--tl-text)}
body:has(#playerName) :is(.chart-tabs button.selected,.icon-picker-grid button[aria-pressed=true]){border-color:var(--tl-accent);color:var(--tl-accent);box-shadow:none}
body:has(#playerName) .icon-picker-grid button:hover{border-color:var(--tl-accent);background:var(--tl-highlight)}
body:has(#playerName) .avatar.can-edit::after{background:var(--tl-accent);color:var(--tl-on-accent);border-color:var(--tl-panel)}
body:has(#playerName) :is(.activity-bar,.micro-track span){background:var(--tl-accent)}
body:has(#playerName) :is(.score-line){stroke:var(--tl-accent)}
body:has(#playerName) :is(.score-point){fill:var(--tl-accent);stroke:var(--tl-panel)}
body:has(#playerName) :is(.score-y-label){fill:var(--tl-muted)}
body:has(#playerName) :is(.score-grid-line){stroke:var(--tl-line)}
body:has(#playerName) :is(.streak-main span,.streak-sub,.quiet,.hero-note,.footer-note,.muted,.panel-heading p,.achievement-earned-desc,.achievement-modal-foot,.icon-picker-grid button small,.chart-footnote){color:var(--tl-muted)}
body:has(#playerName) .achievement-dialog{background:rgba(0,0,0,.7)}
body:has(#playerName) a{color:var(--tl-accent)}
/* Private dashboard matches the same palette as the public profile. */
body.tl-dashboard :is(.card,.panel,.metric,.stat,.table-wrap,.detail-panel,.history-panel){background:var(--tl-panel);border-color:var(--tl-line);color:var(--tl-text)}
body.tl-dashboard :is(.topbar,.period-switch,.mini-switch,.controls button,.outline-button,.small-button){background:var(--tl-panel2);border-color:var(--tl-line);color:var(--tl-text)}
body.tl-dashboard :is(.eyebrow,.score,.metric strong,.period-switch button[aria-pressed=true],.mini-switch button[aria-pressed=true]){color:var(--tl-gold)}
/* Editorial, mode-guide and legal pages retain their content but share TempoLock's appearance. */
body:has(.siteFooter) :is(.hero p,.article p,.article li,.article ul,.article ol,.lede,.sectionIntro p,.guideCard p,.exercise p,.callout,.siteFooter,.footerNav a){color:var(--tl-muted)}
body:has(.siteFooter) :is(.guideCard,.exercise,.callout,.inlineStat div,.infoPanel,.sidebar,.siteFooter,.faqItem,.faqCard){background:var(--tl-panel);border-color:var(--tl-line);color:var(--tl-text)}
body:has(.siteFooter) :is(.guideCard h2,.article h2,.article h3,.sectionIntro h2){color:var(--tl-text)}
body:has(.siteFooter) :is(.eyebrow,.guideCard .tag,.exerciseLabel){color:var(--tl-accent)}
body:has(.siteFooter) :is(.button,.playLink){background:var(--tl-accent);border-color:var(--tl-accent);color:var(--tl-on-accent)!important}
body:has(.siteFooter) .button.secondary{background:var(--tl-panel2);border-color:var(--tl-line);color:var(--tl-text)!important}
body:has(.siteFooter) a:not(.tlScreenBrand):not(.tlScreenPlayer):not(.tlScreenNav a):not(.button):not(.guideCard){color:var(--tl-accent)}
body:has(.siteFooter) .siteFooter{border-color:var(--tl-line)}
/* Stable pill and modal colour contrast in light palettes. */
html[data-editorial-variant="paper"] body:has(#playerName) .achievement-modal,
html[data-editorial-variant="tl_pastel"] body:has(#playerName) .achievement-modal{background:var(--tl-panel)}
@media(max-width:600px){.tlScreenHeader{padding:12px 0 14px}}
/* Responsive legal table: it scrolls inside the document column, not the whole screen. */
.pageShell, .pageShell > *, .article, .legalArticle { min-width:0; }
.legalArticle table { max-width:100%; box-sizing:border-box; }
@media (max-width:820px){ .pageShell{grid-template-columns:minmax(0,1fr)} }
/* Finish theming components whose legacy backgrounds were fixed colours. */
body:has(.siteFooter) :is(.aboutCard,.modeTile,.featureBox,.practicePlan,.pageCta,.relatedLinks a,.legalArticle .notice,.legalArticle code,.legalArticle th,.steps li::before,.meta a){
 background:var(--tl-panel);border-color:var(--tl-line);color:var(--tl-text)
}
body:has(.siteFooter) :is(.aboutCard p,.modeTile p,.featureBox p,.practicePlan p,.pageCta p,.legalArticle .notice,.meta,.siteFooter){color:var(--tl-muted)}
body:has(.siteFooter) :is(.aboutCard h3,.modeTile h3,.featureBox strong,.legalArticle th,.legalArticle .notice strong,.steps strong,.scoreTable td:first-child){color:var(--tl-text)}
body:has(.siteFooter) :is(.siteFooter a,.sidebar a,.relatedLinks a){color:var(--tl-muted)}
body:has(.siteFooter) :is(.modeTile:hover,.guideCard:hover,.relatedLinks a:hover){border-color:var(--tl-accent)}
body:has(.siteFooter) :is(.scoreTable th,.scoreTable td,.legalArticle td){border-color:var(--tl-line)}
body:has(.siteFooter) :is(.exerciseLabel,.scoreTable .score,.pageCta .tag){color:var(--tl-accent)}

/* R395: unified content gutters. Desktop content matches the homepage's 940px
   inner column, and all secondary surfaces share the same mobile inset. */
:root{--tl-page-gutter:20px;--tl-page-width:940px}
@media(max-width:359px){:root{--tl-page-gutter:16px}}
@media(min-width:601px){:root{--tl-page-gutter:24px}}
@media(min-width:901px){:root{--tl-page-gutter:32px}}
.tlScreenMast,.tlScreenBeats,.tlScreenNav,
.hero:where(:not(.card)),.pageShell,.guideGrid,.footerInner{
 max-width:var(--tl-page-width);
 width:calc(100% - 2 * var(--tl-page-gutter));
 margin-left:auto;margin-right:auto;
}
body:has(#playerName) main,body.tl-dashboard main{
 max-width:calc(var(--tl-page-width) + 2 * var(--tl-page-gutter));
 width:100%;margin-left:auto;margin-right:auto;
 padding-left:var(--tl-page-gutter);padding-right:var(--tl-page-gutter);
}
/* Content articles and their hero use the same left edge as the header. */
body:has(.siteFooter) .hero:not(.card){padding-left:0;padding-right:0}
/* Give the wordmark a small, bounded boost on phones without reducing the
   player-name or score columns. The CSS grid is unchanged. */
@media(min-width:360px) and (max-width:600px){
 .tlScreenWordmark{font-size:clamp(23px,7.35vw,38px)}
}
