/* LKS_THEME_V45_BALANCED_HEADER_SPACING_CONDITIONAL_SUBMENU_LINE
   Clean ink-style Grav theme.
   V45: balanced fixed header rhythm, submenu separator only when submenu is open. */
:root {
  --common-font: "Josefin Sans Regular";
  --page-bg: rgb(251, 243, 234);
  --text-color: rgb(0, 0, 0);
  --muted-text-color: rgba(0, 0, 0, 0.72);
  --line-color: rgba(0, 0, 0, 0.42);
  --header-height-closed: 80px;
  --header-height-open: 112px;
  --header-height: var(--header-height-closed);
  --header-bg: rgba(0, 0, 0, 0.80);
  --header-line-color: rgba(255, 255, 255, 0.46);
  --brand-it-color: #6fad8c;
  --brand-dev-color: #ac90cf;
  --brand-auto-color: #c59a4d;
  --brand-media-color: #70acc2;
  --page-side-padding: 40px;
  --line-fade-size: 30px;
  --content-max-width: 1180px;
  --reading-max-width: 900px;
  --content-ink-shadow: 0 0 0.55px rgba(0, 0, 0, 0.42), 0 0 1.35px rgba(0, 0, 0, 0.26), 0 0 2.1px rgba(0, 0, 0, 0.12);
}

body.has-open-subnav { --header-height: var(--header-height-open); }
body:has(.site-subnavigation.is-open) { --header-height: var(--header-height-open); }

