/* Written by DigiOp Migrate. Repairs two things the theme did in JavaScript
   that a static copy never runs.

   1. The logo. BeTheme reads data-height="60" off #logo and sets the image
      height from it at runtime. Nothing runs it here, so the image rendered at
      its natural size — several times too big — and the breadcrumb underneath
      it disappeared behind it.
   2. The gap under the header. The same script measures the header and pushes
      the content clear of it. Without it the first heading on every page starts
      hard against the navigation. */
#logo img.logo-main,
#logo img.logo-sticky,
#logo img.logo-mobile,
#logo img.logo-mobile-sticky{height:46px!important;width:auto!important;max-width:100%!important}
#Top_bar .logo{padding:14px 0!important}
#Header_wrapper{margin-bottom:50px!important}
/* the breadcrumb sat under the logo while the logo was oversized; keeping it in
   the flow means it cannot go back there */
.woolentor-breadcrumb{position:relative;z-index:1;clear:both}


/* data/polish_extra.css — this job's own chrome */
/* ============================================================================
   DigiOp chrome — the SAME clean header on every cloned page, matching the
   authored pages (contact, quote, recent work) and digiopapps.ie so the
   navigation is identical across the whole site.

   The header markup is injected into each cloned page by mirrorfix.fix_header
   (from data/header.html); this file styles it and hides BeTheme's own header
   so the two never show at once. It ships inside digiop-polish.css, which every
   cloned page already links, and re-applies on a re-clone because polish is a
   recorded fix.
   ============================================================================ */

/* hide BeTheme's own header: the nav bar, the top action bar, the fixed-header
   spacer, and the mobile slide-in menu */
#Header_wrapper,
#Top_bar,
#Action_bar,
#Side_slide,
.header_placeholder{ display:none !important; }

