:root {
  color-scheme: dark;
  --card-bg: linear-gradient(180deg, #121212 0%, #242424 100%);
  --card-shadow: 0 8px 20px rgba(0, 0, 0, 0.7);
  --blue: #3b82f6;
  --text-accent: #a1b7e0;
}

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

body, html {
  width: 100%;
  min-height: 100dvh;
  margin: 0;
  padding: 0;
  overflow-x: hidden;
}

html {
  background: #000205 !important;
  touch-action: manipulation;
}

body {
  font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
  font-size: 18px;
  font-weight: 500;
  color: var(--text-accent);
  /* Fixes bold/light-colored text looking thick and smudgy on macOS
     Chrome/Safari — without this, the OS's default subpixel
     antialiasing renders noticeably heavier than the "antialiased"
     (grayscale) mode, especially for light text on dark backgrounds
     (which is most of this site). Not an Elementor issue — this is a
     universal CSS fix, applied once here so every element inherits
     it instead of needing it added piecemeal per-element. */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  background-color: #000205 !important;
  background-image:
    radial-gradient(ellipse 80% 60% at 15% 10%, rgba(20, 45, 90, .18) 0, transparent 70%),
    radial-gradient(ellipse 70% 55% at 85% 75%, rgba(10, 40, 100, .3) 0, transparent 70%),
    radial-gradient(ellipse 50% 40% at 30% 50%, rgba(12, 30, 80, .18) 0, transparent 80%) !important;
  overflow-x: hidden;
  /* scrollbar-gutter: stable; — REMOVED: on this fixed-width-sidebar
     layout (body has margin-left:260px + width:calc(100% - 260px) from
     the sidebar's early CSS), reserving a gutter on body creates a
     second, unused strip of space right next to the real scrollbar
     (which belongs to <html>, not <body>) — visible as a gap on the
     right edge of the hero. */
}

.elementor-editor-active .elementor,
.elementor-editor-active .elementor-container,
.elementor-editor-active .elementor-section {
  z-index: auto !important;
}

h1 { margin-bottom: 5px; }
h2 { margin-top: 0; }
.rm-banner h1 { margin-bottom: 14px; }

p {
  hyphens: auto;
  -webkit-hyphens: auto;
  line-height: 1.8 !important;
  letter-spacing: .2px !important;
}

.hz-sub,
.rm-wrap p:not(.hz-desc) {
  line-height: inherit !important;
  letter-spacing: inherit !important;
  hyphens: none;
  -webkit-hyphens: none;
}

.fs-wrap .fs-body,
.fs-wrap .fs-genre-text,
.fs-wrap p:not(.fs-manifesto),
.hz-desc {
  line-height: 1.8 !important;
  letter-spacing: normal !important;
}

.elementor-widget-text-editor,
.elementor-widget-text-editor p {
  line-height: 1.8 !important;
  letter-spacing: .2px !important;
}

.elementor-button {
  background: var(--card-bg) !important;
  border: 1px solid rgba(59, 130, 246, .35) !important;
  border-radius: 16px !important;
  box-shadow: var(--card-shadow) !important;
  color: #3b82f6 !important;
  font-family: 'Barlow', 'Arial Narrow', Arial, sans-serif !important;
  font-weight: 700 !important;
  font-size: 20px !important;
  padding: 20px 36px !important;
  width: 100% !important;
  text-align: center !important;
  transition: border-color .2s ease, box-shadow .2s ease !important;
  transform: none !important;
  scale: none !important;
}

.elementor-button:hover {
  border-color: rgba(59, 130, 246, .5) !important;
  box-shadow: 0 8px 28px rgba(59, 130, 246, .25) !important;
  transform: none !important;
  scale: none !important;
}

.elementor-button:focus-visible {
  outline: 2px solid #4285f4 !important;
  outline-offset: 3px !important;
}

.cta-btn .elementor-button {
  border-color: rgba(59, 130, 246, .3) !important;
}

img { max-width: 100%; }
.elementor-widget-image img { width: 100%; object-fit: cover; }

table {
  width: 100%;
  border-collapse: collapse;
  display: block;
  overflow-x: auto;
}
table td, table th { border: none; text-align: left; }

.spacer { height: 1rem; }
.spacer-sm { height: .5rem; }

.om-human {
  width: 100%;
  margin: 0 auto;
  padding: 60px 44px;
  line-height: 1.7;
  text-align: center;
  position: relative;
}
.om-human::before {
  content: '';
  position: absolute;
  top: -1px;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, #ff7a18, #ffb347, #ffb347, #ff7a18, transparent);
  opacity: .85;
  border-radius: 16px 16px 0 0;
}
.om-human h2 { margin-bottom: 16px; }
.om-human .om-human__body { max-width: 680px; margin: 0 auto; line-height: 1.8; }
.om-human .om-human__body + .om-human__body { margin-top: 16px; }

.om-human__divider {
  display: flex;
  align-items: center;
  width: 100%;
  max-width: 720px;
  margin: 36px auto;
}
.om-human__divider-line-left { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, var(--blue)); }
.om-human__divider-line-right { flex: 1; height: 1px; background: linear-gradient(90deg, var(--blue), transparent); }
.om-human__divider-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--blue);
  flex-shrink: 0;
  margin: 0 12px;
  box-shadow: 0 0 8px rgba(59, 130, 246, .8), 0 0 20px rgba(59, 130, 246, .4);
}

