/* Final semantic contrast layer. It must remain the last stylesheet in index.html. */
:root{
  --ct-text:#f7f8fb;
  --ct-secondary:#c9d2de;
  --ct-muted:#a6b3c3;
  --ct-accent:#75e6f5;
  --ct-gold:#f2cf75;
  --ct-success:#83e9af;
  --ct-danger:#ff9caf;
  --ct-on-accent:#07131e;
  --ct-surface:#172238;
  --ct-border:#43506a;
}
html[data-theme="light"]{
  --ct-text:#171a18;
  --ct-secondary:#3e4841;
  --ct-muted:#606a63;
  --ct-accent:#176b5d;
  --ct-gold:#765617;
  --ct-success:#276a47;
  --ct-danger:#953247;
  --ct-on-accent:#fff;
  --ct-surface:#fffdf8;
  --ct-border:#7d8980;
}

/* Finish themes change the accent, never the meaning of rarity colours. */
html[data-theme="light"][data-visual-theme="grove"]{--ct-accent:#356a4c}
html[data-theme="light"][data-visual-theme="gold"]{--ct-accent:#70551e}
html[data-theme="light"][data-visual-theme="gummy"]{--ct-accent:#8b3f6a}
html[data-theme="light"][data-visual-theme="galaxy"]{--ct-accent:#5350a0}
html[data-theme="light"][data-visual-theme="holofoil"]{--ct-accent:#2d6b72}
html[data-theme="light"][data-visual-theme="gem"]{--ct-accent:#6b4477}
html[data-theme="light"][data-visual-theme="cube"]{--ct-accent:#545267}
html[data-theme="light"][data-visual-theme="quack"]{--ct-accent:#6c5a10}
html[data-theme="light"][data-visual-theme="classic"]{--ct-accent:#176782}
html[data-theme="light"][data-visual-theme="starfall"]{--ct-accent:#5b4c8a}

body,.page,.page h1,.page h2,.page h3,.page h4,.page strong,.page b{color:var(--ct-text)}
.muted,.sub,.oauthnote,.party-message,.party-empty{color:var(--ct-muted)!important}
.input,.select,.btn,.pill,.chip,.seg button,.levels button,.quick-action,.text-action{color:var(--ct-secondary)!important}
.input::placeholder,textarea::placeholder{color:var(--ct-muted)!important;opacity:1}

/* Labels and actions that previously used pale cyan literals. */
.eyebrow,.text-action,.quick-action>span,.account-data-summary>span,
.sprite-info-trigger,.sprite-info-kicker,.event-v2-summary span,.event-detail>span,
.activity-event span,.coordination-summary span,.trade-arrow,.event-state.upcoming,
.journey-family span,.release-toast span,.party-drawer-tabs button.active,
.drawer-notification.unread>span,.member-tag.you,.player-search-result b{
  color:var(--ct-accent)!important;
}

/* Gold is semantic, but must be dark enough on light surfaces. */
.count,.event-time,.party-badge.main,.member-role.role-leader,
.identity-onboarding-banner b,.sprite-info-badge.rarity,.sprite-info-variant.active,
.sprite-info-level b,.sprite-info-pending,.legacy-import-warning-icon,
.anonymous-claim-mark,.profile-favourites b,.journey-activity b{
  color:var(--ct-gold)!important;
}

/* Secondary copy across every page and drawer. */
.identity-onboarding-banner span,.identity-field-help,.identity-save-status,
.identity-field-message,.party-notification-head span,.party-notification small,
.sprite-info-copy p,.sprite-info-meta,.sprite-info-fact span,.sprite-info-level span,
.sprite-info-power,.sprite-info-progress span,.sprite-info-badge,.sprite-info-variant,
.parity-editor-copy p,.parity-info-grid span,.parity-level-power span,.parity-mastery-note small,
.parity-power,.parity-editor-badges span,.drawer-notification small,.drawer-empty,
.party-invite-copy,.party-invite-meta,.party-notification-time,.party-notification-empty,
.drawer-notification time,.party-drawer-footer,.invite-sent-dialog p,
.profile-sharing-copy,.profile-stat span,.achievement-card p,.achievement-card span,
.account-data-summary small,.account-data-panel p,.account-data-panel small,
.daily-card p,.daily-card span,.event-detail p,.event-detail time,
.trade-card p,.trade-card span,.comparison-card p,.comparison-card span{
  color:var(--ct-muted)!important;
}

.success,.saved,.status-success,.identity-save-status.success{color:var(--ct-success)!important}
.error,.danger,.status-error,.btn.danger,.identity-save-status.error{color:var(--ct-danger)!important}
.btn.primary,.party-invite-send,.invite-sent-dialog .primary{color:var(--ct-on-accent)!important}
html[data-theme="light"] .btn.primary,
html[data-theme="light"] .party-invite-send,
html[data-theme="light"] .invite-sent-dialog .primary{color:#fff!important}

/* Components that were authored as dark-only islands. */
.identity-onboarding-banner{
  color:var(--ct-text)!important;
  border-color:color-mix(in srgb,var(--ct-gold) 38%,var(--st-border))!important;
  background:linear-gradient(110deg,color-mix(in srgb,var(--st-surface) 92%,var(--ct-accent)),color-mix(in srgb,var(--st-surface) 94%,var(--ct-gold)))!important;
}
.sprite-info-trigger{
  border-color:color-mix(in srgb,var(--ct-accent) 32%,var(--st-border))!important;
  background:color-mix(in srgb,var(--st-surface-2) 88%,var(--ct-accent))!important;
}
.sprite-info-dialog,.sprite-info-art,.sprite-info-fact,.sprite-info-section,
.sprite-info-level,.sprite-info-actions button,.parity-editor-dialog,.parity-info-grid>div,
.parity-level-power,.parity-mastery-note,.party-drawer,.invite-sent-dialog,
.account-data-reset-dialog,.anonymous-claim-dialog,.legacy-import-warning-dialog{
  color:var(--ct-text)!important;
  border-color:var(--st-border)!important;
  background:var(--st-surface)!important;
}
.sprite-info-art,.sprite-info-fact,.sprite-info-section,.sprite-info-level,
.sprite-info-actions button,.parity-info-grid>div,.parity-level-power,.parity-mastery-note,
.party-drawer-tabs,.drawer-notification,.party-notification-bell{
  background:var(--st-surface-2)!important;
}
.sprite-info-close,.party-drawer-close,.account-data-reset-dialog button,
.anonymous-claim-dialog button,.legacy-import-warning-dialog button{
  color:var(--ct-secondary)!important;
  border-color:var(--st-border-strong)!important;
  background:var(--st-surface-2)!important;
}
.party-drawer-tabs button{color:var(--ct-muted)!important}
.drawer-notification.unread{border-color:color-mix(in srgb,var(--ct-accent) 45%,var(--st-border))!important}
.sprite-info-fact strong,.parity-info-grid strong,.parity-level-power strong,
.drawer-empty strong,.anonymous-claim-dialog .muted strong{color:var(--ct-text)!important}
.member-role.role-admin{color:color-mix(in srgb,var(--ct-accent) 72%,var(--ct-text))!important}

/* Explicit dark-theme tuning: secondary text remains readable without becoming white. */
html[data-theme="dark"] .side,
html[data-theme="dark"] .top,
html[data-theme="dark"] .mobile,
html[data-theme="dark"] .panel,
html[data-theme="dark"] .dialog{color:var(--ct-text)}
html[data-theme="dark"] .nav button,
html[data-theme="dark"] .mobile button{color:var(--ct-muted)!important}

/* Achievement state and contrast: never dim text to communicate locked state. */
.achievement-v2-head,.achievement-v2-card{color:var(--ct-text)!important}
.achievement-v2-head p,.achievement-v2-card p,.achievement-v2-card span,
.achievement-v2-card small{color:var(--ct-muted)!important}
.achievement-v2-card h3{color:var(--ct-text)!important}
.achievement-v2-card .achievement-v2-icon{color:var(--ct-secondary)!important}
.achievement-v2-card.locked{opacity:1!important;border-style:dashed!important}
.achievement-v2-state{display:inline-flex;margin-top:6px;padding:3px 7px;border:1px solid currentColor;border-radius:999px;font-size:.62rem;line-height:1.2}
.achievement-v2-card.locked .achievement-v2-state{color:var(--ct-muted)!important}
.achievement-v2-card.unlocked .achievement-v2-state{color:var(--ct-gold)!important}
html[data-theme="dark"] .achievement-v2-head,
html[data-theme="dark"] .achievement-v2-card{background:#11182a!important;border-color:#3a465e!important}
html[data-theme="dark"] .achievement-v2-card.unlocked{border-color:#806a30!important}
html[data-theme="dark"] .achievement-v2-card.locked{background:#0d1424!important}
html[data-theme="dark"] .achievement-v2-ring::before{background:#11182a!important}
html[data-theme="light"] .achievement-v2-head,
html[data-theme="light"] .achievement-v2-card{background:#fffdf8!important;border-color:#aeb7b0!important;box-shadow:none!important}
html[data-theme="light"] .achievement-v2-card.unlocked{border-color:#8a6a26!important;background:#fffaf0!important}
html[data-theme="light"] .achievement-v2-card.locked{background:#eef1ed!important;border-color:#7d8980!important}
html[data-theme="light"] .achievement-v2-ring::before{background:#fffdf8!important}
html[data-theme="light"] .achievement-v2-progress{background:#d1d7d2!important}

@media(prefers-contrast:more){
  :root{--ct-muted:#c4cfdb}
  html[data-theme="light"]{--ct-muted:#3f4942}
  .input,.select,.btn,.pill,.chip{border-color:currentColor!important}
}

/* Critical account/profile/navigation readability across every visual theme. */
.profile-identity-panel,.profile-v2-ribbon,.profile-settings,.account-security-panel,.account-data-transfer-panel{color:var(--st-text,var(--ct-text))}
.profile-identity-panel .muted,.profile-v2-ribbon .muted,.profile-settings .muted,.profile-sprite-actions .sub{color:var(--st-muted,var(--ct-muted))}
.profile-identity-panel .input,.profile-settings .input,.profile-sprite-picker-head .input{background:var(--st-surface-2,var(--ct-surface));color:var(--st-text,var(--ct-text));border-color:color-mix(in srgb,var(--st-text,var(--ct-text)) 26%,var(--st-border,var(--ct-border)))}
.profile-identity-panel .input::placeholder,.profile-settings .input::placeholder,.profile-sprite-picker-head .input::placeholder{color:color-mix(in srgb,var(--st-text,var(--ct-text)) 62%,transparent);opacity:1}
.profile-sprite-choice{background:var(--st-surface-2,var(--ct-surface));color:var(--st-text,var(--ct-text));border-color:color-mix(in srgb,var(--st-text,var(--ct-text)) 25%,var(--st-border,var(--ct-border)))}
.profile-sprite-choice>span,.profile-sprite-choice>strong{color:inherit}.profile-sprite-choice.active{background:color-mix(in srgb,var(--st-gold,var(--ct-gold)) 13%,var(--st-surface-2,var(--ct-surface)));color:var(--st-text,var(--ct-text))}
.side .nav button,.mobile button{color:var(--st-text-soft,var(--ct-muted))}.side .nav button.active,.side .nav button:hover,.mobile button.active{color:var(--st-text,var(--ct-text))}


/* Audit pass: light-mode navigation and Sprite Info must meet the same
   readability standard as the dark UI without erasing category accents. */
html[data-theme="light"] .side .nav button,
html[data-theme="light"] .mobile button{
  color:color-mix(in srgb,var(--st-text,var(--ct-text)) 78%,var(--st-muted,var(--ct-muted)))!important;
}
html[data-theme="light"] .side .nav button:hover,
html[data-theme="light"] .side .nav button:focus-visible,
html[data-theme="light"] .side .nav button.active,
html[data-theme="light"] .mobile button:hover,
html[data-theme="light"] .mobile button:focus-visible,
html[data-theme="light"] .mobile button.active{
  color:var(--st-text,var(--ct-text))!important;
}
html[data-theme="light"] .sprite-info-copy p,
html[data-theme="light"] .sprite-info-power,
html[data-theme="light"] .sprite-info-meta,
html[data-theme="light"] .sprite-info-fact span,
html[data-theme="light"] .sprite-info-level span,
html[data-theme="light"] .sprite-info-progress span,
html[data-theme="light"] .sprite-info-badge,
html[data-theme="light"] .sprite-info-variant{
  color:var(--st-text-soft,var(--ct-secondary))!important;
}
html[data-theme="light"] .sprite-info-fact strong,
html[data-theme="light"] .sprite-info-progress strong,
html[data-theme="light"] .sprite-info-section h3{
  color:var(--st-text,var(--ct-text))!important;
}
html[data-theme="light"] .sprite-info-level b,
html[data-theme="light"] .sprite-info-badge.rarity,
html[data-theme="light"] .sprite-info-variant.active,
html[data-theme="light"] .sprite-info-pending{
  color:var(--st-gold,var(--ct-gold))!important;
}
html[data-theme="light"] .sprite-info-overlay{
  background:rgba(20,38,50,.56)!important;
}
html[data-theme="light"] .sprite-info-trigger:focus-visible,
html[data-theme="light"] .sprite-info-close:focus-visible,
html[data-theme="light"] .sprite-info-variant:focus-visible,
html[data-theme="light"] .sprite-info-actions button:focus-visible,
html[data-theme="light"] .side .nav button:focus-visible,
html[data-theme="light"] .mobile button:focus-visible{
  outline:3px solid color-mix(in srgb,var(--ct-accent) 78%,white)!important;
  outline-offset:2px!important;
}
