/*
 * HackNews content system and performance layer.
 * WordPress presets are the canonical Faz 4B tokens; legacy variables remain
 * as stable aliases for classic templates and third-party content.
 */

:root {
  --hn-shell: var(--wp--preset--color--hn-shell, #27292d);
  --hn-panel: var(--wp--preset--color--hn-panel, #1f2024);
  --hn-panel-2: var(--wp--preset--color--hn-panel-2, #23252a);
  --hn-text: var(--wp--preset--color--hn-text, #f6f8fb);
  --hn-text-soft: var(--wp--preset--color--hn-text-soft, #d7dbe2);
  --hn-muted: var(--wp--preset--color--hn-muted, #a8adb6);
  --hn-accent: var(--wp--preset--color--hn-accent, #00d6c0);
  --hn-accent-soft: var(--wp--preset--color--hn-heading, #15e2c9);
  --hn-accent-dark: var(--wp--preset--color--hn-accent-dark, #006d5d);
  --hn-danger: var(--wp--preset--color--hn-danger, #ff6b6b);
  --hn-radius: var(--wp--custom--hacknews--radius--large, 15px);
  --hn-radius-sm: var(--wp--custom--hacknews--radius--small, 11px);
  --hn-pill: var(--wp--custom--hacknews--radius--pill, 999px);
}

/* Gutenberg and legacy article content safety. */
.article-content,
.article-content p,
.article-content li,
.article-content td,
.article-content th,
.article-content figcaption,
.article-content a {
  overflow-wrap: anywhere;
  word-break: normal;
}

.article-content ul,
.article-content ol {
  margin: 0 0 1.4em;
  padding-inline-start: 1.5em;
}

.article-content li + li {
  margin-top: 0.4em;
}

.article-content li > ul,
.article-content li > ol {
  margin-top: 0.45em;
  margin-bottom: 0.45em;
}

.article-content dl {
  margin: 0 0 1.5em;
}

.article-content dt {
  margin-top: 1em;
  color: var(--hn-accent-soft);
  font-weight: 850;
}

.article-content dd {
  margin: 0.35em 0 0 1.25em;
  color: var(--hn-text-soft);
}

.article-content table,
.article-content .wp-block-table table {
  width: 100%;
  min-width: 560px;
  border-spacing: 0;
  border-collapse: collapse;
  color: var(--hn-text-soft);
  background: var(--hn-shell);
}

.article-content > table,
.article-content .wp-block-table {
  display: block;
  max-width: 100%;
  margin: 1.6em 0;
  overflow-x: auto;
  border: 1px solid var(--hn-border);
  border-radius: var(--hn-radius-sm);
  scrollbar-width: thin;
  scrollbar-color: var(--hn-accent-dark) var(--hn-shell);
}

.article-content th,
.article-content td {
  padding: 12px 14px;
  border: 1px solid var(--hn-border);
  text-align: start;
  vertical-align: top;
}

.article-content th {
  color: var(--hn-text);
  background: var(--hn-panel-hover);
  font-weight: 850;
}

.article-content tbody tr:nth-child(even) td {
  background: rgba(255, 255, 255, 0.025);
}

.article-content figure,
.article-content .wp-caption {
  max-width: 100%;
}

.article-content figcaption,
.article-content .wp-caption-text,
.article-content .wp-element-caption {
  margin-top: 0.65em;
  color: var(--hn-muted);
  font-size: 0.82em;
  line-height: 1.55;
  text-align: center;
}

.article-content .wp-block-image img,
.article-content .wp-block-gallery img {
  border-radius: var(--hn-radius-sm);
}

.article-content .wp-block-gallery {
  gap: 12px;
}

.article-content .wp-block-quote,
.article-content blockquote {
  border-left: 4px solid var(--hn-accent-dark);
}

.article-content .wp-block-pullquote {
  margin: 2em 0;
  padding: 1.6em 1em;
  border-top: 3px solid var(--hn-accent-dark);
  border-bottom: 3px solid var(--hn-accent-dark);
  color: var(--hn-text);
  text-align: center;
}

.article-content .wp-block-pullquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}

.article-content .wp-block-pullquote cite,
.article-content .wp-block-quote cite {
  color: var(--hn-muted);
  font-size: 0.8em;
}

.article-content .wp-block-separator {
  width: min(180px, 45%);
  margin: 2.2em auto;
  border: 0;
  border-top: 2px solid var(--hn-border-strong);
  color: transparent;
}

.article-content .wp-block-separator.is-style-wide {
  width: 100%;
}

.article-content .wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 1.4em 0;
}

.article-content .wp-block-button__link,
.article-content .wp-element-button {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.7em 1.25em;
  border: 1px solid var(--hn-accent-dark);
  border-radius: var(--hn-pill);
  background: var(--hn-accent-dark);
  color: #fff;
  font-weight: 850;
  line-height: 1.25;
}

.article-content .is-style-outline > .wp-block-button__link {
  background: transparent;
  color: var(--hn-accent);
}

.article-content .wp-block-file {
  margin: 1.5em 0;
  padding: 14px 16px;
  border: 1px solid var(--hn-border);
  border-radius: var(--hn-radius-sm);
  background: var(--hn-shell);
}

.article-content .wp-block-file__button {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  margin-left: 10px;
  padding: 0.55em 1em;
  border-radius: var(--hn-pill);
  background: var(--hn-accent-dark);
  color: #fff;
}

.article-content audio,
.article-content .wp-block-audio audio {
  width: 100%;
}

.article-content .wp-block-code,
.article-content .wp-block-preformatted,
.article-content .wp-block-verse {
  max-width: 100%;
  overflow-x: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.article-content details,
.article-content .wp-block-details {
  margin: 1.4em 0;
  padding: 14px 16px;
  border: 1px solid var(--hn-border);
  border-radius: var(--hn-radius-sm);
  background: var(--hn-shell);
}

.article-content summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  color: var(--hn-accent-soft);
  font-weight: 850;
  cursor: pointer;
}

.article-content .wp-block-columns {
  gap: 22px;
}

.article-content .wp-block-media-text {
  gap: 22px;
  overflow: hidden;
  border: 1px solid var(--hn-border);
  border-radius: var(--hn-radius);
  background: var(--hn-shell);
}

.article-content .wp-block-media-text__content {
  padding: 20px;
}

.article-content .wp-block-group.has-background,
.article-content .wp-block-columns.has-background {
  padding: 20px;
  border-radius: var(--hn-radius);
}

.article-content .wp-block-cover {
  overflow: hidden;
  border-radius: var(--hn-radius);
}

.article-content .wp-block-cover a,
.article-content .wp-block-cover p {
  color: inherit;
}

.article-content .wp-block-video video,
.article-content .wp-block-embed iframe {
  max-width: 100%;
  border-radius: var(--hn-radius-sm);
}

.article-content .wp-block-search__inside-wrapper {
  display: flex;
  align-items: stretch;
  gap: 8px;
}

.article-content .wp-block-search__input {
  min-width: 0;
  flex: 1 1 auto;
}

.article-content .wp-block-search__button {
  flex: 0 0 auto;
  margin: 0;
}

.article-content .wp-block-calendar table {
  min-width: 0;
  display: table;
  margin: 0;
}

.article-content .wp-block-calendar caption {
  padding: 10px;
  color: var(--hn-accent-soft);
  font-weight: 850;
}

.article-content .wp-calendar-nav {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  margin-top: 10px;
}

.article-content .wp-block-latest-posts,
.article-content .wp-block-latest-comments,
.article-content .wp-block-rss,
.article-content .wp-block-page-list,
.article-content .wp-block-categories-list,
.article-content .wp-block-archives-list {
  list-style: none;
  padding-left: 0;
}

.article-content .wp-block-latest-posts > li,
.article-content .wp-block-latest-comments > li,
.article-content .wp-block-rss > li {
  margin: 0;
  padding: 12px 0;
  border-bottom: 1px solid var(--hn-border);
}

.article-content .wp-block-latest-posts > li:last-child,
.article-content .wp-block-latest-comments > li:last-child,
.article-content .wp-block-rss > li:last-child {
  border-bottom: 0;
}

.article-content .wp-block-query-pagination,
.article-content .wp-block-post-navigation-link {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.article-content .wp-block-query-pagination a,
.article-content .wp-block-query-pagination span,
.article-content .wp-block-post-navigation-link a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 0 13px;
  border: 1px solid var(--hn-border);
  border-radius: var(--hn-pill);
}

.article-content .wp-block-social-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0;
  list-style: none;
}

.article-content .wp-block-social-link a {
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.article-content .wp-block-navigation .wp-block-navigation-item__content {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

/* Native and Contact Form 7 controls inside articles. */
.article-content input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),
.article-content textarea,
.article-content select,
.article-content .wpcf7-form-control:not(.wpcf7-submit):not([type="checkbox"]):not([type="radio"]) {
  width: 100%;
  min-height: 44px;
  padding: 10px 13px;
  border: 1px solid var(--hn-border);
  border-radius: 10px;
  background: #111418;
  color: var(--hn-text);
}

.article-content textarea {
  min-height: 150px;
  resize: vertical;
}

.article-content label {
  color: var(--hn-text-soft);
  font-weight: 750;
}

.article-content input[type="submit"],
.article-content button,
.article-content .wpcf7-submit {
  min-height: 44px;
  padding: 0 20px;
  border: 0;
  border-radius: var(--hn-pill);
  background: var(--hn-accent-dark);
  color: #fff;
  font-weight: 850;
  cursor: pointer;
}

.article-content .wpcf7-response-output {
  margin: 1.25em 0 0;
  padding: 12px 14px;
  border-color: var(--hn-border-strong);
  border-radius: 10px;
  color: var(--hn-text-soft);
}

.article-content .wpcf7-not-valid-tip {
  color: var(--hn-danger);
}

/* Reset the old blanket 16:9 iframe rule, then opt video providers back in. */
.article-content iframe:not([src*="tiktok"]):not([src*="instagram"]) {
  width: 100%;
  max-width: 100%;
  height: min(70vh, 520px);
  min-height: 320px;
  aspect-ratio: auto;
}

body .article-content iframe[src*="youtube.com"][src],
body .article-content iframe[src*="youtube-nocookie.com"][src],
body .article-content iframe[src*="youtu.be"][src],
body .article-content iframe[src*="player.vimeo.com"][src],
body .article-content iframe[src*="dailymotion.com"][src],
body .article-content iframe[src*="videopress.com"][src],
.article-content .wp-block-embed-youtube iframe,
.article-content .wp-block-embed-vimeo iframe {
  height: auto;
  min-height: 0;
  aspect-ratio: 16 / 9;
}

body .article-content iframe[src*="open.spotify.com"][src] {
  height: 352px;
  min-height: 152px;
}

body .article-content iframe[src*="w.soundcloud.com"][src] {
  height: 166px;
  min-height: 166px;
}

body .article-content iframe[src*="google.com/maps"][src],
body .article-content iframe[src*="maps.google"][src] {
  height: 450px;
  min-height: 320px;
}

body .article-content iframe[src*="codepen.io"][src] {
  height: 500px;
  min-height: 360px;
}

/* Sidebar density and dark scrollbars. */
.hn-user-sidebar .tagcloud,
.hn-user-sidebar .wp-block-tag-cloud {
  scrollbar-width: thin;
  scrollbar-color: var(--hn-accent-dark) var(--hn-shell);
}

.hn-user-sidebar .tagcloud::-webkit-scrollbar,
.hn-user-sidebar .wp-block-tag-cloud::-webkit-scrollbar,
.article-content .wp-block-table::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.hn-user-sidebar .tagcloud::-webkit-scrollbar-track,
.hn-user-sidebar .wp-block-tag-cloud::-webkit-scrollbar-track,
.article-content .wp-block-table::-webkit-scrollbar-track {
  background: var(--hn-shell);
}

.hn-user-sidebar .tagcloud::-webkit-scrollbar-thumb,
.hn-user-sidebar .wp-block-tag-cloud::-webkit-scrollbar-thumb,
.article-content .wp-block-table::-webkit-scrollbar-thumb {
  border: 2px solid var(--hn-shell);
  border-radius: var(--hn-pill);
  background: var(--hn-accent-dark);
}

.hn-sidebar-toggle,
.hn-tagcloud-toggle {
  display: none;
}

@media (max-width: 991px) {
  .cards-grid > .hn-mobile-sidebar-inserted {
    grid-column: 1 / -1;
    width: 100%;
    margin: 4px 0;
  }

  .hn-mobile-sidebar-inserted .hn-sidebar-widget-area {
    gap: 14px;
  }

  .hn-mobile-sidebar-inserted:not(.hn-sidebar-expanded) .hn-mobile-secondary-widget {
    display: none;
  }

  .hn-mobile-sidebar-inserted .hn-mobile-priority-widget {
    order: -1;
  }

  .hn-mobile-sidebar-inserted .hn-sidebar-toggle {
    order: 1;
  }

  .hn-mobile-sidebar-inserted .hn-mobile-secondary-widget {
    order: 2;
  }

  .hn-mobile-sidebar-inserted .tagcloud,
  .hn-mobile-sidebar-inserted .wp-block-tag-cloud {
    max-height: none;
    overflow: visible;
  }

  .hn-mobile-sidebar-inserted .hn-mobile-extra-tag {
    display: none;
  }

  .hn-mobile-sidebar-inserted .hn-tagcloud-expanded .hn-mobile-extra-tag {
    display: inline-flex;
  }

  .hn-mobile-sidebar-inserted .wp-block-latest-comments__comment-excerpt {
    display: none;
  }

  .hn-mobile-sidebar-inserted .hn-sidebar-toggle,
  .hn-mobile-sidebar-inserted .hn-tagcloud-toggle {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0 16px;
    border: 1px solid var(--hn-border-strong);
    border-radius: var(--hn-pill);
    background: var(--hn-shell);
    color: var(--hn-accent);
    font-weight: 850;
    cursor: pointer;
  }

  .hn-mobile-sidebar-inserted .hn-sidebar-toggle {
    width: 100%;
  }

  .article-content .wp-block-columns:not(.is-not-stacked-on-mobile) {
    flex-direction: column;
  }

  .article-content .wp-block-media-text.is-stacked-on-mobile {
    grid-template-columns: 100%;
  }

  .article-content .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__media,
  .article-content .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content {
    grid-column: 1;
  }

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

  .article-content .wp-block-file__button {
    margin: 10px 0 0;
  }
}

@media (max-width: 560px) {
  .article-content table,
  .article-content .wp-block-table table {
    min-width: 480px;
  }

  .article-content iframe:not([src*="tiktok"]):not([src*="instagram"]) {
    height: min(65vh, 460px);
    min-height: 280px;
  }

  body .article-content iframe[src*="youtube.com"][src],
  body .article-content iframe[src*="youtube-nocookie.com"][src],
  body .article-content iframe[src*="youtu.be"][src],
  body .article-content iframe[src*="player.vimeo.com"][src],
  body .article-content iframe[src*="dailymotion.com"][src],
  body .article-content iframe[src*="videopress.com"][src] {
    height: auto;
    min-height: 0;
  }

  body .article-content iframe[src*="open.spotify.com"][src] {
    height: 352px;
    min-height: 152px;
  }

  body .article-content iframe[src*="w.soundcloud.com"][src] {
    height: 166px;
    min-height: 166px;
  }

  body .article-content iframe[src*="google.com/maps"][src],
  body .article-content iframe[src*="maps.google"][src] {
    height: 400px;
    min-height: 280px;
  }

  body .article-content iframe[src*="codepen.io"][src] {
    height: 460px;
    min-height: 360px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hn-mobile-sidebar-inserted,
  .article-content .wp-block-button__link,
  .article-content .wp-element-button {
    transition: none;
  }
}
