/*═══════════════════════════════════════════
 * GUTENBERG BLOCKS — Vitsoe Design System
 *═══════════════════════════════════════════*/

/* Reset WP block width constraints */

.entry-content > :where(:not(.wp-block-*)),
.post-content > :where(:not(.wp-block-*)),
.page-content > :where(:not(.wp-block-*)) {
  max-width: none !important;
}
.entry-content > .alignwide,
.entry-content > .alignfull {
  max-width: none !important;
  width: auto !important;
}
.entry-content > .alignfull {
  margin-left: calc(-1 * ((100vw - 100%) / 2 + 15px)) !important;
  margin-right: calc(-1 * ((100vw - 100%) / 2 + 15px)) !important;
  padding-left: 15px !important;
  padding-right: 15px !important;
}
@media (min-width: 620px) {
  .entry-content > .alignfull {
    margin-left: calc(-1 * ((100vw - 100%) / 2 + 30px)) !important;
    margin-right: calc(-1 * ((100vw - 100%) / 2 + 30px)) !important;
    padding-left: 30px !important;
    padding-right: 30px !important;
  }
}

/* Body blocks constrained to vitsoe reading width */
h1, h2, h3, h4, h5, h6,
p,
ul, ol,
blockquote,
.wp-block-quote,
.wp-block-paragraph,
.wp-block-list,
.wp-block-heading,
.wp-block-buttons,
.wp-block-button,
.wp-block-search,
.wp-block-latest-posts,
.wp-block-categories,
.wp-block-tag-cloud,
.wp-block-latest-comments,
.wp-block-calendar,
.wp-block-archives {
  max-width: 40em;
}
.alignfull, .alignwide {
  max-width: none !important;
}

/*────── Blockquotes ──────*/
.wp-block-quote {
  margin: 1.412rem 0;
  padding: 1.176rem 0 1.176rem 1.765rem;
  border-left: 1px solid var(--border);
  border-right: none;
  border-top: none;
  border-bottom: none;
  font-size: 1rem;
  line-height: 1.412;
  font-style: italic;
}
.wp-block-quote p {
  margin: 0 0 1.412rem;
  font-style: inherit;
}
.wp-block-quote p:last-child {
  margin-bottom: 0;
}
.wp-block-quote cite,
.wp-block-quote__citation {
  display: block;
  margin-top: 0.353rem;
  font-size: 0.824rem;
  line-height: 1.429;
  color: var(--text-light);
  font-style: normal;
  font-weight: 700;
}
.wp-block-quote.alignfull {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.wp-block-quote.is-style-large,
.wp-block-quote.has-text-align-center {
  border-left: none;
  padding: 2.353rem 0;
  text-align: center;
}
.wp-block-quote.has-text-align-right {
  border-left: none;
  border-right: 1px solid var(--border);
  padding-left: 0;
  padding-right: 1.765rem;
}

/*────── Pullquote ──────*/
.wp-block-pullquote {
  padding: 2.353rem 0;
  border-top: 2px solid var(--text);
  border-bottom: 2px solid var(--text);
  border-left: none;
  border-right: none;
  text-align: center;
  max-width: 40em;
  margin: 2.353rem auto;
}
.wp-block-pullquote blockquote {
  border: none;
  margin: 0;
  padding: 0;
}
.wp-block-pullquote blockquote p {
  font-size: 1.529rem;
  line-height: 1.231;
  font-weight: 400;
  font-style: normal;
  margin: 0;
  max-width: none;
}
.wp-block-pullquote cite {
  font-size: 0.824rem;
  line-height: 1.429;
  display: block;
  text-align: center;
  margin-top: 0.588rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-light);
}
.wp-block-pullquote.alignfull {
  max-width: none !important;
}

/*────── Separator ──────*/
.wp-block-separator {
  border: none;
  border-top: 1px solid var(--border);
  margin: 2.353rem 0;
}
.wp-block-separator.is-style-wide {
  max-width: none !important;
}
.wp-block-separator.is-style-dots {
  border: none;
  text-align: center;
  height: auto;
}
.wp-block-separator.is-style-dots::before {
  content: '\00B7 \00B7 \00B7';
  color: var(--text-light);
  font-size: 1.5rem;
  letter-spacing: 1.5rem;
  padding-left: 1.5rem;
}
.wp-block-separator.has-background {
  padding: 0;
}
.wp-block-separator.has-alpha-channel-opacity {
  opacity: 1;
}