@font-face {
  font-family: "Josefin Sans Regular";
  src: url("../fonts/JosefinSans-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

* { box-sizing: border-box; }
html { min-height: 100%; overflow-y: scroll; background: var(--page-bg) !important; }
body {
  min-height: 100%;
  margin: 0 !important;
  padding: 0 !important;
  overflow-x: hidden;
  overflow-y: auto;
  background: var(--page-bg) !important;
  color: var(--text-color) !important;
  font-family: var(--common-font), "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
  font-size: 14px;
  letter-spacing: 1.45px;
  -webkit-text-stroke: 0 transparent !important;
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}
body::-webkit-scrollbar { width: 15px; }
body::-webkit-scrollbar-track { background: #f1f1f1; }
body::-webkit-scrollbar-thumb { background: #b0b0b0; }
.fixed { position: fixed; }
.layer-one { z-index: 1; }
.layer-six { z-index: 6; }
.overlay-gradient {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  opacity: var(--lks-page-vignette-opacity, 1);
  background-image: radial-gradient(
    at var(--lks-page-vignette-center-x, 50%) var(--lks-page-vignette-center-y, 46%),
    rgba(0, 0, 0, var(--lks-page-vignette-inner-alpha, 0)) 0%,
    rgba(0, 0, 0, var(--lks-page-vignette-mid-alpha, 0.016)) var(--lks-page-vignette-mid-stop, 58%),
    rgba(0, 0, 0, var(--lks-page-vignette-edge-alpha, 0.115)) var(--lks-page-vignette-edge-stop, 86%),
    rgba(0, 0, 0, var(--lks-page-vignette-outer-alpha, 0.120)) 100%
  );
}
.site-header,
.site-header-fixed,
#site-header-fixed-v45 {
  position: fixed !important;
  inset: 0 0 auto 0 !important;
  z-index: 2147483000 !important;
  width: 100vw !important;
  height: var(--header-height) !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: rgb(255, 255, 255) !important;
  background: var(--header-bg) !important;
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
  box-shadow: none !important;
  overflow: hidden !important;
  isolation: isolate;
}
.site-header-inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 1800px;
  height: var(--header-height);
  margin: 0 auto;
  padding: 17px var(--page-side-padding) 7px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
}
.site-branding {
  display: block;
  width: 100%;
  margin: 0 auto;
  text-align: center !important;
  font-size: clamp(14px, 0.98vw, 18px) !important;
  line-height: 1.12;
  letter-spacing: clamp(2px, 0.21vw, 3.5px);
  font-weight: 900 !important;
  text-transform: uppercase;
  color: rgb(255, 255, 255) !important;
  text-shadow: 0 0 1px rgba(255, 255, 255, 0.40) !important;
  min-height: 21px;
}
.site-brand-title,
.site-brand-title:link,
.site-brand-title:visited,
.site-brand-title:hover,
.site-brand-title:active,
.site-brand-subtitle,
.site-brand-separator {
  color: rgb(255, 255, 255) !important;
  text-decoration: none !important;
  font-weight: 900 !important;
  text-shadow: 0 0 1px rgba(255, 255, 255, 0.40) !important;
}
.site-brand-separator { margin: 0 0.36em; }
.brand-dot { margin: 0 0.38em; color: rgba(255,255,255,0.90) !important; }
.brand-segment { font-weight: 900 !important; }
.brand-segment-it { color: var(--brand-it-color) !important; }
.brand-segment-dev { color: var(--brand-dev-color) !important; }
.brand-segment-auto { color: var(--brand-auto-color) !important; }
.brand-segment-media { color: var(--brand-media-color) !important; }
.brand-segment-it,
.brand-segment-dev,
.brand-segment-auto,
.brand-segment-media {
  text-shadow: 0 0 1px rgba(255,255,255,0.18), 0 0 4px rgba(255,255,255,0.08) !important;
}
.site-rule,
hr.site-rule {
  width: 100%;
  max-width: 1800px;
  height: 1px;
  flex: 0 0 1px;
  margin-left: auto;
  margin-right: auto;
  border: none !important;
  background: linear-gradient(
    to right,
    rgba(255, 255, 255, 0) 0,
    var(--header-line-color) var(--line-fade-size),
    var(--header-line-color) calc(100% - var(--line-fade-size)),
    rgba(255, 255, 255, 0) 100%
  ) !important;
  box-shadow: none !important;
}
.site-rule-top {
  display: block !important;
  margin-top: 7px;
  margin-bottom: 10px;
}
.site-rule-bottom { display: none !important; }
.site-navigation {
  display: block;
  width: 100%;
  max-width: 1800px;
  margin: 0 auto;
  text-align: center;
  flex: 0 0 auto;
}
.nav-list,
.subnav-list {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
  text-align: center;
}
.nav-list { gap: 0 clamp(20px, 2.7vw, 52px); min-height: 24px; }
.subnav-list { gap: 0 clamp(18px, 2.15vw, 42px); min-height: 24px; }
.nav-item,
.subnav-item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  margin: 0 !important;
  padding: 0 !important;
  white-space: nowrap;
}
.nav-children { display: none !important; }
.nav-link,
.nav-link:link,
.nav-link:visited,
.subnav-link,
.subnav-link:link,
.subnav-link:visited {
  position: relative;
  display: inline-block;
  text-decoration: none !important;
  text-align: center;
  text-transform: uppercase;
  transition: filter 0.20s ease, opacity 0.20s ease, text-shadow 0.20s ease;
}
.nav-link,
.nav-link:link,
.nav-link:visited {
  color: rgb(255,255,255) !important;
  font-family: var(--common-font), "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
  font-size: clamp(11px, 0.66vw, 13px) !important;
  font-weight: 900 !important;
  line-height: 1.05;
  letter-spacing: clamp(1.6px, 0.18vw, 2.4px);
  text-shadow: 0 0 1px rgba(255,255,255,0.34) !important;
  padding: 0 0 6px;
}
.subnav-link,
.subnav-link:link,
.subnav-link:visited {
  color: rgb(255,255,255) !important;
  font-family: var(--common-font), "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
  font-size: clamp(10px, 0.56vw, 12px) !important;
  font-weight: 900 !important;
  line-height: 1.05;
  letter-spacing: clamp(1.25px, 0.15vw, 2px);
  opacity: 0.90;
  text-shadow: 0 0 1px rgba(255,255,255,0.30) !important;
  padding: 0 0 5px;
}
.nav-link::after,
.subnav-link::after {
  content: "" !important;
  position: absolute;
  left: 8%;
  right: 8%;
  bottom: 0;
  height: 1px;
  background: linear-gradient(to right, transparent 0, rgba(255,255,255,0.82) var(--lks-nav-underline-fade-start, 18%), rgba(255,255,255,0.82) var(--lks-nav-underline-fade-end, 82%), transparent 100%);
  opacity: 0;
  transition: opacity 0.18s ease;
  pointer-events: none;
}
.nav-link:hover,
.nav-link:focus,
.subnav-link:hover,
.subnav-link:focus,
.site-brand-title:hover,
.site-brand-title:focus {
  color: rgb(255,255,255) !important;
  filter: blur(1.05px) !important;
  opacity: 0.88 !important;
  text-shadow: 0 0 7px rgba(255,255,255,0.94) !important;
  outline: none;
}
.nav-item.is-active .nav-link::after,
.nav-item.is-open .nav-link::after,
.nav-item.is-selected .nav-link::after,
.nav-link:hover::after,
.nav-link:focus::after,
.subnav-item.is-active .subnav-link::after,
.subnav-link:hover::after,
.subnav-link:focus::after { opacity: 1; }
.nav-item.is-active .nav-link,
.nav-item.is-open .nav-link,
.nav-item.is-selected .nav-link,
.subnav-item.is-active .subnav-link { opacity: 1 !important; }
.site-subnav-shell {
  display: none;
  width: 100%;
  max-width: 1800px;
  margin: 0 auto;
  padding: 0;
  text-align: center;
  flex: 0 0 auto;
}
body.has-open-subnav .site-subnav-shell,
.site-subnav-shell.is-open,
.site-subnav-shell:has(.site-subnavigation.is-open) { display: block; }
.site-rule-subnav {
  display: none !important;
  margin-top: 1px !important;
  margin-bottom: 6px !important;
}
body.has-open-subnav .site-rule-subnav,
.site-subnav-shell.is-open .site-rule-subnav,
.site-subnav-shell:has(.site-subnavigation.is-open) .site-rule-subnav { display: block !important; }
.site-subnav-panels {
  display: block;
  width: 100%;
}
.site-subnavigation {
  display: none;
  width: 100%;
  max-width: 1800px;
  margin: 0 auto;
  padding: 0;
  text-align: center;
}
.site-subnavigation.is-open { display: block; }
.content-layer-a {
  position: relative !important;
  z-index: 6;
  min-height: 100vh;
  min-height: 100dvh;
  width: 100%;
  padding-left: var(--page-side-padding);
  padding-right: var(--page-side-padding);
  padding-top: calc(var(--header-height) + 28px) !important;
  padding-bottom: 56px;
  letter-spacing: 1px;
}
.content-layer-b {
  width: 100%;
  min-height: calc(100vh - var(--header-height) - 84px);
  min-height: calc(100dvh - var(--header-height) - 84px);
  display: flex;
  align-items: center;
}
.content-layer-c,
.site-main { width: 100%; position: relative; }
.page-content,
.modular-section,
.error-page {
  width: min(100%, var(--content-max-width));
  margin-left: auto;
  margin-right: auto;
  font-size: 18px;
  line-height: 1.28;
  letter-spacing: 1px;
  color: var(--text-color) !important;
  text-shadow: var(--content-ink-shadow) !important;
}
.page-content:empty,
.site-main:empty { display: none; }
.page-content > p,
.page-content > ul,
.page-content > ol,
.page-content > blockquote,
.modular-section > p,
.modular-section > ul,
.modular-section > ol,
.modular-section > blockquote { max-width: var(--reading-max-width); }
.page-content :where(h1,h2,h3,h4,h5,h6,p,li,td,th,span,strong,b,em,i,a,blockquote,dd,dt,label,legend,summary),
.modular-section :where(h1,h2,h3,h4,h5,h6,p,li,td,th,span,strong,b,em,i,a,blockquote,dd,dt,label,legend,summary),
.error-page :where(h1,h2,h3,h4,h5,h6,p,li,td,th,span,strong,b,em,i,a,blockquote,dd,dt,label,legend,summary) {
  color: var(--text-color) !important;
  text-shadow: var(--content-ink-shadow) !important;
}
.page-content > h1:first-child {
  margin: 0 0 12px;
  text-align: center;
  font-size: clamp(22px, 2.2vw, 32px);
  line-height: 1.18;
  letter-spacing: 2.2px;
  text-transform: uppercase;
}
.page-content > h1:first-child + p {
  max-width: var(--content-max-width);
  margin: 0 auto 34px;
  text-align: center;
  font-size: clamp(16px, 1.14vw, 18px);
  line-height: 1.35;
}
.page-content > h1:first-child + p::after {
  content: "";
  display: block;
  width: 100%;
  height: 1px;
  margin-top: 34px;
  border: none;
  background: linear-gradient(to right, rgba(0, 0, 0, 0) 0, var(--line-color) var(--line-fade-size), var(--line-color) calc(100% - var(--line-fade-size)), rgba(0, 0, 0, 0) 100%);
  box-shadow: none;
}
h1, h2, h3, h4, h5, h6 { font-family: var(--common-font), "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; font-weight: 900 !important; letter-spacing: 2px; margin-top: 0; }
h2 { margin-bottom: 0.65em; }
p { margin-top: 0; margin-bottom: 1.25em; }
span, strong, b, em, i { color: inherit; }
ul, ol { margin-top: 0; margin-bottom: 1.4em; padding-left: 1.35em; }
li { margin-bottom: 0.45em; }
a:link, a:visited { color: rgb(0, 0, 0) !important; text-decoration: none; transition: filter 0.20s ease, opacity 0.20s ease, text-shadow 0.20s ease; }
a:hover, a:focus { color: rgb(0, 0, 0) !important; filter: blur(0.62px); opacity: 0.82; text-shadow: 0 0 1px rgba(0, 0, 0, 0.72), 0 0 3px rgba(0, 0, 0, 0.30) !important; }
a:active { color: rgb(0, 0, 0) !important; }
img { max-width: 100%; height: auto; box-shadow: 0 0 5px rgba(0, 0, 0, 0.30), 0 0 5px rgba(0, 0, 0, 0.12); outline-style: solid; outline-color: rgba(0, 0, 0, 0.55); outline-width: 2px; outline-offset: 0; transition: box-shadow 0.6s ease, outline-color 0.6s ease, filter 0.6s ease; }
div { font-size: 18px; letter-spacing: 1px; }
table { max-width: 100%; font-size: 14px; background-color: rgba(255,255,255,0.55); border-left: 35px solid transparent; border-right: 35px solid transparent; border-top: 18px solid transparent; border-bottom: 22px solid transparent; border-spacing: 0; border-collapse: collapse; outline: 1px solid rgba(0,0,0,0.35); outline-offset: 0; box-shadow: 0 0 10px rgba(0,0,0,0.20), 0 0 25px rgba(0,0,0,0.10); }
td { font-size: 14px; padding: 3px; }
input[type="text"], input[type="password"], textarea {
  max-width: 100%;
  font-family: var(--common-font), "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
}
.gpm-edit-link,
.edit-page-link,
a[href*="/admin/pages/"][href*="edit"],
a[href*="Edit Page On Grav"] { display: none !important; }
@media (max-width: 1180px) {
  :root { --page-side-padding: 24px; }
  .site-header-inner { padding-inline: var(--page-side-padding); }
  .site-branding { font-size: clamp(14px, 1.8vw, 18px) !important; letter-spacing: clamp(1.5px, 0.22vw, 3px); }
  .nav-list { gap: 2px 24px; }
  .subnav-list { gap: 2px 18px; }
}
@media (max-width: 840px) {
  :root { --header-height-closed: 116px; --header-height-open: 148px; --page-side-padding: 18px; }
  .site-header, .site-header-fixed, #site-header-fixed-v45 { overflow: hidden !important; }
  .site-header-inner { height: auto; min-height: var(--header-height); padding: 11px var(--page-side-padding) 9px; }
  .site-branding { font-size: 13px !important; line-height: 1.3; }
  .site-brand-subtitle { display: inline; }
  .site-rule-top { margin-top: 8px; margin-bottom: 8px; }
  .nav-list, .subnav-list { gap: 6px 14px; }
  .nav-link { font-size: 11px !important; }
  .subnav-link { font-size: 10px !important; }
  .content-layer-a { padding-left: 18px; padding-right: 18px; padding-top: calc(var(--header-height) + 24px) !important; }
}

/* LKS_LOCKED_HEADER_LAYOUT_MENU_STATE_FIX
   Minimal patch only. Do not change header sizing/spacing values above. */
body.has-open-subnav .nav-item.is-active:not(.is-open):not(.is-selected) .nav-link::after {
  opacity: 0 !important;
}

.nav-link:focus:not(:hover),
.subnav-link:focus:not(:hover),
.site-brand-title:focus:not(:hover) {
  filter: none !important;
  outline: none !important;
}

.nav-link:focus:not(:hover) {
  opacity: 1 !important;
  text-shadow: 0 0 1px rgba(255,255,255,0.34) !important;
}

.subnav-link:focus:not(:hover) {
  opacity: 0.90 !important;
  text-shadow: 0 0 1px rgba(255,255,255,0.30) !important;
}

.site-brand-title:focus:not(:hover) {
  opacity: 1 !important;
  text-shadow: 0 0 1px rgba(255, 255, 255, 0.40) !important;
}


/* LKS_ACTIVE_MENU_COLOR_LOCKED_LAYOUT
   Minimal color-only patch. Do not change header sizing/spacing. */
:root {
  --nav-selected-color: #d8c285;
  --subnav-selected-color: #a9c7bd;
}

/* When a submenu is opened by JS, hide the server-side active parent underline/color
   unless it is the currently opened/selected item. */
body.has-open-subnav .nav-item.is-active:not(.is-open):not(.is-selected) .nav-link,
body.has-open-subnav .nav-item.is-active:not(.is-open):not(.is-selected) .nav-link:link,
body.has-open-subnav .nav-item.is-active:not(.is-open):not(.is-selected) .nav-link:visited {
  color: rgb(255,255,255) !important;
  text-shadow: 0 0 1px rgba(255,255,255,0.34) !important;
}

body.has-open-subnav .nav-item.is-active:not(.is-open):not(.is-selected) .nav-link::after {
  opacity: 0 !important;
}

/* Persistent selected/open color for the current top-level item. */
.nav-item.is-active .nav-link,
.nav-item.is-active .nav-link:link,
.nav-item.is-active .nav-link:visited,
.nav-item.is-open .nav-link,
.nav-item.is-open .nav-link:link,
.nav-item.is-open .nav-link:visited,
.nav-item.is-selected .nav-link,
.nav-item.is-selected .nav-link:link,
.nav-item.is-selected .nav-link:visited {
  color: var(--nav-selected-color) !important;
  text-shadow: 0 0 1px rgba(216,194,133,0.62), 0 0 5px rgba(216,194,133,0.18) !important;
}

.nav-item.is-active .nav-link:hover,
.nav-item.is-open .nav-link:hover,
.nav-item.is-selected .nav-link:hover {
  color: var(--nav-selected-color) !important;
  text-shadow: 0 0 7px rgba(216,194,133,0.80) !important;
}

/* Persistent selected color for current submenu item. */
.subnav-item.is-active .subnav-link,
.subnav-item.is-active .subnav-link:link,
.subnav-item.is-active .subnav-link:visited {
  color: var(--subnav-selected-color) !important;
  opacity: 1 !important;
  text-shadow: 0 0 1px rgba(169,199,189,0.62), 0 0 5px rgba(169,199,189,0.18) !important;
}

.subnav-item.is-active .subnav-link:hover {
  color: var(--subnav-selected-color) !important;
  text-shadow: 0 0 7px rgba(169,199,189,0.80) !important;
}

.nav-item.is-active .nav-link::after,
.nav-item.is-open .nav-link::after,
.nav-item.is-selected .nav-link::after {
  background: linear-gradient(to right, transparent 0, rgba(216,194,133,0.88) var(--lks-nav-underline-fade-start, 18%), rgba(216,194,133,0.88) var(--lks-nav-underline-fade-end, 82%), transparent 100%) !important;
}

.subnav-item.is-active .subnav-link::after {
  background: linear-gradient(to right, transparent 0, rgba(169,199,189,0.88) var(--lks-nav-underline-fade-start, 18%), rgba(169,199,189,0.88) var(--lks-nav-underline-fade-end, 82%), transparent 100%) !important;
}

/* LKS_CONTENT_LINES_AND_INK_TABLES_PATCH
   Minimal content-only patch. Does not modify locked header sizing or spacing.
   Official table class: ink-table. */
:root {
  --content-line-fade-size: 30px;
  --content-line-opacity: 0.42;
  --content-vertical-line-fade-size: 18px;
}

/* Faded horizontal rules in page content. */
.page-content hr,
.modular-section hr,
.error-page hr {
  display: block;
  width: 100%;
  height: 1px;
  margin: 1.55em auto;
  padding: 0;
  border: 0 !important;
  background: linear-gradient(
    to right,
    rgba(0, 0, 0, 0) 0,
    rgba(0, 0, 0, var(--content-line-opacity)) var(--content-line-fade-size),
    rgba(0, 0, 0, var(--content-line-opacity)) calc(100% - var(--content-line-fade-size)),
    rgba(0, 0, 0, 0) 100%
  ) !important;
  box-shadow: none !important;
  outline: none !important;
}

/* Transparent ink table. Official class: class="ink-table". */
.page-content table.ink-table,
.modular-section table.ink-table,
.error-page table.ink-table {
  width: 100%;
  max-width: 100%;
  margin: 1.25em 0;
  padding: 0 !important;
  border: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
  border-spacing: 0 !important;
  border-collapse: separate !important;
  background: transparent !important;
  outline: none !important;
  box-shadow: none !important;
}

.page-content table.ink-table th,
.page-content table.ink-table td,
.modular-section table.ink-table th,
.modular-section table.ink-table td,
.error-page table.ink-table th,
.error-page table.ink-table td {
  position: relative;
  padding: 0.45em 1.15em;
  border: 0 !important;
  background: transparent !important;
  outline: none !important;
  box-shadow: none !important;
  vertical-align: top;
  color: var(--text-color) !important;
  text-shadow: var(--content-ink-shadow) !important;
}

/* Keep transparent table text aligned with surrounding content. */
.page-content table.ink-table th:first-child,
.page-content table.ink-table td:first-child,
.modular-section table.ink-table th:first-child,
.modular-section table.ink-table td:first-child,
.error-page table.ink-table th:first-child,
.error-page table.ink-table td:first-child {
  padding-left: 0 !important;
}

.page-content table.ink-table th:last-child,
.page-content table.ink-table td:last-child,
.modular-section table.ink-table th:last-child,
.modular-section table.ink-table td:last-child,
.error-page table.ink-table th:last-child,
.error-page table.ink-table td:last-child {
  padding-right: 0 !important;
}

/* Faded horizontal table row separators, opt-in. */
.page-content table.ink-table.ink-row-lines tr + tr,
.modular-section table.ink-table.ink-row-lines tr + tr,
.error-page table.ink-table.ink-row-lines tr + tr {
  background-image: linear-gradient(
    to right,
    rgba(0, 0, 0, 0) 0,
    rgba(0, 0, 0, var(--content-line-opacity)) var(--content-line-fade-size),
    rgba(0, 0, 0, var(--content-line-opacity)) calc(100% - var(--content-line-fade-size)),
    rgba(0, 0, 0, 0) 100%
  );
  background-repeat: no-repeat;
  background-size: 100% 1px;
  background-position: 0 0;
}

/* Vertical faded line after first column. */
.page-content table.ink-table.ink-vline-first th:first-child::after,
.page-content table.ink-table.ink-vline-first td:first-child::after,
.modular-section table.ink-table.ink-vline-first th:first-child::after,
.modular-section table.ink-table.ink-vline-first td:first-child::after,
.error-page table.ink-table.ink-vline-first th:first-child::after,
.error-page table.ink-table.ink-vline-first td:first-child::after,
.page-content table.ink-table .ink-vline-right::after,
.modular-section table.ink-table .ink-vline-right::after,
.error-page table.ink-table .ink-vline-right::after {
  content: "";
  position: absolute;
  top: 0.15em;
  right: 0;
  bottom: 0.15em;
  width: 1px;
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0,
    rgba(0, 0, 0, var(--content-line-opacity)) var(--content-vertical-line-fade-size),
    rgba(0, 0, 0, var(--content-line-opacity)) calc(100% - var(--content-vertical-line-fade-size)),
    rgba(0, 0, 0, 0) 100%
  );
}

/* Vertical faded line before any marked column/cell. */
.page-content table.ink-table .ink-vline-left::before,
.modular-section table.ink-table .ink-vline-left::before,
.error-page table.ink-table .ink-vline-left::before {
  content: "";
  position: absolute;
  top: 0.15em;
  left: 0;
  bottom: 0.15em;
  width: 1px;
  pointer-events: none;
  background: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 0,
    rgba(0, 0, 0, var(--content-line-opacity)) var(--content-vertical-line-fade-size),
    rgba(0, 0, 0, var(--content-line-opacity)) calc(100% - var(--content-vertical-line-fade-size)),
    rgba(0, 0, 0, 0) 100%
  );
}

