:root{color-scheme:dark;--background:#05070a;--surface:#090e14b8;--surface-strong:#0d141ce6;--text:#f2f4f3;--muted:#9ba7ad;--muted-strong:#cbd3d6;--line:#d3eef524;--line-strong:#d3eef547;--route-color:#8be5ff;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-mono:"SFMono-Regular", "Cascadia Code", "Roboto Mono", Consolas, monospace}*,:before,:after{box-sizing:border-box}html,body{background:var(--background);width:100%;height:100%;margin:0;overflow:hidden}html{font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility}body{color:var(--text)}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}::selection{color:#071014;background:var(--route-color)}.skip-link{z-index:200;border:1px solid var(--route-color);color:var(--text);background:var(--surface-strong);border-radius:999px;padding:11px 15px;font-size:.85rem;position:fixed;top:10px;left:10px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.experience-header{top:max(26px, env(safe-area-inset-top));z-index:30;pointer-events:none;justify-content:space-between;align-items:center;gap:24px;display:flex;position:absolute;left:36px;right:36px}.experience-brand{pointer-events:auto;align-items:center;gap:13px;display:inline-flex}.brand-glyph{border:1px solid var(--line-strong);width:46px;height:46px;color:var(--text);box-shadow:inset 0 0 22px color-mix(in srgb, var(--route-color) 12%, transparent);font-family:var(--font-mono);letter-spacing:-.08em;background:#060a0e9e;border-radius:50%;place-items:center;font-size:.72rem;transition:border-color .3s,box-shadow .3s;display:grid}.brand-glyph span{color:var(--route-color)}.experience-brand:hover .brand-glyph,.experience-brand:focus-visible .brand-glyph{border-color:var(--route-color);box-shadow:inset 0 0 28px color-mix(in srgb, var(--route-color) 22%, transparent)}.brand-copy{gap:2px;display:grid}.brand-copy strong{letter-spacing:-.02em;font-size:.83rem;font-weight:650}.brand-copy small,.system-status{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:.62rem}.system-status{border:1px solid var(--line);backdrop-filter:blur(16px);pointer-events:none;background:#060a0e8a;border-radius:999px;align-items:center;gap:10px;min-height:36px;padding:0 14px;display:inline-flex}.status-light{background:#75f2c3;border-radius:50%;width:6px;height:6px;animation:2.4s ease-in-out infinite status-pulse;box-shadow:0 0 12px #75f2c3}.system-status [data-route-label]{color:var(--route-color)}.scene-navigation{right:7vw;bottom:max(32px, env(safe-area-inset-bottom));z-index:30;pointer-events:none;justify-content:center;align-items:flex-end;gap:4px;display:flex;position:absolute;left:7vw}.scene-navigation a{border-top:1px solid var(--line);pointer-events:auto;width:min(142px,14vw);color:var(--muted);gap:7px;padding:12px 12px 10px;transition:width .3s,color .3s,border-color .3s,background .3s;display:grid}.scene-navigation a span{font-family:var(--font-mono);font-size:.55rem}.scene-navigation a strong{letter-spacing:.01em;font-size:.68rem;font-weight:620}.scene-navigation a:hover,.scene-navigation a:focus-visible,.scene-navigation a[aria-current=page]{border-color:var(--route-color);color:var(--text);background:linear-gradient(180deg, color-mix(in srgb, var(--route-color) 9%, transparent), transparent);outline:none}.scene-navigation a[aria-current=page]{width:min(175px,17vw)}.scene-navigation a[aria-current=page] span{color:var(--route-color)}.experience{--pointer-x:50vw;--pointer-y:50vh;isolation:isolate;background:var(--background);min-height:100dvh;position:fixed;inset:0;overflow:hidden}.scene-canvas{z-index:0;touch-action:manipulation;outline:none;width:100%;height:100%;transition:filter .7s,opacity .7s;display:block;position:absolute;inset:0}.scene-vignette{z-index:1;pointer-events:none;background:linear-gradient(90deg,#05070ae6 0%,#05070a9e 22%,#05070a14 40%,#0000 52%),linear-gradient(#05070a6b 0%,#0000 18% 82%,#05070ab8 100%),radial-gradient(circle,#0000 42%,#00000052 100%);position:absolute;inset:0}.experience[data-route=home] .scene-vignette{background:linear-gradient(#05070a47 0%,#0000 18% 78%,#05070a9e 100%),radial-gradient(circle at 50% 46%,#0000 38%,#00000047 100%)}.scene-vignette:before{content:"";opacity:.12;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");position:absolute;inset:0}.scene-cursor{z-index:2;pointer-events:none;opacity:0;width:340px;height:340px;transform:translate3d(calc(var(--pointer-x) - 50%), calc(var(--pointer-y) - 50%), 0);background:radial-gradient(circle, color-mix(in srgb, var(--route-color) 14%, transparent), transparent 68%);border-radius:50%;transition:opacity .3s;position:absolute}.experience[data-station-hovered]{cursor:pointer}.experience[data-station-hovered] .scene-cursor{opacity:1}.scene-labels{z-index:8;pointer-events:none;position:absolute;inset:0}.scene-label{z-index:1;pointer-events:none;color:var(--text);opacity:0;transition:opacity .22s;position:absolute;top:0;left:0}.experience[data-webgl=ready] .scene-label{opacity:.92;pointer-events:auto}.scene-label-inner{border:1px solid var(--line);backdrop-filter:blur(14px);background:#060a0e9e;border-radius:999px;gap:2px;min-width:72px;padding:6px 10px;transition:transform .22s,border-color .22s,background .22s;display:grid;transform:translate(-50%,16px);box-shadow:0 10px 28px #00000038}.scene-label[data-anchor=above] .scene-label-inner{transform:translate(-50%,calc(-100% - 16px))}.scene-label strong{letter-spacing:.01em;white-space:nowrap;font-size:.68rem;font-weight:620}.scene-label small{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-size:.54rem;line-height:1.35;display:none}.scene-label:hover .scene-label-inner,.scene-label:focus-visible .scene-label-inner,.scene-label[data-hot] .scene-label-inner{border-color:color-mix(in srgb, var(--route-color) 48%, transparent);background:#080d12d1}.scene-label:hover small,.scene-label:focus-visible small,.scene-label[data-hot]:not([data-current]) small{display:block}.scene-label[data-current]{z-index:2}.experience[data-webgl=ready][data-route=home] .scene-label[data-kind=core],.experience[data-webgl=ready] .scene-label[data-kind=lost],.experience[data-webgl=ready] .scene-label[data-kind=satellite]{opacity:0;pointer-events:none}.experience[data-webgl=ready][data-cluster=projets] .scene-label[data-kind=satellite],.experience[data-webgl=ready][data-cluster=lost] .scene-label[data-kind=lost]{opacity:.92;pointer-events:auto}.experience[data-webgl=ready] .scene-label[data-occluded],.experience[data-webgl=ready][data-cluster=projets] .scene-label[data-kind=satellite][data-occluded],.experience[data-webgl=ready][data-cluster=lost] .scene-label[data-kind=lost][data-occluded]{opacity:0;pointer-events:none}.scene-panels,.scene-panel{position:absolute;inset:0}.scene-panels{z-index:10;pointer-events:none}.scene-panel{visibility:hidden;opacity:0;pointer-events:none;align-items:center;padding:112px 4vw 142px;transition:opacity .48s,transform .7s cubic-bezier(.16,1,.3,1),visibility 0s linear .7s;display:flex;transform:translateY(24px)}.scene-panel--home{align-items:flex-end}.scene-panel[data-active]{visibility:visible;opacity:1;transition-delay:.12s;transform:translate(0,0)}.panel-content{overscroll-behavior:contain;pointer-events:auto;scrollbar-color:color-mix(in srgb, var(--route-color) 48%, transparent) transparent;scrollbar-width:thin;width:min(420px,38vw);max-height:calc(100dvh - 254px);overflow:auto}.panel-content--wide,.panel-content--contact{width:min(420px,38vw)}.panel-content--project{width:min(520px,44vw)}.panel-content--map{width:min(460px,48vw);max-height:none;overflow:visible}.panel-kicker{color:var(--muted);font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;align-items:center;gap:13px;margin:0 0 24px;font-size:.66rem;display:flex}.panel-kicker:after{content:"";background:linear-gradient(90deg, var(--route-color), transparent);width:58px;height:1px}.panel-kicker span{color:var(--route-color)}.panel-content .panel-heading{max-width:18ch;color:var(--text);font-family:var(--font-display);letter-spacing:-.045em;text-wrap:balance;margin:0;font-size:clamp(2.15rem,3.2vw,3.35rem);font-weight:400;line-height:1.02}.panel-content--project .panel-heading{font-size:clamp(2rem,2.8vw,3rem)}.panel-content--map .map-title{letter-spacing:-.03em;max-width:22ch;font-size:clamp(1.4rem,2.1vw,1.9rem);line-height:1.28}.map-hint{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin:12px 0 0;font-size:.62rem}.map-hint[hidden],.hint-mobile{display:none}.panel-content .panel-heading:focus{outline:none}.panel-content .panel-heading:focus-visible{outline:1px solid var(--route-color);outline-offset:10px}.panel-content .panel-heading em{color:var(--route-color);font-weight:inherit}.panel-lead{max-width:42ch;color:var(--muted-strong);margin:18px 0 0;font-size:.95rem;line-height:1.6}.panel-actions{flex-wrap:wrap;gap:10px;margin-top:30px;display:flex}.scene-button{border:1px solid var(--line-strong);min-height:47px;color:var(--muted-strong);backdrop-filter:blur(12px);letter-spacing:.02em;background:#080d1280;border-radius:999px;justify-content:center;align-items:center;gap:24px;padding:0 18px;font-size:.75rem;font-weight:680;transition:transform .22s,color .22s,border-color .22s,background .22s;display:inline-flex}.scene-button:hover,.scene-button:focus-visible{border-color:var(--route-color);color:var(--text);background:color-mix(in srgb, var(--route-color) 10%, #080d12b8);outline:none;transform:translateY(-2px)}.scene-button--primary{border-color:color-mix(in srgb, var(--route-color) 54%, transparent);color:#071014;background:var(--route-color)}.scene-button--primary:hover,.scene-button--primary:focus-visible{color:#071014;background:color-mix(in srgb, var(--route-color) 82%, white)}.hero-signals{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);width:min(580px,100%);margin:44px 0 0;display:grid}.hero-signals div{padding:16px 14px 0 0}.hero-signals div+div{border-left:1px solid var(--line);padding-left:18px}.hero-signals dt{color:var(--route-color);font-family:var(--font-mono);font-size:.59rem}.hero-signals dd{color:var(--muted-strong);letter-spacing:.04em;text-transform:uppercase;margin:8px 0 0;font-size:.76rem}.project-orbits{gap:8px;max-width:720px;margin-top:34px;display:grid}.orbit-card{border:1px solid var(--line);backdrop-filter:blur(16px);background:linear-gradient(110deg,#0b1117d6,#0b111775);border-radius:16px;grid-template-columns:38px minmax(0,1fr) 28px;align-items:start;gap:14px;padding:17px 18px;transition:transform .26s,border-color .26s,background .26s;display:grid;position:relative;overflow:hidden}.orbit-card:before{content:"";opacity:0;background:var(--route-color);width:2px;transition:opacity .26s;position:absolute;inset:0 auto 0 0}.orbit-card:hover,.orbit-card:focus-visible{border-color:color-mix(in srgb, var(--route-color) 42%, transparent);background:linear-gradient(110deg, color-mix(in srgb, var(--route-color) 9%, #0b1117eb), #0b11178f);outline:none;transform:translate(7px)}.orbit-card:hover:before,.orbit-card:focus-visible:before{opacity:1}.orbit-index{color:var(--route-color);font-family:var(--font-mono);font-size:.62rem}.orbit-copy{gap:5px;display:grid}.orbit-copy small{color:var(--muted);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;font-size:.59rem}.orbit-copy strong{letter-spacing:-.025em;font-size:1rem}.orbit-copy>span{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.75rem;line-height:1.45;display:-webkit-box;overflow:hidden}.orbit-arrow{color:var(--muted);font-size:.82rem}.panel-back{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:22px;font-size:.63rem;display:inline-flex}.panel-back:hover,.panel-back:focus-visible{color:var(--route-color);outline:none}.project-stack{flex-wrap:wrap;gap:7px;margin-top:25px;display:flex}.project-stack span,.lab-grid article>div span{border:1px solid var(--line);min-height:25px;color:var(--muted);font-family:var(--font-mono);border-radius:999px;align-items:center;padding:0 8px;font-size:.58rem;display:inline-flex}.project-transmission{border-top:1px solid var(--line);max-width:860px;margin-top:38px;padding-top:24px}.project-angle{max-width:700px;color:var(--route-color);font-family:var(--font-display);margin:0;font-size:1.2rem;line-height:1.45}.transmission-grid{grid-template-columns:1fr;gap:10px;margin-top:22px;display:grid}.transmission-grid article{border:1px solid var(--line);backdrop-filter:blur(14px);background:#080d129e;border-radius:14px;padding:18px}.transmission-grid small,.lab-index{color:var(--route-color);font-family:var(--font-mono);font-size:.58rem}.transmission-grid h2,.lab-grid h2{letter-spacing:-.025em;margin:12px 0 0;font-size:.92rem;line-height:1.2}.transmission-grid p,.lab-grid p,.trajectory p{color:var(--muted);margin:9px 0 0;font-size:.7rem;line-height:1.55}.trajectory{border-top:1px solid var(--line);max-width:690px;margin-top:34px;display:grid}.trajectory article{border-bottom:1px solid var(--line);grid-template-columns:96px minmax(0,1fr);gap:18px;padding:15px 0;display:grid}.trajectory time{color:var(--route-color);font-family:var(--font-mono);font-size:.62rem}.trajectory strong{font-size:.86rem}.lab-grid{grid-template-columns:1fr;gap:9px;max-width:740px;margin-top:32px;display:grid}.lab-grid article{border:1px solid var(--line);backdrop-filter:blur(14px);background:#080d12a8;border-radius:15px;padding:18px}.lab-grid article>div{flex-wrap:wrap;gap:5px;margin-top:16px;display:flex}.contact-links{grid-template-columns:1fr;gap:9px;max-width:620px;margin-top:28px;display:grid}.contact-links a{border:1px solid var(--line);backdrop-filter:blur(14px);background:#080d12a8;border-radius:16px;grid-template-columns:1fr auto;gap:8px;padding:20px;transition:transform .24s,border-color .24s;display:grid}.contact-links a:hover,.contact-links a:focus-visible{border-color:var(--route-color);outline:none;transform:translateY(-4px)}.contact-links small{color:var(--route-color);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;grid-column:1/-1;font-size:.59rem}.contact-links strong{text-overflow:ellipsis;min-width:0;font-size:.82rem;overflow:hidden}.contact-links span{color:var(--muted)}.scene-loader{z-index:100;background:#05070a;place-content:center;justify-items:center;gap:20px;transition:opacity .65s,visibility 0s linear .65s;display:grid;position:absolute;inset:0}.scene-loader[aria-hidden=true],.experience[data-webgl=ready] .scene-loader,.experience[data-webgl=unavailable] .scene-loader{visibility:hidden;opacity:0;pointer-events:none}.loader-mark{width:64px;height:64px;position:relative}.loader-mark span{border:1px solid color-mix(in srgb, var(--route-color) 54%, transparent);border-radius:50%;animation:1.8s ease-in-out infinite loader-orbit;position:absolute;inset:0}.loader-mark span:nth-child(2){animation-delay:-.3s;inset:10px}.loader-mark span:nth-child(3){border-color:var(--route-color);animation-delay:-.6s;inset:22px}.scene-loader p{color:var(--muted);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.61rem}.webgl-fallback{z-index:45;background:#20080ddb;border:1px solid #ff657a61;border-radius:12px;max-width:270px;padding:14px 16px;display:none;position:absolute;top:88px;right:36px}.webgl-fallback span{color:#ff9aaa;font-family:var(--font-mono);text-transform:uppercase;font-size:.62rem}.webgl-fallback p{color:var(--muted-strong);margin:7px 0 0;font-size:.7rem;line-height:1.45}.experience[data-webgl=unavailable] .webgl-fallback,.experience[data-webgl=lost] .webgl-fallback{display:block}.experience[data-webgl=unavailable] .scene-canvas,.experience[data-webgl=lost] .scene-canvas{opacity:.15;filter:grayscale()}.noscript-message{z-index:150;border:1px solid var(--line-strong);background:var(--surface-strong);border-radius:14px;justify-content:space-between;align-items:center;gap:18px;padding:16px;font-size:.75rem;display:flex;position:fixed;inset:auto 20px 20px}.noscript-message a{color:var(--route-color);text-decoration:underline}@keyframes status-pulse{0%,to{opacity:.58;transform:scale(.78)}50%{opacity:1;transform:scale(1)}}@keyframes loader-orbit{0%,to{opacity:.38;transform:rotate(0)scale(.82)}50%{opacity:1;transform:rotate(180deg)scale(1)}}@media (width<=1100px){.scene-vignette{background:linear-gradient(90deg,#05070ae0 0%,#05070a80 32%,#0000 48%),linear-gradient(#05070a6b,#0000 20% 78%,#05070ac7)}.experience[data-route=home] .scene-vignette{background:linear-gradient(#05070a3d 0%,#0000 16% 76%,#05070a94 100%),radial-gradient(circle at 50% 44%,#0000 36%,#00000042 100%)}.panel-content,.panel-content--wide,.panel-content--project,.panel-content--contact,.panel-content--map{width:min(400px,44vw)}.scene-navigation{left:4vw;right:4vw}}@media (width<=760px){.experience-header{top:max(14px, env(safe-area-inset-top));left:14px;right:14px}.brand-glyph{width:40px;height:40px}.brand-copy small{display:none}.system-status{min-height:34px;padding:0 11px}.scene-vignette,.experience[data-route=home] .scene-vignette{background:linear-gradient(#05070a29 0%,#05070a05 16%,#05070a0f 36%,#05070a6b 54%,#05070ae6 70%,#05070a 100%),radial-gradient(90% 42% at 50% 18%,#0000 0% 46%,#00000038 100%)}.hint-desktop{display:none}.hint-mobile{display:inline}.scene-label small{display:none!important}.scene-label-inner{min-width:0;padding:5px 8px}.scene-label strong{font-size:.6rem}.scene-panel{padding:78px 10px calc(101px + env(safe-area-inset-bottom));align-items:flex-end}.panel-content,.panel-content--wide,.panel-content--project,.panel-content--contact,.panel-content--map{border:1px solid var(--line);backdrop-filter:blur(20px);background:linear-gradient(150deg,#0a1016e6,#070b10d1);border-radius:20px;width:100%;max-height:52dvh;padding:21px;box-shadow:0 -22px 70px #0000003d}.experience[data-route=home] .scene-panel{padding:78px 10px calc(88px + env(safe-area-inset-bottom))}.experience[data-route=home] .panel-content--map{max-height:none;padding:14px 16px}.experience[data-route=home] .map-title{font-size:1.05rem;line-height:1.35}.panel-kicker{margin-bottom:16px}.panel-content .panel-heading,.panel-content--project .panel-heading{font-size:clamp(1.85rem,8vw,2.55rem);line-height:1.08}.panel-lead{margin-top:18px;font-size:.89rem;line-height:1.55}.panel-actions,.project-orbits,.trajectory,.lab-grid,.contact-links{margin-top:22px}.hero-signals{margin-top:26px}.orbit-card{grid-template-columns:26px minmax(0,1fr) 18px;gap:9px;padding:14px}.orbit-copy>span{display:none}.transmission-grid,.lab-grid,.contact-links{grid-template-columns:1fr}.transmission-grid article,.lab-grid article{padding:15px}.trajectory article{grid-template-columns:76px minmax(0,1fr);gap:12px}.scene-navigation{right:10px;bottom:max(10px, env(safe-area-inset-bottom));border:1px solid var(--line);backdrop-filter:blur(18px);scrollbar-width:none;background:#070b10d1;border-radius:17px;justify-content:flex-start;gap:0;left:10px;overflow-x:auto}.scene-navigation::-webkit-scrollbar{display:none}.scene-navigation a,.scene-navigation a[aria-current=page]{border-top:0;border-left:1px solid #0000;flex:1 0 auto;width:auto;min-width:82px;padding:11px 13px}.scene-navigation a[aria-current=page]{border-left-color:var(--route-color);background:color-mix(in srgb, var(--route-color) 10%, transparent)}.scene-navigation a strong{font-size:.62rem}.scene-cursor{display:none}.webgl-fallback{max-width:none;top:70px;left:14px;right:14px}}@media (height<=720px) and (width>=761px){.scene-panel{padding-top:92px;padding-bottom:112px}.panel-content{max-height:calc(100dvh - 204px)}.panel-content .panel-heading{font-size:clamp(1.9rem,3.2vw,2.8rem)}.panel-lead{margin-top:20px}.project-orbits,.trajectory,.lab-grid,.contact-links{margin-top:23px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.scene-cursor{display:none}}