/*────── Buttons ──────*/
.wp-block-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.882rem;
  margin: 1.412rem 0;
}
.wp-block-buttons.aligncenter {
  justify-content: center;
}
.wp-block-buttons.alignright {
  justify-content: flex-end;
}
.wp-block-button {
  margin: 0;
}
.wp-block-button__link,
.wp-block-file .wp-block-file__button {
  display: inline-block;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.412;
  border-radius: 0;
  padding: 0.588rem 1.176rem;
  text-decoration: none;
  cursor: pointer;
  transition: all 150ms ease;
  box-shadow: none;
  color: var(--btn-text, var(--bg));
  background: var(--btn-bg, var(--text));
  border: 1px solid var(--btn-bg, var(--text));
}
.wp-block-button__link:where(:not(.has-text-color)),
.wp-block-file .wp-block-file__button:where(:not(.has-text-color)) {
  color: var(--btn-text, var(--bg));
}
.wp-block-button__link:where(:not(.has-background)),
.wp-block-file .wp-block-file__button:where(:not(.has-background)) {
  background: var(--btn-bg, var(--text));
  border-color: var(--btn-bg, var(--text));
}
.wp-block-button__link:hover,
.wp-block-file .wp-block-file__button:hover {
  filter: brightness(0.85);
  text-decoration: none;
}
.is-style-fill .wp-block-button__link:where(:not(.has-text-color)) {
  color: var(--btn-text, var(--bg));
}
.is-style-fill .wp-block-button__link:where(:not(.has-background)) {
  background: var(--btn-bg, var(--text));
  border-color: var(--btn-bg, var(--text));
}
.is-style-outline .wp-block-button__link {
  background: transparent !important;
}
.is-style-outline .wp-block-button__link:where(:not(.has-text-color)) {
  color: var(--btn-bg, var(--text));
  border-color: var(--btn-bg, var(--text));
}
.is-style-outline .wp-block-button__link:hover {
  filter: brightness(0.85);
  color: var(--btn-bg, var(--text));
}

/*────── Images ──────*/
.wp-block-image {
  margin-bottom: 1.765rem;
}
.wp-block-image img {
  display: block;
  width: 100%;
  height: auto;
  transition: opacity 150ms ease;
}
.wp-block-image a:hover img {
  opacity: 0.91;
}
.wp-block-image figcaption {
  margin-top: 0.588rem;
  margin-bottom: 0;
  font-size: 0.824rem;
  line-height: 1.429;
  color: var(--text-light);
  font-weight: 700;
  text-align: center;
}
.wp-block-image.alignleft {
  float: left;
  margin: 0 1.765rem 1.176rem 0;
  max-width: 50%;
}
.wp-block-image.alignright {
  float: right;
  margin: 0 0 1.176rem 1.765rem;
  max-width: 50%;
}
.wp-block-image.aligncenter {
  margin-left: auto;
  margin-right: auto;
}