/* TinyMCE centered content fix. Preserved for future builds. */
.page-content [style*="text-align: center"],
.modular-section [style*="text-align: center"],
.error-page [style*="text-align: center"],
.page-content .text-center,
.page-content .align-center,
.page-content .has-text-align-center,
.modular-section .text-center,
.modular-section .align-center,
.modular-section .has-text-align-center {
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}

.page-content p[style*="text-align: center"],
.page-content div[style*="text-align: center"],
.modular-section p[style*="text-align: center"],
.modular-section div[style*="text-align: center"] {
  width: 100%;
  max-width: var(--content-max-width) !important;
}

/* LKS_INK_TABLE_ALIGNMENT_PATCH
   Normalize TinyMCE table alignment for transparent ink tables.
   Default ink-table cells align left; explicit helper classes override it. */
.page-content table.ink-table th,
.page-content table.ink-table td,
.modular-section table.ink-table th,
.modular-section table.ink-table td,
.error-page table.ink-table th,
.error-page table.ink-table td {
  text-align: left !important;
  vertical-align: top !important;
}

.ink-align-left,
.page-content table.ink-table th.ink-align-left,
.page-content table.ink-table td.ink-align-left,
.modular-section table.ink-table th.ink-align-left,
.modular-section table.ink-table td.ink-align-left,
.error-page table.ink-table th.ink-align-left,
.error-page table.ink-table td.ink-align-left {
  text-align: left !important;
}

