/* CTC front page. Values copied from reference/front-page.html; do not restyle. */

/* ---------- Hero ---------- */
.hero{position:relative;height:860px;overflow:hidden;background:var(--ctc-black);color:#fff}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero__tint{position:absolute;inset:0;background:rgba(35,31,32,.30)}
.hero__screen{position:absolute;inset:0;width:100%;height:100%;pointer-events:none} /* line screen, see SVG pattern */
.hero__content{position:absolute;left:0;right:0;top:300px;display:flex;flex-direction:column;align-items:center;gap:22px;text-align:center;padding:0 160px}
.hero h1{font-size:72px;line-height:78px;max-width:980px}
.hero__lede{font-size:21px;line-height:31px;font-weight:300;max-width:700px}
.hero__ctas{display:flex;gap:28px;align-items:center;margin-top:10px}
.rule-blue{height:2px;background:var(--ctc-blue)}
.accent{width:64px;height:2px;background:var(--ctc-blue)}

/* ---------- Positioning ---------- */
.positioning{min-height:440px;padding:0 200px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;text-align:center}
.positioning h2{font-size:38px;line-height:46px;max-width:900px}
.positioning h2 span{color:var(--ctc-blue)}
.positioning p{font-size:19px;line-height:30px;max-width:820px}

/* ---------- Figures over the photo break ---------- */
.figures{position:relative;height:360px;overflow:hidden;background:var(--ctc-black)}
.figures > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}   /* the band photo only, not the logos */
.figures__shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(35,31,32,.85) 0%,rgba(35,31,32,.6) 50%,rgba(35,31,32,.1) 85%)}
.figures__content{position:relative;height:100%;padding:0 96px;display:flex;flex-direction:column;justify-content:center;gap:18px;max-width:900px}
.figures__sentence{font-size:24px;line-height:42px;font-weight:300;color:#fff}
.fig{color:#fff;font-family:var(--font-display);font-weight:700;font-size:34px}
.fig [data-count]{display:inline-block;text-align:right}   /* width held by home.js during the count-up */
/* "As featured in": official publication logos shown white (CSS filter, files unchanged); sizes from the img width/height
   attributes (src/_data/featured.json). Whole row links to /press/. Added at Flo's request; not in the reference. */
.figures{height:440px}
.featured{display:flex;flex-direction:column;gap:14px;margin-top:6px;padding-top:20px;border-top:1px solid rgba(255,255,255,.22);align-self:stretch}
.featured__label{font-weight:700;font-size:12px;line-height:15px;letter-spacing:.1em;text-transform:uppercase;color:var(--ctc-text-on-black)}  /* eyebrow */
.featured__logos{display:flex;flex-wrap:wrap;align-items:center;gap:18px 24px}
.featured__logos img{filter:brightness(0) invert(1);opacity:.75;transition:opacity var(--t-colour) var(--ease)}
.featured:hover img,.featured:focus-visible img{opacity:1}
.featured:focus-visible{outline:2px solid var(--ctc-blue);outline-offset:6px}

/* ---------- Solutions ---------- */
.section{padding:76px 96px;display:flex;flex-direction:column;align-items:center;gap:36px}
.section > h2{font-size:34px;line-height:40px;text-align:center}
.cols{align-self:stretch;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px;border-top:1px solid var(--ctc-rule);padding-top:36px}
.col{display:flex;gap:18px;align-items:flex-start}
.col svg{flex-shrink:0}
.col h3{font-size:22px;line-height:28px;margin-bottom:8px}
.photo-break{width:100%;height:360px;object-fit:cover}

/* ---------- Sectors (tabs switch the scene) ---------- */
.sectors{padding-bottom:96px}
.sectors__body{align-self:stretch;display:flex;flex-direction:column;gap:28px}
.tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:56px;border-top:1px solid var(--ctc-rule)}
.tab{all:unset;position:relative;display:flex;gap:18px;align-items:flex-start;padding:28px 0 4px;cursor:pointer;text-align:left}
.tab:focus-visible{outline:2px solid var(--ctc-blue);outline-offset:4px}
.tab__line{position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--ctc-blue);transform:scaleX(0);transform-origin:left center;transition:transform var(--t-underline) var(--ease)}
.tab svg path{stroke:var(--ctc-black);transition:stroke var(--t-colour) var(--ease)}
.tab__name{display:block;font-family:var(--font-display);font-weight:700;font-size:22px;line-height:28px;transition:color var(--t-colour) var(--ease)}
.tab__short{display:block;font-size:15px;line-height:22px;color:var(--ctc-text-muted);margin-top:4px}
.tab:hover .tab__name,.tab[aria-selected="true"] .tab__name{color:var(--ctc-blue)}
.tab[aria-selected="true"] svg path{stroke:var(--ctc-blue)}
.tab[aria-selected="true"] .tab__line{transform:scaleX(1)}
.stage{position:relative;height:420px;overflow:hidden;background:var(--ctc-black)}
.stage__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.04);transition:opacity var(--t-scene) var(--ease),transform 1200ms var(--ease)}
.stage__shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(35,31,32,.82) 0%,rgba(35,31,32,.55) 45%,rgba(35,31,32,0) 75%)}
.stage__text{position:absolute;left:56px;top:0;bottom:0;width:560px;display:flex;flex-direction:column;justify-content:center;gap:16px;color:#fff;opacity:0;transform:translateY(12px);transition:opacity 300ms var(--ease),transform 300ms var(--ease)}
.stage__text h3{font-size:30px;line-height:36px}
.stage__text p{font-size:19px;line-height:30px;font-weight:300}
.stage__text .products{padding-top:14px;border-top:1px solid rgba(255,255,255,.35);font-size:15px;line-height:23px;color:var(--ctc-text-on-black);font-weight:400}
.stage [data-active] {opacity:1;transform:none}

/* ---------- Testimonial + Market reports ---------- */
.dark-pair{min-height:560px;background:var(--ctc-black);color:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.dark-pair > div{padding:64px 80px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;text-align:center}
.dark-pair > div:first-child{border-right:1px solid #3a3637}
.quote{font-weight:300;font-size:26px;line-height:38px}
.quote-by{font-size:15px;color:var(--ctc-text-on-black)}
.reports h2{font-size:40px;line-height:46px}
.reports p{font-size:18px;line-height:28px;color:var(--ctc-text-on-black);max-width:500px}

.reports__form{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:6px;width:100%;max-width:520px}
.reports__row{display:flex;width:100%}
.reports__row input{flex-grow:1;min-width:0;height:52px;border:1px solid var(--ctc-rule-strong);border-right:0;border-radius:0;background:#fff;color:var(--ctc-black);padding:0 16px;font:16px var(--font-sans)}
.reports__row .ctc-btn{height:52px;padding:0 26px}
.reports__form label{font-size:14px;color:var(--ctc-text-on-black)}
/* ---------- Contact + footer ---------- */
.contact{min-height:620px;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}
.contact__map{background:var(--ctc-blue-tint-10)}
.contact__info{padding:64px;display:flex;flex-direction:column;gap:18px}
.contact__info h2{font-size:40px;line-height:46px}
.contact__list{display:grid;grid-template-columns:110px minmax(0,1fr);row-gap:8px;border-top:1px solid var(--ctc-rule);padding-top:18px}
.contact__list dt{font-weight:700}.contact__list dd{margin:0;justify-self:start}
/* ---------- Pre-loader (first visit only) ---------- */
.preloader{position:fixed;inset:0;z-index:50;background:#fff;cursor:pointer}
.preloader[hidden]{display:none}
.preloader__window{position:absolute;inset:0;
  -webkit-mask-image:url(/assets/logo/symbol-bar-1.svg),url(/assets/logo/symbol-bar-2.svg),url(/assets/logo/symbol-bar-3.svg),url(/assets/logo/symbol-bar-4.svg);
          mask-image:url(/assets/logo/symbol-bar-1.svg),url(/assets/logo/symbol-bar-2.svg),url(/assets/logo/symbol-bar-3.svg),url(/assets/logo/symbol-bar-4.svg);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.preloader__window video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.preloader__tint{position:absolute;inset:0;background:rgba(35,31,32,0)}


/* Inline styles from the reference, moved to classes */
.hero__link{font-weight:700}
.accent--short{width:48px}
/* Map placeholder is a link to Google Maps until a static map image is supplied */
/* Static map (OpenStreetMap, greyscale, self-hosted). Image centre = the building, so the marker sits in the panel centre. */
.contact__map{position:relative;overflow:hidden}
.contact__map img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.contact__map-link{position:absolute;inset:0;display:block;color:var(--ctc-black)}
.contact__map-link:focus-visible{outline:2px solid var(--ctc-blue);outline-offset:-6px}
.contact__pin{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;background:var(--ctc-blue);box-shadow:0 0 0 3px #fff}   /* square marker, CTC blue */
.contact__pin-label{position:absolute;left:50%;top:50%;margin:16px 0 0;transform:translateX(-50%);padding:5px 10px;background:var(--ctc-black);color:#fff;font:700 13px/18px var(--font-sans);white-space:nowrap}
.contact__map-cta{position:absolute;left:24px;bottom:24px;padding:10px 14px;background:#fff;font:700 14px/18px var(--font-sans);color:var(--ctc-black);background-image:linear-gradient(var(--ctc-blue),var(--ctc-blue));background-repeat:no-repeat;background-size:0% 2px;background-position:right bottom;transition:background-size var(--t-underline) var(--ease),color var(--t-colour) var(--ease)}
.contact__map-link:hover .contact__map-cta,.contact__map-link:focus-visible .contact__map-cta{color:var(--ctc-blue);background-size:100% 2px;background-position:left bottom}
.contact__map-credit{position:absolute;right:0;bottom:0;z-index:1;padding:3px 8px;background:rgba(255,255,255,.85);font-size:11px;line-height:15px;color:var(--ctc-text-muted)}
.contact__map-credit:hover,.contact__map-credit:focus-visible{color:var(--ctc-blue)}
.contact__map-credit:focus-visible{outline:2px solid var(--ctc-blue);outline-offset:2px}

/* ---------- Responsive — tablet (761–1100px). Reference starting rules, plus proposals marked ▲ ---------- */
@media (max-width: 1100px){
  .hero__content,.positioning{padding:0 32px}
  .hero h1{font-size:48px;line-height:54px}
  .section,.figures__content{padding-left:32px;padding-right:32px}
  .cols,.tabs{gap:32px}
  .stage__text{left:32px;width:auto;right:32px}
  .cols{grid-template-columns:1fr;gap:28px}                 /* ▲ three columns are too narrow beside the icons */
  .col > div{max-width:640px}
  .dark-pair > div{padding:56px 40px}                       /* ▲ */
  .quote{font-size:22px;line-height:34px}                  /* ▲ */
  .contact__info{padding:48px 32px}                         /* ▲ */
  .featured__logos{column-gap:20px}                         /* five logos stay on one line */
}

/* ---------- Responsive — phone (≤ 760px) ---------- */
@media (max-width: 760px){
  .hero{height:100svh;min-height:560px}
  .hero__content{top:auto;bottom:96px;padding:0 20px;gap:18px}
  .hero__ctas{flex-direction:column;gap:18px}
  .hero h1{font-size:38px;line-height:44px}                /* ▲ */
  .hero__lede{font-size:18px;line-height:28px}             /* ▲ */
  .positioning{min-height:0;padding:72px 20px}              /* ▲ */
  .positioning h2{font-size:28px;line-height:35px}         /* ▲ */
  .positioning p{font-size:17px;line-height:27px}          /* ▲ */
  .figures{height:auto}                                     /* ▲ sentence sets the height */
  .figures__content{padding:64px 20px}
  .figures__shade{background:rgba(35,31,32,.72)}            /* ▲ text runs full width */
  .figures__sentence{font-size:20px;line-height:36px}      /* ▲ */
  .fig{font-size:28px}                                      /* ▲ */
  .featured__logos{gap:18px 28px;zoom:.85}
  .section{padding:56px 20px;gap:28px}                      /* ▲ */
  .section > h2{font-size:28px;line-height:34px}           /* ▲ */
  .photo-break{height:220px}                                /* ▲ */
  .cols,.tabs{grid-template-columns:1fr}
  .tabs{gap:0}
  .tab{padding:18px 0}                                      /* ▲ stacked list; tap selects, scene shows below */
  .tab + .tab{border-top:1px solid var(--ctc-rule)}
  .sectors{padding-bottom:56px}
  .stage{height:480px}                                      /* ▲ */
  .stage__shade{background:linear-gradient(90deg,rgba(35,31,32,.82) 0%,rgba(35,31,32,.65) 60%,rgba(35,31,32,.45) 100%)} /* ▲ */
  .stage__text{left:20px;right:20px}
  .stage__text h3{font-size:26px;line-height:32px}         /* ▲ */
  .stage__text p{font-size:17px;line-height:27px}          /* ▲ */
  .dark-pair,.contact{grid-template-columns:1fr}
  .dark-pair > div{padding:56px 20px}
  .dark-pair > div:first-child{border-right:0;border-bottom:1px solid #3a3637}
  .quote{font-size:21px;line-height:32px}                  /* ▲ */
  .reports h2,.contact__info h2{font-size:32px;line-height:38px} /* ▲ */
  .contact__map{min-height:280px}
  .contact__info{padding:48px 20px}
}

/* ▲ Contact stacks below 900px: the info column gets too narrow for the email addresses */
@media (max-width: 900px) and (min-width: 761px){
  .contact{grid-template-columns:1fr}
  .contact__map{min-height:320px}
}
