/* Persistent space and glyph matter are shared by the first three scenes. */
.ha-global-stars,.ha-journey-canvas{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;mix-blend-mode:screen}
.ha-global-stars{z-index:2;opacity:.65}
.ha-journey-canvas{z-index:19;opacity:0;transition:opacity .3s}
.ha-open-source{min-height:0;padding-top:clamp(105px,12vh,170px);padding-bottom:clamp(65px,7vh,100px);background:radial-gradient(ellipse at 66% 12%,#1b0e13 0,#08080b 59%)}
.ha-open-source::before{opacity:.28}
.ha-os-intro,.ha-os-projects,.ha-os-more{position:relative;z-index:3}
.ha-os-graph{background:#020204;overflow:hidden;box-shadow:0 28px 100px #000,0 0 70px rgba(244,46,61,.11)}
.ha-os-graph img{opacity:1}
.ha-os-project{backdrop-filter:blur(8px)}
.ha-os-particles{display:none}
.ha-film-projects{position:relative;min-height:100vh;padding:clamp(100px,11vw,165px) 0 105px;overflow:hidden;color:#f5f0ec;background:radial-gradient(ellipse at 50% 55%,#1b0c12 0,#08080b 61%);isolation:isolate}
.ha-film-header{position:relative;z-index:3;display:flex;align-items:end;justify-content:space-between;gap:30px;width:min(90%,1500px);margin:auto}
.ha-film-header h2{margin:0;font:700 clamp(48px,6.5vw,104px)/.94 'Syne',sans-serif;letter-spacing:-.075em}
.ha-film-header h2 span{color:#f42e3d}
.ha-film-controls{display:flex;align-items:center;gap:20px;padding-bottom:7px}
.ha-film-controls button{display:grid;place-items:center;width:52px;height:52px;padding:0;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:rgba(255,255,255,.025);color:#fff;font:26px/1 'Syne',sans-serif;cursor:pointer;transition:background .35s,border-color .35s,transform .35s}
.ha-film-controls button:hover,.ha-film-controls button:focus-visible{border-color:#f42e3d;background:rgba(244,46,61,.16);transform:scale(1.08);outline:none}
.ha-film-counter{white-space:nowrap;color:#8f858a;font:600 13px/1 monospace}.ha-film-counter strong{color:#fff;font-size:19px}.ha-film-counter i{margin:0 8px;color:#f42e3d;font-style:normal}
.ha-film-stage{position:relative;height:clamp(590px,56vw,830px);margin:clamp(28px,4vw,55px) auto 0;perspective:1800px;outline:none;touch-action:pan-y;cursor:grab}
.ha-film-stage:active{cursor:grabbing}.ha-film-stage:focus-visible{outline:1px solid rgba(244,46,61,.7);outline-offset:-5px}
.ha-film-atmosphere{position:absolute;left:50%;top:43%;width:min(80vw,1200px);aspect-ratio:1;transform:translate(-50%,-50%) rotateX(68deg);border:1px solid rgba(244,46,61,.16);border-radius:50%;pointer-events:none}
.ha-film-atmosphere i{position:absolute;inset:12%;border:1px solid rgba(244,46,61,.13);border-radius:50%}.ha-film-atmosphere i:nth-child(2){inset:28%;border-color:rgba(255,255,255,.11)}.ha-film-atmosphere i:nth-child(3){inset:43%;border-color:rgba(244,46,61,.3)}
.ha-film-slide{position:absolute;z-index:2;left:50%;top:50%;width:min(72vw,1180px);transform:translate(-50%,-50%);transform-style:preserve-3d;visibility:hidden;opacity:0;pointer-events:none}
.ha-film-slide.is-active{visibility:visible;opacity:1;pointer-events:auto}
.ha-film-motion{transform-style:preserve-3d;will-change:transform,opacity,filter}
.ha-film-artwork{--rx:0deg;--ry:0deg;--mx:50%;--my:50%;position:relative;width:100%;aspect-ratio:1.7;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(var(--ry));will-change:transform;outline:none}
.ha-film-artwork:focus-visible .ha-film-poster{outline:2px solid #f42e3d;outline-offset:5px}
.ha-film-poster{position:absolute;inset:4% 2%;overflow:hidden;transform:translateZ(90px);border:1px solid rgba(255,255,255,.22);background:radial-gradient(circle at 70% 30%,color-mix(in srgb,var(--project-accent) 26%,#08080b),#050507 70%);box-shadow:0 55px 130px #000,0 0 80px rgba(244,46,61,.12)}
.ha-film-poster::before{content:'';position:absolute;z-index:1;inset:0;background:linear-gradient(90deg,rgba(2,2,4,.45),transparent 62%),linear-gradient(0deg,rgba(2,2,4,.35),transparent 45%);pointer-events:none}
.ha-film-light-cover .ha-film-poster::before{background:linear-gradient(rgba(7,7,11,.28),rgba(7,7,11,.28)),linear-gradient(90deg,rgba(2,2,4,.36),transparent 62%)}
.ha-film-poster::after{content:'';position:absolute;z-index:5;inset:0;border:1px solid color-mix(in srgb,var(--project-accent) 26%,transparent);pointer-events:none}
.ha-film-image-source{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.16) translate3d(var(--media-x,0%),var(--media-y,0%),0);transition:transform 1.25s cubic-bezier(.2,.7,.2,1);filter:brightness(.85) contrast(1.08)}
.ha-film-screen-capture .ha-film-poster{border-color:rgba(244,46,61,.28);background:#09090d;box-shadow:0 55px 130px #000,0 0 75px rgba(244,46,61,.14)}
.ha-film-screen-capture .ha-film-poster::before{background:linear-gradient(90deg,rgba(7,7,11,.24),rgba(7,7,11,.3)),linear-gradient(0deg,rgba(10,5,9,.24),transparent 48%)}
.ha-film-screen-capture.ha-film-light-cover .ha-film-poster::before{background:linear-gradient(rgba(7,7,11,.48),rgba(7,7,11,.48)),linear-gradient(0deg,rgba(14,5,10,.22),transparent 55%)}
.ha-film-screen-capture .ha-film-poster::after{border-color:rgba(244,46,61,.3)}
.ha-film-screen-capture .ha-film-image-source{object-fit:cover;object-position:center;transform:scale(1.025) translate3d(var(--media-x,0%),var(--media-y,0%),0);filter:contrast(1.06) saturate(.88)}
.ha-film-brand-scene{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;background:radial-gradient(circle at 55% 50%,color-mix(in srgb,var(--project-accent) 40%,#0b0b10),#060609 62%)}
.ha-film-brand-scene::before{content:'';position:absolute;inset:-50%;background:repeating-linear-gradient(0deg,transparent 0 37px,rgba(255,255,255,.035) 38px 39px),repeating-linear-gradient(90deg,transparent 0 37px,rgba(255,255,255,.035) 38px 39px);transform:perspective(600px) rotateX(58deg) scale(1.5)}
.ha-film-brand-scene span{position:relative;z-index:2;max-width:85%;color:#f7f2ef;text-align:center;text-transform:uppercase;font:800 clamp(40px,6vw,96px)/.9 'Syne',sans-serif;letter-spacing:-.075em;text-shadow:0 15px 50px #000}
.ha-film-brand-scene i{position:absolute;width:30%;aspect-ratio:1;border:1px solid color-mix(in srgb,var(--project-accent) 70%,transparent);border-radius:50%;filter:drop-shadow(0 0 20px var(--project-accent))}.ha-film-brand-scene i:nth-of-type(2){width:42%;opacity:.35;transform:rotateX(65deg)}
.ha-film-glyph-image{position:absolute;z-index:2;inset:0;display:block;width:100%;height:100%;opacity:.48;pointer-events:none;mix-blend-mode:screen}
.ha-film-light-cover .ha-film-glyph-image{mix-blend-mode:multiply}
.ha-film-reveal{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle 100px at var(--mx) var(--my),rgba(244,46,61,.18),transparent 100%);mix-blend-mode:screen}
.ha-film-logo{position:absolute;z-index:6;left:0;bottom:-1%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:clamp(105px,16vw,225px);height:clamp(76px,8vw,115px);padding:15px;border:1px solid color-mix(in srgb,var(--project-accent) 36%,rgba(255,255,255,.16));background:rgba(8,8,11,.82);backdrop-filter:blur(22px);transform:translateZ(190px);box-shadow:0 22px 55px rgba(0,0,0,.5),inset 0 1px rgba(255,255,255,.13)}
.ha-film-logo-light{background:#f4f0e9;border-color:rgba(255,255,255,.82);box-shadow:0 22px 55px rgba(0,0,0,.45),inset 0 1px #fff}
.ha-film-logo-white{background:#fff;border-color:rgba(255,255,255,.9)}
.ha-film-logo img{display:block;width:100%;height:100%;min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain}.ha-film-logo-uk img{width:auto;height:72px;max-height:100%}.ha-film-logo strong{color:var(--project-accent);font:800 clamp(36px,5vw,75px)/1 'Syne',sans-serif;letter-spacing:-.08em}
.ha-film-name-back{position:absolute;z-index:-1;top:8%;left:50%;width:max-content;max-width:125%;color:transparent;-webkit-text-stroke:1px rgba(244,46,61,.22);font:800 clamp(130px,20vw,300px)/1 'Syne',sans-serif;letter-spacing:-.09em;transform:translate3d(-50%,-40%,-220px);pointer-events:none}
.ha-film-caption{display:flex;align-items:center;gap:25px;width:96%;margin:26px auto 0}.ha-film-caption-meta{display:flex;flex:none;align-items:center;gap:12px}.ha-film-caption-index{color:#91868b;font:600 12px/1.2 monospace;white-space:nowrap;letter-spacing:.06em}.ha-film-caption-index strong{color:#f42e3d}.ha-film-caption-index i{margin:0 9px;color:#f42e3d;font-style:normal}.ha-film-caption h3{margin:0;font:700 clamp(36px,4vw,62px)/1 'Syne',sans-serif;letter-spacing:-.06em}
.ha-film-arrow{position:absolute;z-index:5;top:43%;display:grid;place-items:center;width:clamp(62px,6.3vw,88px);height:clamp(62px,6.3vw,88px);padding:0;border:1px solid rgba(255,255,255,.38);border-radius:50%;background:rgba(7,7,10,.72);color:#f7f2ef;backdrop-filter:blur(14px);cursor:pointer;transition:background .4s,border-color .4s,box-shadow .4s,transform .4s}
.ha-film-arrow::before{content:'';position:absolute;inset:7px;border:1px solid rgba(244,46,61,.35);border-radius:50%;transition:inset .4s,border-color .4s}.ha-film-arrow svg{width:44%;height:44%;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .45s cubic-bezier(.2,.8,.2,1)}.ha-film-prev{left:3%}.ha-film-next{right:3%}.ha-film-prev:hover svg,.ha-film-prev:focus-visible svg{transform:translateX(-5px)}.ha-film-next:hover svg,.ha-film-next:focus-visible svg{transform:translateX(5px)}.ha-film-arrow:hover,.ha-film-arrow:focus-visible{background:rgba(244,46,61,.17);border-color:#f42e3d;box-shadow:0 0 30px rgba(244,46,61,.2);outline:none}.ha-film-arrow:hover::before,.ha-film-arrow:focus-visible::before{inset:4px;border-color:rgba(244,46,61,.65)}
.ha-film-autoplay{display:grid;flex:none;place-items:center;width:38px;height:38px;padding:0;border:1px solid rgba(255,255,255,.38);border-radius:50%;background:rgba(7,7,10,.82);color:#f7f2ef;backdrop-filter:blur(14px);cursor:pointer;transition:background .3s,border-color .3s,box-shadow .3s}.ha-film-autoplay:hover,.ha-film-autoplay:focus-visible{border-color:#f42e3d;background:rgba(244,46,61,.16);box-shadow:0 0 24px rgba(244,46,61,.2);outline:none}.ha-film-autoplay svg{grid-area:1/1;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.ha-film-autoplay .ha-film-play-icon{display:none}.ha-film-autoplay[aria-pressed="false"] .ha-film-pause-icon{display:none}.ha-film-autoplay[aria-pressed="false"] .ha-film-play-icon{display:block}
.ha-film-rail{position:relative;z-index:3;display:flex;overflow-x:auto;width:min(90%,1500px);margin:auto;border-top:1px solid rgba(255,255,255,.17);scrollbar-width:none}.ha-film-rail::-webkit-scrollbar{display:none}.ha-film-rail button{position:relative;flex:1 0 110px;display:grid;gap:12px;padding:22px 12px;border:0;background:none;color:#81787d;text-align:left;cursor:pointer}.ha-film-rail button::before{content:'';position:absolute;top:-1px;left:0;right:0;height:2px;background:#f42e3d;transform:scaleX(0);transform-origin:left;transition:transform .4s}.ha-film-rail button[aria-current=true],.ha-film-rail button:hover,.ha-film-rail button:focus-visible{color:#fff;outline:none}.ha-film-rail button[aria-current=true]::before{transform:scaleX(1)}.ha-film-rail span{color:#f42e3d;font:600 10px/1 monospace}.ha-film-rail b{font:700 12px/1 'Syne',sans-serif}
@media(max-width:900px){.ha-film-header{display:block}.ha-film-controls{justify-content:flex-end;margin-top:28px}.ha-film-slide{width:78vw}.ha-film-arrow{top:40%;width:62px;height:62px}}
@media(max-width:620px){.ha-film-projects{padding:85px 0 75px}.ha-film-header h2{font-size:clamp(42px,11vw,65px)}.ha-film-stage{height:505px;margin-top:20px}.ha-film-slide{top:36%;width:89vw}.ha-film-logo{width:100px;height:65px;padding:10px;left:1%;bottom:-8%}.ha-film-caption{flex-wrap:wrap;gap:10px;margin-top:34px}.ha-film-caption h3{font-size:clamp(24px,7vw,34px)}.ha-film-arrow{top:76%;width:56px;height:56px}.ha-film-prev{left:6%}.ha-film-next{right:6%}.ha-film-rail{width:90%}.ha-film-rail button{flex-basis:122px}.ha-film-brand-scene span{font-size:clamp(30px,7vw,55px)}}
@media(max-width:620px){.ha-film-caption-meta{gap:10px}.ha-film-autoplay{width:36px;height:36px}}
@media(prefers-reduced-motion:reduce){.ha-journey-canvas{display:none}.ha-film-slide,.ha-film-artwork,.ha-film-arrow{transition:none}.ha-film-artwork{transform:none!important}}