.ink-align-center,
.page-content table.ink-table th.ink-align-center,
.page-content table.ink-table td.ink-align-center,
.modular-section table.ink-table th.ink-align-center,
.modular-section table.ink-table td.ink-align-center,
.error-page table.ink-table th.ink-align-center,
.error-page table.ink-table td.ink-align-center {
  text-align: center !important;
}

.ink-align-right,
.page-content table.ink-table th.ink-align-right,
.page-content table.ink-table td.ink-align-right,
.modular-section table.ink-table th.ink-align-right,
.modular-section table.ink-table td.ink-align-right,
.error-page table.ink-table th.ink-align-right,
.error-page table.ink-table td.ink-align-right {
  text-align: right !important;
}
/* LKS_GLOBAL_IMAGE_INNER_BORDER_PATCH
   Adds a consistent 2px inner border to standard content images.
   Does not modify locked header layout. */
/* Values are configured in assets/css/theme-settings.css. */

.page-content img,
.modular-section img,
.error-page img,
.site-main img {
  box-sizing: border-box;
}

.page-content img:not(.no-ink-border),
.modular-section img:not(.no-ink-border),
.error-page img:not(.no-ink-border),
.site-main img:not(.no-ink-border) {
  outline: var(--ink-image-border-size) solid var(--ink-image-border-color);
  outline-offset: calc(-1 * var(--ink-image-border-size));
}
/* LKS_CONTENT_IMAGE_SHADOW_PATCH
   Adds gallery-like shadow to standard content images.
   Gallery thumbnails keep their own anchor-based shadow from gallery.css.
   Does not modify locked header layout. */