/* the top strip */
.skip{ position:absolute; left:-9999px; }
.skip:focus{ left:12px; top:12px; z-index:200; background:#fff; color:#111; padding:10px 14px; }
.strip{
  display:flex !important; align-items:center; justify-content:space-between;
  gap:16px; padding:9px 26px; margin:0; font-size:12.5px; color:#626262;
  background:#fff; border-bottom:1px solid #e8e8e8; flex-wrap:wrap;
  font-family:Inter,Helvetica,Arial,sans-serif;
}
.strip span{ display:inline-block; }
.strip a{ color:#0089F7 !important; text-decoration:none; }
.strip a:hover{ text-decoration:underline; }

/* the header row: logo left, nav right */
.site-head{
  display:flex !important; align-items:center; justify-content:space-between;
  gap:24px; padding:20px 26px; margin:0; background:#fff;
  border-bottom:1px solid #e8e8e8; flex-wrap:wrap; position:relative; z-index:5;
}
.site-head > a{ display:inline-flex; align-items:center; line-height:0; }
.site-head img{ height:26px !important; width:auto !important; max-height:26px !important; margin:0; }

/* the nav: 14px, sentence case, dimmed grey to near-black on hover */
/* nav matched to digiopapps.com: 18px, near-black #1d1d1f, weight 400 */
.site-nav{
  display:flex !important; gap:26px; flex-wrap:wrap; align-items:center; margin:0;
  font-size:18px; letter-spacing:-.02em; text-transform:none;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter","Segoe UI",system-ui,sans-serif;
}
.site-nav a{ text-decoration:none; color:#1d1d1f !important; opacity:1; font-weight:400; padding:0; transition:opacity .2s; }
.site-nav a:hover,
.site-nav a[aria-current]{ color:#1d1d1f !important; opacity:.6; }
.site-nav .kit-link{ color:#141414 !important; }
.site-nav .kit-link b{ color:#141414 !important; }

@media(max-width:600px){
  .strip{ font-size:11.5px; gap:8px; }
  .site-head{ padding:14px 18px; }
}

/* home hero (page-id-24): BeTheme stacks 85px + 85px of content padding above
   the hero, leaving a big white gap under the nav — tighten it, and drop the
   slider dots */
.page-id-24 .sections_group{ padding-top:0 !important; }
.page-id-24 .entry-content{ padding-top:20px !important; }
.dgh-dots{ display:none !important; }
/* home kit grid (mfn_shop) mirrors the kit-hire grid: clamp titles to two lines
   so every card is the same height and the "Add to kit list" buttons line up */
.mfn-woo-products li.product .mfn-woo-product-title{
  min-height:2.7em; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.mfn-woo-products li.product .desc{ text-align:center; }

/* hero product image: as large as it goes, and never cropped. The headline
   takes exactly the width its words need (max-content) and the image gets all
   the rest, so the image is big; max-height:100% + object-fit:contain means it
   fills the band to full height (or full width) but is always wholly visible,
   never clipped; top-aligned so it sits up rather than floating low. The
   column layout is desktop only, so the mobile stack is left alone. */
@media(min-width:821px){
  .page-id-24 .dgh{ height:min(58vh,470px) !important; overflow:hidden !important; }
  /* a definite row (minmax(0,1fr)) is what makes the image's max-height:100%
     actually bite — without it the row is auto, the percentage is ignored, and
     a tall image renders at natural size and spills off the band. */
  .page-id-24 .dgh-slide{ grid-template-columns:max-content 1fr !important; grid-template-rows:minmax(0,1fr) !important; gap:34px !important; padding:0 24px !important; align-items:stretch !important; }
  .page-id-24 .dgh-img{ padding:0 !important; height:100% !important; min-height:0 !important; align-items:flex-start !important; justify-content:center !important; }
}
.page-id-24 .dgh-big{ white-space:nowrap !important; }
.page-id-24 .dgh-img img{ max-width:100% !important; max-height:100% !important; width:auto !important; height:auto !important; object-fit:contain !important; }

/* WooLentor product grid (kit hire page): its row carries negative -16px gutter
   margins that the cloned container no longer pads, so the row spilled a few px
   past the page edge and forced a horizontal scrollbar. Neutralise the negative
   margins; the columns keep their own padding for the gutters between them. */
.product-style .ht-row{ margin-left:0 !important; margin-right:0 !important; }

/* remove the chain-link icon that appears over a product image on hover — it
   reads as a padlock and does nothing useful on a static site */
.image_links{ display:none !important; }

/* centre the product name (and price) under every product, on the grid and on
   the single product page */
.product_title,
.woocommerce-loop-product__title,
.mfn-woo-product-title,
.woolentor-product-title,
.ht-product-title,
.product-title,
.product-grid .name,
.product-style .title{ text-align:center !important; }
.single-product div.product .summary .product_title{ text-align:center !important; }

/* footer: the DigiOp logo was shipping at full size (383px). Bring it down to a
   footer mark, and keep the columns from sprawling. */
#Footer img{ max-height:44px !important; width:auto !important; height:auto !important; }
#Footer .logo img,
#Footer #Footer_logo img{ max-height:44px !important; }

/* content lists in centered text blocks strand their bullets out at the left
   margin, disconnected from the centered text — drop the bullets */
.elementor-widget-text-editor ul{ list-style:none; padding-left:0; margin-left:0; }
.elementor-widget-text-editor ul li{ padding-left:0; }

/* the "Add to kit list" button given to every kit-hire grid product, styled to
   match the homepage Add-to-Quote button, sitting BELOW the product */
.dgm-add{
  display:inline-block; margin:12px auto 0; background:#141414 !important; color:#fff !important; border:0;
  font:400 15px/1.1 Inter,Helvetica,Arial,sans-serif; padding:12px 22px; border-radius:6px;
  cursor:pointer; transition:background .2s;
}
/* no hover change — the hover state read as confusing (looked disabled), so the
   button stays the same colour on hover, focus and press */
.dgm-add:hover,
.dgm-add:focus,
.dgm-add:active{ background:#141414 !important; color:#fff !important; }
/* the homepage Add-to-kit button is the quote plugin's <button>, so it carries
   BeTheme's slide-animation ::before — a light-grey (#eaeaea) overlay that filled
   the button on hover. Kill it so the homepage button matches the kit-hire one. */
.dgm-add::before,
.dgm-add::after{ display:none !important; content:none !important; background:none !important; }
/* once added, the button confirms it in DigiOp blue (no green), and holds it on
   hover/focus too */
.dgm-add.is-added,
.dgm-add.is-added:hover,
.dgm-add.is-added:focus,
.dgm-add.is-added:active{ background:#0089F7 !important; color:#fff !important; }
.product-item .content{ text-align:center; }
.product-item .content .dgm-add{ display:inline-block; margin:14px auto 0; }
/* keep every "Add to kit list" button on the same line across a row: equal-height
   cards, with the button pinned to the bottom so uneven title lengths (one line
   vs two) don't leave the buttons at different heights */
.product-style .ht-row{ display:flex; flex-wrap:wrap; align-items:stretch; }
.product-style .ht-row > [class*="ht-col"]{ display:flex; flex-direction:column; }
.product-item,
.product-item .product-inner,
.product-item .content{ display:flex; flex-direction:column; flex:1 1 auto; width:100%; }
.product-item .content .dgm-add{ margin-top:auto; }
/* homepage product grid mirrors the kit-hire page: the theme floats the cards
   (uneven heights, staggered buttons), so switch it to flex rows of equal-height
   cards with the Add-to-kit button pinned to the bottom, so every button lines up. */
ul.products{ display:flex !important; flex-wrap:wrap !important; align-items:stretch !important; }
ul.products > li.product{ float:none !important; display:flex !important; flex-direction:column !important; }
ul.products > li.product .desc{ display:flex !important; flex-direction:column !important; flex:1 1 auto !important; }
ul.products > li.product .mfn-li-product-row-button{ margin-top:auto !important; }
/* the product name on the grid was 20px; bring it down 4px. A 2-line name (e.g.
   "Canon RF 70-200mm F2.8L IS USM Z – Black") sat right on top of the button, so
   give the title a clear bottom gap before the button. */
.product-item .content .title,
.product-item h4.title,
.product-item .content h4{ font-size:16px !important; line-height:1.25 !important; margin:0 0 18px !important;
  height:auto !important; min-height:0 !important; max-height:none !important;
  -webkit-line-clamp:unset !important; overflow:visible !important; }
/* homepage product grid: titles are H6.mfn-woo-product-title with a 2-line cap,
   so long names were clipped and ran under the button. Let them grow with a gap. */
.mfn-woo-product-title{ height:auto !important; min-height:0 !important; max-height:none !important;
  -webkit-line-clamp:unset !important; overflow:visible !important; line-height:1.3 !important;
  margin-bottom:12px !important; }
/* hide the image hover overlay (the chain-link "lock" and the Read more that sat
   on top of the picture) — the image and title already link to the product */
.product-item .actions{ display:none !important; }

/* kit-hire (page-id-2217) intro copy ran the full 1260px width and read as a
   messy block of long lines — constrain the prose to a readable centred column.
   The product grid is not a text-editor widget, so it stays full width. */
.page-id-2217 .elementor-widget-text-editor{ max-width:820px !important; margin-left:auto !important; margin-right:auto !important; }
.page-id-2217 .elementor-widget-text-editor p{ line-height:1.7; max-width:820px; margin-left:auto; margin-right:auto; }
.page-id-2217 .elementor-widget-text-editor ul{ list-style:none; padding-left:0; text-align:center; max-width:820px; margin-left:auto; margin-right:auto; }
.page-id-2217 .elementor-widget-text-editor ul li{ margin:.5em 0; }

/* kit-hire intro, SIDEBAR layout (chosen design 8): the prose and contact sit in
   a left column, the kit list in a boxed panel on the right; the product grid
   stays below, full width. The heading and sub-head get generous room to breathe. */
/* the 150px Elementor spacer above the intro left too much dead space at the
   top once the copy was tightened; a smaller gap keeps the page compact. */
.page-id-2217 .elementor-element-53c07fe .elementor-spacer-inner{ height:28px !important; }
.dgk-intro{display:grid;grid-template-columns:0.86fr 1.14fr;gap:50px;max-width:1180px;margin:0 auto;
  align-items:stretch;padding:40px 26px 56px;
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
.dgk-side{display:flex;flex-direction:column}
.dgk-side .dgk-h1{font-size:clamp(30px,3.4vw,40px);font-weight:700;letter-spacing:-.03em;
  line-height:1.04;margin:0 0 20px;color:#141414}
.dgk-side .dgk-sub{color:#0089F7;font-weight:600;font-size:15.5px;line-height:1.55;margin:0 0 30px}
.dgk-side p{color:#4a4a4a;font-size:14.5px;line-height:1.66;margin:0 0 15px;max-width:none}
/* the contact line falls to the bottom of the column so the copy finishes level
   with the box below it. */
.dgk-side .dgk-contact{color:#626262;font-size:13.5px;margin-top:auto;padding-top:20px;line-height:1.75;
  border-top:1px solid #ececec}
.dgk-side a{color:#0089F7;text-decoration:none}
.dgk-side a:hover{text-decoration:underline}
.dgk-panel{background:#f7f8fa;border:1px solid #eef0f2;border-radius:14px;padding:24px 28px}
.dgk-kh{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:#8a9098;font-weight:600;margin:0 0 4px}
.dgk-kintro{font-size:13px;color:#7b7f87;margin:0 0 16px}
/* two columns inside the box so it does not tower over the copy — the six kit
   groups sit as 2 x 3, and the whole block finishes near the copy's bottom. */
.dgk-items{display:grid;grid-template-columns:1fr 1fr;gap:0 26px}
.dgk-item{padding:11px 0;border-top:1px solid #e7e9ec}
.dgk-items .dgk-item:nth-child(1),.dgk-items .dgk-item:nth-child(2){border-top:0;padding-top:0}
.dgk-lbl{display:block;font-size:13.5px;font-weight:600;color:#141414;margin-bottom:3px}
.dgk-det{font-size:12px;color:#5c5c5c;line-height:1.45}
@media(max-width:620px){.dgk-items{grid-template-columns:1fr}
  .dgk-items .dgk-item:nth-child(2){border-top:1px solid #e7e9ec;padding-top:12px}}
@media(max-width:860px){.dgk-intro{grid-template-columns:1fr;gap:28px;padding:36px 20px 24px}.dgk-side p{max-width:none}}

/* news story pages (single blog posts) read oversized and overbearing: the
   Elementor headings run to 40px and the prose spans the full page width. Cap
   the headings and give the text a readable centred measure — the designed hero
   image is left full width. Scoped to .single-post so only the stories change. */
.single-post .elementor-heading-title{ font-size:clamp(21px,2.7vw,29px) !important; line-height:1.2 !important; }
.single-post h1.entry-title,.single-post .entry-title{ font-size:clamp(24px,3.2vw,32px) !important; }
.single-post .elementor-widget-text-editor{ max-width:820px !important; margin-left:auto !important; margin-right:auto !important; }
.single-post .elementor-widget-text-editor p,.single-post .elementor-widget-text-editor li{ font-size:15px; line-height:1.72; }

/* About page (Irish Digi Tech, page-id-298): bring it in line with the authored
   pages — cap the oversized Elementor headings (H1 was 50px, a statement 41px),
   put the copy in a readable centred column, and set Inter throughout. */
.page-id-298 .elementor-heading-title{ font-family:Inter,-apple-system,Helvetica,Arial,sans-serif !important; font-size:clamp(25px,3.6vw,37px) !important; line-height:1.1 !important; letter-spacing:-.025em !important; }
.page-id-298 .elementor-widget-text-editor{ max-width:760px !important; margin-left:auto !important; margin-right:auto !important; }
.page-id-298 .elementor-widget-text-editor p,.page-id-298 .elementor-widget-text-editor li{ font-family:Inter,-apple-system,Helvetica,Arial,sans-serif !important; font-size:16px !important; line-height:1.75 !important; }
/* keep the one big statement line as a modest sub-headline, not body-size */
.page-id-298 .elementor-element-3bef3ae p,.page-id-298 p[style*="font-size"]{ font-size:22px !important; line-height:1.3 !important; }

/* the About page headings are bare h1/h3 (not .elementor-heading-title), so cap
   them directly to sit in line with the authored pages. */
.page-id-298 h1{ font-family:Inter,-apple-system,Helvetica,Arial,sans-serif !important; font-size:clamp(28px,3.8vw,38px) !important; line-height:1.05 !important; letter-spacing:-.03em !important; }
.page-id-298 h2{ font-size:clamp(22px,3vw,29px) !important; }
.page-id-298 h3{ font-size:clamp(19px,2.4vw,23px) !important; }

/* About page: close the ~230px dead gap under the header (100px top-section
   padding + 100px inner-section margin + a 30px wrap) */
.page-id-298 .elementor-top-section:first-of-type{ padding-top:14px !important; }
.page-id-298 .elementor-inner-section{ margin-top:16px !important; }
.page-id-298 .elementor-widget-wrap.elementor-element-populated{ padding-top:0 !important; }

/* home service cards, design 3 (chosen): campaign photo on top, label below, in
   a clean bordered card. The three cards are Elementor image-boxes on page-id-24. */
.page-id-24 .elementor-widget-image-box .elementor-image-box-wrapper{ display:block !important; border:1px solid #e6e8eb; border-radius:14px; overflow:hidden; background:#fff; text-align:left; }
.page-id-24 .elementor-widget-image-box figure.elementor-image-box-img{ margin:0 !important; }
.page-id-24 img.dgm-card-photo{ width:100% !important; height:auto !important; max-height:none !important; aspect-ratio:16/10; object-fit:cover; display:block; border-radius:0 !important; }
.page-id-24 .elementor-image-box-content{ padding:16px 18px 20px !important; }
.page-id-24 .elementor-image-box-title{ font-size:16px !important; font-weight:600 !important; margin:0 0 4px !important; }
.page-id-24 .elementor-image-box-title a{ color:#141414 !important; }
.page-id-24 .elementor-image-box-description{ color:#7b7f87 !important; font-size:13.5px !important; margin:0 !important; }

/* home service cards, design 1 (chosen over the photos): brand-blue line icon,
   centred, in a clean white bordered card. */
.page-id-24 .elementor-image-box-wrapper:has(.dgm-card-icon){ display:block !important; border:1px solid #e6e8eb !important; border-radius:16px !important; overflow:visible !important; background:#fff !important; text-align:center !important; padding:32px 24px !important; }
.page-id-24 .dgm-card-icon{ display:inline-block; color:#0089F7; width:46px; height:46px; margin:0 auto 18px; }
.page-id-24 .dgm-card-icon svg{ width:100%; height:100%; display:block; }
.page-id-24 .elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-content{ padding:0 !important; }
.page-id-24 .elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-title{ font-size:16px !important; font-weight:600 !important; margin:0 0 6px !important; }
.page-id-24 .elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-title a{ color:#141414 !important; }
.page-id-24 .elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-description{ color:#7b7f87 !important; font-size:13.5px !important; margin:0 !important; }

/* footer: the Instagram social icon (15px) was smaller than the scroll-to-top
   up arrow (20px) beside it — match them. */
.social .instagram a i,#Footer .social a i,#Footer a[href*="instagram"] i{ font-size:20px !important; }

/* home cards: kill the extra outer box (the Elementor column/populated wrapper);
   the single white bordered card is the only box we want. */
.page-id-24 .elementor-widget-wrap.elementor-element-populated:has(.dgm-card-icon){ background:transparent !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; padding:0 !important; }
.page-id-24 .elementor-column:has(.dgm-card-icon){ background:transparent !important; }

/* icon service cards (home AND About): page-agnostic so both pages match. */
.elementor-image-box-wrapper:has(.dgm-card-icon){ display:block!important;border:1px solid #e6e8eb!important;border-radius:16px!important;background:#fff!important;text-align:center!important;padding:32px 24px!important;overflow:visible!important; }
.dgm-card-icon{ display:inline-block;color:#0089F7;width:46px;height:46px;margin:0 auto 18px; }
.dgm-card-icon svg{ width:100%;height:100%;display:block; }
.elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-content{ padding:0!important; }
.elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-title{ font-size:16px!important;font-weight:600!important;margin:0 0 6px!important; }
.elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-title a{ color:#141414!important; }
.elementor-image-box-wrapper:has(.dgm-card-icon) .elementor-image-box-description{ color:#7b7f87!important;font-size:13.5px!important;margin:0!important; }
.elementor-widget-wrap.elementor-element-populated:has(.dgm-card-icon){ background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:0!important; }

/* home cards: strip the background/border off EVERY wrapper around the icon
   cards (section, inner-section, container, column, widget-wrap) so only the
   white card shows — no outer box. Padding is kept for spacing. */
.page-id-24 .elementor-section:has(.dgm-card-icon),
.page-id-24 .elementor-inner-section:has(.dgm-card-icon),
.page-id-24 .elementor-container:has(.dgm-card-icon),
.page-id-24 .elementor-column:has(.dgm-card-icon),
.page-id-24 .elementor-widget-wrap:has(.dgm-card-icon),
.page-id-24 .elementor-background-overlay:has(.dgm-card-icon){ background:transparent!important;background-color:transparent!important;background-image:none!important;border:0!important;border-radius:0!important;box-shadow:none!important; }

/* catch-all: any Elementor element wrapping the icon cards goes transparent
   (except the image-box widget/card itself) so no outer box remains. */
.page-id-24 .elementor-element:has(.dgm-card-icon):not(.elementor-widget-image-box){ background:transparent!important;background-color:transparent!important;background-image:none!important;box-shadow:none!important;border-radius:0!important;border-color:transparent!important; }

/* outer-box removal, page-agnostic: any Elementor wrapper around the icon cards
   (home AND About) goes transparent so only the white card shows. */
.elementor-element:has(.dgm-card-icon):not(.elementor-widget-image-box){ background:transparent!important;background-color:transparent!important;background-image:none!important;box-shadow:none!important;border-radius:0!important;border-color:transparent!important; }
.elementor-widget-wrap:has(.dgm-card-icon){ background:transparent!important;box-shadow:none!important;border-radius:0!important; }

/* the cards' SECTION is the black band (white cards inside). The outer-box
   removal rules above strip the background off every wrapper that :has the icon
   cards — and the TOP-section is one of those wrappers, so the band went with
   them. Those rules reach (0,4,0) (page-id-24 + element + :has + :not), and the
   old restore here was only (0,2,0), so transparent won and the black band
   vanished on both home and About. Restore it on the top-section ALONE, at
   (0,5,0) so it wins decisively; the inner section, column and widget-wrap stay
   transparent so no grey box comes back. Page-agnostic: home (f0894d9) and
   About (4856e62a) are the only top-sections that :has a .dgm-card-icon. */
.elementor-section.elementor-top-section.elementor-element:has(.dgm-card-icon):not(.elementor-widget-image-box){ background:#000!important;background-color:#000!important; }

/* double box: Elementor's own .elementor-widget-container (a #f9f9f9 pill —
   2px border, 30px radius, 30px padding, from post-24/298.css) wraps our white
   .elementor-image-box-wrapper card, so every icon card sat inside a second box.
   On white it was invisible; against the restored black band it reads as an
   outer grey box around each card. Strip its box (bg, border, radius, shadow)
   and keep only the white card. Padding is left so the inner card does not move.
   Scoped by :has(.dgm-card-icon) — no other widget-container on the site is hit. */
.elementor-widget-container:has(.dgm-card-icon){ background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important; }

/* white strip: pages built in Elementor's flexbox containers end on an EMPTY
   trailing .e-con (its .e-con-inner has no widget in it), which still renders
   ~40px tall with the container's default padding, transparent — a white band
   between the last section and the footer. On About and the home page that
   trailing container sits right under the black cards band, so it reads as a
   white gap above the footer. Collapse any Elementor container whose inner holds
   no element (:empty fails here — the inner carries a whitespace text node — so
   match "has no populated inner" instead). Only ever hits genuinely empty
   containers, so nothing with content is touched. */
.e-con.e-parent:not(:has(> .e-con-inner > *)){ display:none !important; }


/* the site-wide footer (dgm-foot) — shipped to cloned pages via the
   `footer` mirror-fix; authored pages carry the same rules inline */
.dgm-foot{background:#101015;color:#c9ccd2;padding:52px 26px 40px;margin-top:auto;
  font-family:Inter,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.7}
.dgm-foot *{box-sizing:border-box}
.dgm-foot-cols{display:grid;grid-template-columns:1fr 1fr 1.3fr auto;gap:40px;max-width:1160px;margin:0 auto;align-items:start}
.dgm-fcol h4{margin:0 0 15px;font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#7f8590;font-weight:600}
.dgm-fcol ul{list-style:none;margin:0;padding:0}
.dgm-fcol li{margin:0 0 8px}
.dgm-foot a{color:#c9ccd2;text-decoration:none;transition:color .2s}
.dgm-foot a:hover{color:#fff}
.dgm-fapps li{margin:0 0 11px}
.dgm-fapps a{display:inline-flex;align-items:center;gap:11px}
.dgm-ic{width:26px;height:26px;flex:none;border-radius:6px;display:inline-block;
  background-size:cover;background-position:center;border:1px solid rgba(255,255,255,.07)}
.dgm-ic-capture{background-image:url(data:image/webp;base64,UklGRi4EAABXRUJQVlA4WAoAAAAQAAAAMwAAMwAAQUxQSN4AAAABcFtbe9N8StQMkHYMEzCTQwkswXEJIzhH6Xe2pf+4cxERjNy2cWTN5DRtq/0G/CbCg68ltYIHUsuvxqvHuOhrHkWJzx3Iy0k/DONXDEM/KXPgU5Mw9ZI8WdYG8sM9jxui88V6cDkTNbEQb2eYjo7Ot7gjdebdBIWajhSAI9VQbwYlW+tCyNlt8jpGo6IzBeFMFfRrmbtLGF3c/KUIyAXZMLK0kBDPisZwGqN/K/H8ixn++VzewuNhnF4JoUwbxpNbowSL93NnjKeYkhV+WabIAMGSmYJnM6UlRwb8SQBWUDggKgMAANAQAJ0BKjQANAA+PRqKQ6IhoRcJJVQgA8SgDOnTh6ze8ukttxvFg/Wb3qudJ6wD9ZvYA8rj2Kf2Y/bH2eE9vLA0weYB/Nv8z6jebv6I9gX9S/95wIH7Kju8/f7kpJgcz+snmbV2HVVnSX+/Mg+UIm6LgnlucSkE3gsbbIb1jW0C9jmU3OrKcndE5uoLlvAAAP7/fIH4E0WtQM/X2U8gqL1+HAr2gWCBTtiN70tSIv8qnp90cZ3ga0CEfSQVBufXA9ObAjj6b1A7Xw0p1dafzac4i55vMNQfq9Y/xwvBk054+bcmW8SO4JxFQpBx0lj7pNoPIkVJZ1Kl4pk1aJu3Gz/qmISeaSFqcZ2O9aHOoN03/Qy/+DMlyqbuDf/ZB/4GteS6dOcGxaeX+s9dYcu2B72QdxXJl7X6a9vfam7eNC/w6OqS453Z5QfLUQfp77ydqFiGZOv37R5D9JaY+8OI9PbHYolq0lYksImZxnCuyJsZ76fB/r/OBqpk0Y/hq3/wyxHuWNbtWEZ9KN3EzcZIlEIg870vtnca5b+6sE+GTShgrzsukmuUBPx+M5D/Akh+1jzF9W3S/by9fd8SafbFN+NIuLE1o7sGHn2WGpl6WT9fvWWn/hgoNfmM6XnMdgMMx2dgX04uE0Jf59gC/8cqnWUMdX2Tk9A/pwQc8iCyyEuaHbNQo9HkLTRCo+aI6RMvYBcy7lIsOQze9K2+o/uSpNA2reHalDS1Blfa5HvipHphvPg5hPprzLSAbrYxbKeHI92jOL16y3j1gDcXQCRhsTCn/B0f/80G3IPD/pb8rR/0EWUv790/mATFzI5wtc2AHtuCkmEJRpiNx+KLrPHuLT57K8LLC8RJCrTvP+3kyN3+KfrB87qw+OP9ukZ0a0tjaG93ytyoXVGyhmmSD9i4Yunlqv4fso4Rl69hzjQnlxvSsfmwEMwZh+sDZ2Ud59a+2pDz2K//jTY/3SnDbIhpQQf8w4cv/9PFKoqXod/12jxK4pgZuyKlCXSTHuNv5s1VP/tCsaRYigwlZP8KnSdYpgu4E20/6cnpmsigGtIIxAMT/1NmUOKpQAAAAA==)}
.dgm-ic-client{background-image:url(data:image/webp;base64,UklGRvYDAABXRUJQVlA4WAoAAAAQAAAAMwAAMwAAQUxQSOIAAAABcFtbe5t8v2S5dk9Y0p7AXonQpSU4lPYI5KyPDNJ/6CgigoHbRoqapWO+9g34TSSAr2USAyDuSYl9rJd+zaOx8rkC3bw3q+vmK+p61su7wKdi4KoFA1lUDubDPc/G5Ol8CeB8IseZyNst3JRHH9r4I6fu3QYWJQ+MwIEl7JuVWpuLjyF/2bRe10lQ8MQonFggeW2G/hxHZz98aQRmzkscXTg3kGelTTw16b+VdP7FCv98LW/R8TBNr4RYN+HBB48PnDgr771/FMP7R5nIp4xRhmeM0sGoZBmVzKSRzTQy4E8CVlA4IO4CAACwEQCdASo0ADQAPj0aiUOiIaEXCSaoIAPEoAzazH/Ffw3AwsTv9A0QHmA/YD1lfQB5N3WAegB+lfWV/ub+zPtDN9gu47cRxmaZWZ946PpT2DP45/Uv+VwJ/7HDu8/U14wYyMlsS3NYeSUg0SpHqF1b4FxoAoDbc4R51GCXPe+9ajxsvykpq6lgm0nHNw5/9/Cv3KyRJAAA/v+H+fdNUJDMiugIQWpBO97GTSvfn02uOuF76oplcRfzvktSvcf/gezB6SGwyf6FDjpsTA9BTxdg768BhJ/RL8Bm7MWAD4aJz7/CBNmTn+04WEN1nu+Me88BNoNSrNWIQY9XHeNcrZl4gI/iW7vHEdpE+CVkAMvqW9TxiPTStqiafv9pFsuAfWrjvlYZqh/4FPJ92R/ETQ3HzJ+AGBYl1P02LPfm//WK7Ga0NW3AoMuwh94O7CWrti7r3VGitG7t2sxrcaE6fnAC03QLy2RE3FCU5mFCGHLqLXHlnFFLOWtpn+eFk/QP4TGQ0Q7vC+bBRUFSwcQDJrv6kv1lAQztEA0iv6EDwC6K/Iq3kQ912mX7smLs75BJpxBNJ1xqGDbEbn7ZBhUG7ihi0iafTu+E7D8HUc28zCT+ACzpLfyBSS1avqt4KdNFJGLv3IW+lnv8sBkdWk8nIKaEugOgOvBgtl2yXhZ+uYA/x5QvxoNiFBpBRkPS9fKzwzyDsPJo6E8jX83WIDsUPuKPkbx+ZHHJXny9n/xclqjnQJ/jXHmZqxz4fKAKkl309BHOlds+Sh0qewJm+EyeXbYR7TtPHX//yU1p/mdCIAh2AtgweFHiGqoxDZZDEZMJBKZJxvlLEzohiWw8zfNMfhPMu5it/Bvs0KcvSd2qYCQmoikXRgi8kP82z/Vi92eOfuc/Sl3R/YOI7DI3sAd9JsSlX+1oKDAxGM+Talw/g//pbuRP8W8KbNfn4vHYnHjwNphfn9Gcnre+W3aC5P3odqKGUGfcnbqT3VNECICUAAA=)}
.dgm-ic-selects{background-image:url(data:image/webp;base64,UklGRkQEAABXRUJQVlA4WAoAAAAQAAAAMwAAMwAAQUxQSOIAAAABcFtbe5t8v2S5dk9Y0p7AXonQpSU4lPYI5KyPDNJ/6CgigoHbRoqapWO+9g34TSSAr2USAyDuSYl9rJd+zaOx8rkC3bw3q+vmK+p61su7wKdi4KoFA1lUDubDPc/G5Ol8CeB8IseZyNst3JRHH9r4I6fu3QYWJQ+MwIEl7JuVWpuLjyF/2bRe10lQ8MQonFggeW2G/hxHZz98aQRmzkscXTg3kGelTTw16b+VdP7FCv98LW/R8TBNr4RYN+HBB48PnDgr771/FMP7R5nIp4xRhmeM0sGoZBmVzKSRzTQy4E8CVlA4IDwDAACwEQCdASo0ADQAPj0cjESiIaESDAVsIAPEsQBmvBmPfsIHqA20HmA/YD1gPQB5IHWAegB+lfWY/uP6Sjv2VwMszS9YxvQhzx/RfsE/xf+ofSbyKH7RkNRsgjzeToFv2Iz+3sB5a6p52vLlSl9/wdUe2xPzfOC4wzaU77O8mrPcfSzIH1pfKL6mIGYpEDlpF3UhkUjZhAAA/v+nbvl5icTE/Q/uEovQoGr5JLuFr+pvGgzYPwQVd18eQwPpLlQ+z/v8Hq+xoGiR/4o4SPz6Qdy6IfijxbXg4OyKuj6Opx7TBL32D2pJn5QXTw6NpjXtuXOaHezzr1/RVez4W6BTNmWCms/fIMPjtwVb72jeqD6+Z2kjvFXaIvvZPwVAjsOCKBydvQHDn+Y9rbA4GVB2s5jB950E74sS8MIbxEhz2Y4gMxMFLZj3xwDVvhUxAvxBv1nBingi+RGHc4Ee7powmIL1bH5VzQFF4Ej1jlmtKM2zyRan3sI48QDq0SZr6/bmuKBB3xBPweKWSfB/NWfwDIp41E7EhyHjeB4vsE6cTPqRsWBfzMp7vKmTGuAamz7XFP35x1TGayyFlVGw5oh9FqHlQhafVk6F9D09d7DLyYL+nol8oesJ1KnnLPVoqj989V8T/fMQPPf8V/xl4aFSBOIrySnzi5tLxiU3e0LSqwr2zdfxu3Ky3M+RdUjm+IbzdMCtLb8jtWYn6Nkkln7YguELb9f70Biolv2+hMlDXG8+3qqQVFevCuUke7FP55v8iJhMchpGAqWmgDVSTR8evImr12Svxmtz/XVtHWsclOhJjd4q/AFwKpD2LE1xQr/YBXJN0CxfwytMg9yU9JFnhfuECqO/9kulT6UuYCnoc/Bt1DDO7Byx/vK8j/2jdkm+xzoYoZ14yb82WM6pNG3Ut4WD6PjCtAdNNGPfosBPtS27YP4KfIW+Fv1sptm/ddrb4rE9IPDqD+Vm2UEz2MLXSjnVApKhw1i/8aP/LFqYa8Y+K+2Tpy72KgFfUH63E3no3jg4EalpOretI962u6f/pa2b3i2voiobC8LKF3VBqNhgfjxDGvY5WwfnM6bhMQp3YRfvc0D5vOg9a6kAAAA=)}
.dgm-ic-rapid{background-image:url(data:image/webp;base64,UklGRqoEAABXRUJQVlA4WAoAAAAQAAAAMwAAMwAAQUxQSNAAAAABcFtr25O8f4CW3jAkLAA7GSoOY3AoYQJzIH5k9P+OnUVEMHLbxpE1vezexn4DfhPxBR9LaoUvUFp+dF4BEPbHDI0SyxXYurs4TbOPSNN4524BsVh1cKIvOQV6oQjhhERlVX9BVRKFzuw/hbIiyhv6kianyFIzRcGnnAyQkw81/StW97oxoaa+ryDH0vCoJCOU5EFP58emMqOqOU6mAjKh2oxqSiTEWHZmTpn9byWet5jlzefxFh4PY/FKHk9m8X6WjMGSZVgyE0c248iAPwkAVlA4ILQDAAAQEwCdASo0ADQAPj0ci0QiIaETCq3YIAPEsgBofiE8Y473ljEBlrP6DzAaADzAfaBwgH66ehn7AHoAfsd6V/+w9yj9tPRw/+jzWPkq4HPDcYHcVabrz2f93yufTHsCfp99zneo9E0s7m7mzO0HdyEkkHOdlR7F1LRHwx57KoUUj/su3KChHJfE5js5bdhE8P4BZLPPLS3lnv4iYh+KgpAigAD+/9H63SgLeCWVpqG+K2a5MUgkQ4L6mVmOHL8YbpMi40jZNhH+HCTRTtX0HCVd4tnv8yU/z9WvKWRSnGUW9abI5/XQsgmdfBXuXxCboMydSQCF1bQC2/aV8c/9r6jk/P+ppiyqo2mUduAQNd6qXxH4vOCrgbkuiigHkQIjSNkuHhi0TXIeuHLV6anzUotfHS0Vve0GNuWFJ8hGedXN1hJz0d17FhkOvc8wn5yjqggR/sXYV+KMve4X0A81Ko9LMDig7ELOOaP/HnxmeGJneheTOPSRjx+3Pn/u/byOy6t0dN+eb6elA9FPVCmtIl4adIt2GfZjv76vbtfoS65j3cy8GKUNh6W459vXB7lwSqS8R+l0U3L13yTf007eppwknuqW+f4ZmW8fdWKnnpfCzDKse2KR3XDp4p+RDqoHthbyLdfv7/9JGt7ybhIaAbdav42YCAcnS0ysfd9f/y5IW1Srnlt/++LEX3/f1x/ALKagvYKYO6WZhXq557O74vJbSfxMaJbH1C+ebANxGOV7D058Y4/7cwdA7fADy0Dy0/vroizkvf4t/7Rv8y03JFhtHA9nnc/sLFnJlkyedwninId1thOuTkGgRHT6ju+OV+loDvRt9v4It/wvs7bL9XqLoCacZLPV7XOdgvgvmEuEb0JqV+ILfp1Ps4tGgXxPS3/CYunz34n9AeVcDA/wHv+4W40vDGwWn4Nf4NZcPJFAy/ZWAfmlg5MrKao0XxhqYXmqpOVigdNnNYk2XdpK0LPlVvi34jVvYJHJs6M05K+XDieU0gHWEenUlCCtddJ4VaBTY/K6ypyz6leTkFVuKjbnqUe2Vbpk81HLOThlkL/2uqF6/tHQLqHng//0isc2AK9C5QoYeOAOuoZl7uIBciMaB3/j42ZJfW1K93Z3hHWsZrRX8wWYj9xi1gBn/5aC/hrS/+MkMevH+e9fX/0s9vV/j2j20rWturF35tYFEqVNMxuqlpOFUJOZWFmV94PYUwREr0DU/+v18EsTdWgVXoIR83SjHmZy3Eh/QXGSgiI6AAAAAAA=)}
.dgm-fbrand{display:flex;justify-content:flex-end;align-items:flex-start}
.dgm-fbrand img{height:44px;width:auto;display:block;max-width:100%}
.dgm-foot-base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;
  max-width:1160px;margin:36px auto 0;padding-top:24px;border-top:1px solid #24242c;font-size:13px;color:#8a9098}
.dgm-foot-base a{color:#c9ccd2}
@media(max-width:860px){.dgm-foot-cols{grid-template-columns:1fr 1fr}
  .dgm-fbrand{grid-column:1 / -1;justify-content:flex-start;margin-top:8px}}
@media(max-width:520px){.dgm-foot-cols{grid-template-columns:1fr}}

/* home hero — per slide lockup (Dylan) and the site blue.
   Slide 1 "Digital Capture" sized to the width of its black sub line;
   slide 2 "Studio" the same size as "equipment hire"; slide 3 "Location"
   sized to the width of "equipment hire". Hero blue unified to #0089F7.
   Overrides the inline hero <style>/style="" by specificity + !important,
   so it survives a re-clone without touching site/index.html. */
#dgh .dgh-slide:nth-child(1) .dgh-big{ font-size:clamp(32px,4.35vw,56px) !important; }
#dgh .dgh-slide:nth-child(2) .dgh-big{ font-size:clamp(26px,3.7vw,50px) !important; }
#dgh .dgh-slide:nth-child(3) .dgh-big{ font-size:clamp(30px,6.25vw,80px) !important; }
#dgh .dgh-slide:nth-child(1) .dgh-big,
#dgh .dgh-slide:nth-child(2) .dgh-sub,
#dgh .dgh-slide:nth-child(3) .dgh-big{ color:#0089F7 !important; }
#dgh .dgh-dot.is-on{ background:#0089F7 !important; }

/* home hero — the Studio (2) and Location (3) images already fill their column
   (the grid gives text max-content and the image the rest, ~760px wide). A
   transform:scale on top only spilled the image left over the "equipment hire"
   line on wide screens, so it is left at its natural, column-filling size. */
#dgh .dgh-slide:nth-child(2) .dgh-img img{ transform:none; }
/* the Location iWorkCase image reads small next to the Studio cart, and it has
   plenty of horizontal room before the text, so give it 25% more size. Only the
   image; the copy and slide are untouched. */
#dgh .dgh-slide:nth-child(3) .dgh-img img{ transform:scale(1.25); transform-origin:center center; }

/* About page (page-id-298) — the Hire Crew / Hire equipment CTA buttons hugged
   the bottom of their black box (66px above, 20px below). Centre them between
   the cards above and the box bottom. */
.page-id-298 .elementor-element-44840b06{ margin-bottom:36px !important; }

/* v-bump 2026-08-27: csstrim rewrote the shipped file after the stamp was computed, so browsers month-cached an older copy under the same URL. New stamp forces the refetch. */

/* BeTheme's default 404 template hides every <header> and <footer> element
   outright (body.error404.default-404 header/footer, !important) — ours
   included, so the 404 page rendered with no nav and no footer. Bring OURS
   back at higher specificity; the theme's own chrome stays hidden. */
body.error404 header.site-head.dgm-head{ display:flex !important; }
body.error404 footer.dgm-foot{ display:block !important; }

/* ── the phone (2026-08-27 evening) ─────────────────────────────────────────
   The hero carries its own <style> in the body with !important image rules,
   which beats a head stylesheet at equal specificity on document order alone
   — two passes of class-level rules here lost that fight invisibly. Every
   hero rule is #dgh-prefixed now: id specificity outranks anything the
   hero's own sheet says, whatever order the documents load in. */
@media (max-width:840px){
  #dgh.dgh{height:auto !important;min-height:0 !important;width:100% !important;
    max-height:none !important;overflow:visible !important}
  #dgh .dgh-slide{position:relative !important;inset:auto !important;
    display:flex !important;flex-direction:column !important;
    height:auto !important;max-height:none !important;overflow:visible !important;
    gap:12px !important;padding:18px 18px 8px !important;text-align:center !important}
  #dgh .dgh-slide:not(.is-on){display:none !important}
  #dgh .dgh-img{order:-1 !important;height:auto !important;
    max-height:none !important;overflow:visible !important}
  #dgh .dgh-img img{max-height:300px !important;max-width:100% !important;
    width:auto !important;height:auto !important;object-fit:contain !important;
    margin:0 auto !important;
    /* the desktop fill-the-frame pass scales some slides (transform ignores
       layout, so a 300px box painted 375px of case over the copy below) */
    transform:none !important}
  #dgh .dgh-txt{align-items:center !important;order:0 !important}
  #dgh .dgh-big{font-size:34px !important}
  #dgh .dgh-sub-lg{font-size:21px !important}
  #dgh .dgh-sub-sm{font-size:15px !important}
  #dgh .dgh-dots{position:static !important;justify-content:center !important;
    padding:10px 0 16px !important}
  .page-id-24 .elementor-element-b35b2fd.elementor-hidden-mobile{display:block !important}
  /* the theme wraps the hero in 156px of stacked side padding (33+15+30 a
     side) — a 219px hero in a 375px phone. Freed on the hero's own ancestor
     chain alone, so every other home section keeps its spacing. */
  .page-id-24 .section_wrapper:has(#dgh){padding-left:16px !important;padding-right:16px !important;max-width:none !important}
  .page-id-24 .elementor-container:has(#dgh){padding-left:0 !important;padding-right:0 !important;max-width:none !important}
  .page-id-24 .elementor-widget-wrap:has(#dgh){padding-left:0 !important;padding-right:0 !important}
}
