:root{--bg: #ffffff;--bg-card: #f8f8fb;--bg-card-hover: #f0f0f6;--border: #e4e2ee;--border-accent: #d0cde0;--text: #1a1a2e;--text-dim: #8b8aa0;--text-mid: #5c5b73;--purple: #4A4B9A;--purple-dim: rgba(74, 75, 154, 0.08);--purple-light: #6768B0;--rose: #C43D5C;--rose-dim: rgba(196, 61, 92, 0.08);--rose-light: #E25B6A;--indigo: #2D3068;--indigo-dim: rgba(45, 48, 104, 0.08);--cyan: #6768B0;--cyan-dim: rgba(103, 104, 176, 0.08);--color-primary: #4A4B9A;--color-accent: #C43D5C;--color-white: #ffffff;--space-xs: 0.25rem;--space-sm: 0.5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--space-4xl: 6rem;--font-sans: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--font-serif: 'Instrument Serif', Georgia, serif;--font-mono: 'JetBrains Mono', 'Fira Code', monospace;--font-size-sm: 0.875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-size-5xl: 3.5rem;--line-height-tight: 1.15;--line-height-normal: 1.6;--line-height-relaxed: 1.75;--max-width: 1120px;--max-width-narrow: 800px;--nav-height: 64px;--border-radius: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px;--transition-fast: 150ms ease;--transition-base: 300ms cubic-bezier(0.16, 1, 0.3, 1);--transition-slow: 400ms cubic-bezier(0.16, 1, 0.3, 1)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden;padding-top:var(--nav-height)}body::before{content:'';position:fixed;inset:0;opacity:0.015;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");pointer-events:none;z-index:1000}.orb{position:fixed;border-radius:50%;filter:blur(140px);pointer-events:none}.orb-1{width:500px;height:500px;background:rgba(74,75,154,0.08);top:-100px;right:-50px;animation:float1 22s ease-in-out infinite}.orb-2{width:400px;height:400px;background:rgba(196,61,92,0.06);bottom:200px;left:-100px;animation:float2 28s ease-in-out infinite}.orb-3{width:350px;height:350px;background:rgba(45,48,104,0.07);top:50%;left:50%;animation:float3 25s ease-in-out infinite}@keyframes float1{0%, 100%{transform:translate(0, 0)}50%{transform:translate(-60px, 50px)}}@keyframes float2{0%, 100%{transform:translate(0, 0)}50%{transform:translate(50px, -70px)}}@keyframes float3{0%, 100%{transform:translate(-50%, -50%)}50%{transform:translate(calc(-50% + 40px), calc(-50% - 40px))}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:var(--line-height-tight);color:var(--text)}h1{font-family:var(--font-serif);font-size:var(--font-size-5xl);letter-spacing:-2px}h2{font-family:var(--font-serif);font-size:var(--font-size-3xl);letter-spacing:-0.5px}h3{font-family:var(--font-mono);font-size:var(--font-size-base);font-weight:600}p{color:var(--text-mid);font-weight:300}a{color:var(--text-mid);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--purple)}img{max-width:100%;height:auto;display:block;border-radius:var(--border-radius)}ul,ol{padding-left:var(--space-xl);color:var(--text-mid)}ul li,ol li{margin-bottom:var(--space-sm);line-height:var(--line-height-relaxed)}strong{font-weight:600;color:var(--text)}hr{border:none;border-top:1px solid var(--border);margin:var(--space-3xl) 0}code{font-family:var(--font-mono);font-size:0.875em;background:var(--bg-card);padding:0.15em 0.4em;border-radius:4px;color:var(--purple);border:1px solid var(--border)}pre{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--border-radius-lg);padding:var(--space-xl);overflow-x:auto;margin:var(--space-xl) 0}pre code{background:none;padding:0;border:none;color:var(--text);font-size:var(--font-size-sm);line-height:1.7}.container{max-width:var(--max-width);margin:0 auto;padding:0 24px;position:relative;z-index:1}.container--narrow{max-width:var(--max-width-narrow)}.section{padding:32px 0;scroll-margin-top:var(--nav-height)}.section-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.section-header h2{white-space:nowrap;margin:0}.section-header .line{flex:1;height:1px;background:linear-gradient(90deg, var(--border) 0%, transparent 100%)}.section-header .section-icon{font-size:20px;opacity:0.6}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:10px 22px;border-radius:var(--border-radius);font-weight:500;font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;transition:all var(--transition-base);border:1px solid transparent;text-decoration:none;line-height:1}.btn--primary{background:var(--purple);color:var(--bg)}.btn--primary:hover{color:var(--bg);transform:translateY(-2px);box-shadow:0 0 20px rgba(167,139,250,0.3)}.btn--secondary{background:transparent;color:var(--text-mid);border-color:var(--border)}.btn--secondary:hover{border-color:var(--border-accent);color:var(--text);transform:translateY(-2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.content-area h1:first-child,.content-area h2:first-child,.content-area h3:first-child{margin-top:0}.content-area a{color:var(--purple);font-weight:500}.content-area a:hover{color:var(--rose)}@media (max-width: 768px){h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}.container{padding:0 var(--space-lg)}.section{padding:24px 0}}.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-height);z-index:1000;background:var(--bg);border-bottom:1px solid var(--border);animation:fadeDown 0.8s ease-out}.nav__inner{max-width:var(--max-width);margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;justify-content:space-between}.nav__logo{display:flex;align-items:center;text-decoration:none;color:var(--text)}.nav__title{font-family:var(--font-mono);font-weight:600;font-size:15px;color:var(--purple);letter-spacing:-0.5px}.nav__links{display:flex;align-items:center;gap:28px;list-style:none;margin:0;padding:0}.nav__link{margin:0}.nav__link a{color:var(--text-dim);font-family:var(--font-mono);font-size:13px;text-decoration:none;transition:color 0.3s}.nav__link a:hover{color:var(--text)}.nav__toggle{display:none;background:none;border:none;cursor:pointer;padding:var(--space-sm);color:var(--text-dim)}.nav__toggle svg{width:24px;height:24px}.nav__mobile{display:none;position:fixed;top:var(--nav-height);left:0;right:0;background:rgba(255,255,255,0.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:var(--space-md) 24px}.nav__mobile.is-open{display:block}.nav__mobile ul{list-style:none;padding:0;margin:0}.nav__mobile li{margin:0}.nav__mobile a{display:block;padding:0.75rem 0;color:var(--text-dim);font-family:var(--font-mono);font-size:14px;text-decoration:none;border-bottom:1px solid var(--border)}.nav__mobile a:hover{color:var(--text)}@keyframes fadeDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.nav__links{display:none}.nav__toggle{display:block}.nav__title{font-size:14px}}.hero{position:relative;overflow:hidden}.hero--home{padding:40px 0 60px}.hero--page{padding:var(--space-3xl) 0;border-bottom:1px solid var(--border);text-align:center}.hero__content{position:relative;z-index:1;max-width:var(--max-width);margin:0 auto;width:100%}.hero__header{display:grid;grid-template-columns:280px 1fr;gap:var(--space-3xl);align-items:center;animation:fadeUp 0.8s ease-out 0.2s both}.hero__logo{width:100%;height:auto;border-radius:0}.hero__header-text{flex:1}.hero__title{font-family:var(--font-serif);font-size:var(--font-size-5xl);font-weight:400;color:var(--text);margin:0 0 var(--space-lg);letter-spacing:-2px;line-height:1.08}.hero__subtitle{font-size:var(--font-size-lg);color:var(--text-mid);margin:0;line-height:var(--line-height-relaxed);max-width:560px;font-weight:300}.hero__links{display:flex;align-items:center;gap:10px;margin-top:var(--space-xl);animation:fadeUp 0.8s ease-out 0.4s both}.hero__link{font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--text-dim);text-decoration:none;transition:color var(--transition-fast)}.hero__link span{display:inline-block;font-size:11px;transition:transform 0.3s}.hero__link:hover{color:var(--purple)}.hero__link:hover span{transform:translate(2px, -2px)}.hero__link-sep{color:var(--border-accent);font-size:14px;user-select:none}.hero__description{font-size:var(--font-size-lg);color:var(--text-mid);margin:0;max-width:600px;margin-left:auto;margin-right:auto}.hero__page-title{font-family:var(--font-serif);font-size:var(--font-size-4xl);font-weight:400;color:var(--text);margin:0 0 var(--space-md);letter-spacing:-1px}@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.hero--home{padding:var(--space-2xl) 0}.hero__header{grid-template-columns:1fr;text-align:center;gap:var(--space-xl)}.hero__logo{max-width:200px;margin:0 auto}.hero__title{font-size:var(--font-size-3xl)}.hero__links{justify-content:center}.hero__page-title{font-size:var(--font-size-2xl)}}.components-list{display:flex;flex-direction:column;gap:0;max-width:var(--max-width-narrow);margin:0 auto;animation:fadeUp 0.8s ease-out 0.5s both}.component-item{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-lg) 0;border-bottom:1px solid var(--border);text-decoration:none;color:inherit;transition:all var(--transition-base)}.component-item:first-child{border-top:1px solid var(--border)}.component-item:hover{padding-left:var(--space-md);color:inherit}.component-item:hover .component-item__title{color:var(--purple)}.component-item__icon{font-size:1.25rem;flex-shrink:0;opacity:0.7}.component-item__title{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--text);margin:0 0 2px;transition:color var(--transition-fast)}.component-item__desc{font-size:13px;color:var(--text-dim);margin:0;line-height:var(--line-height-normal);font-weight:300}.component-item__arrow{margin-left:auto;flex-shrink:0;color:var(--purple);font-size:var(--font-size-lg);opacity:0;transform:translateX(-8px);transition:all var(--transition-fast)}.component-item:hover .component-item__arrow{opacity:1;transform:translateX(0)}.section-link{display:inline-flex;align-items:center;gap:6px;margin-top:var(--space-lg);font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--purple);text-decoration:none;transition:all 0.3s}.section-link span{display:inline-block;transition:transform 0.3s}.section-link:hover{color:var(--rose)}.section-link:hover span{transform:translateX(4px)}.section-sublinks{display:flex;flex-wrap:wrap;gap:4px 20px}.content-section{scroll-margin-top:var(--nav-height);animation:fadeUp 0.8s ease-out 0.3s both}.content-section__header{display:flex;align-items:flex-start;gap:var(--space-xl);margin-bottom:0}.content-section__icon{font-size:1.75rem;flex-shrink:0;line-height:1;margin-top:0.1em}.content-section__title{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--purple);margin:0 0 var(--space-sm)}.content-section__subtitle{font-size:14px;color:var(--text-dim);margin:0;line-height:1.7;max-width:640px;font-weight:300}.content-section__body{margin-top:var(--space-2xl);display:flex;justify-content:center}.content-section__img{max-width:100%;width:100%;height:auto;border-radius:var(--border-radius-lg);border:1px solid var(--border);display:block}.content-section__services{display:grid;grid-template-columns:repeat(3, 1fr);gap:16px;margin-top:var(--space-xl)}.section-divider{border:none;border-top:1px solid var(--border);margin:0}.service-block{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--border-radius-lg);padding:24px;transition:all 0.4s cubic-bezier(0.16, 1, 0.3, 1);position:relative;overflow:hidden}.service-block::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg, var(--purple), var(--rose));opacity:0;transition:opacity 0.4s}.service-block:hover{background:var(--bg-card-hover);border-color:var(--border-accent);transform:translateY(-3px)}.service-block:hover::before{opacity:1}.service-block__title{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--rose);margin:0 0 var(--space-sm)}.service-block__text{font-size:13px;color:var(--text-dim);margin:0;line-height:1.65;font-weight:300}@media (max-width: 992px){.content-section__services{grid-template-columns:1fr}}@media (max-width: 768px){.content-section__header{flex-direction:column;gap:var(--space-md)}.component-item__arrow{display:none}}.content-area table{width:100%;border-collapse:separate;border-spacing:0;margin:var(--space-xl) 0;font-size:var(--font-size-sm);border-radius:var(--border-radius-lg);overflow:hidden;border:1px solid var(--border)}.content-area table thead th{background:var(--bg-card);color:var(--text);font-weight:600;text-align:left;padding:0.875rem 1.25rem;font-size:var(--font-size-sm);font-family:var(--font-mono);border-bottom:1px solid var(--border-accent)}.content-area table tbody tr{transition:background var(--transition-fast)}.content-area table tbody tr:nth-child(even){background:var(--bg-card)}.content-area table tbody tr:hover{background:var(--bg-card-hover)}.content-area table tbody td{padding:0.75rem 1.25rem;border-bottom:1px solid var(--border);color:var(--text-mid)}.content-area table tbody td a{font-weight:500}.content-area table tbody td code{font-size:0.8em}@media (max-width: 768px){.content-area table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}.callout{border-radius:var(--border-radius-lg);padding:var(--space-lg) var(--space-xl);margin:var(--space-xl) 0;border-left:4px solid;background:var(--bg-card);border-color:var(--border-accent)}.callout--info{border-left-color:var(--indigo)}.callout--tip{border-left-color:var(--cyan)}.callout--warning{border-left-color:#fbbf24}.callout--danger{border-left-color:var(--rose)}.callout p{margin:0;color:var(--text-mid);font-size:var(--font-size-sm)}.callout strong{color:var(--text)}.footer{padding:60px 0 40px;border-top:1px solid var(--border);margin-top:60px;text-align:center;animation:fadeUp 0.8s ease-out 0.8s both}.footer__motto{font-family:var(--font-serif);font-size:22px;font-style:italic;color:var(--text-mid);margin-bottom:8px;letter-spacing:-0.3px}.footer__sub{font-size:13px;color:var(--text-dim);margin-bottom:28px;font-family:var(--font-mono)}.footer__links{display:flex;justify-content:center;gap:24px;margin-bottom:24px;list-style:none;padding:0}.footer__links a{color:var(--text-dim);text-decoration:none;font-family:var(--font-mono);font-size:13px;transition:color 0.3s}.footer__links a:hover{color:var(--purple)}.footer__logos{display:flex;align-items:center;justify-content:center;gap:var(--space-xl);margin-bottom:var(--space-xl)}.footer__logos img{height:36px;width:auto;opacity:0.4;transition:opacity var(--transition-fast);border-radius:0;filter:none}.footer__logos img:hover{opacity:0.7}.footer__funding{font-size:12px;color:var(--text-dim);opacity:0.5;font-family:var(--font-mono)}@media (max-width: 768px){.footer__links{flex-direction:column;gap:var(--space-md)}}@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.fade-in-up{opacity:0;transform:translateY(20px);transition:opacity 0.6s ease, transform 0.6s ease}.fade-in-up.is-visible{opacity:1;transform:translateY(0)}.stagger-children .component-item,.stagger-children .service-block{opacity:0;transform:translateY(20px);transition:opacity 0.5s ease, transform 0.5s ease}.stagger-children.is-visible .component-item,.stagger-children.is-visible .service-block{opacity:1;transform:translateY(0)}.stagger-children.is-visible .component-item:nth-child(1),.stagger-children.is-visible .service-block:nth-child(1){transition-delay:.1s}.stagger-children.is-visible .component-item:nth-child(2),.stagger-children.is-visible .service-block:nth-child(2){transition-delay:.2s}.stagger-children.is-visible .component-item:nth-child(3),.stagger-children.is-visible .service-block:nth-child(3){transition-delay:.3s}.stagger-children.is-visible .component-item:nth-child(4),.stagger-children.is-visible .service-block:nth-child(4){transition-delay:.4s}.stagger-children.is-visible .component-item:nth-child(5),.stagger-children.is-visible .service-block:nth-child(5){transition-delay:.5s}.stagger-children.is-visible .component-item:nth-child(6),.stagger-children.is-visible .service-block:nth-child(6){transition-delay:.6s}@media (prefers-reduced-motion: reduce){.fade-in-up,.stagger-children .component-item,.stagger-children .service-block{opacity:1;transform:none;transition:none}}.bio-umap{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:0;will-change:transform;animation:umapFadeIn 2s ease-out 0.4s forwards}.bio-umap__edges line{stroke-width:0.7;opacity:0.12}.bio-umap__edges--1 line{stroke:var(--purple)}.bio-umap__edges--2 line{stroke:var(--rose)}.bio-umap__edges--3 line{stroke:var(--indigo)}.bio-umap__bridges line{stroke:var(--purple-light);stroke-width:0.6;opacity:0.07}.bio-umap__waypoints circle{fill:var(--purple);opacity:0.06}.bio-umap__cluster--1{animation:clusterDrift1 20s ease-in-out infinite}.bio-umap__cluster--1 circle{fill:var(--purple);opacity:0.16}.bio-umap__cluster--2{animation:clusterDrift2 24s ease-in-out infinite}.bio-umap__cluster--2 circle{fill:var(--rose);opacity:0.13}.bio-umap__cluster--3{animation:clusterDrift3 22s ease-in-out infinite}.bio-umap__cluster--3 circle{fill:var(--indigo);opacity:0.11}@keyframes umapFadeIn{from{opacity:0}to{opacity:1}}@keyframes clusterDrift1{0%, 100%{transform:translate(0, 0)}33%{transform:translate(3px, -4px)}66%{transform:translate(-2px, 3px)}}@keyframes clusterDrift2{0%, 100%{transform:translate(0, 0)}33%{transform:translate(-4px, 2px)}66%{transform:translate(3px, -3px)}}@keyframes clusterDrift3{0%, 100%{transform:translate(0, 0)}33%{transform:translate(2px, 4px)}66%{transform:translate(-3px, -2px)}}@media (max-width: 768px){.bio-umap__cluster--1 circle{opacity:0.09}.bio-umap__cluster--2 circle{opacity:0.07}.bio-umap__cluster--3 circle{opacity:0.06}.bio-umap__edges line{opacity:0.06}.bio-umap__bridges line{opacity:0.04}.bio-umap__waypoints circle{opacity:0.03}}
