/* FDPS LAB — tesseract celestial interface */
:root{--bg:#030710;--panel:#07131d;--panel2:#0b1d2a;--line:#1d3d50;--line-glow:#45d8ed45;--text:#edf7fb;--muted:#8ca7b5;--cyan:#45e4f4;--blue:#568cff;--violet:#8d72ff;--amber:#e9c476;--red:#ff6d77;--green:#66efb1}
html{background:var(--bg)}body{min-height:100vh;background:radial-gradient(ellipse at 76% 7%,#12385a 0,transparent 28%),radial-gradient(ellipse at 17% 35%,#24184c70 0,transparent 30%),linear-gradient(145deg,#030710 0%,#06121d 46%,#02050c 100%);overflow-x:hidden}
body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:-2;background-image:linear-gradient(#55dff308 1px,transparent 1px),linear-gradient(90deg,#55dff308 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(to bottom,#000 0,transparent 70%)}body:after{content:'';position:fixed;inset:-25%;pointer-events:none;z-index:-3;background:conic-gradient(from 80deg at 58% 40%,transparent 0 23%,#765cff12 29%,transparent 34% 63%,#36d8eb0d 70%,transparent 78%);animation:cosmicSweep 32s linear infinite}
.cosmic-field{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden}.cosmic-field:before,.cosmic-field:after{content:'';position:absolute;border:1px solid #58dff326;border-radius:50%;filter:drop-shadow(0 0 20px #45d8ed25)}.cosmic-field:before{width:72vw;height:72vw;right:-31vw;top:-38vw}.cosmic-field:after{width:46vw;height:46vw;left:-28vw;top:34vh;border-color:#9d7bff24}.cosmic-field i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;box-shadow:0 0 9px 2px #66e8ff}.cosmic-field i:nth-child(1){left:9%;top:18%;animation:starPulse 5s ease-in-out infinite}.cosmic-field i:nth-child(2){left:31%;top:9%;animation:starPulse 7s 1s ease-in-out infinite}.cosmic-field i:nth-child(3){right:12%;top:25%;animation:starPulse 6s 2s ease-in-out infinite}.cosmic-field i:nth-child(4){right:34%;top:58%;animation:starPulse 8s .5s ease-in-out infinite}.cosmic-field i:nth-child(5){left:13%;top:71%;animation:starPulse 6s 3s ease-in-out infinite}
.tess-header{border-bottom-color:var(--line-glow);background:#030914d9;backdrop-filter:blur(22px) saturate(130%);box-shadow:0 12px 40px #0006}.brand img{filter:drop-shadow(0 0 12px #e8bd6555)}
.lab-heading{position:relative;padding-top:86px;padding-bottom:62px}.lab-heading:before{content:'04D';position:absolute;right:5vw;top:35px;color:#72e8f218;font:600 clamp(80px,15vw,210px)/1 'IBM Plex Mono';letter-spacing:-.12em;pointer-events:none}.lab-heading:after{content:'';position:absolute;width:340px;height:340px;left:28%;top:-120px;border-radius:50%;background:#725dff20;filter:blur(90px);pointer-events:none}.lab-heading h1{position:relative;text-shadow:0 8px 38px #000}.lab-heading h1 span{background:linear-gradient(110deg,#fff 5%,#8ceaf5 52%,#b9a4ff 92%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 22px #45d8ed2d)}
.signal-line{display:flex;align-items:center;gap:12px;margin-top:27px;color:#70a0b3}.signal-line b{position:relative;width:64px;height:1px;background:linear-gradient(90deg,var(--cyan),transparent)}.signal-line b:after{content:'';position:absolute;width:5px;height:5px;border-radius:50%;left:0;top:-2px;background:#fff;box-shadow:0 0 12px 3px var(--cyan);animation:signalTravel 3s ease-in-out infinite}.signal-line em{font:500 9px 'IBM Plex Mono';font-style:normal;letter-spacing:.18em}
.workspace{position:relative;border-color:#55dff342;background:linear-gradient(135deg,#071522e8,#040b13ef);box-shadow:0 35px 100px #0009,0 0 0 1px #6fefff0b inset,0 0 75px #2ccce112}.workspace:before,.workspace:after{content:'';position:absolute;width:42px;height:42px;z-index:3;pointer-events:none}.workspace:before{left:-1px;top:-1px;border-left:2px solid var(--cyan);border-top:2px solid var(--cyan);filter:drop-shadow(0 0 7px var(--cyan))}.workspace:after{right:-1px;bottom:-1px;border-right:2px solid var(--violet);border-bottom:2px solid var(--violet);filter:drop-shadow(0 0 7px var(--violet))}.control-panel,.analysis-panel{background:linear-gradient(180deg,#071723ed,#050e17ed);backdrop-filter:blur(18px)}
.map-panel{background:radial-gradient(circle at 55% 45%,#12355145,transparent 45%)}.map-panel:after{content:'';position:absolute;inset:57px 0 0;pointer-events:none;z-index:2;background:linear-gradient(105deg,transparent 35%,#8d72ff0d 49%,transparent 61%);animation:holoScan 8s ease-in-out infinite}.map-orbit{position:absolute;inset:110px 15% 110px;z-index:0;pointer-events:none;opacity:.65}.map-orbit i{position:absolute;inset:0;border:1px solid #63eaff24;border-radius:50%;transform:rotateX(66deg);box-shadow:0 0 35px #45d8ed12}.map-orbit i:nth-child(2){inset:13%;border-color:#a284ff2b;transform:rotateX(66deg) rotateZ(22deg)}.map-orbit i:nth-child(3){inset:28%;border-color:#e9c47624;transform:rotateX(66deg) rotateZ(-18deg)}#city-map{position:relative;z-index:1;background:radial-gradient(circle at 58% 42%,#102f4c99,transparent 42%),linear-gradient(#071522cc,#030912ee)}#route-layer .route{stroke-dasharray:12 8;animation:routeFlow 1.8s linear infinite}.building .roof{fill:#2b536b;stroke:#6c9cb4}.building .side{fill:#173e56}.building .front{fill:#0d2b3d}
.method li{position:relative;background:linear-gradient(145deg,#0b1b2850,transparent);overflow:hidden}.method li:after{content:'';position:absolute;inset:auto -35% -70% 25%;height:120%;background:radial-gradient(circle,#45d8ed17,transparent 62%);transition:.4s;pointer-events:none}.method li:hover:after,.method li:focus:after{transform:translate(-12%,-20%)}.connected-research nav a{background:linear-gradient(145deg,#09192760,transparent);transition:.25s}.connected-research nav a:hover{background:linear-gradient(145deg,#112d42,#11152c);box-shadow:0 0 34px #45d8ed12 inset}.boundary{background:linear-gradient(110deg,#11172aee,#071722dd);box-shadow:0 25px 70px #0005,0 0 45px #725dff0d inset}
@keyframes routeFlow{to{stroke-dashoffset:-40}}@keyframes starPulse{0%,100%{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1.8)}}@keyframes signalTravel{0%,100%{left:0;opacity:.2}50%{left:58px;opacity:1}}@keyframes holoScan{0%,100%{transform:translateX(-55%);opacity:.15}50%{transform:translateX(55%);opacity:.65}}@keyframes cosmicSweep{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){body:after,.cosmic-field i,.signal-line b:after,.map-panel:after,#route-layer .route{animation:none!important}}@media(max-width:760px){.lab-heading{padding-top:52px}.lab-heading:before{font-size:92px;top:24px}.map-orbit{inset:90px 5%}.workspace{box-shadow:0 22px 55px #0008,0 0 35px #2ccce10d}}