/* Values are configured in assets/css/theme-settings.css. */

.page-content img:not(.no-ink-shadow),
.modular-section img:not(.no-ink-shadow),
.error-page img:not(.no-ink-shadow),
.site-main img:not(.no-ink-shadow) {
  box-shadow: var(--ink-image-shadow);
}

/* Prevent double shadow on gallery thumbnails. Their shadow belongs to the gallery link wrapper. */
.ink-gallery img,
.photo-grid img,
.gallery-grid img {
  box-shadow: none !important;
}

/* LKS_CLEANUP_NOTE
   Main layout CSS intentionally remains readable and patch-preserving.
   Header spacing values are locked and were not regenerated.
   Gallery-specific duplicates were consolidated in assets/css/gallery.css. */

/* LKS_GLOBAL_LINK_SCOPE_CLEANUP
   Normal content links may keep the legacy hover feel, but gallery/header links
   must not inherit global opacity/filter effects. */
.ink-gallery a,
.photo-grid a,
.gallery-grid a,
.site-header a,
.site-navigation a,
.site-subnavigation a {
  opacity: 1 !important;
}

.ink-gallery a,
.ink-gallery a:hover,
.ink-gallery a:focus,
.ink-gallery a:active,
.photo-grid a,
.photo-grid a:hover,
.photo-grid a:focus,
.photo-grid a:active,
.gallery-grid a,
.gallery-grid a:hover,
.gallery-grid a:focus,
.gallery-grid a:active {
  filter: none !important;
  text-shadow: none !important;
}
/* LKS_INTERACTIVE_TIMING_AND_HEADER_HOVER_SYNC
   Central timing variables for hover-in / hover-out effects.
   Header hover text-shadow and underline use the same timing and start together.
   Does not modify locked header layout sizing/spacing. */
