/*
Theme Name: Aaron D. Campbell
Theme URI: https://aarondcampbell.com/
Author: Aaron D. Campbell
Author URI: https://aarondcampbell.com/
Description: A lightweight, reading-forward block theme for AaronDCampbell.com.
Requires at least: 7.0
Tested up to: 7.0
Requires PHP: 8.5
Version: 3.0.0
License: GNU General Public License v3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Text Domain: aarondcampbell
*/

/*
 * Presentation belongs in theme.json whenever WordPress exposes the relevant
 * control. Keep this file for the small semantic exceptions that remain.
 */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  color-scheme: light;
}

body {
  margin: 0;
  overflow-wrap: break-word;
}

.site-header {
  border-bottom: 1px solid var(--wp--preset--color--border);
}

.site-header .site-header__inner {
  width: min(calc(100% - 2rem), 80rem);
  gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--30);
  min-height: 5rem;
  padding-block: var(--wp--preset--spacing--30);
}

.site-main {
  padding-block: var(--wp--preset--spacing--70);
}

.site-footer {
  border-top: 1px solid var(--wp--preset--color--border);
}

.site-footer__inner {
  padding-block: var(--wp--preset--spacing--60);
  text-align: center;
}

a {
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.15em;
}

a:active {
  color: var(--wp--preset--color--action-active);
}

.wp-block-site-title a {
  display: inline-flex;
  align-items: center;
  min-height: 2.75rem;
}

.wp-block-post-title a {
  color: var(--wp--preset--color--plum);
}

.wp-block-post-title a:hover {
  color: var(--wp--preset--color--brand-violet);
}

.site-header .wp-block-site-title a,
.site-footer .wp-block-site-title a {
  gap: var(--wp--preset--spacing--20);
}

.site-header .wp-block-site-title a::before,
.site-footer .wp-block-site-title a::before {
  flex: 0 0 auto;
  width: 2.75rem;
  aspect-ratio: 1;
  background: url("./assets/logo/fedora-plum.svg") center / contain no-repeat;
  content: "";
}

.site-navigation .wp-block-navigation-item__content,
.footer-navigation .wp-block-navigation-item__content {
  display: flex;
  align-items: center;
  min-height: 2.75rem;
  padding-inline: var(--wp--preset--spacing--20);
}

.site-navigation .wp-block-navigation-item__content[aria-current] {
  color: var(--wp--preset--color--brand-violet);
  font-weight: 600;
  text-decoration-line: underline;
}

.site-header .site-navigation {
  margin-inline-start: auto;
}

.site-navigation-fallback {
  display: none;
}

.footer-social-links .wp-block-social-link-anchor {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
}

.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0;
  border: 1px solid var(--wp--preset--color--control-border);
  border-radius: var(--wp--preset--border-radius--control);
}

.wp-block-post-content :where(a:visited:not(.wp-element-button)) {
  color: var(--wp--preset--color--plum);
}

.post-meta {
  gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
  color: var(--wp--preset--color--graphite);
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--meta);
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.4;
  text-transform: uppercase;
}

.post-meta :where(.wp-block-post-date, .wp-block-post-terms) {
  margin-block: 0;
}

.front-page-feature {
  padding-block-end: var(--wp--preset--spacing--70);
  border-bottom: 1px solid var(--wp--preset--color--border);
}

.older-writing {
  padding-block-start: var(--wp--preset--spacing--60);
}

:where(.older-posts, .archive-query) .wp-block-post-template {
  padding: 0;
}

.older-post-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--wp--preset--spacing--20) var(--wp--preset--spacing--40);
  align-items: baseline;
  padding-block: var(--wp--preset--spacing--40);
  border-bottom: 1px solid var(--wp--preset--color--border);
}

.older-post-title {
  margin: 0;
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  line-height: 1.35;
}

.older-post-row .post-meta {
  justify-content: flex-end;
}

.all-writing-link,
.post-navigation {
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
}

.archive-list {
  margin-block: var(--wp--preset--spacing--60);
}