.om-human .om-human__cta-wrapper {
  display: flex !important;
  justify-content: center !important;
  margin-top: 36px;
}
.om-human .om-human__cta {
  display: inline-flex !important;
  align-items: center !important;
  gap: 10px !important;
  background: var(--card-bg) !important;
  color: var(--blue) !important;
  border: .5px solid rgba(59, 130, 246, .35) !important;
  border-left: 2px solid rgba(59, 130, 246, .7) !important;
  border-radius: 12px !important;
  padding: 14px 28px !important;
  font-size: 18px !important;
  font-weight: 600 !important;
  font-family: Barlow, 'Arial Narrow', Arial, sans-serif !important;
  text-decoration: none !important;
  box-shadow: 0 0 4px rgba(59, 130, 246, .12) !important;
  width: fit-content !important;
  max-width: 360px !important;
  letter-spacing: inherit !important;
  transform: none !important;
  scale: none !important;
  transition: box-shadow .2s, border-color .2s !important;
}
.om-human .om-human__cta:active,
.om-human .om-human__cta:focus,
.om-human .om-human__cta:hover {
  border-color: rgba(59, 130, 246, .6) !important;
  border-left-color: var(--blue) !important;
  box-shadow: 0 0 10px rgba(59, 130, 246, .25) !important;
}
.om-human .om-human__cta span { color: #ffb347 !important; }

.om-checklist { width: 100%; padding: 40px; }
.om-why { width: 100%; padding: 40px; }
.om-why h2 { text-align: center; margin-bottom: 16px; }
.om-why p { text-align: left; margin-bottom: 12px; }
.om-why p:last-child { margin-bottom: 0; }

#ai-section { margin-bottom: 0 !important; padding-bottom: 0 !important; }
#ai-section .elementor-column:last-child img { width: 100%; height: 100%; object-fit: cover; display: block; }

#final-section,
section[data-id=b6bf37c],
section[data-id=b6bf37c] .elementor-container,
section[data-id=b6bf37c] .elementor-widget-wrap {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

.om-checklist, .om-human, .om-why {
  content-visibility: auto;
  contain-intrinsic-size: auto 500px;
}
.elementor-container:has(.om-checklist),
.elementor-container:has(.om-human),
.elementor-container:has(.om-why) {
  align-items: stretch !important;
}
.elementor-column:has(.om-checklist),
.elementor-column:has(.om-human),
.elementor-column:has(.om-why) {
  display: flex !important;
  flex-direction: column !important;
  align-self: stretch !important;
}
.elementor-column:has(.om-checklist) > .elementor-widget-wrap,
.elementor-column:has(.om-human) > .elementor-widget-wrap,
.elementor-column:has(.om-why) > .elementor-widget-wrap {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  height: 100% !important;
  width: 100% !important;
}
.elementor-widget:has(> .elementor-widget-container > .om-checklist),
.elementor-widget:has(> .elementor-widget-container > .om-human),
.elementor-widget:has(> .elementor-widget-container > .om-why) {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  height: 100% !important;
}
.elementor-widget-container:has(> .om-checklist),
.elementor-widget-container:has(> .om-human),
.elementor-widget-container:has(> .om-why) {
  flex: 1 1 auto !important;
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
}
.om-checklist, .om-human, .om-why {
  flex: 1 1 auto !important;
  height: 100% !important;
  min-height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  box-sizing: border-box !important;
}

.zoom-photo { overflow: hidden; }
.zoom-photo img {
  width: 100%;
  display: block;
  transform: scale(1.1);
  transition: transform 2s cubic-bezier(.22, 1, .36, 1), filter 1.2s ease;
  will-change: transform;
}
.zoom-photo:hover img {
  transform: scale(1.18);
  filter: brightness(1.05) contrast(1.04);
}

.wpcf7 input, .wpcf7 textarea {
  color: #9ca3af;
  width: 100%;
  max-width: 100%;
  padding: 6px;
  margin: 3px 0;
  font-size: 12px;
}
.wpcf7 input::placeholder, .wpcf7 textarea::placeholder { color: #9ca3af; }

#contactPanel .wpcf7-not-valid-tip,
#contactPanel .wpcf7-response-output {
  font-size: 12px;
  line-height: 1.3;
  margin: 4px 0 !important;
  padding: 4px 6px !important;
}
#contactPanel .wpcf7 input[type=submit] { display: none !important; }

#contactPanel.centered,
#contactPanel.locked {
  background: rgba(21, 21, 21, .95) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border: none !important;
  box-shadow: 0 22px 50px rgba(0, 0, 0, .65) !important;
}
#contactPanel.centered::before,
#contactPanel.locked::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(145deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, .05) 35%, rgba(255, 255, 255, 0) 60%);
  pointer-events: none;
  z-index: 1;
}
#contactPanel.centered.allFieldsFilled,
#contactPanel.locked.allFieldsFilled {
  box-shadow: 0 0 18px rgba(66, 133, 244, .6), 0 0 8px rgba(21, 21, 21, .5) !important;
  border-left: 6px solid #4285f4 !important;
  border-bottom: 6px solid #4285f4 !important;
}
#contactPanel.expandForMessage { max-height: 900px; }

