/* Indy visual fixes - served from indy-tools plugin (survives theme updates) */

/* 1. Header diagonal transition: full bleed */
.elementor-element-2a456f2,
.elementor-element-f723ce5 {
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  z-index: 1;
  position: relative;
}
.elementor-element-2a456f2 img,
.elementor-element-f723ce5 img {
  width: 100vw !important;
  height: auto !important;
  max-height: 75px;
  display: block;
}

/* 2. Card image aspect normalisation */
.elementor-element-96f0915 img,
.elementor-element-268f0a7 img,
.elementor-element-c5903a4 img,
.elementor-element-36cd49a img {
  aspect-ratio: 3 / 4;
  object-fit: cover;
  width: 100%;
  height: auto !important;
}
.elementor-element-xf409b4 img,
.elementor-element-b7t496j img,
.elementor-element-2zybxp0 img,
.elementor-element-1g1wcdu img,
.elementor-element-n4ghw01 img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  width: 100%;
  height: auto !important;
}

/* 3. Homepage: sticky team photo beside scrolling column */
.elementor-element-8d96450 {
  position: sticky;
  top: 120px;
  align-self: flex-start;
}

/* 4. Nav dropdown above the diagonal */
.elementskit-dropdown,
.elementskit-navbar-nav li .elementskit-dropdown {
  z-index: 3000 !important;
  background: #ffffff;
}
.elementskit-dropdown li a { color: #1A1A1A; }

/* 5. Nav hover: no layout jitter */
.elementskit-navbar-nav > li > a {
  border-bottom: 2px solid transparent !important;
  transition: color 0.15s ease, border-color 0.15s ease !important;
}
.elementskit-navbar-nav > li > a:hover,
.elementskit-navbar-nav > li.current-menu-item > a {
  border-bottom-color: currentColor !important;
}

/* 6. How to Get to Indy: tidy the cards */
.elementor-widget-icon-box .elementor-icon-box-title a { text-decoration: none !important; }
.elementor-widget-icon-box .elementor-icon-box-title { margin-bottom: 6px; }
.elementor-widget-icon-box .elementor-icon-box-description { line-height: 1.65; }

/* 7. Blog index: tame oversized featured images */
body.blog .wp-post-image,
body.archive .wp-post-image {
  max-height: 380px;
  width: 100%;
  object-fit: cover;
}
body.blog article { margin-bottom: 48px; }
.elementor-element-2a456f2 img,.elementor-element-f723ce5 img{margin-left:calc(50% - 50vw)!important;}
.elementor-element-2a456f2 img,.elementor-element-f723ce5 img{width:100vw!important;}
html{overflow-x:hidden;}
.elementor-element-2a456f2 img,.elementor-element-f723ce5 img{max-width:none!important;}


/* News index - card grid matching site card style */
body.page-id-819 .wp-block-post-template { gap: 34px 28px !important; }
body.page-id-819 .indy-post-card {
  background: #F7F7F7; border-radius: 10px; overflow: hidden;
  padding: 0 0 22px !important; height: 100%;
  display: flex; flex-direction: column;
}
body.page-id-819 .indy-post-card .wp-block-post-featured-image { margin: 0 0 16px !important; }
body.page-id-819 .indy-post-card .wp-block-post-featured-image img {
  border-radius: 10px 10px 0 0 !important; width: 100%; display: block;
}
body.page-id-819 .indy-post-card > *:not(.wp-block-post-featured-image) {
  padding-left: 22px; padding-right: 22px;
}
body.page-id-819 .indy-post-card h2 { margin: 0 0 6px !important; }
body.page-id-819 .indy-post-card h2 a {
  color: #1A1A1A !important; text-decoration: none !important;
  font-weight: 700; text-transform: none !important;
}
body.page-id-819 .indy-post-card h2 a:hover { color: #C5111C !important; }
body.page-id-819 .indy-post-card .wp-block-post-date { color: #777; margin: 0 0 10px !important; }
body.page-id-819 .indy-post-card .wp-block-post-excerpt { color: #555; margin: 0 !important; }
body.page-id-819 .indy-post-card .wp-block-post-excerpt__more-link {
  color: #C5111C; font-weight: 600; text-decoration: none;
}
body.page-id-819 .wp-block-search__label { display: none; }
body.page-id-819 .wp-block-search { max-width: 420px; margin-bottom: 44px; }
body.page-id-819 .wp-block-query-pagination { gap: 10px; }
body.page-id-819 .wp-block-query-pagination a,
body.page-id-819 .wp-block-query-pagination span {
  color: #1A1A1A; text-decoration: none; padding: 6px 12px; border-radius: 6px;
}
body.page-id-819 .wp-block-query-pagination .current { background: #C5111C; color: #fff; }

/* v3 */

/* ============ v4: alignment + consistency pass ============ */

/* Header and footer bars share the 1140px content grid */
/* header stays 1300 - nav needs the room */
.elementor-element-18606b79 > .elementor-container,
.elementor-element-18606b79 > .e-con-inner { max-width: 1140px !important; }

/* Footer legal links need breathing room */
.elementor-element-18606b79 .elementor-icon-list-items { gap: 24px; }
.elementor-element-18606b79 .elementor-icon-list-item { margin-right: 20px; }

/* Homepage explainer cards: left-aligned, full-width image, one ratio */
body.home .elementor-widget-image-box .elementor-image-box-wrapper,
body.home .elementor-widget-image-box .elementor-image-box-content { text-align: left !important; }
body.home .elementor-widget-image-box .elementor-image-box-img {
  width: 100% !important; margin: 0 0 18px !important; float: none !important;
}
body.home .elementor-widget-image-box .elementor-image-box-img img {
  width: 100% !important; height: auto !important;
  aspect-ratio: 3 / 2; object-fit: cover; border-radius: 10px; display: block;
}
body.home .elementor-widget-image-box .elementor-image-box-title { margin-bottom: 8px !important; }

/* Card columns top-align rather than centring on the tallest neighbour */
.elementor-widget-image-box .elementor-image-box-wrapper { align-items: flex-start; }

/* About: Meet the Team - 3 across instead of 6, level baselines */
.elementor-element-9chbcaxo { flex-wrap: wrap !important; row-gap: 40px !important; }
.elementor-element-b3yjbfj7,
.elementor-element-iyrwoesu { width: 100% !important; flex: 0 0 100% !important; column-gap: 30px !important; }
.elementor-element-9chbcaxo .elementor-widget-image img {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 10px; display: block;
}
.elementor-element-9chbcaxo .elementor-widget-heading .elementor-heading-title { font-size: 22px !important; min-height: 3.4em; }
.elementor-element-9chbcaxo .elementor-widget-heading .elementor-heading-title { margin: 0; }

/* Heading colour fallback: anything without an explicit Elementor colour lands on #1A1A1A.
   No !important, so per-widget colours (white hero headings) still win. */
.elementor-widget-premium-addon-dual-header .premium-dual-header-first-span,
.elementor-widget-premium-addon-dual-header .premium-dual-header-second-span,
.elementor-widget-premium-addon-icon-box .premium-icon-box-title,
.elementor-widget-elementskit-heading .ekit-heading--title { color: #1A1A1A; }

/* Buttons line up with the copy above them. The whole build shipped with
   align-self:flex-end on every PA button, which floated CTAs to the middle/right.
   Rows of two or more buttons keep their original alignment. */
.e-con-inner > .elementor-widget-premium-addon-button,
.e-con-inner > .elementor-widget-button,
.e-con-full > .elementor-widget-premium-addon-button,
.e-con-full > .elementor-widget-button { align-self: flex-start !important; }

.e-con:has(> .elementor-widget-premium-addon-button ~ .elementor-widget-premium-addon-button) > .elementor-widget-premium-addon-button,
.e-con-inner:has(> .elementor-widget-premium-addon-button ~ .elementor-widget-premium-addon-button) > .elementor-widget-premium-addon-button { align-self: auto !important; }

/* Leftover empty containers from the original build push real content off-centre */
.elementor-element.e-con:not(:has(*)),
.elementor-element.e-con-full:not(:has(*)),
.elementor-element.e-con > .e-con-inner:not(:has(*)) { display: none !important; }
.elementor-element.e-con:has(> .e-con-inner:not(:has(*))) { display: none !important; }

/* Prices: all tables share the 1140 grid */
.elementor-element-c3e51d0, .elementor-element-8a5d2db { width: 100% !important; max-width: 100% !important; }
.elementor-element-c3e51d0 table, .elementor-element-8a5d2db table { width: 100% !important; }

/* Cards in a row start their content at the top instead of centring on their own
   height, so headings and body copy line up across the row */
.e-con-inner:has(> .elementor-widget-heading):has(> .elementor-widget-text-editor),
.elementor-element.e-con-full:has(> .elementor-widget-heading):has(> .elementor-widget-text-editor) { justify-content: flex-start !important; }

/* Card titles reserve two lines so the copy below starts level */
.e-con-inner > .elementor-element.e-con .elementor-widget-premium-addon-icon-box .premium-icon-box-title { min-height: 2.5em; }

/* One heading scale: 40 for the page H1, 32 for section headings, 26 inside cards */
.elementor > .elementor-element > .e-con-inner > .elementor-widget-heading .elementor-heading-title:not(h1),
.elementor > .elementor-element.e-con-full > .elementor-widget-heading .elementor-heading-title:not(h1) { font-size: 32px !important; }

.e-con-inner > .elementor-element.e-con .elementor-widget-heading .elementor-heading-title,
.elementor-element.e-con-full > .elementor-element.e-con .elementor-widget-heading .elementor-heading-title { font-size: 26px !important; line-height: 1.3 !important; }

/* FAQ accordions were 1083px inside a 1140px column, reading as left-shifted */
.elementor-widget-elementskit-accordion,
.elementor-widget-premium-addon-accordion,
.elementor-widget-accordion,
.elementor-widget-toggle { width: 100% !important; max-width: 100% !important; }

/* Full-width CTA bands are centred by design - leave their buttons alone */
.elementor > .elementor-element > .e-con-inner > .elementor-widget-premium-addon-button,
.elementor > .elementor-element > .e-con-inner > .elementor-widget-button,
.elementor > .elementor-element.e-con-full > .elementor-widget-premium-addon-button,
.elementor > .elementor-element.e-con-full > .elementor-widget-button { align-self: auto !important; }

/* Contact: "Anglesey, North Wales" was brand red but is not a link */
.elementor-element-75fca54e .elementskit-section-subtitle { color: #1A1A1A !important; }

/* Card headings reserve two lines so body copy starts level across a row */
.e-con-inner > .elementor-element.e-con .elementor-widget-heading .elementor-heading-title,
.elementor-element.e-con-full > .elementor-element.e-con .elementor-widget-heading .elementor-heading-title { min-height: 2.6em; }

/* Meet the Team names run long - give them three lines and a smaller size
   (must out-specify the generic card-heading rule above) */
.e-con-inner .elementor-element-9chbcaxo .elementor-element.e-con .elementor-widget-heading .elementor-heading-title,
.elementor-element-9chbcaxo .elementor-element.e-con .elementor-widget-heading .elementor-heading-title,
.elementor-element-b3yjbfj7 .elementor-widget-heading .elementor-heading-title,
.elementor-element-iyrwoesu .elementor-widget-heading .elementor-heading-title { font-size: 21px !important; line-height: 1.3 !important; min-height: 3.9em !important; }

/* The red diagonal overhangs the header and must paint over the page hero.
   Heroes on New Climber, Instruction and Regular Climber also sit at z-index 1,
   so they were covering it once the diagonal stopped overhanging at 100vw. */
.elementor-element-2a456f2,
.elementor-element-f723ce5 { z-index: 20 !important; position: relative; }

/* ===== Homepage: How to Get to Indy =====
   Four contact details were stacked in one narrow centred column beside a short
   map, leaving a tall ribbon of text and a lot of dead space. Now a 2x2 grid of
   left-aligned rows with the icon beside the text, and the map fills the column. */
.elementor-element-238e9e2 {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 30px 28px;
  align-content: start;
}
/* the email address is longer than its column and was running into the next icon */
.elementor-element-238e9e2 .elementor-icon-box-description {
  overflow-wrap: anywhere; word-break: break-word;
}
.elementor-element-0677f6a,
.elementor-element-d9f0c53 { grid-column: 1 / -1; }

.elementor-element-238e9e2 .elementor-widget-icon-box .elementor-icon-box-wrapper {
  display: flex !important; flex-direction: row !important;
  align-items: flex-start; gap: 14px; text-align: left;
}
.elementor-element-238e9e2 .elementor-widget-icon-box .elementor-icon-box-icon {
  width: auto !important; margin: 0 !important; flex: 0 0 auto; text-align: left;
}
.elementor-element-238e9e2 .elementor-widget-icon-box .elementor-icon-box-content {
  width: auto; text-align: left;
  min-width: 0; flex: 1 1 auto;   /* lets the long email wrap instead of spilling */
}
.elementor-element-238e9e2 .elementor-icon-box-title { text-align: left; margin: 0 0 4px !important; }
.elementor-element-238e9e2 .elementor-icon-box-description { text-align: left; margin: 0 !important; }

/* Map fills its column - the iframe ships with a hardcoded 300px width */
.elementor-element-f7f7cc6 .elementor-custom-embed,
.elementor-element-f7f7cc6 iframe {
  width: 100% !important; height: 420px !important; display: block; border-radius: 10px;
}

@media (max-width: 767px) {
  .elementor-element-238e9e2 { grid-template-columns: 1fr; }
}

/* The email is longer than its grid column; force it to wrap rather than
   overflow into the phone details beside it. */
.elementor-element-238e9e2 .elementor-widget-icon-box .elementor-icon-box-content {
  min-width: 0 !important; max-width: 100% !important; overflow: hidden;
}
.elementor-element-238e9e2 .elementor-icon-box-description,
.elementor-element-238e9e2 .elementor-icon-box-title {
  overflow-wrap: anywhere !important; word-break: break-word !important; max-width: 100%;
}

/* ================= Tables =================
   Four Premium Addons tables (New Climber pricing, Instruction opening times, and
   the two matrices on Prices) looked nothing like the two plain tables on the
   Prices page. Everything now matches the Day Entry Prices table. */
.premium-table-wrap { overflow-x: auto; }
.premium-table {
  width: 100% !important;
  border-collapse: collapse !important;
  margin-bottom: 15px;
}
.premium-table .premium-table-cell {
  padding: 15px !important;
  border: 1px solid rgba(128, 128, 128, 0.5) !important;
  color: #4F5156 !important;
  font-size: 0.9rem !important;
  text-align: left !important;
  vertical-align: middle !important;
  background: transparent !important;
}
.premium-table thead .premium-table-cell {
  font-weight: 700 !important;
  color: #1A1A1A !important;
  background: rgba(128, 128, 128, 0.07) !important;
}
.premium-table tbody tr:nth-child(odd) .premium-table-cell { background: rgba(128, 128, 128, 0.07) !important; }
.premium-table tbody tr:nth-child(even) .premium-table-cell { background: transparent !important; }
.premium-table .premium-table-text {
  padding: 0 !important;
  margin: 0 !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  color: inherit !important;
  line-height: 1.5 !important;
}

/* ================= Taster enquiry modal ================= */
.indy-form-anchor { display: block; height: 0; scroll-margin-top: 140px; }
body.indy-modal-open { overflow: hidden; }
.indy-modal[hidden] { display: none; }
.indy-modal {
  position: fixed; inset: 0; z-index: 100000;
  display: flex; align-items: flex-start; justify-content: center;
  padding: 40px 20px; overflow-y: auto;
}
.indy-modal__backdrop { position: fixed; inset: 0; background: rgba(26, 26, 26, 0.6); }
.indy-modal__panel {
  position: relative; z-index: 1;
  background: #fff; border-radius: 12px;
  width: 100%; max-width: 620px; padding: 34px 34px 28px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.25);
  margin: auto;
}
.indy-modal__title { margin: 0 0 8px !important; font-size: 26px !important; color: #1A1A1A; }
.indy-modal__intro { margin: 0 0 22px; color: #555; font-size: 0.95rem; }
.indy-modal__close {
  position: absolute; top: 12px; right: 14px;
  background: none; border: 0; cursor: pointer;
  font-size: 30px; line-height: 1; color: #777; padding: 4px 8px;
}
.indy-modal__close:hover { color: #C5111C; }
.indy-modal .indy-form-anchor { display: none; }
@media (max-width: 600px) {
  .indy-modal { padding: 16px; }
  .indy-modal__panel { padding: 26px 20px 22px; }
}

/* ================= Contact form =================
   The CF7 submit button was rendering unstyled - pink text on a transparent
   background with a 1px pink border. Now matches the site buttons. */
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form select,
.wpcf7-form textarea {
  width: 100%;
  padding: 13px 15px;
  border: 1px solid #DADADA;
  border-radius: 8px;
  font-size: 0.95rem;
  color: #1A1A1A;
  background: #fff;
}
.wpcf7-form input:focus,
.wpcf7-form select:focus,
.wpcf7-form textarea:focus {
  outline: none;
  border-color: #C5111C;
  box-shadow: 0 0 0 3px rgba(197, 17, 28, 0.12);
}
.wpcf7-form textarea { min-height: 130px; resize: vertical; }
.wpcf7-form .wpcf7-submit {
  background: #C5111C !important;
  color: #fff !important;
  border: 0 !important;
  border-radius: 8px !important;
  padding: 14px 30px !important;
  font-size: 1rem !important;
  font-weight: 600 !important;
  cursor: pointer;
  transition: background 0.15s ease;
}
.wpcf7-form .wpcf7-submit:hover { background: #A50E17 !important; }
.wpcf7-form .form-wrapper { display: flex; flex-wrap: wrap; gap: 14px; }
.wpcf7-form .half-field { flex: 1 1 calc(50% - 7px); min-width: 220px; }
.wpcf7-form .full-field { flex: 1 1 100%; }
.wpcf7-form .submit-btn { text-align: right; }
.wpcf7-form .wpcf7-not-valid-tip { color: #C5111C; font-size: 0.85rem; margin-top: 4px; }
.wpcf7-form .wpcf7-response-output { border-radius: 8px; margin: 14px 0 0; padding: 12px 15px; font-size: 0.9rem; }