/* Shared timing variables are defined in assets/css/theme-settings.css. */

/* Base state = mouseout speed. */
.site-header .nav-link,
.site-header .subnav-link,
.site-header .site-brand-title {
  filter: none !important;
  transition:
    color var(--lks-hover-transition-out) ease,
    opacity var(--lks-hover-transition-out) ease,
    text-shadow var(--lks-hover-transition-out) ease !important;
}

.site-header .nav-link::after,
.site-header .subnav-link::after {
  transition:
    opacity var(--lks-hover-transition-out) ease,
    background var(--lks-hover-transition-out) ease !important;
}

/* Hover-in speed. JS adds .is-hovering before the visual state is applied.
   :hover/:focus remain as fallback. */
.site-header .nav-link.is-hovering,
.site-header .nav-link:hover,
.site-header .nav-link:focus,
.site-header .subnav-link.is-hovering,
.site-header .subnav-link:hover,
.site-header .subnav-link:focus,
.site-header .site-brand-title.is-hovering,
.site-header .site-brand-title:hover,
.site-header .site-brand-title:focus {
  filter: none !important;
  opacity: 1 !important;
  text-shadow: 0 0 var(--header-link-hover-shadow-size) currentColor !important;
  text-shadow: 0 0 var(--header-link-hover-shadow-size) color-mix(in srgb, currentColor var(--header-link-hover-shadow-alpha), transparent) !important;
  transition:
    color var(--lks-hover-transition-in) ease,
    opacity var(--lks-hover-transition-in) ease,
    text-shadow var(--lks-hover-transition-in) ease !important;
  outline: none !important;
}

.site-header .nav-link.is-hovering::after,
.site-header .nav-link:hover::after,
.site-header .nav-link:focus::after,
.site-header .subnav-link.is-hovering::after,
.site-header .subnav-link:hover::after,
.site-header .subnav-link:focus::after {
  transition:
    opacity var(--lks-hover-transition-in) ease,
    background var(--lks-hover-transition-in) ease !important;
}

/* Preserve approved focus-rest state when the item is not hovered. */
.site-header .nav-link:focus:not(:hover):not(.is-hovering),
.site-header .subnav-link:focus:not(:hover):not(.is-hovering),
.site-header .site-brand-title:focus:not(:hover):not(.is-hovering) {
  filter: none !important;
  outline: none !important;
}

/* LKS_LINE_GLOW_CURRENT_COLOR
   Adds the same ink/glow feeling to visual lines as text has.
   Line color follows currentColor, so header lines follow header text color,
   active nav/subnav underlines follow active text color, and content HR follows
   content text color.

   Important:
   Content lines do NOT use --content-line-opacity inside color-mix because that
   variable is decimal alpha (0.42), while color-mix requires a percentage.
   This avoids invalid computed CSS that can make the content line disappear.
   Does not modify locked header layout sizing/spacing. */

