/* Shared typography; font files and available weights are defined in fonts/fonts.css. */
:root{
 --font-logo:'Mitr','Noto Sans Thai',sans-serif;
 --font-heading:'Kanit','Noto Sans Thai',sans-serif;
 --font-title:'Prompt','Noto Sans Thai',sans-serif;
 --font-ui:'Anuphan','Noto Sans Thai',sans-serif;
 --font-body:'Noto Sans Thai',sans-serif;
 --font-number:'IBM Plex Sans Thai','Noto Sans Thai',sans-serif;
 --font-note:'Athiti','Noto Sans Thai',sans-serif;
}
body{font-family:var(--font-body);font-weight:400;line-height:1.7}
button,input,select,textarea,nav,label{font-family:var(--font-ui);line-height:1.6}
button,input,select,textarea{font-size:inherit}
button,nav a,nav button{font-weight:600}
input,select,textarea{font-weight:400}
.brand,.brand strong,.brand>span{font-family:var(--font-logo);font-weight:500;line-height:1.5}
.brand small{font-family:var(--font-ui);font-weight:600;line-height:1.6}
h1,.intro h1,.welcome h1,.community-heading h2,.royal-copy h2{font-family:var(--font-heading);font-weight:500;line-height:1.65}
h2,h3,h4,.serif,.meditation h2,.campaign h2,.quote h2,.ranking-title h3,.personal-challenge h3,.ranking-empty strong,.registration-card h2,.royal-name,.royal-project{font-family:var(--font-title);font-weight:500;line-height:1.8}
.royal-name{font-size:17px;line-height:2}
.royal-copy h2{font-weight:500;letter-spacing:0}
.digits,.stat b,.campaign-bottom strong,.metrics strong,.community-stats strong,.community-stats .total-stat strong,.podium-card b,.my-standing strong,.ranking-table td:first-child,.ranking-table td:last-child,.ritual>span{font-family:var(--font-number);font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:0;line-height:1.35}
.digits{font-weight:400;font-size:51px;letter-spacing:1px}
.stat b,.campaign-bottom strong,.metrics strong,.ritual>span{font-weight:400}
.eyebrow,.pill,.badge,.local-badge,.session strong,.panel-head,.card-top,.type-card strong,.join-challenge,.challenge-button,.continue,.submit-registration,.branch-drill{font-family:var(--font-ui)}
table{font-family:var(--font-body);line-height:1.8}
th{font-family:var(--font-ui);font-weight:600}
.hint,.notice,.local-note,.prototype,.aside-note,.description,.welcome-note,.community-notice,.ranking-rule,.ranking-context,.challenge-note,.ranking-explainer p,.timer-caption,.meditation .sub,.date,.stats-foot,footer,.royal-source,.existing-member,.type-card small,.session small,.stat small,.community-stats small,.goal-caption,.podium-card small,.ranking-table td:nth-child(2) small,.ritual small{font-family:var(--font-note);font-weight:500;line-height:1.8;font-size:13px}
.royal-source,.community-notice,.ranking-rule,.goal-caption,.podium-card small,.ranking-table td:nth-child(2) small,.type-card small,.session small{font-size:12px}
.community-stats small,.personal-challenge .challenge-note{font-family:var(--font-note);font-weight:500;font-size:12px;line-height:1.8}
.podium-card h4{min-height:40px}
.ranking-tabs button{line-height:1.7}
@media(max-width:800px){.royal-name{font-size:14px}}
@media(max-width:550px){
 input:not([type=radio]):not([type=checkbox]),select,textarea,.participant-panel select,.ranking-tools input,.ranking-tools select,.period-label select,#branch-query,#registration-branch,.name-fields input{font-size:16px}
 .ranking-tabs{flex-wrap:wrap}
 .ranking-tabs button{flex:1 1 40%;font-size:12px}
 .ranking-tools label{max-width:100%}
 .community-stats strong,.community-stats .total-stat strong{font-size:clamp(24px,6vw,34px)}
 .community-stats article{padding:15px}
 .period-label select{max-width:160px}
 .podium-card h4{font-size:11px;line-height:1.8}
 .royal-name{font-size:14px}
 .ritual small{font-size:12px}
}
.participant-panel select,.period-label select,.ranking-tools input,.ranking-tools select,.type-card input,.name-fields input,#branch-query,#registration-branch{font-family:var(--font-ui)}
.ritual small{font-family:var(--font-note);font-weight:500}
