.floating-revision .hero-title-location { display: block; white-space: nowrap; }
.home.floating-revision .hero .hero-roof-mark { margin-bottom: 14px; }
.home.floating-revision .hero-location {
  margin: 0 auto 24px;
  color: #fff;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-align: center;
}
@media (max-width: 599px) {
  .floating-revision .hero-title-location { font-size: min(1em, 7.8vw); }
  .floating-revision .hero-title-location-long { font-size: min(1em, 6.1vw); }
}

/* Reading introductions share the edge of the content they introduce.
   Decorative labels stay together; form and article type keep their own scale. */
.floating-revision {
  --intro-title-size: clamp(34px, 3.2vw, 48px);
  --intro-copy-gap: 20px;
  --intro-content-gap: 40px;
}
.floating-revision main .section-label {
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  margin: 0 0 16px;
  text-align: left;
}
.floating-revision main .section-label::before {
  flex: 0 0 32px;
  width: 32px;
  height: 14px;
}
.floating-revision main section h2,
.floating-revision .ccni-content-body h2 {
  margin-inline: 0;
  text-align: left;
}
.floating-revision :is(.intro-copy,.team-copy,.simple-heading,.editorial-heading,.extension-section-heading,.collection-heading,.about-company-section-heading,.news-collection-heading,.extension-overview-copy,.service-production-overview-grid,.service-choice-panel,.extension-trust-copy,.questions-grid,.about-company-story-copy,.about-company-office-copy,.contact-page-details,.homepage-reviews-heading,.service-editor-content) h2,
.floating-revision :is(.service-production-options,.service-production-gallery,.service-production-trust) > .container > h2 {
  max-width: 26ch;
  margin: 0 0 var(--intro-copy-gap);
  font-size: var(--intro-title-size);
  line-height: 1.14;
  text-align: left;
}
.floating-revision main :is(.simple-heading,.extension-section-heading,.about-company-section-heading,.news-collection-heading) {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  margin-bottom: var(--intro-content-gap);
  text-align: left;
}
.floating-revision main :is(.simple-heading,.extension-section-heading,.about-company-section-heading,.news-collection-heading) h2 {
  margin-bottom: 0;
}
.floating-revision main :is(.simple-heading,.extension-section-heading,.about-company-section-heading,.news-collection-heading) > p,
.floating-revision .ccni-section-intro {
  max-width: 58ch;
  margin: var(--intro-copy-gap) 0 0;
  font-size: 16px;
  line-height: 1.75;
  text-align: left;
}
.floating-revision :is(.intro-copy,.team-copy,.extension-overview-copy,.extension-trust-copy,.about-company-story-copy,.about-company-office-copy,.contact-page-details) > p:not(.section-label),
.floating-revision .service-production-overview-grid > div > p:not(.section-label),
.floating-revision .questions-grid > div > h2 + p {
  max-width: 58ch;
  margin-inline: 0;
  text-align: left;
}
.floating-revision :is(.intro-copy,.team-copy) > .button {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  margin-inline: 0;
  text-align: center;
}
.floating-revision .team-copy { display: block; }
.floating-revision main :is(.editorial-heading,.collection-heading) {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: var(--intro-content-gap);
  text-align: left;
}
.floating-revision main :is(.editorial-heading,.collection-heading) > div { min-width: 0; }
.floating-revision main :is(.editorial-heading,.collection-heading) h2 { margin-bottom: 0; }
.floating-revision main :is(.editorial-heading,.collection-heading) > .button {
  flex-shrink: 0;
  margin: 0;
}
.floating-revision .homepage-reviews-heading { margin-bottom: var(--intro-content-gap); }
.floating-revision .homepage-reviews-heading h2 { margin-bottom: 0; }
.floating-revision .service-production-gallery-grid { margin-top: 0; }
.floating-revision :is(.service-production-options,.service-production-trust) > .container > h2 {
  margin-bottom: var(--intro-content-gap);
}
.floating-revision :is(.ccni-content-intro,.project-story-introduction) { text-align: left; }
.floating-revision :is(.ccni-content-intro,.project-story-introduction) h1 { margin-inline: 0; }
.floating-revision :is(.about-company-intro-copy,.contact-page-intro-copy,.news-intro-copy,.project-story-summary) {
  margin-inline: 0;
}
.floating-revision .ccni-content-intro .actions,
.floating-revision .project-story-facts,
.floating-revision .news-article-dates { justify-content: flex-start; }
.floating-revision .news-intro > .button { margin-inline: 0; }
.floating-revision .project-story h1 { max-width: 24ch; }