/*────── Gallery ──────*/
.wp-block-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.588rem;
  margin-bottom: 1.765rem;
  padding: 0;
}
.wp-block-gallery .blocks-gallery-image,
.wp-block-gallery .blocks-gallery-item {
  margin: 0;
}
.wp-block-gallery .blocks-gallery-image img,
.wp-block-gallery .blocks-gallery-item img {
  width: 100%;
  height: auto;
  display: block;
  transition: opacity 150ms ease;
  border-radius: 0;
}
.wp-block-gallery .blocks-gallery-image figcaption,
.wp-block-gallery .blocks-gallery-item figcaption {
  font-size: 0.824rem;
  font-weight: 700;
  color: var(--text-light);
  text-align: center;
}
.wp-block-gallery.columns-1 { grid-template-columns: 1fr; }
.wp-block-gallery.columns-2 { grid-template-columns: repeat(2, 1fr); }
.wp-block-gallery.columns-3 { grid-template-columns: repeat(3, 1fr); }
.wp-block-gallery.columns-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 619px) {
  .wp-block-gallery {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .wp-block-gallery.columns-1 { grid-template-columns: 1fr !important; }
}

/*────── Cover ──────*/
.wp-block-cover {
  margin-bottom: 1.765rem;
  min-height: 20rem;
  border-radius: 0;
}
.wp-block-cover .wp-block-cover__inner-container {
  padding: 2.353rem;
}

/*────── Media & Text ──────*/
.wp-block-media-text {
  display: grid;
  grid-template-columns: 50% 50%;
  gap: 1.765rem;
  margin-bottom: 1.765rem;
}
.wp-block-media-text__media img,
.wp-block-media-text__media video {
  width: 100%;
  height: auto;
  display: block;
  transition: opacity 150ms ease;
}
.wp-block-media-text__content {
  padding: 1.176rem;
}
.wp-block-media-text__content > * {
  max-width: none !important;
}
@media (max-width: 619px) {
  .wp-block-media-text.is-stacked-on-mobile {
    grid-template-columns: 1fr !important;
  }
  .wp-block-media-text__media {
    margin-bottom: 1.176rem;
  }
}

/*────── Columns ──────*/
.wp-block-columns {
  display: flex;
  flex-wrap: wrap;
  gap: 1.765rem;
  margin-bottom: 1.765rem;
}
.wp-block-column {
  flex: 1 1 0;
  margin: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.wp-block-column > * {
  max-width: none !important;
  flex-shrink: 0;
}

/*—— Column vertical alignment (all columns) ——*/
.wp-block-columns.are-vertically-aligned-top {
  align-items: flex-start;
}
.wp-block-columns.are-vertically-aligned-center {
  align-items: center;
}
.wp-block-columns.are-vertically-aligned-bottom {
  align-items: flex-end;
}

/*—— Individual column vertical alignment — Override parent ——*/
.wp-block-column.is-vertically-aligned-top {
  justify-content: flex-start;
  align-self: flex-start;
}
.wp-block-column.is-vertically-aligned-center {
  justify-content: center;
  align-self: center;
}
.wp-block-column.is-vertically-aligned-bottom {
  justify-content: flex-end;
  align-self: flex-end;
}

/* Mobile stacking */
@media (max-width: 619px) {
  .wp-block-columns:not(.is-not-stacked-on-mobile) {
    flex-direction: column;
  }
  .wp-block-column {
    flex-basis: 100% !important;
    align-self: stretch !important;
  }
}

/*────── Group ──────*/
.wp-block-group {
  padding: 0;
  margin-bottom: 1.765rem;
}
.wp-block-group.has-background {
  padding: 1.765rem;
}
.wp-block-group__inner-container > * {
  max-width: none !important;
}
.wp-block-group.alignfull {
  padding: 3.529rem 0;
}
.wp-block-group.alignfull > .wp-block-group__inner-container {
  max-width: 69.4rem;
  margin: 0 auto;
  padding: 0 0.833rem;
}
@media (min-width: 620px) {
  .wp-block-group.alignfull > .wp-block-group__inner-container {
    padding: 0 1.67rem;
  }
}
.wp-block-group .wp-block-group__background {
  border-radius: 0;
}

/*────── Code / Preformatted / Verse ──────*/
.wp-block-code code {
  font-family: 'SF Mono', 'Fira Code', monospace;
  font-size: 0.824rem;
  line-height: 1.429;
  background: var(--surface);
  padding: 1.176rem;
  display: block;
  overflow-x: auto;
  border-radius: 0;
  tab-size: 2;
  font-variant-ligatures: none;
}
.wp-block-preformatted pre {
  font-family: 'SF Mono', 'Fira Code', monospace;
  font-size: 0.824rem;
  line-height: 1.412;
  background: var(--text);
  color: var(--bg);
  padding: 1.176rem;
  border-radius: 0;
  margin: 1.412rem 0;
  tab-size: 2;
}
.wp-block-verse {
  padding: 1.176rem;
  margin-bottom: 1.412rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 0;
  overflow-x: auto;
  font-size: 0.824rem;
  line-height: 1.6;
  max-width: 40em;
}

/*────── Tables ──────*/
.wp-block-table {
  margin-bottom: 1.412rem;
  overflow-x: auto;
}
.wp-block-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.941rem;
  line-height: 1.25;
}
.wp-block-table thead th {
  font-weight: 700;
  text-align: left;
  border-bottom: 2px solid var(--text);
  padding-bottom: 0.588rem;
  font-size: 0.824rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.wp-block-table tbody td {
  border-bottom: 1px solid var(--border);
  padding: 0.588rem 0;
  font-variant-numeric: tabular-nums;
}
.wp-block-table.is-style-stripes tbody tr:nth-child(odd) {
  background: var(--surface);
}
.wp-block-table.aligncenter {
  margin-left: auto;
  margin-right: auto;
}
.wp-block-table figcaption {
  font-size: 0.824rem;
  line-height: 1.429;
  color: var(--text-light);
  font-weight: 700;
  text-align: center;
  margin-top: 0.588rem;
}

/*────── Video / Audio / Embed / File ──────*/
.wp-block-video {
  margin-bottom: 1.765rem;
}
.wp-block-video video {
  width: 100%;
  height: auto;
  display: block;
}
.wp-block-video figcaption,
.wp-block-audio figcaption,
.wp-block-embed figcaption {
  margin-top: 0.588rem;
  margin-bottom: 0;
  font-size: 0.824rem;
  line-height: 1.429;
  color: var(--text-light);
  font-weight: 700;
  text-align: center;
}
.wp-block-audio { margin-bottom: 1.765rem; }
.wp-block-audio audio { width: 100%; }
.wp-block-embed { margin-bottom: 1.765rem; }

.wp-block-file {
  display: flex;
  align-items: center;
  gap: 1.176rem;
  flex-wrap: wrap;
  margin-bottom: 1.176rem;
  font-size: 1rem;
  line-height: 1.412;
}
.wp-block-file__button {
  padding: 0.353rem 1.176rem;
  font-size: 0.824rem;
  font-weight: 400;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  cursor: pointer;
  transition: all 150ms ease;
}
.wp-block-file__button:hover {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
  text-decoration: none;
}

/*────── Latest Posts ──────*/
.wp-block-latest-posts {
  list-style: none;
  padding: 0;
}
.wp-block-latest-posts__post {
  margin-bottom: 1.765rem;
  padding-bottom: 1.765rem;
  border-bottom: 1px solid var(--border);
}
.wp-block-latest-posts__post:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}
.wp-block-latest-posts__post-title {
  font-weight: 700;
  font-size: 1.529rem;
  line-height: 1.231;
  margin-bottom: 0.353rem;
}
.wp-block-latest-posts__post-title a {
  color: var(--text);
  text-decoration: none;
}
.wp-block-latest-posts__post-title a:hover {
  color: var(--accent);
  text-decoration: underline;
}
.wp-block-latest-posts__post-date {
  font-size: 0.824rem;
  color: var(--text-light);
  line-height: 1.429;
  display: block;
  margin-bottom: 0.353rem;
}
.wp-block-latest-posts__post-excerpt {
  margin: 0;
  max-width: 40em;
}
.wp-block-latest-posts__post-excerpt p {
  font-size: 1rem;
  line-height: 1.412;
  margin: 0;
}
.wp-block-latest-posts.is-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.765rem;
}
@media (min-width: 620px) {
  .wp-block-latest-posts.is-grid {
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  }
}

