/* Step 11D: visual roles for the six audited experiences only.
   Load after page styles. Layout, disclosure state and specialist artwork stay local. */
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) {
  color: var(--pl4ne-text-primary);
  font-family: var(--pl4ne-font-body);
  font-size: var(--pl4ne-text-body);
}

/* Typography: page titles, section titles, then compact sports subheadings. */
body.home-page .home-masthead h1,
body.kg-tipping-standalone .kg-tipping-page-hero h1,
body.kg-medal-standalone .kg-medal-page-hero h1,
body.account-page .account-intro h1,
body.kg-admin-page .kg-admin-intro h1 {
  font-size: var(--pl4ne-text-h1);
  line-height: 1.08;
  letter-spacing: -0.035em;
  overflow-wrap: anywhere;
}
body.kg-hub-page .futsal-hero-copy h1 {
  font-size: clamp(2.25rem, 1.5rem + 4vw, 4rem);
  line-height: 1.02;
  letter-spacing: -0.035em;
}
body:is(.kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone) .section-heading h2,
body.kg-tipping-standalone .kg-tipping-round-bar h2,
body.kg-medal-standalone .kg-medal-page-stage-heading h2,
body.account-page :is(.auth-panel-heading, .account-profile-heading) h2,
body.kg-admin-page :is(.kg-admin-panel, .kg-admin-state) h2 {
  font-size: var(--pl4ne-text-h2);
  line-height: 1.15;
  letter-spacing: -0.025em;
}
body.home-page .compact-title h2,
body.home-page :is(.mini-panel-title, .home-week-summary) h3,
body.kg-admin-page .kg-admin-subheading,
body.kg-tipping-standalone .kg-tipping-subheading h3,
body.kg-medal-standalone .kg-medal-archive h3 {
  font-family: var(--pl4ne-font-body);
  font-size: var(--pl4ne-text-h3);
  line-height: 1.2;
}

body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) .eyebrow,
body.home-page :is(.panel-kicker, .panel-link, .explore-group > h3, .week-facts-list strong, .home-update-list small, .compact-result-row time, .compact-result-row small, .result-code, .feature-meta),
body.kg-hub-page :is(.stat-label, .kg-hub-fixture-state, .kg-hub-player-mark, .kg-hub-opponent-highlight > span, .kg-hub-gd-metrics span, .result-badge),
body.kg-tipping-standalone :is(.kg-tip-feature-label, .kg-tip-label, .kg-tip-lock, .kg-tip-summary-label, .kg-division-form-label, .kg-division-form-order, .kg-division-team-side, .kg-leaderboard-header, .kg-tip-bonus-heading span),
body.kg-medal-standalone :is(.kg-medal-label, .kg-medal-close, .kg-medal-page-vote-copy small),
body.account-page :is(.account-environment, .account-status, .account-badge, .auth-field label),
body.kg-admin-page :is(.kg-admin-mode, .kg-admin-count, .kg-admin-link-status, .kg-admin-match-status, .kg-admin-season-status, .kg-admin-status-strip span, .kg-admin-operation-card > span, .kg-admin-field > span, .kg-admin-field > label) {
  font-family: var(--pl4ne-font-label);
  font-size: var(--pl4ne-text-label) !important;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.045em;
}
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .account-page, .kg-admin-page) .eyebrow {
  color: var(--pl4ne-action-hover);
}
body.kg-medal-standalone .kg-medal-page-hero .eyebrow,
body.kg-hub-page .kg-hub-action-card.is-medal .eyebrow {
  color: var(--pl4ne-gold);
}

