/* Exact source copy; full-colour films and architectural image cuts. */
.home-hero{position:relative;isolation:isolate;overflow:hidden;background:#202529;color:#fff;min-height:760px;min-height:calc(100svh - 80px);display:flex;align-items:center;padding:65px 0 85px}
.home-hero-media.motion-frame{position:absolute;inset:0;z-index:-1;border-radius:0;aspect-ratio:auto;background:#202529;overflow:hidden}
.home-hero-media .home-video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;filter:none;opacity:1}
.home-hero-media:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,rgba(0,0,0,.22),transparent 35%)}
.home-display{font-size:clamp(3.6rem,10.7vw,10rem);line-height:.96;letter-spacing:-.07em;margin:0;font-weight:700;color:var(--blue)}
.home-display span{display:block}
.home-intro{padding:56px 0 48px;background:#fff}
.home-intro-grid{display:grid;gap:42px}
.home-maker{width:100%;margin:38px 0 0}
.home-maker img{display:block;width:100%;height:clamp(260px,38vw,570px);object-fit:cover;filter:none;clip-path:polygon(15% 0,100% 0,100% 78%,78% 100%,0 100%,0 20%)}
.home-intro-copy h2{color:var(--blue);font-size:clamp(1.95rem,3.35vw,3.5rem);line-height:1.2;letter-spacing:-.045em;margin:0;max-width:19ch}
.home-location{display:inline-flex;align-items:center;gap:14px;margin:32px 0 0;padding:14px 20px 14px 16px;border:1px solid var(--blue);color:var(--blue);font:600 clamp(1.2rem,2vw,1.6rem)/1.2 Poppins,Arial,sans-serif;letter-spacing:-.02em}
.home-location .icon{flex:none;width:30px;height:30px;padding:5px;background:var(--blue);color:#fff}
.home-pathways{padding:clamp(8px,1.5vw,20px) 0 48px;background:#fff}
.home-pathway{display:grid;grid-template-columns:1fr 48px;gap:18px;border-top:1px solid var(--blue);padding:28px 0;color:var(--blue)}
.home-pathway:last-child{border-bottom:1px solid var(--blue)}
.home-pathway h2{font-size:clamp(2.9rem,6.8vw,6.8rem);letter-spacing:-.065em;line-height:1.05;margin:0}
.home-pathway p{grid-column:1;grid-row:2;margin:0;font-size:1rem;line-height:1.65;max-width:38em;color:var(--ink)}
.home-circle-link{grid-column:2;grid-row:1;align-self:center;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%;width:48px;height:48px;transition:background .2s,color .2s,transform .2s}
.home-circle-link:hover{background:var(--blue);color:#fff;transform:rotate(45deg)}
.home-circle-link svg{width:22px;height:22px}
.home-services{padding:56px 0 48px;background:var(--blue);color:#fff;overflow:hidden}
.home-services .home-display{color:#fff}
.home-service-rail{margin-top:32px}
.home-service-rail .rail-controls{display:flex;justify-content:flex-end;gap:10px;margin-bottom:26px}
.home-service-rail .rail-controls button{display:grid;place-items:center;width:50px;height:50px;border:1px solid #ffffffaa;border-radius:50%;color:#fff;background:transparent}
.home-service-rail .rail-controls button:hover{background:#fff;color:var(--blue)}
.home-service-rail [data-rail-prev] svg{transform:rotate(180deg)}
.home-service-rail .rail-track{display:flex;overflow-x:auto;gap:24px;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:0 var(--gutter) 24px;scrollbar-width:thin;scrollbar-color:#ffffff80 transparent}
.home-service-rail .home-service.rail-panel{flex:0 0 88%;display:block;scroll-snap-align:start;margin:0;min-width:0}
.home-service-image{overflow:hidden;aspect-ratio:1.08;background:var(--navy)}
.home-service-image img{display:block;width:100%;height:100%;object-fit:cover;filter:none;transition:transform .7s}
.home-service:hover .home-service-image img{transform:scale(1.035)}
.home-service--factory .home-service-image{clip-path:polygon(13% 0,100% 0,100% 100%,0 100%,0 18%)}
.home-service--workspace .home-service-image{border-radius:46% 46% 0 0}
.home-service--labs .home-service-image{clip-path:polygon(0 0,100% 0,100% 80%,80% 100%,0 100%)}
.home-service-copy{padding-top:26px;max-width:36em}
.home-service h3{font-size:clamp(1.85rem,3.3vw,3.4rem);letter-spacing:-.055em;line-height:1.08;margin:0 0 20px;color:#fff}
.home-service h3 a{display:flex;align-items:center;justify-content:space-between;gap:20px;text-decoration:none;color:inherit}
.home-service h3 svg{width:30px;height:30px;flex:none}
.home-service p{font-size:1rem;line-height:1.7;margin:0}
.home-workshop-film{background:var(--blue);padding:0 var(--gutter) 55px}
.home-workshop-film .motion-frame{position:relative;overflow:hidden;clip-path:polygon(0 0,88% 0,100% 21%,100% 100%,0 100%);aspect-ratio:1.2;background:var(--navy)}
.home-workshop-film video{display:block;width:100%;height:100%;object-fit:cover}
.home-workshop-film [data-video-toggle]{position:absolute;right:22px;bottom:22px;border:1px solid #fff;background:var(--blue);color:#fff;padding:10px 18px;border-radius:30px}
.home-ecosystem{padding:48px 0 56px;background:var(--blue)}
.home-embed{color:var(--ink)}
.home-partners{padding:48px 0;background:#fff}
.home-partners .section-heading{color:var(--blue);font-size:clamp(2rem,4vw,4rem);letter-spacing:-.05em}
.home-partner-logos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 28px;align-items:center;margin-top:32px}
.home-partner-logos img{display:block;max-width:100%;width:150px;height:70px;object-fit:contain;justify-self:center}
.home-contact{position:relative;isolation:isolate;overflow:hidden;padding:56px 0;background:var(--paper)}
/* Shared sections, tightened on the homepage. */
.story-film.story-film--bleed{padding:0;background:var(--navy)}
.archive-stories.archive-stories{padding-block:48px}
@media(min-width:720px){.archive-stories.archive-stories{padding-block:64px}}
.home-contact-grid{display:grid;gap:40px}
.home-contact .home-display{font-size:clamp(3.8rem,8.5vw,8rem);max-width:9ch;margin:0}
.home-contact-links{padding:0;margin:0;list-style:none}
.home-contact-links li{border-top:1px solid var(--blue)}
.home-contact-links li:last-child{border-bottom:1px solid var(--blue)}
.home-contact-links a{display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:clamp(1.125rem,2vw,1.5rem);padding:24px 0;text-decoration:none;color:var(--blue)}
.home-contact-links a svg{width:24px;height:24px;flex:none}
@media(min-width:720px){.home-hero{padding:72px 0 90px;min-height:800px;min-height:calc(100svh - 90px)}.home-intro{padding:72px 0 56px}.home-intro-grid{grid-template-columns:1.15fr .85fr;gap:8vw;align-items:center}.home-intro-copy{padding-top:40px}.home-pathway{grid-template-columns:1fr 1fr 64px;gap:36px;align-items:center;padding:38px 0}.home-pathway p{grid-column:2;grid-row:1;max-width:29em}.home-circle-link{grid-column:3;width:64px;height:64px}.home-services{padding:72px 0 64px}.home-service-rail{margin-top:0}.home-service-rail .rail-controls{margin-top:-54px;margin-bottom:48px}.home-service-rail .home-service.rail-panel{flex-basis:60%}.home-service-image{aspect-ratio:1.45}.home-service-copy{padding-top:32px}.home-service p{font-size:1.125rem;max-width:42ch}.home-workshop-film{padding-bottom:40px}.home-workshop-film .motion-frame{aspect-ratio:2.1}.home-ecosystem{padding:64px 0 72px}.home-partner-logos{grid-template-columns:repeat(4,minmax(0,1fr));gap:48px}.home-contact{padding:72px 0}.home-contact-grid{grid-template-columns:.9fr 1.1fr;gap:9vw;align-items:center}.home-contact .home-display{max-width:7ch}}
@media(min-width:1200px){.home-hero{max-height:1100px}.home-partner-logos{grid-template-columns:repeat(7,minmax(0,1fr));gap:45px 35px}.home-pathway p{font-size:1.125rem}.home-service-rail .home-service.rail-panel{flex-basis:49%}.home-service-rail .rail-track{gap:50px}}
@media(prefers-reduced-motion:reduce){.home-service-image img,.home-circle-link{transition:none}.home-hero .home-video{visibility:visible}}


/* A finite journey through the engine room; all copy stays readable while its signal moves. */
.home-engine-room{padding-block:clamp(48px,5vw,80px);background:#fff;color:var(--blue)}
.engine-room-intro .engine-room-title{margin:0 0 20px;color:var(--blue);font-size:clamp(2.8rem,5.4vw,6rem)}
.engine-room-title span{white-space:nowrap}
@media(min-width:1100px){.home-location span{white-space:nowrap}}
.engine-room-statement{margin:0;max-width:28ch;font:500 clamp(1.5rem,3.2vw,3rem)/1.15 Poppins,Arial,sans-serif;letter-spacing:-.045em;text-wrap:balance}
.engine-room-flow{margin-top:clamp(38px,5vw,72px)}
.engine-room-input{margin:0;padding-bottom:22px;border-bottom:1px solid #0016c933;font-family:Poppins,Arial,sans-serif;font-size:1.05rem}
.engine-room-stages{position:relative;margin-block:18px 0}
.engine-room-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:minmax(0,1fr)}
.engine-room-steps li{min-width:0}
.engine-room-steps a{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 24px;gap:3px 18px;align-content:center;min-height:108px;padding:20px 8px 20px 38px;text-decoration:none;color:var(--blue);font-family:Poppins,Arial,sans-serif}
.engine-step-name{font-size:clamp(1.55rem,2.75vw,2.7rem);line-height:1.2;letter-spacing:-.045em}
.engine-step-action{grid-column:1;font-size:1rem;color:var(--ink)}
.engine-room-steps a>.icon{grid-column:2;grid-row:1/3;align-self:center;width:20px;height:20px;transition:transform .2s}
.engine-step-indicator{position:absolute;left:0;top:calc(50% - 6px);width:12px;height:12px;border:1px solid var(--blue);background:#fff;z-index:1}
.engine-room-steps a:hover .engine-step-name{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
.engine-room-steps a:hover>.icon{transform:translate(2px,-2px)}
.engine-room-steps a:hover .engine-step-indicator,.engine-room-steps a:focus-visible .engine-step-indicator{background:var(--blue)}
.engine-room-conduit{position:absolute;left:5px;top:54px;bottom:54px;width:1px;background:#0016c933;pointer-events:none}
@media(min-width:900px){
 .engine-room-intro{display:grid;grid-template-columns:1.1fr 1fr;gap:5vw;align-items:end}
 .engine-room-intro .engine-room-title{margin:0}
 .engine-room-stages{margin-block:32px 0}
 .engine-room-steps{grid-template-columns:repeat(4,minmax(0,1fr))}
 .engine-room-steps a{min-height:0;align-content:start;padding:50px 22px 12px 0;gap:12px}
 .engine-step-indicator{top:19px}
 .engine-room-steps a>.icon{align-self:start;margin-top:5px}
 .engine-room-conduit{left:5px;right:calc(25% - 5px);top:24px;bottom:auto;width:auto;height:1px}
}
@media(prefers-reduced-motion:no-preference){
}
@media(prefers-reduced-motion:reduce){.engine-room-steps a>.icon{transition:none}.engine-room-steps a:hover>.icon{transform:none}}

/* The hero is film only; its heading and intro line sit in the section below. */
.home-hub{padding:48px 0 56px;background:#fff;color:var(--blue);background-image:linear-gradient(#0016c90a 1px,transparent 1px),linear-gradient(90deg,#0016c90a 1px,transparent 1px);background-size:24px 24px;background-position:-1px -1px}
.home-hub-grid{display:grid;gap:36px}
.home-hub h1{margin:0;font-size:clamp(3rem,14.4vw,8.4rem);font-weight:700;line-height:.88;letter-spacing:-.065em}
.home-hub h1 span{display:block}
.home-hub h1 .home-heading-place{margin-bottom:.3em;font-size:clamp(2rem,4.6vw,4.2rem);line-height:1.1;letter-spacing:-.05em}
.home-hub .page-lede{position:relative;margin:28px 0 0;padding-top:22px;border-top:1px solid var(--blue);max-width:none;font-size:min(clamp(1.2rem,2.1vw,1.95rem),calc((100vw - 2 * var(--gutter)) / 17.6));line-height:1.35;color:var(--blue)}
/* Locked to two lines, broken at "workspace," so the lines sit as an even block. */
.home-hub .lede-line{display:block;white-space:nowrap}
/* Phones: the photograph runs edge to edge beneath the copy, taller than its native crop. */
.home-hub-media{position:relative;margin:0 calc(-1 * var(--gutter))}
.home-hub-media img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:18% 50%}
.home-hub{padding-bottom:0}
/* Desktop: the photograph fills the section's full height against the right edge. */
@media(min-width:900px){
 .home-hub{position:relative;display:flex;align-items:center;min-height:clamp(560px,44vw,760px);padding:80px 0}
 .home-hub-grid{display:block;width:100%}
 .home-hub-copy{max-width:52%}
 .home-hub h1{font-size:clamp(5rem,7.6vw,8.4rem)}
 .home-hub h1>span:last-child{-webkit-text-stroke:1.5px var(--blue);color:transparent}
 .home-hub-media{position:absolute;top:0;right:0;bottom:0;width:47%;margin:0}
 .home-hub-media img{width:100%;height:100%;aspect-ratio:auto;object-position:12% 50%;clip-path:polygon(7% 0,100% 0,100% 100%,0 100%)}
}
/* Intro line: typed in once the section comes into view. The full sentence stays available to
   assistive technology from the start; a late fallback reveals it if scripts fail. */
.home-hub .type-sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.home-hub .type-ghost{visibility:hidden}
.home-hub .type-live{position:absolute;left:0;right:0;top:22px}
.home-hub .type-live .is-caret:after{content:"";display:inline-block;width:.5em;height:1em;margin-left:2px;vertical-align:-.12em;background:currentColor;animation:type-caret 1s steps(1) infinite}
@keyframes type-caret{50%{opacity:0}}
.js .home-hub .page-lede:not([data-typing]){color:transparent}
.js .home-hub .page-lede:not([data-typing]):not([data-type-wait]){animation:type-fallback 0s 6s forwards}
@keyframes type-fallback{to{color:var(--blue)}}
@media(prefers-reduced-motion:reduce){.home-hub .type-live .is-caret:after{display:none}.js .home-hub .page-lede:not([data-typing]){color:var(--blue);animation:none}}

/* Full-width architectural render above Proudly Lewisham. */
.home-render{margin:0;background:var(--navy)}
.home-render img{display:block;width:100%;height:auto;aspect-ratio:750/422;object-fit:cover}

/* Beside the contact links, the heading sits dead centre: its box is trimmed to the capitals
   so the letters, not the line box, centre on the ruled list. */
@media(min-width:720px){.home-contact .home-display{line-height:.92;text-box:trim-both cap alphabetic;position:relative;top:.045em}}
.home-hub .home-hub-next{margin:28px 0 0;font-size:clamp(1.9rem,3.6vw,3.4rem);font-weight:700;line-height:1;letter-spacing:-.05em;color:var(--blue)}
/* Phones: the hero film is full width at its own proportions rather than full height. */
@media(max-width:699px){.home-hero.home-hero{min-height:0;height:auto;aspect-ratio:16/9;padding:0}}

/* "Lewisham." starts as a cobalt outline and floods with colour, left to right, as the section
   scrolls past (site.js sets --fill from 0 to 1); a pale glint keeps travelling through it.
   Without scripts, or with reduced motion, it is simply solid. */
.proud-fill{--fill:1;color:transparent;-webkit-text-stroke:2px var(--blue);background:linear-gradient(100deg,transparent 42%,#8a96ff 50%,transparent 58%) 0 0/300% 100% no-repeat,linear-gradient(90deg,var(--blue) calc(var(--fill) * 100%),transparent calc(var(--fill) * 100%));-webkit-background-clip:text;background-clip:text;padding-bottom:.08em}
@media(prefers-reduced-motion:no-preference){.proud-fill{animation:proud-glint 4.5s ease-in-out infinite}@keyframes proud-glint{0%{background-position:120% 0,0 0}60%,100%{background-position:-60% 0,0 0}}}
@media(max-width:699px){.proud-fill{-webkit-text-stroke-width:1.5px}}

/* Working with carousel: a stage holding one logo at a time, with its name, a count and a pause. */
.home-partner-logos.is-carousel{position:relative;display:block;height:clamp(200px,28vw,340px);margin-top:24px;border-block:1px solid #0016c926}
.home-partner-logos.is-carousel img{position:absolute;inset:0;margin:auto;max-width:none;justify-self:auto;object-fit:contain;opacity:0;transform:translateX(24px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.home-partner-logos.is-carousel img.is-active{opacity:1;transform:none}
.partner-bar{display:flex;align-items:center;gap:16px;margin-top:14px;font:500 .78rem/1.3 var(--mono,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--blue)}
.partner-bar p{margin:0}
.partner-name{flex:1;min-width:0}
.partner-pause{min-height:36px;padding:6px 14px;border:1px solid var(--blue);background:#fff;color:var(--blue);font:inherit;text-transform:uppercase;letter-spacing:.06em}
.partner-pause:hover,.partner-pause[aria-pressed=true]{background:var(--blue);color:#fff}

/* Find us: a full-width map stage under Working with. */
.home-earth{padding:48px 0 0;background:#fff;color:var(--blue)}
.home-earth-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px;margin-bottom:24px}
.home-earth-head .home-display{font-size:clamp(2.8rem,6vw,6rem)}
.home-earth-address{display:inline-flex;align-items:center;gap:12px;min-height:48px;padding:10px 16px;border:1px solid var(--blue);font:600 clamp(1rem,1.6vw,1.3rem)/1.2 Poppins,Arial,sans-serif;text-decoration:none;color:var(--blue)}
.home-earth-address .icon{width:22px;height:22px}
.home-earth-address:hover{background:var(--blue);color:#fff}
.home-earth-stage{position:relative;height:clamp(420px,72vh,780px);background:#000c70 radial-gradient(circle at 50% 55%,#1a2cff 0,#000c70 60%);overflow:hidden}
.home-earth-stage>iframe,.home-earth-stage>gmp-map-3d{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.home-earth-hint{position:absolute;left:var(--gutter);bottom:18px;z-index:2;margin:0;padding:6px 10px;background:#fffffff0;color:var(--blue);font:500 .72rem/1.2 var(--mono,monospace);letter-spacing:.06em;text-transform:uppercase;pointer-events:none}
@media(min-width:720px){.home-earth{padding-top:72px}}