/* Header horizontal rules. */
.site-header .site-rule,
.site-header hr.site-rule {
  color: currentColor !important;
  background: linear-gradient(
    to right,
    transparent 0,
    currentColor var(--lks-header-line-fade-size, var(--line-fade-size, 30px)),
    currentColor calc(100% - var(--lks-header-line-fade-size, var(--line-fade-size, 30px))),
    transparent 100%
  ) !important;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) var(--lks-header-line-fade-size, var(--line-fade-size, 30px)),
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) calc(100% - var(--lks-header-line-fade-size, var(--line-fade-size, 30px))),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) currentColor);
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) color-mix(in srgb, currentColor var(--lks-line-glow-alpha, 60%), transparent));
  box-shadow: none !important;
}

/* Header menu underlines. */
.site-header .nav-link::after,
.site-header .subnav-link::after {
  background: linear-gradient(
    to right,
    transparent 0,
    currentColor var(--lks-nav-underline-fade-start, 18%),
    currentColor var(--lks-nav-underline-fade-end, 82%),
    transparent 100%
  ) !important;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) var(--lks-nav-underline-fade-start, 18%),
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) var(--lks-nav-underline-fade-end, 82%),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) currentColor);
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) color-mix(in srgb, currentColor var(--lks-line-glow-alpha, 60%), transparent));
}

/* Preserve active underline color by relying on the active link currentColor. */
.site-header .nav-item.is-active .nav-link::after,
.site-header .nav-item.is-open .nav-link::after,
.site-header .nav-item.is-selected .nav-link::after,
.site-header .subnav-item.is-active .subnav-link::after {
  background: linear-gradient(
    to right,
    transparent 0,
    currentColor var(--lks-nav-underline-fade-start, 18%),
    currentColor var(--lks-nav-underline-fade-end, 82%),
    transparent 100%
  ) !important;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) var(--lks-nav-underline-fade-start, 18%),
    color-mix(in srgb, currentColor var(--lks-line-core-alpha, 82%), transparent) var(--lks-nav-underline-fade-end, 82%),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
}

/* Content HR and title divider line.
   Full currentColor background is the safe fallback.
   color-mix then lowers the core opacity when supported. */
.page-content hr,
.modular-section hr,
.error-page hr,
.page-content > h1:first-child + p::after {
  display: block;
  height: 1px;
  border: 0 !important;
  color: var(--text-color) !important;
  background: linear-gradient(
    to right,
    transparent 0,
    currentColor var(--lks-content-line-fade-size, 30px),
    currentColor calc(100% - var(--lks-content-line-fade-size, 30px)),
    transparent 100%
  ) !important;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) var(--lks-content-line-fade-size, 30px),
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) calc(100% - var(--lks-content-line-fade-size, 30px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) currentColor);
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) color-mix(in srgb, currentColor var(--lks-line-glow-alpha, 60%), transparent));
  box-shadow: none !important;
  outline: none !important;
}

.page-content hr,
.modular-section hr,
.error-page hr {
  width: 100%;
  margin: 1.55em auto;
  padding: 0;
}

/* Ink-table opt-in horizontal and vertical separators follow content text color. */
.page-content table.ink-table.ink-row-lines tr + tr,
.modular-section table.ink-table.ink-row-lines tr + tr,
.error-page table.ink-table.ink-row-lines tr + tr {
  color: var(--text-color) !important;
  background-image: linear-gradient(
    to right,
    transparent 0,
    currentColor var(--lks-content-line-fade-size, 30px),
    currentColor calc(100% - var(--lks-content-line-fade-size, 30px)),
    transparent 100%
  ) !important;
  background-image: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) var(--lks-content-line-fade-size, 30px),
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) calc(100% - var(--lks-content-line-fade-size, 30px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
}

.page-content table.ink-table.ink-vline-first th:first-child::after,
.page-content table.ink-table.ink-vline-first td:first-child::after,
.modular-section table.ink-table.ink-vline-first th:first-child::after,
.modular-section table.ink-table.ink-vline-first td:first-child::after,
.error-page table.ink-table.ink-vline-first th:first-child::after,
.error-page table.ink-table.ink-vline-first td:first-child::after,
.page-content table.ink-table .ink-vline-right::after,
.modular-section table.ink-table .ink-vline-right::after,
.error-page table.ink-table .ink-vline-right::after,
.page-content table.ink-table .ink-vline-left::before,
.modular-section table.ink-table .ink-vline-left::before,
.error-page table.ink-table .ink-vline-left::before {
  color: var(--text-color) !important;
  background: linear-gradient(
    to bottom,
    transparent 0,
    currentColor var(--lks-content-vertical-line-fade-size, 18px),
    currentColor calc(100% - var(--lks-content-vertical-line-fade-size, 18px)),
    transparent 100%
  ) !important;
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) var(--lks-content-vertical-line-fade-size, 18px),
    color-mix(in srgb, currentColor var(--lks-content-line-alpha, 62%), transparent) calc(100% - var(--lks-content-vertical-line-fade-size, 18px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) !important;
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) currentColor);
  filter: drop-shadow(0 0 var(--lks-line-glow-size, 4px) color-mix(in srgb, currentColor var(--lks-line-glow-alpha, 60%), transparent));
}

/* LKS_NAVIGATION_BAND
   Soft band variant controlled from assets/css/theme-settings.css.
   No MENU/NAVIGACE text label. The band is horizontally faded and avoids
   hard full-width box-shadow/blur edges. Does not change locked header sizing. */

.nav-list {
  position: relative;
  isolation: isolate;
  padding-left: clamp(10px, 1.15vw, 22px) !important;
  padding-right: clamp(10px, 1.15vw, 22px) !important;
}