/*────── Categories ──────*/
.wp-block-categories {
  list-style: none;
  padding: 0;
  margin: 0 0 1.412rem;
}
.wp-block-categories li {
  margin-bottom: 0.353rem;
  padding-left: 0;
  list-style: none;
  line-height: 1.412;
}
.wp-block-categories a {
  color: var(--text);
  text-decoration: none;
}
.wp-block-categories a:hover {
  color: var(--accent);
  text-decoration: underline;
}

/*────── Tag Cloud ──────*/
.wp-block-tag-cloud {
  display: flex;
  flex-wrap: wrap;
  gap: 0.588rem;
  padding: 0;
  margin: 0 0 1.412rem;
}
.wp-block-tag-cloud a {
  display: inline-block;
  font-size: 0.824rem !important;
  padding: 0.353rem 0.882rem;
  border: 1px solid var(--border);
  color: var(--text);
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 400;
  transition: all 150ms ease;
}
.wp-block-tag-cloud a:hover {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
  text-decoration: none;
}

/*────── Social Links ──────*/
.wp-block-social-links {
  gap: 0.882rem;
  padding: 0;
  margin: 0;
}
.wp-block-social-links .wp-social-link {
  padding: 0;
  margin: 0;
}
.wp-block-social-links .wp-social-link a {
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent !important;
  color: var(--text);
  transition: color 150ms ease;
  box-shadow: none;
}
.wp-block-social-links .wp-social-link a:hover {
  color: var(--accent);
  background: transparent !important;
}
.wp-block-social-links .wp-social-link svg {
  width: 1.412rem;
  height: 1.412rem;
}

