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

html {
	scroll-behavior: smooth;
}

body {
	margin: 0;
}

.nesk-header {
	border-bottom: 1px solid #e5e5e5;
}

.nesk-header__inner {
	min-height: 76px;
}

.nesk-main {
	padding-top: 48px;
	padding-bottom: 64px;
}

.nesk-footer {
	border-top: 1px solid #e5e5e5;
}

.nesk-footer__inner {
	min-height: 120px;
	padding-top: 32px;
	padding-bottom: 32px;
}

img {
	max-width: 100%;
	height: auto;
}
/* Hero – Split: illustration mode, independent of photo cropping. */
.nesk-hero--split .nesk-hero__image.is-style-nesk-illustration {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    max-width: 100%;
    margin-inline: auto;
    overflow: visible;
    background: transparent;
    border-radius: 0;
    box-shadow: none;
}
.nesk-hero--split .nesk-hero__image.is-style-nesk-illustration img {
    display: block;
    width: 100%;
    max-width: 420px;
    height: auto;
    max-height: 460px;
    aspect-ratio: auto;
    object-fit: contain;
    object-position: center;
}
/* Modern's photo decoration is not suitable for transparent illustrations. */
.nesk-hero--split .nesk-hero__media:has(.nesk-hero__image.is-style-nesk-illustration)::before {
    display: none;
}

