/* Shared text contrast safeguards, loaded after each visual edition. */
html[data-style=punk] .hero-statement,
html[data-style=punk][data-theme=dark] .hero-statement {
  background:transparent; color:var(--ink);
}
html[data-style=punk] .hero-statement>p,
html[data-style=punk] .hero-statement>div,
html[data-style=punk] .hero-statement a,
html[data-style=punk] .hero-statement .eyebrow {
  color:var(--ink)!important;
}
html[data-style=original] .editorial-card>strong>span {color:#48503b!important}
html[data-style=original] .editorial-card>p {color:#454c43!important}
html[data-style=original] .project-visual.venue .project-tag,
html[data-style=original] .project-visual.venue .project-no,
html[data-style=original] .project-visual.arena .project-tag,
html[data-style=original] .project-visual.arena .project-no {color:#f8f7f2!important;opacity:1}
html[data-style=original] .project-visual.venue .editorial-card>p,
html[data-style=original] .project-visual.arena .editorial-card>p,
html[data-style=original] .project-visual.venue .editorial-card>strong>span,
html[data-style=original] .project-visual.arena .editorial-card>strong>span {color:#f8f7f2!important}
input::placeholder,textarea::placeholder {color:var(--muted);opacity:1}
.case-section p a,.case-section li a,.guide-message p a {text-decoration:underline;text-underline-offset:.18em}
:focus-visible {outline:3px solid var(--ink);outline-offset:4px}
html[data-style=punk] .hero-statement .eyebrow {background:transparent!important}
/* Keep small labels at their measured contrast, without opacity dilution. */
.project-no,.style-options small {opacity:1!important}