/*────── Search ──────*/
.wp-block-search {
  margin-bottom: 1.765rem;
}
.wp-block-search__inside-wrapper {
  display: flex;
  border: 1px solid var(--border);
}
.wp-block-search__input {
  flex: 1;
  padding: 0.588rem 0.882rem;
  border: none;
  border-radius: 0;
  font-size: 1rem;
  font-family: var(--font);
  background: var(--bg);
  color: var(--text);
  line-height: 1.412;
}
.wp-block-search__input:focus {
  outline: none;
}
.wp-block-search__button {
  padding: 0.588rem 1.176rem;
  background: var(--text);
  color: var(--bg);
  border: none;
  border-radius: 0;
  font-size: 1rem;
  cursor: pointer;
  font-family: var(--font);
  transition: background 150ms ease;
}
.wp-block-search__button:hover {
  background: var(--accent);
}
.wp-block-search__button svg {
  fill: var(--bg);
}
.wp-block-search.wp-block-search__button-inside .wp-block-search__inside-wrapper {
  padding: 0;
}
.wp-block-search.wp-block-search__button-inside .wp-block-search__button {
  margin: 2px;
  padding: 0.353rem 0.882rem;
}

/*────── Latest Comments ──────*/
.wp-block-latest-comments {
  list-style: none;
  padding: 0;
  margin: 0 0 1.412rem;
}
.wp-block-latest-comments__comment {
  margin-bottom: 1.765rem;
  padding-bottom: 1.765rem;
  border-bottom: 1px solid var(--border);
}
.wp-block-latest-comments__comment:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}
.wp-block-latest-comments__comment-excerpt p {
  font-size: 1rem;
  line-height: 1.412;
  margin: 0;
}
.wp-block-latest-comments__comment-meta {
  font-size: 0.824rem;
  color: var(--text-light);
  line-height: 1.429;
  margin-bottom: 0.353rem;
}
.wp-block-latest-comments__comment-author {
  font-weight: 700;
  color: var(--text);
}

/*────── Calendar ──────*/
.wp-block-calendar table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.941rem;
  line-height: 1.25;
}
.wp-block-calendar th {
  font-weight: 700;
  text-align: center;
  border-bottom: 2px solid var(--text);
  padding: 0.588rem;
  text-transform: uppercase;
  font-size: 0.824rem;
  letter-spacing: 0.04em;
}
.wp-block-calendar td {
  text-align: center;
  border: 1px solid var(--border);
  padding: 0.353rem;
}
.wp-block-calendar a {
  color: var(--accent);
  text-decoration: underline;
  font-weight: 700;
}

/*────── Navigation Block ──────*/
.wp-block-navigation {
  font-size: 0.941rem;
  line-height: 1.176;
}
.wp-block-navigation .wp-block-navigation-item__content {
  color: var(--text);
  text-decoration: none;
  padding: 0.294rem 0;
  font-weight: 400;
}
.wp-block-navigation .wp-block-navigation-item__content:hover {
  color: var(--accent);
  text-decoration: underline;
}
.wp-block-navigation__submenu-container {
  border: 1px solid var(--border);
  border-radius: 0;
  background: var(--bg);
  padding: 0.294rem 0;
}
.wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 0.294rem 1.176rem;
  font-size: 0.941rem;
}
.wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: var(--surface);
  text-decoration: none;
}
.wp-block-navigation .wp-block-navigation__responsive-container {
  background: var(--bg);
}

/*────── Spacer ──────*/
.wp-block-spacer {
  max-height: none !important;
}

/*────── Editor Styles ──────*/
.editor-styles-wrapper {
  font-family: var(--font);
  font-size: 1rem;
  line-height: 1.412;
  color: var(--text, #000);
}
.editor-styles-wrapper p {
  font-size: 1rem;
  line-height: 1.412;
}
.editor-styles-wrapper blockquote {
  border-left: 1px solid var(--border, #c2c2c2);
}
.editor-styles-wrapper .wp-block-pullquote {
  border-top: 2px solid var(--text, #000);
  border-bottom: 2px solid var(--text, #000);
}
.editor-styles-wrapper .wp-block-separator {
  border-top: 1px solid var(--border, #c2c2c2);
}
.editor-styles-wrapper .wp-block-button__link {
  background: var(--bg, #fff);
  color: var(--text, #000);
  border: 1px solid var(--text, #000);
}
.editor-styles-wrapper .wp-block-tag-cloud a {
  border: 1px solid var(--border, #c2c2c2);
  color: var(--text, #000);
}
.editor-styles-wrapper .wp-block-quote {
  border-left: 1px solid var(--border, #c2c2c2);
}
.editor-styles-wrapper .wp-block-table table {
  border-collapse: collapse;
}
.editor-styles-wrapper .wp-block-table thead th {
  border-bottom: 2px solid var(--text, #000);
}
.editor-styles-wrapper .wp-block-code code {
  background: var(--surface, #f0f0f0);
}
.editor-styles-wrapper .wp-block-button .wp-block-button__link:hover {
  background: var(--accent, #0073b1);
  border-color: var(--accent, #0073b1);
}