@media (max-width: 768px) {
  #contactPanel:not(.locked):not(.centered) { max-height: 400px !important; }
  #contactPanel:not(.locked):not(.centered) .formScroll { max-height: 260px !important; }
  #contactPanel .formScroll { scrollbar-width: none; -ms-overflow-style: none; }
  #contactPanel .formScroll::-webkit-scrollbar { display: none; }
  .om-checklist { padding: 40px 20px; }
  .om-why { padding: 10px 20px !important; }
  .om-human { padding: 40px 20px; }
  .om-checklist, .om-human, .om-why { box-shadow: none; }
  .elementor-column:has(.om-checklist),
  .elementor-column:has(.om-checklist) > .elementor-widget-wrap,
  .elementor-column:has(.om-human),
  .elementor-column:has(.om-human) > .elementor-widget-wrap,
  .elementor-column:has(.om-why),
  .elementor-column:has(.om-why) > .elementor-widget-wrap,
  .elementor-widget-container:has(> .om-checklist),
  .elementor-widget-container:has(> .om-human),
  .elementor-widget-container:has(> .om-why),
  .elementor-widget:has(> .elementor-widget-container > .om-checklist),
  .elementor-widget:has(> .elementor-widget-container > .om-human),
  .elementor-widget:has(> .elementor-widget-container > .om-why),
  .om-checklist, .om-human, .om-why {
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
    flex: none !important;
  }
}

@media (min-width: 769px) {
  :root { --site-padding: clamp(40px, 5vw, 80px); }
  .site-container {
    width: 100%;
    padding-left: var(--site-padding);
    padding-right: var(--site-padding);
    box-sizing: border-box;
  }
}