/* Supporting copy is readable without turning every row into a large card. */
body.home-page :is(.home-update-list strong, .result-opponent, .week-facts-list li, .home-week-summary p, .home-player-note, .home-community-mini p, .explore-row em, .prediction-message, .home-kingsguard-state, .home-featured-copy p),
body.kg-hub-page :is(.kg-hub-action-card p:not(.eyebrow), .kg-hub-medal-copy p:not(.eyebrow), .kg-hub-gd-metrics small, .kg-hub-disclosure > summary small, .kg-hub-opponent-highlight small, .futsal-filter-status, .futsal-latest-card time, .futsal-archive-row time, .futsal-archive-row em),
body.kg-tipping-standalone :is(.kg-tip-category span, .kg-tip-help, .kg-tip-message, .kg-tip-status, .kg-round-summary, .kg-division-no-form, .kg-division-coming-next, .kg-division-tip-status, .kg-division-your-tip, .kg-division-tip-message, .kg-tipping-page-rules li span, .kg-leaderboard-stat, .kg-leaderboard-name small),
body.kg-medal-standalone :is(.kg-medal-message, .kg-medal-sealed-note, .kg-medal-page-privacy, .kg-medal-page-ballot-privacy, .kg-medal-standing-player small),
body.account-page :is(.auth-field small, .account-scope-note),
body.kg-admin-page :is(.kg-admin-operation-card > small, .kg-admin-form-message, .kg-admin-field small, .kg-admin-match-meta, .kg-admin-footnote, .kg-admin-roster-help, .kg-admin-fill-in-body > p:first-child, .kg-admin-squad-item small) {
  font-size: var(--pl4ne-text-support);
  line-height: 1.45;
  color: var(--pl4ne-text-secondary);
}
body.home-page :is(.result-score, .home-match-score),
body.kg-hub-page :is(.futsal-score, .futsal-stat-grid strong, .kg-hub-gd-metrics strong),
body.kg-tipping-standalone :is(.kg-leaderboard-points, .kg-leaderboard-rank, .kg-community-tip-points, .kg-division-score),
body.kg-medal-standalone :is(.kg-medal-page-vote-rank, .kg-medal-standing-rank),
body.kg-admin-page .kg-admin-score {
  font-family: var(--pl4ne-font-body);
  font-variant-numeric: tabular-nums;
}

/* Three surface roles: standard, featured, and low-emphasis inset/rows. */
body.home-page .home-dashboard-panel,
body.kg-hub-page :is(.futsal-panel, .kg-hub-action-card),
body.kg-tipping-standalone :is(.kg-tip-body, .kg-tipping-page-leaderboard, .kg-tipping-page-community, .kg-tipping-page-rules, .kg-division-round),
body.kg-medal-standalone :is(.kg-medal-panel, .kg-medal-archive),
body.account-page .account-shell,
body.kg-admin-page :is(.kg-admin-panel, .kg-admin-state, .kg-admin-status-strip) {
  border-color: var(--pl4ne-border-subtle);
  border-radius: var(--pl4ne-radius-card);
  box-shadow: none;
}
body.kg-hub-page .futsal-panel,
body.kg-tipping-standalone :is(.kg-tip-body, .kg-tipping-page-leaderboard, .kg-tipping-page-community, .kg-tipping-page-rules, .kg-division-round),
body.account-page .account-shell,
body.kg-admin-page :is(.kg-admin-panel, .kg-admin-state, .kg-admin-status-strip) {
  background: var(--pl4ne-surface-card);
}
body.home-page .home-masthead,
body.kg-hub-page :is(.futsal-hero, .kg-hub-next),
body.kg-tipping-standalone :is(.kg-tipping-page-hero, .kg-tip-match-header),
body.kg-medal-standalone .kg-medal-page-hero,
body.account-page .account-intro,
body.kg-admin-page :is(.kg-admin-intro, .kg-admin-dialog) {
  border-radius: var(--pl4ne-radius-feature);
  border-color: var(--pl4ne-border-feature);
  box-shadow: var(--pl4ne-shadow-feature);
}
body.kg-hub-page .kg-hub-next { background: var(--pl4ne-surface-feature); }
body.kg-medal-standalone :is(.kg-medal-page-hero, .kg-medal-archive.is-revealed) { border-color: var(--pl4ne-gold); }
body.home-page :is(.home-update-list a, .compact-result-row),
body.kg-hub-page :is(.kg-hub-gd-spark, .kg-hub-player-tile),
body.kg-tipping-standalone :is(.kg-tip-category, .kg-tip-feature-form-guide, .kg-division-card),
body.kg-medal-standalone :is(.kg-medal-field, .kg-medal-ballot-list li),
body.account-page .account-administration-card,
body.kg-admin-page :is(.kg-admin-operation-card, .kg-admin-match-card, .kg-admin-squad-item, .kg-admin-season-card) {
  border-radius: var(--pl4ne-radius-control);
  box-shadow: none;
}
body.kg-tipping-standalone :is(.kg-tip-category, .kg-tip-feature-form-guide),
body.kg-admin-page .kg-admin-operation-card {
  background: var(--pl4ne-surface-inset);
  border-color: var(--pl4ne-border-subtle);
}