/* Short opening compositions and standalone callouts remain centred as a unit. */
.floating-revision main :is(.service-enquiry-inner,.service-review-inner,.about-company-enquiry,.news-enquiry,.projects-enquiry,.project-story-enquiry) .section-label,
.floating-revision main .hero .section-label { justify-content: center; text-align: center; }
.floating-revision main :is(.service-enquiry-inner,.about-company-enquiry,.news-enquiry,.projects-enquiry,.project-story-enquiry) h2 {
  max-width: 22ch;
  margin: 0 auto var(--intro-copy-gap);
  font-size: var(--intro-title-size);
  line-height: 1.14;
  text-align: center;
}
.floating-revision main :is(.service-enquiry-inner,.about-company-enquiry,.news-enquiry,.projects-enquiry,.project-story-enquiry) p:not(.section-label) {
  max-width: 55ch;
  margin-inline: auto;
  text-align: center;
}
@media (min-width: 900px) {
  .floating-revision .service-detail-hero .hero-content { text-align: left; }
  .floating-revision main .service-detail-hero .section-label { justify-content: flex-start; text-align: left; }
  .floating-revision .service-detail-hero h1,
  .floating-revision .service-detail-hero .hero-summary { margin-inline: 0; }
  .floating-revision .service-detail-hero .actions { justify-content: flex-start; }
}
@media (max-width: 899px) {
  .floating-revision { --intro-title-size: clamp(30px, 4.3vw, 40px); --intro-copy-gap: 16px; --intro-content-gap: 32px; }
  .floating-revision main :is(.editorial-heading,.collection-heading) { flex-direction: column; align-items: flex-start; gap: 24px; }
}
@media (max-width: 599px) {
  .floating-revision { --intro-title-size: clamp(28px, 7.6vw, 32px); --intro-content-gap: 28px; }
  .floating-revision main .section-label { gap: 9px; margin-bottom: 12px; font-size: 11px; }
  .floating-revision main .section-label::before { flex-basis: 28px; width: 28px; height: 12px; }
  .floating-revision :is(.ccni-content-intro,.project-story-introduction) h1 { font-size: clamp(28px, 8.2vw, 36px); }
  .floating-revision main :is(.simple-heading,.extension-section-heading,.about-company-section-heading,.news-collection-heading) > p,
  .floating-revision .ccni-section-intro { font-size: 15px; }
}
.floating-revision .projects-collection .projects-count { margin: 0 0 24px; text-align: left; }
@media (max-width: 359px) {
  .floating-revision { --intro-title-size: 24px; }
  .floating-revision .service-detail-hero h1 { font-size: 28px; }
}