/* DROPPED from the Annie file: the #annie-footer .col-md-12/.row
   Bootstrap-grid centering rule. Hello Elementor's footer markup
   (.footer-inner, .site-branding, .copyright) isn't a Bootstrap grid,
   so that rule has nothing to match here — no equivalent needed. */

.elementor-menu-toggle,
.hamburger,
.menu-toggle,
.site-logo,
[role=button]:not(#placeholderPanel):not(#placeholderPanel *),
a, button {
  -webkit-tap-highlight-color: transparent;
}

/* 404 PAGE — styles the custom .rm-404 markup printed by the
   template_redirect hook in functions.php. Matches the Annie site's
   actual rendered 404 style: transparent-fill outlined "404" numerals,
   Syne heading, Montserrat body text, and a plain dark pill button
   (not the blue-glow CTA treatment used elsewhere on the site). */
body.error404 .rm-404 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 100vh;
  padding: 40px 20px;
  box-sizing: border-box;
}
/* 403 PAGE — reuses the same .rm-404 markup/classes as the 404 page
   (see functions.php) so it gets an identical look for free. The rule
   above is scoped to body.error404, which WordPress only adds
   automatically on an actual 404 query — a 403 page isn't a 404 query,
   so it won't get that body class. This unscoped duplicate covers the
   .rm-403 case (and any other non-404 use of .rm-404) without touching
   the original rule. */
.rm-404.rm-403 {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 100vh;
  padding: 40px 20px;
  box-sizing: border-box;
}
.rm-404-inner {
  max-width: 600px;
}
.rm-404-code {
  font-family: 'Barlow', 'Arial Narrow', Arial, sans-serif;
  font-size: clamp(140px, 20vw, 240px);
  line-height: 1;
  font-weight: 900;
  color: transparent;
  -webkit-text-stroke: 3px rgba(255, 255, 255, 0.1);
  opacity: 0.8;
  margin-bottom: 15px;
}
.rm-404-title {
  font-family: 'Syne', sans-serif;
  font-weight: 800;
  color: #a5a5a5;
  font-size: 30px;
  line-height: 1.2;
  margin: 0 0 20px;
}
.rm-404-text {
  font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
  color: #a1b7e0;
  font-size: 16px;
  line-height: 1.6;
  margin: 0 0 20px;
}
.rm-404-link {
  display: inline-block;
  padding: 10px 30px;
  background-color: #1b1b1b;
  color: #999;
  font-family: 'Barlow', 'Arial Narrow', Arial, sans-serif;
  font-weight: 400;
  font-size: 16px;
  letter-spacing: 0;
  border-radius: 30px;
  text-decoration: none;
  border: none;
  box-shadow: none;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.rm-404-link:hover {
  background-color: #262626;
  color: #ccc;
}

@media (min-width: 769px) {
  #rm-stem-align-row {
    max-width: 90% !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }
}
#rm-stem-align-row > .elementor-container {
  align-items: flex-start !important;
}

@media (orientation: landscape) and (max-width: 1024px) {
  #rm-stem-align-row > .elementor-container {
    flex-direction: column !important;
  }
  #rm-stem-align-row > .elementor-container > .elementor-column {
    width: 100% !important;
    max-width: 100% !important;
  }
}

#contactPanel .wpcf7-response-output {
  display: none !important;
}

@media (max-width: 768px) {
  .zoom-photo img {
    transform: none !important;
    transition: none !important;
    will-change: auto !important;
  }
}

/* Hide Hello Elementor's built-in footer copyright line ("All rights
   reserved"), printed by the theme's own footer template inside
   <div class="copyright show">. Site branding/logo in the footer is
   left untouched — only the copyright block is hidden. */
#site-footer .copyright {
  display: none !important;
}

/* Hide the browser scrollbar visually while keeping scrolling itself
   fully functional. html is the actual scrolling element on this
   page (body doesn't have its own overflow set), so it's the one
   that needs the rule — body's included too for safety. */
html, body {
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* old Edge / IE */
}
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none; /* Chrome, Safari, newer Edge */
}

/* WordPress admin bar (#wpadminbar) and #tempSidebar both use
   z-index: 99999. Since the sidebar prints later in the page, it wins
   the tie and covers the WP logo / site name in the admin bar's
   top-left corner for logged-in users. Scoped to body.admin-bar so it
   only applies when the admin bar is actually present. */