/* Controls share dimensions and focus, while their existing layouts remain local. */
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(button, .button, .kg-tip-button, .kg-medal-button, .account-administration-link, .kg-admin-primary-link, .kg-admin-secondary-link, .kg-admin-account-link) {
  min-height: var(--pl4ne-control-height);
  padding-inline: var(--pl4ne-space-4);
  border-radius: var(--pl4ne-radius-control);
  font-family: var(--pl4ne-font-body);
  font-size: var(--pl4ne-text-support);
  font-weight: 800;
  line-height: 1.25;
  transition: background-color 140ms ease, border-color 140ms ease;
}
body:is(.home-page, .kg-hub-page) .button:not(.secondary),
body.kg-tipping-standalone .kg-tip-button:not(.secondary),
body.kg-medal-standalone .kg-medal-button:not(.secondary),
body.account-page .auth-submit,
body.kg-admin-page :is(.kg-admin-primary-button, .kg-admin-primary-link, .kg-admin-complete-button) {
  color: var(--pl4ne-action-ink);
  background: var(--pl4ne-action);
  border: 1px solid var(--pl4ne-action-hover);
  box-shadow: none;
}
body:is(.home-page, .kg-hub-page) .button.secondary,
body.kg-tipping-standalone .kg-tip-button.secondary,
body.kg-medal-standalone .kg-medal-button.secondary,
body.account-page :is(.auth-secondary, .account-administration-link),
body.kg-admin-page :is(.kg-admin-secondary-button, .kg-admin-secondary-link, .kg-admin-account-link, .kg-admin-edit-button, .kg-admin-roster-button, .kg-admin-view-button, .kg-admin-icon-button) {
  color: var(--pl4ne-action-hover);
  background: var(--pl4ne-surface-inset);
  border: 1px solid var(--pl4ne-border-control);
  box-shadow: none;
}
body.kg-admin-page :is(.kg-admin-correct-button, .kg-admin-confirm-button, .kg-admin-season-card > .kg-admin-danger-button, #season-complete-confirm) {
  color: var(--pl4ne-warning);
  background: var(--pl4ne-warning-fill);
  border: 1px solid var(--pl4ne-warning);
}
body.kg-admin-page :is(.kg-admin-squad-remove, .kg-admin-remove-goal, .kg-admin-state-danger-button) {
  color: var(--pl4ne-danger);
  background: var(--pl4ne-danger-fill);
  border: 1px solid var(--pl4ne-danger);
}
body.kg-admin-page :is(.kg-admin-medal-season .kg-admin-danger-button, #medal-reveal-confirm) {
  color: var(--pl4ne-action-ink);
  background: var(--pl4ne-gold);
  border-color: var(--pl4ne-gold);
}
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(button, .button, .kg-tip-button, .kg-medal-button):hover:not(:disabled) {
  border-color: currentColor;
  filter: brightness(1.08);
}
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(button, input, select, textarea):disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]), select, textarea) {
  min-height: var(--pl4ne-control-height);
  min-width: 0;
  max-width: 100%;
  padding: var(--pl4ne-space-3);
  color: var(--pl4ne-text-primary);
  background: var(--pl4ne-surface-input);
  border: 1px solid var(--pl4ne-border-control);
  border-radius: var(--pl4ne-radius-control);
  font: 600 1rem/1.4 var(--pl4ne-font-body);
  box-shadow: none;
}
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(input[type=checkbox], input[type=radio]) { accent-color: var(--pl4ne-action); }
body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible,
body.kg-tipping-standalone .kg-tip-winner-choice input:focus-visible + span,
body.kg-tipping-standalone .kg-division-choice:has(input:focus-visible) {
  outline: 3px solid var(--pl4ne-focus);
  outline-offset: 3px;
}
body:is(.kg-hub-page, .kg-admin-page) summary { min-height: var(--pl4ne-control-height); }
body.kg-admin-page .kg-admin-task-nav { border-color: var(--pl4ne-border-subtle); box-shadow: var(--pl4ne-shadow-feature); }
body.kg-admin-page .kg-admin-task-nav a,
body:is(.kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone) .section-nav a {
  min-height: var(--pl4ne-control-height);
  border-radius: var(--pl4ne-radius-control);
  font: 800 var(--pl4ne-text-support)/1.25 var(--pl4ne-font-body);
}
body.kg-admin-page .kg-admin-task-nav a.is-active { color: var(--pl4ne-action-ink); background: var(--pl4ne-action); }