.nav-list::before {
  content: "";
  position: absolute;
  z-index: -1;
  left: clamp(-10px, -0.95vw, -4px);
  right: clamp(-10px, -0.95vw, -4px);
  top: -6px;
  bottom: 3px;
  pointer-events: none;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-nav-band-alpha, 8%), transparent) var(--lks-header-line-fade-size, 100px),
    color-mix(in srgb, currentColor var(--lks-nav-band-alpha, 8%), transparent) calc(100% - var(--lks-header-line-fade-size, 100px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  );
  box-shadow: none !important;
  filter: none !important;
}

.nav-list::after {
  content: "";
  position: absolute;
  z-index: -1;
  left: clamp(-10px, -0.95vw, -4px);
  right: clamp(-10px, -0.95vw, -4px);
  top: -6px;
  bottom: 3px;
  pointer-events: none;
  background:
    linear-gradient(
      to right,
      color-mix(in srgb, currentColor 0%, transparent) 0,
      color-mix(in srgb, currentColor var(--lks-nav-band-top-line-alpha, 60%), transparent) var(--lks-header-line-fade-size, 100px),
      color-mix(in srgb, currentColor var(--lks-nav-band-top-line-alpha, 60%), transparent) calc(100% - var(--lks-header-line-fade-size, 100px)),
      color-mix(in srgb, currentColor 0%, transparent) 100%
    ) top / 100% 1px no-repeat,
    linear-gradient(
      to right,
      color-mix(in srgb, currentColor 0%, transparent) 0,
      color-mix(in srgb, currentColor var(--lks-nav-band-bottom-line-alpha, 44%), transparent) var(--lks-header-line-fade-size, 100px),
      color-mix(in srgb, currentColor var(--lks-nav-band-bottom-line-alpha, 44%), transparent) calc(100% - var(--lks-header-line-fade-size, 100px)),
      color-mix(in srgb, currentColor 0%, transparent) 100%
    ) bottom / 100% 1px no-repeat;
  opacity: var(--lks-nav-band-line-opacity, 0.44);
  box-shadow: none !important;
  filter: none !important;
}

.nav-list > .nav-item {
  position: relative;
}

.nav-list > .nav-item + .nav-item::before {
  content: "";
  position: absolute;
  left: calc(-0.5 * clamp(20px, 2.7vw, 52px));
  top: 5px;
  bottom: 10px;
  width: 1px;
  pointer-events: none;
  opacity: var(--lks-nav-band-separator-opacity, 0.24);
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-nav-band-separator-alpha, 60%), transparent) var(--lks-content-vertical-line-fade-size, 18px),
    color-mix(in srgb, currentColor var(--lks-nav-band-separator-alpha, 60%), transparent) calc(100% - var(--lks-content-vertical-line-fade-size, 18px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  );
  filter: drop-shadow(
    0 0 var(--lks-line-glow-size, 4px)
    color-mix(in srgb, currentColor var(--lks-line-glow-alpha, 60%), transparent)
  );
}

.subnav-list {
  position: relative;
  isolation: isolate;
  padding-left: clamp(8px, 0.9vw, 18px) !important;
  padding-right: clamp(8px, 0.9vw, 18px) !important;
}

.subnav-list::before {
  content: "";
  position: absolute;
  z-index: -1;
  left: clamp(-8px, -0.7vw, -3px);
  right: clamp(-8px, -0.7vw, -3px);
  top: -4px;
  bottom: 4px;
  pointer-events: none;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-subnav-band-alpha, 5%), transparent) var(--lks-header-line-fade-size, 100px),
    color-mix(in srgb, currentColor var(--lks-subnav-band-alpha, 5%), transparent) calc(100% - var(--lks-header-line-fade-size, 100px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  );
  box-shadow: none !important;
  filter: none !important;
}

.subnav-list::after {
  content: "";
  position: absolute;
  z-index: -1;
  left: clamp(-8px, -0.7vw, -3px);
  right: clamp(-8px, -0.7vw, -3px);
  top: -4px;
  bottom: 4px;
  pointer-events: none;
  background: linear-gradient(
    to right,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-subnav-line-alpha, 30%), transparent) var(--lks-header-line-fade-size, 100px),
    color-mix(in srgb, currentColor var(--lks-subnav-line-alpha, 30%), transparent) calc(100% - var(--lks-header-line-fade-size, 100px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  ) bottom / 100% 1px no-repeat;
  opacity: var(--lks-subnav-line-opacity, 0.20);
  box-shadow: none !important;
  filter: none !important;
}

.subnav-list > .subnav-item {
  position: relative;
}

.subnav-list > .subnav-item + .subnav-item::before {
  content: "";
  position: absolute;
  left: calc(-0.5 * clamp(18px, 2.15vw, 42px));
  top: 5px;
  bottom: 10px;
  width: 1px;
  pointer-events: none;
  opacity: var(--lks-subnav-separator-opacity, 0.16);
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, currentColor 0%, transparent) 0,
    color-mix(in srgb, currentColor var(--lks-subnav-separator-alpha, 60%), transparent) var(--lks-content-vertical-line-fade-size, 18px),
    color-mix(in srgb, currentColor var(--lks-subnav-separator-alpha, 60%), transparent) calc(100% - var(--lks-content-vertical-line-fade-size, 18px)),
    color-mix(in srgb, currentColor 0%, transparent) 100%
  );
}

@media (max-width: 720px) {
  .nav-list {
    padding-left: 8px !important;
    padding-right: 8px !important;
  }

  .nav-list > .nav-item + .nav-item::before,
  .subnav-list > .subnav-item + .subnav-item::before {
    display: none !important;
  }
}