/* The opening header moves with the page, with no faded or empty placeholder. */
.js .floating-revision .site-header {
  position: relative;
  top: auto;
  transform: none;
  opacity: 1;
  pointer-events: auto;
  transition: none;
}
.js .floating-revision .site-header.header-pinned {
  position: sticky;
  top: var(--frame);
  transition: transform .22s cubic-bezier(.22,.61,.36,1);
}
.js .floating-revision .site-header.header-concealed {
  transform: translateY(calc(-100% - var(--frame) - 12px));
  pointer-events: none;
}
.js .floating-revision .site-header.header-arriving {
  animation: ccni-header-return .22s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes ccni-header-return {
  from { transform: translateY(calc(-100% - var(--frame) - 12px)); }
  to { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .js .floating-revision .site-header.header-pinned {
    animation: none;
    transition: none;
  }
}
.floating-revision .header-phone {
  padding-block: 12px;
  color: #dedbd5;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  text-decoration: none;
}
.floating-revision .header-phone:hover {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 5px;
}
.floating-revision .footer-credit {
  color: inherit;
  text-decoration: none;
}
.floating-revision .footer-credit strong { font-weight: 700; }
.floating-revision .footer-credit:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
}
@media (max-width: 899px) {
  .floating-revision .header-phone { display: none; }
}
@media (min-width: 900px) and (max-width: 1100px) {
  .floating-revision .header-inner { gap: 18px; padding-inline: 22px; }
  .floating-revision .primary-menu { gap: 20px; }
  .floating-revision .header-actions { gap: 12px; }
}

/* Photograph openings use a full width header and hero with contained copy. */
.ccni-photo-opening.floating-revision .site-header {
  position: relative;
  top: auto;
  margin: 0;
  border-radius: 0;
  box-shadow: none;
}
.ccni-photo-opening.floating-revision main > .hero {
  margin: 0;
  border-radius: 0 0 24px 24px;
}
.ccni-photo-opening.floating-revision:not(.home) main > .hero {
  height: auto;
  min-height: clamp(620px, calc(100svh - 82px), 790px);
  padding: 72px 0;
}
@media (max-width: 899px) {
  .ccni-photo-opening.floating-revision main > .hero { border-radius: 0 0 40px 40px; }
}
@media (max-width: 599px) {
  .ccni-photo-opening.floating-revision main > .hero,
  .ccni-photo-opening.floating-revision:not(.home) main > .hero {
    /* Keep the corner curve below the opening screen and retain the copy position. */
    --photo-hero-extension: max(0px, calc(100svh - 726px));
    --hero-copy-offset: 0px;
    height: auto;
    min-height: calc(700px + var(--photo-hero-extension));
    padding: 172px 0 calc(48px + var(--photo-hero-extension) + var(--hero-copy-offset));
    align-items: end;
  }
  .ccni-photo-opening.floating-revision .hero-photo .feature-picture {
    top: -36px;
    height: calc(100% + 36px);
  }
  /* Services phone trial: balance the copy with this photograph's gable and glazing. */
  .ccni-photo-opening.floating-revision main.services-overview > .services-hero {
    /* Extend below the first screen without moving the approved copy position. */
    padding: 112px 0 calc(48px + var(--photo-hero-extension));
    align-items: center;
  }
  .floating-revision .services-overview .services-hero .hero-photo .feature-picture .hero-image {
    object-position: 58% 50%;
  }
  .floating-revision .services-overview .services-hero .hero-photo::after {
    background: linear-gradient(180deg,rgba(10,10,10,.22),rgba(10,10,10,.3) 16%,rgba(10,10,10,.68) 30%,rgba(10,10,10,.74) 62%,rgba(10,10,10,.8));
  }
  .floating-revision .services-overview .services-hero .button {
    justify-content: center;
  }
  .floating-revision .services-overview .services-hero .hero-summary {
    margin-block: 18px 24px;
    line-height: 1.6;
  }
  .ccni-photo-opening.floating-revision main.service-sunrooms-northern-ireland > .hero {
    /* Compensate for the shorter title so the complete copy group keeps its centre. */
    --hero-copy-offset: clamp(17.44px, 4.6325vw, 23.435px);
  }
  .floating-revision .service-conservatory-roof-replacement .hero-photo::after {
    background: linear-gradient(180deg,rgba(10,10,10,.22),rgba(10,10,10,.32) 22%,rgba(10,10,10,.66) 36%,rgba(10,10,10,.76) 65%,rgba(10,10,10,.8));
  }
  .floating-revision .service-renovations .hero-photo .feature-picture {
    /* Frame the finished kitchen rather than the empty ceiling on phones. */
    top: auto;
    bottom: 0;
    height: calc(155% + 55.8px);
  }
  .floating-revision .service-renovations .hero-photo .feature-picture .hero-image {
    object-position: 44% 50%;
  }
  .floating-revision .service-renovations .hero-photo::after {
    background: linear-gradient(180deg,rgba(10,10,10,.28),rgba(10,10,10,.38) 20%,rgba(10,10,10,.7) 38%,rgba(10,10,10,.76) 65%,rgba(10,10,10,.8));
  }
}
@media (max-width: 359px) {
  .ccni-photo-opening.floating-revision main.service-sunrooms-northern-ireland > .hero {
    --hero-copy-offset: 15.26px;
  }
}
.home.floating-revision :is(.section-faq,.homepage-reviews) {
  margin-inline: var(--frame);
  border-radius: 24px;
}
.home.floating-revision .homepage-reviews {
  margin-top: var(--section-space);
  background: #fff;
}
@media (min-width: 900px) {
  .ccni-photo-opening.floating-revision .header-inner {
    max-width: 1280px;
    margin-inline: auto;
  }
}

/* Balance short section introductions without forcing fixed line breaks. */
.floating-revision main :is(h1,h2,h3) { text-wrap: balance; }
.floating-revision .heading-line { display: block; text-wrap: balance; }
.floating-revision :is(.simple-heading,.editorial-heading,.extension-section-heading,.collection-heading,.about-company-section-heading,.news-collection-heading) p:not(.section-label) {
  text-wrap: balance;
}

/* Four equally weighted, illustrated company facts. */
.company-trust {
  min-width: 0;
  overflow: hidden;
  border-radius: 28px;
  background: #fff;
  box-shadow: 0 12px 28px #17171708;
  text-align: left;
}
.company-trust-home,.company-trust-about { grid-column: 1 / -1; order: 2; }
.company-trust-details { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); min-width: 0; }
.company-trust-point {
  display: flex;
  align-items: center;
  gap: 22px;
  min-width: 0;
  padding: 30px 36px;
}
.company-trust-point:nth-child(even) { border-left: 1px solid var(--line); }
.company-trust-point:nth-child(n+3) { border-top: 1px solid var(--line); }
.company-trust-icon { display: block; width: 34px; height: 34px; flex: 0 0 34px; color: var(--brand); }
.company-trust-point > div { min-width: 0; }
.company-trust-point strong {
  display: block;
  margin-bottom: 4px;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -.025em;
  color: var(--text);
}
.company-trust-point span { display: block; color: var(--muted); font-size: 14px; line-height: 1.6; }
.company-trust-extension .company-trust-point { gap: 16px; padding: 26px; }
@media (max-width: 899px) {
  .company-trust-point { gap: 18px; padding: 26px; }
  .company-trust-point strong { font-size: 21px; }
}
@media (max-width: 599px) {
  .company-trust { border-radius: 26px; }
  .company-trust-details { grid-template-columns: minmax(0,1fr); }
  .company-trust-point,.company-trust-extension .company-trust-point { gap: 18px; padding: 22px 24px; }
  .company-trust-point:nth-child(even) { border-left: 0; }
  .company-trust-point + .company-trust-point { border-top: 1px solid var(--line); }
  .company-trust-icon { width: 30px; height: 30px; flex-basis: 30px; }
  .company-trust-point strong { font-size: 20px; }
  .company-trust-point span { font-size: 13px; }
}
@media (max-width: 359px) {
  .company-trust-point,.company-trust-extension .company-trust-point { gap: 14px; padding-inline: 20px; }
}