.archive-entry {
  padding-block: var(--wp--preset--spacing--50);
  border-top: 1px solid var(--wp--preset--color--border);
}

.archive-entry > :first-child {
  margin-block-start: 0;
}

.archive-pagination {
  gap: var(--wp--preset--spacing--20);
  padding-block-start: var(--wp--preset--spacing--40);
  border-top: 1px solid var(--wp--preset--color--border);
}

.archive-pagination :where(a, .page-numbers) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding-inline: var(--wp--preset--spacing--20);
  border: 1px solid var(--wp--preset--color--border);
  border-radius: var(--wp--preset--border-radius--control);
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
}

.archive-pagination .current {
  color: var(--wp--preset--color--white);
  background: var(--wp--preset--color--brand-violet);
  border-color: var(--wp--preset--color--brand-violet);
}

.post-navigation {
  gap: var(--wp--preset--spacing--40);
  padding-block-start: var(--wp--preset--spacing--50);
  border-top: 1px solid var(--wp--preset--color--border);
}

.route-search {
  margin-block: var(--wp--preset--spacing--50);
}

.not-found__intro {
  text-align: center;
}

.not-found__intro::before {
  display: block;
  width: clamp(5rem, 20vw, 10rem);
  margin: 0 auto var(--wp--preset--spacing--30);
  aspect-ratio: 1;
  background: url("./assets/logo/fedora-plum.svg") center / contain no-repeat;
  content: "";
}

.not-found__code {
  margin-block-end: var(--wp--preset--spacing--10);
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  letter-spacing: 0.08em;
}

.not-found__intro h1 {
  margin-block-start: 0;
}

.not-found__lede {
  max-width: 34rem;
  margin-inline: auto;
}

.not-found__search {
  max-width: 40rem;
  margin-inline: auto;
}

.wp-block-group.link-card {
  height: 100%;
}

.link-card:focus-within {
  background: var(--wp--preset--color--violet-wash);
  border-color: var(--wp--preset--color--violet-tint);
}

.link-card h3 {
  margin-block: 0 var(--wp--preset--spacing--20);
}

.link-card__link {
  display: flex;
  gap: var(--wp--preset--spacing--30);
  justify-content: space-between;
  text-decoration: none;
}

.link-card p {
  margin-block-end: 0;
  color: var(--wp--preset--color--graphite);
}

.wp-block-post-content.alignwide {
  padding-inline: 0;
}

.wp-block-post-content.is-layout-constrained > :where(h2, h3) {
  margin-block-start: var(--wp--preset--spacing--60);
}

.wp-block-post-content .has-subhead {
  margin-block-end: 0;
}

.wp-block-post-content .subhead {
  margin-block-start: var(--wp--preset--spacing--20);
  color: var(--wp--preset--color--graphite);
  font-size: var(--wp--preset--font-size--large);
  font-weight: 500;
  line-height: 1.4;
}

:where(
  .wp-element-button,
  button,
  input[type="button"],
  input[type="reset"],
  input[type="submit"]
) {
  min-height: 2.75rem;
}

:where(input[type="button"], input[type="reset"], input[type="submit"]) {
  padding: 0.65rem 1rem;
  color: var(--wp--preset--color--white);
  background: var(--wp--preset--color--brand-violet);
  border: 1px solid var(--wp--preset--color--brand-violet);
  border-radius: var(--wp--preset--border-radius--control);
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  cursor: pointer;
}

/* stylelint-disable-next-line selector-class-pattern -- Gravity Forms owns these legacy public classes. */
.gform_wrapper input.gform_button[type="submit"] {
  color: var(--wp--preset--color--white);
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
}

:where(
  .wp-element-button,
  button,
  input[type="button"],
  input[type="reset"],
  input[type="submit"]
):active {
  color: var(--wp--preset--color--white);
  background: var(--wp--preset--color--action-active);
  border-color: var(--wp--preset--color--action-active);
}