/* Sports colour is semantic. Scores themselves remain neutral, including FF. */
body.home-page .result-code:not(.loss):not(.draw):not(.golf),
body.kg-hub-page .result-w-row .result-badge,
body.kg-tipping-standalone .kg-division-form-result.is-win {
  color: var(--pl4ne-success); background: var(--pl4ne-success-fill); border-color: var(--pl4ne-success);
}
body.home-page .result-code.loss,
body.kg-hub-page .result-l-row .result-badge,
body.kg-tipping-standalone .kg-division-form-result.is-loss,
body.kg-admin-page .kg-admin-match-status[data-status=cancelled] {
  color: var(--pl4ne-danger); background: var(--pl4ne-danger-fill); border-color: var(--pl4ne-danger);
}
body.home-page .result-code.draw,
body.kg-hub-page .result-d-row .result-badge,
body.kg-tipping-standalone .kg-division-form-result.is-draw,
body.kg-admin-page .kg-admin-match-status[data-status=postponed] {
  color: var(--pl4ne-warning); background: var(--pl4ne-warning-fill); border-color: var(--pl4ne-warning);
}
body.kg-admin-page .kg-admin-season-status.is-completed,
body.kg-admin-page .kg-admin-form-message.is-success,
body.account-page .auth-message.is-success { color: var(--pl4ne-success); }
body.kg-admin-page .kg-admin-form-message.is-error,
body.account-page .auth-message.is-error,
body.kg-medal-standalone :is(.kg-medal-status.is-error, .kg-medal-message.is-error),
body.kg-tipping-standalone :is(.kg-tipping-error, .kg-tip-message.is-error) { color: var(--pl4ne-danger); }
body.kg-tipping-standalone .kg-tip-lock.is-locked,
body.kg-medal-standalone :is(.kg-medal-close.is-closed, .kg-medal-status.is-closed, .kg-medal-status.is-ineligible) { color: var(--pl4ne-text-secondary); }
body.home-page :is(.result-score, .home-match-score),
body.kg-hub-page :is(.futsal-score, #futsal-latest-list .futsal-score, #kingsguard-history-preview .futsal-score),
body.kg-tipping-standalone .kg-division-score,
body.kg-admin-page .kg-admin-score { color: var(--pl4ne-text-primary); background: var(--pl4ne-surface-inset); border-color: var(--pl4ne-border-subtle); }

/* Rhythm: retain density, section order and all existing responsive grids. */
body.home-page .home-dashboard-panel,
body.kg-admin-page .kg-admin-panel,
body.kg-tipping-standalone :is(.kg-tip-body, .kg-tipping-page-leaderboard, .kg-tipping-page-community, .kg-tipping-page-rules, .kg-division-round) { padding: var(--pl4ne-pad-card); }
body.kg-hub-page main > .section:not(.futsal-hero) { margin-top: var(--pl4ne-space-8); }
body:is(.kg-tipping-standalone, .kg-medal-standalone) main { gap: var(--pl4ne-space-6); }
body.account-page .auth-field { gap: var(--pl4ne-space-2); margin-bottom: var(--pl4ne-space-4); }
body.kg-admin-page .kg-admin-field { gap: var(--pl4ne-space-2); }
body.kg-hub-page .section-heading,
body.kg-admin-page .kg-admin-panel-heading { margin-bottom: var(--pl4ne-space-4); }
body.home-page .home-left-column { gap: var(--pl4ne-space-4); }
body.home-page .home-update-list { gap: var(--pl4ne-space-1); }
body.home-page .home-masthead h1 { white-space: normal; }
body.home-page :is(.panel-link, .mini-panel-title a, .masthead-social-links a) { min-height: var(--pl4ne-control-height); }
body.home-page .panel-link { display: inline-flex; align-items: center; justify-content: center; min-width: var(--pl4ne-control-height); }
body.kg-hub-page .kg-hub-disclosure > summary span { font-family: var(--pl4ne-font-body); font-size: var(--pl4ne-text-support); text-transform: none; }
body.kg-admin-page .kg-admin-operation-card { gap: var(--pl4ne-space-2); padding: var(--pl4ne-space-4); }

@media (max-width: 620px) {
  body.home-page .home-masthead h1,
  body.kg-tipping-standalone .kg-tipping-page-hero h1 { font-size: var(--pl4ne-text-h1); }
  body.home-page .home-dashboard-panel { padding: var(--pl4ne-space-3); }
  body.kg-hub-page .futsal-hero-copy h1 { font-size: clamp(2.25rem, 10vw, 2.5rem); }
  body.kg-hub-page .kg-hub-disclosure > summary { gap: var(--pl4ne-space-2); }
  body.kg-tipping-standalone .kg-division-form-result { font-size: var(--pl4ne-text-label); }
}
@media (prefers-reduced-motion: reduce) {
  body:is(.home-page, .kg-hub-page, .kg-tipping-standalone, .kg-medal-standalone, .account-page, .kg-admin-page) :is(button, .button, .kg-tip-button, .kg-medal-button) { transition: none; }
}
