/* Shared reading hierarchy. Loaded after each page's layout styles. */
body { font-weight: 400; }

/* Use medium-weight headings rather than competing blocks of heavy text. */
.places-hero h1, .misc-hero h1 {
    font-size: clamp(30px, 3.5vw, 44px);
    font-weight: 500;
    line-height: 1.2;
    overflow-wrap: break-word;
}
.places-hero p { font-size: clamp(18px, 1.6vw, 20px); line-height: 1.55; font-weight: 400; }
.section-title, .dates-content .section-title { font-size: clamp(26px, 3vw, 36px); font-weight: 500; line-height: 1.25; }
.content-section h2, .reach-content-section h2, .sport-rule h2,
.sport-contacts h2, .sport-committee h2, .deadline-panel h2,
.privacy-content h2, .terms-content h2, .accommodation-content h2,
.idol-content h2, .theme-story h2, .mascot-story h2 {
    font-size: clamp(24px, 2.5vw, 30px);
    font-weight: 500;
    line-height: 1.3;
}
.conference-card h2, .info-card h3, .quiz-card h3,
.transport-card h3, .calendar-card h3, .content-section h3,
.reach-content-section h3, .idol-content h3, .date-card h3 {
    font-size: 22px;
    font-weight: 500;
    line-height: 1.35;
}
.welcome-content h2 { font-size: clamp(26px, 2.7vw, 34px); font-weight: 500; }
.message-body h2 { font-size: clamp(26px, 2.7vw, 32px); font-weight: 500; line-height: 1.3; }
.message-photo h3 { font-size: 22px; font-weight: 500; line-height: 1.35; }
.message-photo .team-role { font-size: 16px; font-weight: 400; letter-spacing: 0; }

/* Body emphasis stays visible without turning paragraphs into bold blocks. */
main :is(p, li, dd, td) :is(strong, b) { font-weight: 500; }
.workshop-container, .registration-container { font-size: 17px; }
.coord-row dt, .sport-facts dt, .sport-committee dt,
.idol-people dt, .idol-state-list dt { font-weight: 500; }
.conference-open, .team-read, .back-link a { font-weight: 400; }
.conference-card p { font-size: 17px; line-height: 1.6; }
.sport-download { font-size: 18px; font-weight: 500; }
.sport-toc summary { font-size: 20px; font-weight: 500; }
.dates-button, .idol-button { font-weight: 500; }
.deadline-date { font-size: clamp(28px, 3.5vw, 38px); font-weight: 500; line-height: 1.3; }

/* Dense member lists: names and role labels should not compete with headings. */
.directory-group h2 { font-size: clamp(23px, 2.3vw, 28px); font-weight: 500; line-height: 1.35; }
.directory-subheading { font-size: 18px; font-weight: 500; line-height: 1.4; letter-spacing: .02em; }
.directory-person h3 { font-size: 19px; font-weight: 400; line-height: 1.4; }
.directory-person p { font-size: 16px; font-weight: 400; line-height: 1.5; }
.directory-field label, .directory-intro a { font-weight: 500; }
.group-count, .directory-count { font-weight: 400; }
.directory-person { overflow-wrap: break-word; }

/* Keep table headers distinct while reducing weight on every row. */
.schedule-table, .tariff-table, .hotels-table { font-size: 16px; }
.schedule-table th, .tariff-table th, .hotels-table th {
    font-size: 16px;
    font-weight: 500;
    line-height: 1.4;
}
.schedule-table td, .tariff-table td, .hotels-table td { line-height: 1.55; }
.schedule-table td:first-child, .tariff-table td:first-child,
.tariff-table.courses td:first-child, .hotels-table td { font-weight: 400; }
.schedule-table td.break, .tariff-table td.free { font-weight: 500; }

/* Programme views use colour and grouping rather than bold for every session. */
.legend { font-size: 17px; font-weight: 400; gap: 16px; }
.program-intro a, .day-tab, .day-btn .dn, .hall-btn .hn { font-weight: 500; }
.day-btn.active .dd { font-weight: 500; }
.panel-head h2, .day-heading h2 { font-size: clamp(24px, 2.5vw, 28px); font-weight: 500; line-height: 1.25; }
.session-table { font-size: 16px; }
.session-table th { font-size: 14px; font-weight: 500; letter-spacing: .02em; }
.session-table td { line-height: 1.5; }
.session-table td.t, .session-table tr.k-pl td { font-weight: 400; }
.session-table tr.section td { font-size: 18px; font-weight: 500; }
.session-table tr.group td { font-weight: 500; letter-spacing: .02em; }
.tt-cell { line-height: 1.45; }
.tt-cell .tp { font-size: 14px; font-weight: 400; }
.tt-cell .ct, .tt-cell .sec { font-size: 12px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.tt thead th, .tt tbody th.tt-time { font-weight: 500; }
.detail-topic { font-size: 22px; font-weight: 500; line-height: 1.4; }
.detail-grid dt, .badge, .panel-nav button, .lightbox-foot button { font-weight: 500; }
.lightbox-head h2 { font-weight: 500; line-height: 1.3; }

/* Supporting information uses a quieter scale than the main page title. */
.tech-support-info h3 { font-size: 26px; font-weight: 500; }
.tech-support-info p, .support-category p, .support-category strong { font-size: 19px; }
.support-category strong { font-weight: 500; }
.quiz-card .highlight { font-size: clamp(28px, 3vw, 34px); font-weight: 500; line-height: 1.3; }
.quiz-card .frequency { font-size: 24px; font-weight: 400; }
.highlights-title, .cta-section h2 { font-size: clamp(26px, 3vw, 34px); font-weight: 500; line-height: 1.3; }
.highlight-item h4 { font-size: 20px; font-weight: 500; }

@media (max-width: 768px) {
    .directory-person h3 { font-size: 19px; }
    .directory-subheading { font-size: 17px; }
    .schedule-table th, .tariff-table th, .hotels-table th { white-space: normal; }
    .schedule-table td, .tariff-table td { font-size: 16px; }
    .team-card h3 { font-size: 20px; line-height: 1.35; }
    .team-role { font-size: 16px; line-height: 1.45; }
    .conference-card h2, .info-card h3, .quiz-card h3 { font-size: 21px; }
    .tech-support-info h3 { font-size: 24px; }
    .tech-support-info p, .support-category p, .support-category strong { font-size: 18px; }
}