:where(a, button, input, select, summary, textarea, [tabindex]):focus-visible {
  outline: var(--wp--custom--focus--width) solid var(--wp--custom--focus--color);
  outline-offset: var(--wp--custom--focus--offset);
  box-shadow: 0 0 0
    calc(
      var(--wp--custom--focus--width) + var(--wp--custom--focus--offset) + 2px
    )
    var(--wp--preset--color--white);
}

::selection {
  background: var(--wp--preset--color--violet-tint);
  color: var(--wp--preset--color--ink);
}

img,
svg,
video {
  max-width: 100%;
  height: auto;
}

.wp-block-navigation__responsive-container-open > svg,
.wp-block-navigation__responsive-container-close > svg {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  margin: auto;
}

:where(code, kbd, pre, samp) {
  font-family: var(--wp--preset--font-family--monospace);
}

:where(:not(pre) > code:not(.hljs), kbd) {
  padding: 0.1em 0.3em;
  background: var(--wp--preset--color--violet-wash);
  border: 1px solid var(--wp--preset--color--border);
  border-radius: 0.25rem;
  font-size: 0.9em;
}

kbd {
  box-shadow: 0 1px 0 var(--wp--preset--color--control-border);
}

abbr[title] {
  text-decoration-line: underline;
  text-decoration-style: dotted;
  text-underline-offset: 0.15em;
  cursor: help;
}

:where(h1, h2, h3, h4, h5, h6) {
  text-wrap: balance;
}

:where(.wp-block-code, .wp-block-preformatted) {
  max-width: 100%;
  overflow-x: auto;
  white-space: pre;
}

.wp-block-code {
  padding: var(--wp--preset--spacing--40);
  border: 1px solid var(--wp--preset--color--border);
}

/* Keep Core as the scroll container when SHCB adds a wrapper. */
.wp-block-code > span {
  overflow: visible;
}

.wp-block-code code.hljs {
  padding: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  overflow: visible;
}

.wp-block-post-content aside.pullquote {
  width: min(45%, 16rem);
  margin-block: var(--wp--preset--spacing--40);
  padding-inline-start: var(--wp--preset--spacing--40);
  color: var(--wp--preset--color--plum);
  border-inline-start: 3px solid var(--wp--preset--color--light-violet);
  font-family: var(--wp--preset--font-family--heading);
  font-size: var(--wp--preset--font-size--base);
  font-style: italic;
  font-weight: 600;
  line-height: 1.5;
}

.wp-block-table {
  overflow-x: auto;
}

.wp-block-table table {
  width: 100%;
  border-collapse: collapse;
}

.wp-block-table :where(th, td) {
  padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
  border-color: var(--wp--preset--color--border);
}

.wp-block-table th {
  color: var(--wp--preset--color--plum);
  font-family: var(--wp--preset--font-family--heading);
  font-weight: 600;
  text-align: left;
}

:where(button, input, select, textarea) {
  max-width: 100%;
  color: var(--wp--preset--color--ink);
  font: inherit;
}

:where(
  input:not([type]),
  input[type="date"],
  input[type="datetime-local"],
  input[type="email"],
  input[type="month"],
  input[type="number"],
  input[type="password"],
  input[type="search"],
  input[type="tel"],
  input[type="text"],
  input[type="time"],
  input[type="url"],
  input[type="week"],
  select,
  textarea
) {
  padding: 0.65rem 0.75rem;
  background: var(--wp--preset--color--white);
  border: 1px solid var(--wp--preset--color--control-border);
  border-radius: var(--wp--preset--border-radius--control);
}

textarea {
  width: 100%;
  min-height: 8rem;
  resize: vertical;
}

.wp-block-search__inside-wrapper {
  gap: var(--wp--preset--spacing--20);
}

.wp-block-search .wp-block-search__input {
  height: 2.75rem;
  min-width: 0;
  padding: 0.65rem 0.75rem;
  color: var(--wp--preset--color--ink);
  background: var(--wp--preset--color--white);
  border: 1px solid var(--wp--preset--color--control-border);
  border-radius: var(--wp--preset--border-radius--control);
}