/* Fluent Forms — shared NESK Framework styling (all design families). */
.nesk-contact__form-area .fluentform {
  color: var(--wp--preset--color--foreground, inherit);
}
.nesk-contact__form-area .fluentform .ff-el-group { margin-bottom: 1.25rem; }
.nesk-contact__form-area .fluentform .ff-el-input--label label {
  color: var(--wp--preset--color--foreground, inherit);
  font: inherit;
  font-weight: 600;
}
.nesk-contact__form-area .fluentform .ff-el-form-control {
  box-sizing: border-box;
  width: 100%;
  min-height: 44px;
  padding: .75rem .875rem;
  color: var(--wp--preset--color--foreground, inherit);
  background: var(--wp--preset--color--background, #fff);
  border: 1px solid var(--wp--preset--color--border, #d5dce0);
  border-radius: var(--nesk-radius-sm, 4px);
  font: inherit;
  line-height: 1.5;
  box-shadow: none;
}
.nesk-contact__form-area .fluentform textarea.ff-el-form-control { min-height: 130px; }
.nesk-contact__form-area .fluentform .ff-el-form-control:focus {
  border-color: var(--wp--preset--color--primary, #006b42);
  outline: 2px solid var(--wp--preset--color--primary, #006b42);
  outline-offset: 1px;
  box-shadow: none;
}
.nesk-contact__form-area .fluentform .ff-btn-submit,
.nesk-contact__form-area .fluentform .ff-btn-submit:not(.ff_btn_no_style) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: .8rem 1.4rem;
  color: var(--wp--preset--color--base, #fff);
  background: var(--wp--preset--color--primary, #006b42);
  border: 1px solid var(--wp--preset--color--primary, #006b42);
  border-radius: var(--nesk-radius-sm, 4px);
  font: inherit;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  box-shadow: none;
}
.nesk-contact__form-area .fluentform .ff-btn-submit:hover,
.nesk-contact__form-area .fluentform .ff-btn-submit:focus-visible {
  filter: brightness(.9);
  box-shadow: none;
}
.nesk-contact__form-area .fluentform .ff-el-is-error .ff-el-form-control {
  border-color: #b42318;
}
.nesk-contact__form-area .fluentform .error,
.nesk-contact__form-area .fluentform .ff-el-is-error .text-danger { color: #b42318; }
@media (max-width: 600px) {
  .nesk-contact__form-area .fluentform .ff-t-container { display: block; }
  .nesk-contact__form-area .fluentform .ff-t-cell { display: block; width: 100%; margin-bottom: 1rem; }
  .nesk-contact__form-area .fluentform .ff-btn-submit { width: 100%; }
}


/* 1.4.0: readable standard pages, without changing full-width landing-page patterns. */
.nesk-prose-page { padding-block: clamp(2rem, 5vw, 4rem); }
.nesk-prose-page > .wp-block-post-title,
.nesk-prose-page > .wp-block-post-content { width: min(100% - 2rem, 760px); max-width: 760px; margin-inline: auto; }
.nesk-prose-page .wp-block-post-content > :not(.alignwide):not(.alignfull) { max-width: 100%; }
/* The standard Page template should constrain ordinary text without breaking full-width patterns. */
.nesk-main > .wp-block-post-content > :not(.alignwide):not(.alignfull) { max-width: min(100% - 2rem, 760px); margin-inline: auto; }
/* Prevent action blocks inserted into a contact section from escaping its grid. */
.nesk-contact__inner > .wp-block-buttons,
.nesk-contact__inner > .wp-block-button { grid-column: 1 / -1; width: 100%; min-width: 0; }
.nesk-contact__info .wp-block-buttons,
.nesk-contact__info .wp-block-button { max-width: 100%; min-width: 0; }
.nesk-contact__inner > * { min-width: 0; }

/* 1.4.1: resilient text and CTA placement across design families. */
.nesk-services__grid > .wp-block-column, .nesk-service-card, .nesk-content-split__inner > * { min-width: 0; }
.nesk-service-card h2, .nesk-service-card h3, .nesk-content-split__title { overflow-wrap: break-word; word-break: normal; hyphens: auto; }
.nesk-contact__inner > .wp-block-buttons { justify-content: flex-start; }
.nesk-contact__inner > .wp-block-buttons > .wp-block-button { flex: 0 1 auto; }

/* 1.4.2: default text blocks are constrained; alignwide/full remain available. */
.nesk-page > .wp-block-post-content,
.nesk-main > .wp-block-post-content,
.nesk-landing-page > .wp-block-post-content { width: 100%; max-width: 100%; }
.nesk-page > .wp-block-post-content > :not(.alignwide):not(.alignfull),
.nesk-main > .wp-block-post-content > :not(.alignwide):not(.alignfull),
.nesk-landing-page > .wp-block-post-content > :not(.alignwide):not(.alignfull) {
  box-sizing: border-box;
  max-width: min(760px, calc(100% - 32px));
  margin-left: auto;
  margin-right: auto;
}
.nesk-contact__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-block: 1.5rem; }
.nesk-contact__actions .wp-block-button { max-width: 100%; }
.nesk-contact__actions .wp-block-button__link { white-space: normal; }

/* 1.4.3: protect prose width when a legacy NESK Page template was saved in the editor.
   Scope to ordinary direct content blocks; preserve full-width patterns. */
.nesk-page .wp-block-post-content > :where(p,h1,h2,h3,h4,h5,h6,ul,ol,blockquote,pre,table):not(.alignwide):not(.alignfull),
.nesk-main .wp-block-post-content > :where(p,h1,h2,h3,h4,h5,h6,ul,ol,blockquote,pre,table):not(.alignwide):not(.alignfull) {
  box-sizing: border-box; max-width: min(760px, calc(100% - 32px)); margin-left: auto; margin-right: auto;
}

/* 1.4.5: Core booking shortcode is rendered inside a core/shortcode wrapper.
   Constrain that wrapper like regular prose, without changing full-width blocks. */
.nesk-main .wp-block-post-content > .wp-block-shortcode:not(.alignwide):not(.alignfull),
.nesk-page .wp-block-post-content > .wp-block-shortcode:not(.alignwide):not(.alignfull),
.nesk-prose-page .wp-block-post-content > .wp-block-shortcode:not(.alignwide):not(.alignfull),
.nesk-landing-page .wp-block-post-content > .wp-block-shortcode:not(.alignwide):not(.alignfull) {
  box-sizing: border-box;
  width: min(760px, calc(100% - 32px));
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}