body.admin-bar #wpadminbar {
  z-index: 100000 !important;
}

/* 120px of empty space at the top of the footer, site-wide. */
#site-footer {
  padding-top: 120px;
}

/* Removes the gap above the header on every page. Confirmed via
   DevTools: the actual culprit is Hello Elementor's own #site-header
   shell (class "site-header dynamic-header") — an empty placeholder
   the theme still renders with its own padding (16px, computed
   block-size 32px) even though no Header template is assigned and
   this site uses its own #tempSidebar nav instead. display:none
   removes it from layout entirely, closing the gap.
   The selectors below (page-title area) were an earlier guess before
   DevTools confirmed the real element; left in as a harmless no-op
   fallback in case a different template ever renders one of these. */
#site-header.dynamic-header,
.page-header,
.entry-header,
h1.entry-title,
.entry-title,
.elementor-page-title,
.page-title {
  display: none !important;
}

h5 {
  font-family: 'Barlow', sans-serif !important;
  font-weight: 700 !important; /* Bold */
  font-size: 24px !important;
}

h6 {
  font-family: 'Bebas Neue', 'Arial Narrow', Impact, sans-serif !important;
  font-size: 36px !important;
  color: #999999 !important;
  text-shadow:
    0 1px 0 #1a4a9a,
    0 2px 0 #153d80,
    0 3px 0 #0f2f66,
    0 4px 0 #0a224c,
    0 5px 0 #061535,
    0 6px 0 #030d22,
    0 7px 12px rgba(0,0,60,0.9),
    0 12px 28px rgba(0,0,40,0.7) !important;
}

#contactPanel .codedropz-upload-handler a,
#contactPanel .codedropz-upload-handler .dnd-browse {
  font-family: 'Bebas Neue', 'Arial Narrow', Impact, sans-serif !important;
  font-size: 36px !important;
  color: #999999 !important;
  -webkit-text-fill-color: #999999 !important;
  text-shadow:
    0 1px 0 #1a4a9a,
    0 2px 0 #153d80,
    0 3px 0 #0f2f66,
    0 4px 0 #0a224c,
    0 5px 0 #061535,
    0 6px 0 #030d22,
    0 7px 12px rgba(0,0,60,0.9),
    0 12px 28px rgba(0,0,40,0.7) !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  text-decoration: none !important;
}

#contactPanel .codedropz-upload-handler a:hover,
#contactPanel .codedropz-upload-handler .dnd-browse:hover {
  color: #1cd948 !important;
  -webkit-text-fill-color: #1cd948 !important;
}


/* Expand CodeDropz drop zone by 30px, desktop only, site-wide (same
   shared panel on every page — no page-ID scoping needed). This
   replaces the old page-21-only 260px rule. */
@media (min-width: 769px) {
  #contactPanel.locked .codedropz-upload-handler,
  #contactPanel.centered .codedropz-upload-handler {
    max-height: 200px !important;
    padding: 34px 12px 38px !important;
  }
}

/* Add spacing between the drop zone's text lines (Drag & drop / or / Browse Files) */
#contactPanel .codedropz-upload-handler p,
#contactPanel .codedropz-upload-handler span,
#contactPanel .codedropz-upload-handler label,
#contactPanel .codedropz-upload-handler div {
  margin: 10px 0 !important;
}

#contactPanel.locked .codedropz-upload-handler .dnd-browse,
#contactPanel.locked .codedropz-upload-handler a,
#contactPanel.centered .codedropz-upload-handler .dnd-browse,
#contactPanel.centered .codedropz-upload-handler a {
  margin-top: 14px !important;
}

/* Move the drop zone's top text line up by 20px */
#contactPanel .codedropz-upload-handler > p:first-child,
#contactPanel .codedropz-upload-handler > span:first-child,
#contactPanel .codedropz-upload-handler > label:first-child,
#contactPanel .codedropz-upload-handler > div:first-child {
  margin-top: -10px !important;
}

/* Move the "Fill Out All Required Fields" warning text down 20px */
#bottomWarning {
  margin-top: 26px !important;
}