.wp-block-search .wp-block-search__button {
  height: 2.75rem;
}

.header-search {
  flex: 0 1 14rem;
  margin-block: 0;
}

.header-search .wp-block-search__inside-wrapper {
  position: relative;
  padding: 0;
  border: 0;
}

.header-search .wp-block-search__inside-wrapper::before {
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 0.75rem;
  width: 1.25rem;
  height: 1.25rem;
  background-color: var(--wp--preset--color--graphite);
  content: "";
  pointer-events: none;
  transform: translateY(-50%);
  mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.452 4.391l3.328 3.329a.75.75 0 1 1-1.06 1.06l-3.329-3.328A7 7 0 0 1 2 9Z' clip-rule='evenodd'/%3E%3C/svg%3E")
    center / contain no-repeat;
}

.header-search .wp-block-search__input {
  width: 100%;
  padding: 0.65rem 0.75rem 0.65rem 2.5rem;
  border: 1px solid var(--wp--preset--color--border);
  box-shadow: var(--wp--preset--shadow--control);
}

.header-search .wp-block-search__input:hover {
  border-color: var(--wp--preset--color--violet-tint);
}

.wp-block-image figcaption,
.wp-block-table figcaption {
  margin-block-start: var(--wp--preset--spacing--20);
}

@media (width <= 30rem) {
  .older-post-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .older-post-row .post-meta {
    justify-content: flex-start;
  }

  .wp-block-search__inside-wrapper {
    flex-wrap: wrap;
  }

  .wp-block-search__inside-wrapper .wp-block-search__input,
  .wp-block-search__inside-wrapper .wp-block-search__button {
    flex-basis: 100%;
    margin-inline: 0;
  }

  .wp-block-post-content aside.pullquote {
    float: none;
    width: 100%;
    margin-inline: 0;
  }
}

@media (width <= 64rem) {
  .site-header .site-header__inner {
    flex-wrap: nowrap;
  }

  .site-header .wp-block-site-title {
    flex: 0 0 auto;
    order: 1;
  }

  .site-header .wp-block-site-title a {
    gap: 0;
    font-size: 0;
  }

  .site-header .wp-block-site-title a::before {
    transform: translateY(0.2rem);
  }

  .header-search {
    flex: 1 1 14rem;
    order: 2;
    min-width: 8rem;
  }

  .site-header .site-navigation {
    flex: 0 0 auto;
    order: 3;
    margin-inline-start: 0;
  }
}

@media (width <= 37.5rem) {
  .admin-bar .site-navigation .is-menu-open {
    top: var(--wp-admin--admin-bar--height);
  }

  .admin-bar
    .site-navigation
    .is-menu-open
    .wp-block-navigation__responsive-dialog {
    margin-top: 0;
  }

  .site-navigation-fallback {
    display: block;
    flex-basis: 100%;
  }

  .site-navigation-fallback ul {
    display: grid;
    gap: var(--wp--preset--spacing--10);
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .site-navigation-fallback a {
    display: flex;
    align-items: center;
    min-height: 2.75rem;
    padding-inline: var(--wp--preset--spacing--20);
  }

  body:has(.site-navigation-fallback)
    .site-navigation
    .wp-block-navigation__responsive-container-open {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (forced-colors: active) {
  :where(
    a,
    button,
    input,
    select,
    summary,
    textarea,
    [tabindex]
  ):focus-visible {
    outline-color: Highlight;
    box-shadow: none;
  }

  :where(
    input:not([type]),
    input[type="date"],
    input[type="datetime-local"],
    input[type="email"],
    input[type="month"],
    input[type="number"],
    input[type="password"],
    input[type="search"],
    input[type="tel"],
    input[type="text"],
    input[type="time"],
    input[type="url"],
    input[type="week"],
    select,
    textarea
  ) {
    border-color: CanvasText;
  }
}
