/* FLCT website. Built from the approved mockup by export/build_site.py. */
@font-face{font-family:'Archivo';src:url('../fonts/archivo-var.woff2') format('woff2');font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('../fonts/jetbrains-mono-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('../fonts/jetbrains-mono-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('../fonts/jetbrains-mono-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:#0a0d11;color-scheme:dark}
@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}
img{height:auto}
.skip{position:absolute;left:16px;top:-80px;z-index:100;padding:14px 20px;border-radius:10px;background:#00CFEA;color:#0a0d11;font:700 18px/1 'Archivo','Segoe UI',system-ui,sans-serif;transition:top .15s ease}
.skip:focus{top:16px;color:#0a0d11}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid #00CFEA;outline-offset:3px;border-radius:4px}
h1:focus{outline:none}
[id]{scroll-margin-top:24px}
.fstatus{margin:0;padding:16px 18px;border-radius:10px;font-size:18px;line-height:1.45;border:1px solid #2a3340;background:#0b0f14;color:#eef1f5}
.fstatus[data-kind="ok"]{border-color:#00CFEA}
.fstatus[data-kind="err"]{border-color:#ff6b61;color:#ffd9d6}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
body{margin:0;background:#0a0d11}
a{color:#eef1f5;text-decoration:none}
a:hover{color:#ffffff}
.lift{transition:transform .15s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease}
.lift:hover,.lift:focus-visible{transform:translateY(-2px);box-shadow:0 10px 28px -10px rgba(255,255,255,.35)}
.navlink{transition:color .15s ease, border-color .15s ease;border-bottom:2px solid transparent}
.navlink:hover,.navlink:focus-visible{border-bottom-color:currentColor}
.card{transition:transform .15s ease, border-color .15s ease, box-shadow .15s ease}
.card:hover{transform:translateY(-3px);border-color:#3a4656;box-shadow:0 18px 40px -22px rgba(0,207,234,.55)}
@property --spread{syntax:'<number>';inherits:true;initial-value:1}
@property --push{syntax:'<number>';inherits:true;initial-value:1}
@property --lift{syntax:'<number>';inherits:true;initial-value:0}
@property --rx{syntax:'<angle>';inherits:true;initial-value:0deg}
@property --ry{syntax:'<angle>';inherits:true;initial-value:0deg}
.hero{--sw:min(64vw,940px);position:relative;overflow:clip;min-height:calc(var(--sw)*1.13);background:#0c1115;--spread:1;--push:1;--lift:0;--rx:0deg;--ry:0deg}
@supports (animation-timeline:view()){.hero{animation:heroScroll linear both;animation-timeline:view();animation-range:exit 0% exit 100%}}
@keyframes heroScroll{to{--spread:2;--push:1.1;--lift:1}}
.hero-scene{position:absolute;top:calc(var(--sw)*.035);right:calc(var(--sw)*-.03);width:var(--sw);aspect-ratio:1122 / 1402;perspective:calc(var(--sw)*1.52);perspective-origin:62% 46%;pointer-events:none}
.hero-sway,.hero-push,.hero-stage{position:absolute;inset:0;transform-style:preserve-3d;transform-origin:62% 46%}
.hero-sway{animation:heroSway 16s ease-in-out infinite}
@keyframes heroSway{0%,100%{transform:rotateY(-1.6deg) rotateX(.6deg)}50%{transform:rotateY(1.6deg) rotateX(-.6deg)}}
.hero-push{transform:scale(var(--push))}
.hero-stage{transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.hero-ext{position:absolute;left:-243%;top:0;width:403%;height:100%;background:linear-gradient(to bottom,#07080c 0,#040509 14%,#020305 43%,#020305 57%,#06080b 71%,#0a0d11 78.5%,#0f1318 81.3%,#161c21 82.7%,#253038 83.2%,#232d34 84.2%,#131a20 85.6%,#0d1317 89%,#0c1115 100%)}
.hero-ext2{position:absolute;left:-243%;top:100%;width:403%;height:70%;background:#0c1115}
.hero-ext3{position:absolute;left:-243%;top:-30%;width:403%;height:30.2%;background:#07080c}
.hero-hline{position:absolute;left:0;right:0;top:82.98%;height:.34%;background:linear-gradient(90deg,rgba(80,96,107,0) 0,rgba(80,96,107,.55) 29%,#50606b 64.5%,#50606b 100%)}
.hero-pulse{position:absolute;left:0;top:82.9%;width:7.1%;height:.5%;border-radius:3px;background:linear-gradient(90deg,transparent,#aef3ff 60%,#ffffff 82%,transparent);filter:blur(1px);opacity:0;animation:heroPulse 7s cubic-bezier(.4,0,.6,1) infinite}
@keyframes heroPulse{0%{left:24.5%;opacity:0}12%{opacity:.9}72%{opacity:.9}88%,100%{left:59.4%;opacity:0}}
.hero-base{position:absolute;left:0;top:0;width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 17%),linear-gradient(to bottom,transparent 0,#000 6%,#000 95%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 17%),linear-gradient(to bottom,transparent 0,#000 6%,#000 95%,transparent 100%);-webkit-mask-composite:source-in;mask-composite:intersect}
.hero-sheen{position:absolute;inset:0;clip-path:polygon(52.6% 30.3%,94.5% 20.1%,94.5% 44.9%,92.3% 45.6%,92.3% 59.2%,75.6% 60.3%,75.6% 62.1%,52.6% 63.1%);background-image:linear-gradient(102deg,transparent 44%,rgba(190,244,255,.13) 50%,transparent 56%);background-size:320% 100%;background-repeat:no-repeat;background-position:140% 0;animation:heroSheen 9s ease-in-out infinite}
@keyframes heroSheen{0%,35%{background-position:140% 0}75%,100%{background-position:-40% 0}}
.ly{position:absolute;transform-style:preserve-3d}
.ly img{display:block;width:100%;height:100%;animation-name:heroBob;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
@keyframes heroBob{0%,100%{transform:translate3d(0,calc(var(--sw)*.004),0)}50%{transform:translate3d(0,calc(var(--sw)*-.006),0)}}
.ly-rock img{animation:none}
.ly-cubepanel{left:75.936%;top:0.285%;width:21.658%;height:21.755%;transform-origin:-64.35% 210.14%;transform:translateZ(calc(var(--sw)*0.0759*var(--spread))) scale(0.9501)}
.ly-cubepanel img{animation-duration:11s;animation-delay:0s}
.ly-donut{left:41.533%;top:15.335%;width:18.895%;height:17.618%;transform-origin:108.32% 174.06%;transform:translateZ(calc(var(--sw)*0.1627*var(--spread))) scale(0.8930)}
.ly-donut img{animation-duration:9s;animation-delay:-2s}
.ly-sliders{left:39.394%;top:36.662%;width:11.052%;height:15.264%;transform-origin:204.55% 61.18%;transform:translateZ(calc(var(--sw)*0.2278*var(--spread))) scale(0.8502)}
.ly-sliders img{animation-duration:8s;animation-delay:-5s}
.ly-wave{left:35.383%;top:53.923%;width:18.182%;height:15.121%;transform-origin:146.39% -52.40%;transform:translateZ(calc(var(--sw)*0.2820*var(--spread))) scale(0.8145)}
.ly-wave img{animation-duration:10s;animation-delay:-3s}
.ly-sphere1{left:68.895%;top:11.912%;width:5.882%;height:4.708%;transform-origin:-117.21% 724.12%;transform:translateZ(calc(var(--sw)*0.2061*var(--spread))) scale(0.8644)}
.ly-sphere1 img{animation-duration:6s;animation-delay:-1s}
.ly-sphere2{left:51.426%;top:70.970%;width:4.635%;height:3.709%;transform-origin:228.15% -673.23%;transform:translateZ(calc(var(--sw)*0.3254*var(--spread))) scale(0.7859)}
.ly-sphere2 img{animation-duration:7s;animation-delay:-4s}
.ly-cube{left:60.695%;top:64.551%;width:7.398%;height:6.847%;transform-origin:17.64% -270.92%;transform:translateZ(calc(var(--sw)*0.1302*var(--spread))) scale(0.9144)}
.ly-cube img{animation-duration:7.5s;animation-delay:-2.5s}
.ly-rock{left:52.317%;top:71.755%;width:47.683%;height:28.245%;transform-origin:20.31% -91.18%;transform:translateZ(calc(var(--sw)*0.4555*var(--spread))) scale(0.7003)}
.mote{position:absolute;width:3px;height:3px;border-radius:50%;background:#d8faff;box-shadow:0 0 9px 2px rgba(0,207,234,.65);opacity:0;animation:heroMote 11s ease-in-out infinite}
@keyframes heroMote{0%{opacity:0;transform:translate3d(0,14px,calc(var(--sw)*.2*var(--spread)))}20%{opacity:.85}80%{opacity:.6}100%{opacity:0;transform:translate3d(10px,-46px,calc(var(--sw)*.2*var(--spread)))}}
.hero-nav{position:absolute;left:0;right:0;top:0;z-index:5}
.hero-copy{position:relative;z-index:3;max-width:1280px;margin:0 auto;box-sizing:border-box;padding:clamp(150px,15.5vw,236px) 32px 96px;transform:translateY(calc(var(--lift)*-36px));opacity:calc(1 - var(--lift)*1.15)}
.hero-copy-in{max-width:min(700px,calc(100vw - var(--sw)*.64 - 150px));display:flex;flex-direction:column;align-items:flex-start;gap:26px}
.hero-fade{position:absolute;left:0;right:0;bottom:0;height:110px;background:linear-gradient(to bottom,rgba(10,13,17,0),#0a0d11);pointer-events:none}
.hero-menu{display:none}
@keyframes heroCue{0%,100%{transform:translateY(0);opacity:.9}50%{transform:translateY(7px);opacity:.45}}
@media (max-width:1000px){.hero-cue{display:none!important}.hero-copy{padding-bottom:64px}}
@media (max-width:820px){
.hero{--sw:min(128vw,760px);min-height:0}
.hero-copy{padding:calc(var(--sw)*1.11) 22px 72px}
.hero-copy-in{max-width:100%}
.hero-nav .navlink{display:none}
}
@media (prefers-reduced-motion: reduce){.hero,.hero-sway,.hero-sheen,.hero-pulse,.ly img,.mote{animation:none}.hero-stage{transition:none}}
.mnav{display:none;position:relative}
.mnav summary{list-style:none;cursor:pointer;position:relative;z-index:41;display:block;width:46px;height:46px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,.015));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color .3s,box-shadow .3s}
.mnav summary::-webkit-details-marker{display:none}
.mnav summary:hover,.mnav summary:focus-visible,.mnav[open] summary{border-color:rgba(0,207,234,.55);box-shadow:0 0 0 4px rgba(0,207,234,.10),0 8px 24px -8px rgba(0,207,234,.45);outline:none}
.mnav summary i{position:absolute;left:12px;height:2px;border-radius:2px;background:#eef1f5;transition:transform .45s cubic-bezier(.7,0,.2,1),width .45s cubic-bezier(.7,0,.2,1),left .45s cubic-bezier(.7,0,.2,1),opacity .25s,top .45s cubic-bezier(.7,0,.2,1),background .3s}
.mnav summary i:nth-child(1){top:16px;width:22px}
.mnav summary i:nth-child(2){top:22px;width:14px;left:20px;background:#00CFEA}
.mnav summary i:nth-child(3){top:28px;width:18px}
.mnav summary:hover i:nth-child(2){width:22px;left:12px}
.mnav summary:hover i:nth-child(3){width:22px}
.mnav[open] summary i:nth-child(1){top:22px;width:22px;transform:rotate(45deg)}
.mnav[open] summary i:nth-child(2){opacity:0;transform:scaleX(0)}
.mnav[open] summary i:nth-child(3){top:22px;width:22px;left:12px;transform:rotate(-45deg);background:#00CFEA}
.mnav-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mnav-panel{position:fixed;inset:0;z-index:40;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column;padding:104px 28px 32px;background:radial-gradient(120% 70% at 100% 0%,rgba(0,207,234,.16),transparent 55%),rgba(7,9,12,.96);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);animation:mnavOpen .65s cubic-bezier(.7,0,.2,1) both}
@keyframes mnavOpen{from{clip-path:circle(0 at calc(100% - 55px) 50px)}to{clip-path:circle(150% at calc(100% - 55px) 50px)}}
.mnav-links{display:flex;flex-direction:column;max-width:560px;width:100%;margin:0 auto}
.mnav-links a{display:flex;align-items:baseline;gap:16px;padding:11px 0;color:#eef1f5;font-weight:800;font-size:clamp(26px,7.4vw,34px);letter-spacing:-.01em;border-bottom:1px solid rgba(255,255,255,.07);animation:mnavItem .5s cubic-bezier(.2,.8,.2,1) both}
.mnav-links a small{font:500 12px 'JetBrains Mono',Consolas,monospace;letter-spacing:.1em;color:#8b96a6;min-width:22px}
.mnav-links a:hover,.mnav-links a:focus-visible,.mnav-links a[aria-current]{color:#00CFEA}
.mnav-links a[aria-current] small{color:#00CFEA}
.mnav-links a:nth-child(1){animation-delay:.16s}.mnav-links a:nth-child(2){animation-delay:.21s}.mnav-links a:nth-child(3){animation-delay:.26s}.mnav-links a:nth-child(4){animation-delay:.31s}.mnav-links a:nth-child(5){animation-delay:.36s}.mnav-links a:nth-child(6){animation-delay:.41s}.mnav-links a:nth-child(7){animation-delay:.46s}
@keyframes mnavItem{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.mnav-foot{margin:auto auto 0;padding-top:32px;max-width:560px;width:100%;animation:mnavItem .5s .5s both}
.mnav-cta{display:flex;justify-content:center;align-items:center;min-height:54px;border-radius:12px;background:#00CFEA;color:#04161a!important;font-weight:800;font-size:18px}
.mnav-contact{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:18px;font:500 13px 'JetBrains Mono',Consolas,monospace;letter-spacing:.06em}
.mnav-contact a{color:#8b96a6}
.mnav-contact a:hover{color:#eef1f5}
html:has(.mnav[open]){overflow:hidden}
header:has(.mnav[open]) a:has(> img){position:relative;z-index:41}
@media (prefers-reduced-motion: reduce){.mnav-panel,.mnav-links a,.mnav-foot{animation:none}.mnav summary i{transition:none}}
@media (max-width:1000px){.navbar .navlink{display:none}.mnav{display:block}}
@media (max-width:560px){.navbar .navcta{display:none!important}}
.artfade{-webkit-mask-image:radial-gradient(ellipse closest-side at 50% 50%,#000 56%,transparent 100%);mask-image:radial-gradient(ellipse closest-side at 50% 50%,#000 56%,transparent 100%)}
input,select,textarea{font-family:inherit}
input:focus,select:focus,textarea:focus{outline:2px solid #00CFEA;outline-offset:2px}
.phero{position:relative;overflow:clip;background:#05070a;border-bottom:1px solid #1c232d}
.phero-art{position:absolute;right:0;width:min(52vw,720px);height:auto;display:block;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 48%),linear-gradient(to bottom,#000 62%,transparent 96%);mask-image:linear-gradient(90deg,transparent 0,#000 48%),linear-gradient(to bottom,#000 62%,transparent 96%);-webkit-mask-composite:source-in;mask-composite:intersect;animation:pheroDrift 14s ease-in-out infinite}
@keyframes pheroDrift{0%,100%{transform:translate3d(0,0,0) scale(1.02)}50%{transform:translate3d(0,-10px,0) scale(1.05)}}
.phero-copy{position:relative;z-index:2;max-width:1280px;margin:0 auto;box-sizing:border-box;padding:84px 32px 96px}
.phero-in{max-width:min(720px,calc(100vw - 64px));display:flex;flex-direction:column;align-items:flex-start;gap:26px}
@media (max-width:900px){.phero-art{opacity:.32;width:130vw;right:-34vw}}
@media (prefers-reduced-motion: reduce){.phero-art{animation:none}}
