*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:light dark;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "Source Code Pro", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--c-bg: #f6f7fb;--c-surface: #ffffff;--c-surface-rgb: 255, 255, 255;--c-surface-2: #f6f7fb;--c-surface-2-rgb: 246, 247, 251;--c-text: #0b1220;--c-text-rgb: 11, 18, 32;--c-muted: #475569;--c-faint: #6b7280;--c-border: rgba(11, 18, 32, 0.12);--c-border-strong: rgba(11, 18, 32, 0.18);--c-accent: #2563eb;--c-accent-rgb: 37, 99, 235;--c-accent-hover: #1d4ed8;--c-accent-2: #06b6d4;--c-accent-2-rgb: 6, 182, 212;--shadow-sm: 0 1px 0 rgba(11, 18, 32, 0.06), 0 10px 24px rgba(11, 18, 32, 0.06);--shadow-md: 0 14px 40px rgba(11, 18, 32, 0.12);--shadow-lg: 0 26px 72px rgba(11, 18, 32, 0.18);--bg-grid-alpha: 0.035;--bg-glow-alpha: 0.14}@media (prefers-color-scheme: dark){:root{--c-bg: #050711;--c-surface: #0b1220;--c-surface-rgb: 11, 18, 32;--c-surface-2: #0f172a;--c-surface-2-rgb: 15, 23, 42;--c-text: #e5e7eb;--c-text-rgb: 229, 231, 235;--c-muted: #cbd5e1;--c-faint: #94a3b8;--c-border: rgba(229, 231, 235, 0.12);--c-border-strong: rgba(229, 231, 235, 0.18);--c-accent: #60a5fa;--c-accent-rgb: 96, 165, 250;--c-accent-hover: #93c5fd;--c-accent-2: #22d3ee;--c-accent-2-rgb: 34, 211, 238;--shadow-sm: 0 1px 0 rgba(0, 0, 0, 0.35), 0 10px 28px rgba(0, 0, 0, 0.45);--shadow-md: 0 18px 56px rgba(0, 0, 0, 0.55);--shadow-lg: 0 28px 84px rgba(0, 0, 0, 0.68);--bg-grid-alpha: 0.05;--bg-glow-alpha: 0.10}}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;scroll-padding-top:var(--site-header-height, 64px)}body{font-family:var(--font-sans);font-size:16px;line-height:1.6;color:var(--c-text);background-color:var(--c-bg);background-image:radial-gradient(1000px 520px at 18% -10%, rgba(var(--c-accent-2-rgb), var(--bg-glow-alpha)) 0%, rgba(var(--c-surface-rgb), 0) 60%),radial-gradient(1100px 560px at 85% -18%, rgba(var(--c-accent-rgb), var(--bg-glow-alpha)) 0%, rgba(var(--c-surface-rgb), 0) 58%),linear-gradient(to right, rgba(var(--c-text-rgb), var(--bg-grid-alpha)) 1px, transparent 1px),linear-gradient(to bottom, rgba(var(--c-text-rgb), var(--bg-grid-alpha)) 1px, transparent 1px);background-size:auto, auto, 32px 32px, 32px 32px;background-position:0 0, 0 0, 0 0, 0 0;text-rendering:optimizeLegibility;min-height:100vh;display:flex;flex-direction:column}main{flex:1}img{max-width:100%;height:auto;display:block}a{color:var(--c-accent);text-decoration:none;transition:color 150ms ease}a:hover{color:var(--c-accent-hover)}ul,ol{list-style-position:inside}::selection{background-color:rgba(var(--c-accent-rgb), 0.22)}:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}html:focus-within{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}.skip-link{position:absolute;left:16px;top:16px;padding:10px 14px;background-color:var(--c-accent);color:#fff;border-radius:8px;transform:translateY(-160%);transition:transform 150ms ease;z-index:1000}.skip-link:focus{transform:translateY(0)}h1,h2,h3,h4,h5,h6{font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-weight:600;line-height:1.25;color:var(--c-text);font-variant-ligatures:none}h1{font-size:clamp(34px, 4vw, 48px);letter-spacing:-0.03em}h2{font-size:clamp(26px, 3vw, 32px);letter-spacing:-0.02em}h3{font-size:clamp(20px, 2.2vw, 24px)}h4{font-size:20px}p{margin-bottom:16px}p:last-child{margin-bottom:0}.text-large{font-size:clamp(18px, 2vw, 22px);line-height:1.6}.text-small{font-size:14px}.text-xs{font-size:12px}.text-muted{color:var(--c-faint)}.text-center{text-align:center}.hero-title{font-size:clamp(34px, 5vw, 64px);font-weight:700;line-height:1.1;letter-spacing:-0.03em}.hero-subtitle{font-size:clamp(18px, 2vw, 21px);line-height:1.6;color:var(--c-muted);font-weight:400}.section-title{font-size:32px;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:48px}@media (max-width: 768px){.section-title{margin-bottom:32px}}.section-title-link,.section-title-link:hover{color:inherit;text-decoration:none}.section-title-link:hover{text-decoration:underline;text-underline-offset:4px}.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:500}.link-arrow::after{content:"→";transition:transform 150ms ease}.link-arrow:hover::after{transform:translateX(4px)}code{font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:0.9em;background-color:var(--c-surface-2);padding:2px 6px;border-radius:4px}pre{font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:14px;background-color:var(--c-surface-2);padding:24px;border-radius:8px;overflow-x:auto}pre code{background:none;padding:0}.prose{max-width:72ch;margin-left:auto;margin-right:auto}.prose h2{margin-top:64px;margin-bottom:16px}.prose h3{margin-top:48px;margin-bottom:16px}.prose h4{margin-top:32px;margin-bottom:8px}.prose p{margin-bottom:24px}.prose ul,.prose ol{list-style-position:outside;padding-left:32px;margin-bottom:24px}.prose li+li{margin-top:0.35em}.prose a:not(.btn){color:var(--c-accent);text-decoration:underline;text-decoration-thickness:1.5px;text-decoration-color:rgba(var(--c-accent-rgb), 0.35);text-underline-offset:3px}.prose a:not(.btn):hover{text-decoration-color:rgba(var(--c-accent-rgb), 0.75)}.prose hr{border:0;height:1px;background:linear-gradient(90deg, rgba(var(--c-text-rgb), 0), rgba(var(--c-text-rgb), 0.16), rgba(var(--c-text-rgb), 0));margin:64px 0}.prose blockquote{border-left:3px solid rgba(var(--c-text-rgb), 0.14);padding-left:24px;color:var(--c-muted)}.prose strong{color:var(--c-text)}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}@media (max-width: 768px){.container{padding:0 16px}}.container-narrow{max-width:800px}.container-wide{max-width:1400px}.section{padding:64px 0}@media (max-width: 768px){.section{padding:48px 0}}.section-sm{padding:48px 0}@media (max-width: 768px){.section-sm{padding:32px 0}}.section-lg{padding:96px 0}@media (max-width: 768px){.section-lg{padding:64px 0}}.section-gray{background-color:var(--c-surface-2)}.grid{display:grid;gap:32px}.grid-2{grid-template-columns:repeat(2, 1fr)}@media (max-width: 768px){.grid-2{grid-template-columns:1fr}}.grid-3{grid-template-columns:repeat(3, 1fr)}@media (max-width: 992px){.grid-3{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 576px){.grid-3{grid-template-columns:1fr}}.grid-4{grid-template-columns:repeat(4, 1fr)}@media (max-width: 992px){.grid-4{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 576px){.grid-4{grid-template-columns:1fr}}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.gap-1{gap:8px}.gap-2{gap:16px}.gap-3{gap:24px}.gap-4{gap:32px}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:32px}.mt-6{margin-top:48px}.mt-8{margin-top:64px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}.mb-4{margin-bottom:32px}.mb-6{margin-bottom:48px}.mb-8{margin-bottom:64px}.page-header{position:relative;overflow:hidden;padding:64px 0 48px;text-align:center}@media (max-width: 768px){.page-header{padding:40px 0 24px}}.page-header::before{content:"";position:absolute;inset:-220px -220px auto;height:420px;background:radial-gradient(600px 280px at 50% 35%, rgba(var(--c-accent-rgb), 0.16) 0%, rgba(var(--c-surface-rgb), 0) 60%),radial-gradient(680px 300px at 20% 40%, rgba(var(--c-accent-2-rgb), 0.14) 0%, rgba(var(--c-surface-rgb), 0) 62%);pointer-events:none}.page-header::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg, rgba(var(--c-text-rgb), 0), rgba(var(--c-text-rgb), 0.1), rgba(var(--c-text-rgb), 0));pointer-events:none}.page-header-left{text-align:left}.page-description{max-width:700px;margin:24px auto 0;color:var(--c-muted);font-size:clamp(16px, 1.7vw, 18px)}.page-header-left .page-description{margin-left:0}.divider{height:1px;background-color:rgba(var(--c-text-rgb), 0.1);margin:48px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:500;border-radius:12px;border:1px solid transparent;cursor:pointer;transition:all 150ms ease;text-decoration:none;transform:translateY(0);will-change:transform;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;letter-spacing:0.08em;text-transform:uppercase}.btn:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(135deg, var(--c-accent) 0%, var(--c-accent-2) 100%);color:#fff;box-shadow:0 14px 32px rgba(var(--c-accent-rgb), 0.26),0 6px 18px rgba(0,0,0,0.18)}.btn-primary:hover{background:linear-gradient(135deg, var(--c-accent-hover) 0%, var(--c-accent-2) 100%);color:#fff;box-shadow:0 18px 42px rgba(var(--c-accent-rgb), 0.3),0 10px 26px rgba(0,0,0,0.22)}.btn-secondary{background-color:rgba(var(--c-accent-rgb), 0.1);color:var(--c-accent);border-color:rgba(var(--c-accent-rgb), 0.28)}.btn-secondary:hover{background-color:var(--c-accent);border-color:var(--c-accent);color:#fff}.btn-ghost{background-color:transparent;color:var(--c-text);border-color:rgba(var(--c-text-rgb), 0.2)}.btn-ghost:hover{background-color:rgba(var(--c-text-rgb), 0.06)}.btn-sm{padding:8px 16px;font-size:14px;border-radius:8px}.btn-group{display:flex;flex-wrap:wrap;gap:16px}.btn-group-center{justify-content:center}.card{background-color:var(--c-surface);border-radius:12px;padding:24px;border:1px solid var(--c-border);box-shadow:var(--shadow-sm);transition:box-shadow 250ms ease,transform 250ms ease,border-color 250ms ease,backdrop-filter 250ms ease}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--c-border-strong)}.card-elevated{border-color:var(--c-border);box-shadow:var(--shadow-md)}.card-elevated:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card-glass{background:rgba(var(--c-surface-rgb), 0.7);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(var(--c-surface-rgb), 0.4)}.card-glass:hover{background:rgba(var(--c-surface-rgb), 0.82);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.card-featured{position:relative;background:var(--c-surface);border:none}.card-featured::before{content:"";position:absolute;inset:0;border-radius:12px;padding:2px;background:linear-gradient(135deg, rgba(var(--c-accent-rgb), 0.55) 0%, rgba(var(--c-accent-2-rgb), 0.55) 55%, rgba(var(--c-accent-rgb), 0.35) 100%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:0;transition:opacity 250ms ease}.card-featured:hover::before{opacity:1}.card-title{font-size:20px;font-weight:600;margin-bottom:8px}.card-description{color:var(--c-muted);font-size:16px}.card-link{display:block;color:var(--c-text);text-decoration:none}.card-link:hover{color:var(--c-text)}.card-link .link-arrow{color:var(--c-accent)}.card-link:hover .link-arrow::after{transform:translateX(4px)}.theme-card{text-align:center;padding:40px}.theme-card .theme-icon{width:72px;height:72px;margin:0 auto 24px;display:flex;align-items:center;justify-content:center;font-size:34px;border-radius:18px;background:radial-gradient(120px 80px at 30% 20%, rgba(var(--c-accent-2-rgb), 0.22) 0%, rgba(var(--c-surface-rgb), 0) 60%),rgba(var(--c-accent-rgb), 0.1);border:1px solid var(--c-border)}.theme-card h3{margin-bottom:16px}.theme-card p{color:var(--c-muted)}.team-card{text-align:center}.team-card .team-photo{width:160px;height:160px;border-radius:50%;object-fit:cover;margin:0 auto 24px;background-color:var(--c-surface-2);overflow:hidden}.team-card .team-photo-placeholder{display:flex;align-items:center;justify-content:center;color:var(--c-faint);font-weight:500;letter-spacing:0.02em;background:radial-gradient(120px 80px at 30% 25%, rgba(var(--c-accent-2-rgb), 0.18) 0%, rgba(var(--c-surface-rgb), 0) 60%),radial-gradient(140px 90px at 70% 15%, rgba(var(--c-accent-rgb), 0.16) 0%, rgba(var(--c-surface-rgb), 0) 62%),var(--c-surface-2);border:1px solid var(--c-border)}.team-card .team-name{font-size:20px;font-weight:600;margin-bottom:8px}.team-card .team-role{color:var(--c-muted);font-size:14px;margin-bottom:16px}.team-card .team-bio{font-size:14px;line-height:1.6}.team-card .team-links{display:flex;justify-content:center;gap:16px}.team-card-large .team-photo{width:200px;height:200px}.team-card-large .team-name{font-size:24px}.team-card-large .team-role{font-size:16px}.publication{padding:24px 0;border-bottom:1px solid var(--c-border)}.publication:last-child{border-bottom:none}.publication-title{font-size:16px;font-weight:600;margin-bottom:8px;color:var(--c-text)}.publication-title a{color:inherit}.publication-title a:hover{color:var(--c-accent)}.publication-authors{font-size:14px;color:var(--c-muted);margin-bottom:8px}.publication-venue{font-size:14px;color:var(--c-faint);font-style:italic}.publication-links{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px}.publication-links a{font-size:12px;padding:4px 10px;background-color:rgba(var(--c-text-rgb), 0.05);border-radius:4px;color:var(--c-muted);border:1px solid var(--c-border)}.publication-links a:hover{background-color:var(--c-accent);color:#fff;border-color:rgba(var(--c-accent-rgb), 0.45)}.year-section{margin-bottom:48px}.year-heading{font-size:24px;font-weight:700;color:var(--c-text);margin-bottom:24px;padding-bottom:16px;border-bottom:2px solid var(--c-text)}.tag{display:inline-block;padding:4px 12px;font-size:12px;font-weight:500;background-color:rgba(var(--c-text-rgb), 0.05);color:var(--c-muted);border-radius:100px;border:1px solid var(--c-border);transition:background-color 150ms ease,border-color 150ms ease,color 150ms ease,transform 150ms ease}.tag:hover{background-color:rgba(var(--c-text-rgb), 0.08);border-color:var(--c-border-strong);color:var(--c-text);transform:translateY(-1px)}.tag.tag-active{background:linear-gradient(135deg, var(--c-accent) 0%, var(--c-accent-2) 100%);border-color:rgba(var(--c-accent-rgb), 0.35);color:#fff;box-shadow:0 10px 24px rgba(var(--c-accent-rgb), 0.22)}button.tag{font:inherit;line-height:inherit;cursor:pointer;appearance:none;-webkit-appearance:none}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}.accordion{border:1px solid var(--c-border);border-radius:12px;overflow:hidden;background-color:var(--c-surface);box-shadow:var(--shadow-sm)}.accordion-item{border-bottom:1px solid var(--c-border)}.accordion-item:last-child{border-bottom:none}.accordion-header{width:100%;padding:24px 32px;background:none;border:none;text-align:left;font-size:16px;font-weight:500;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background-color 150ms ease}.accordion-header:hover{background-color:rgba(var(--c-text-rgb), 0.04)}.accordion-header::after{content:"+";font-size:24px;font-weight:400;color:var(--c-faint);transition:transform 150ms ease}.accordion-header.active::after{transform:rotate(45deg)}.accordion-content{max-height:0;overflow:hidden;transition:max-height 250ms ease}.accordion-content.active{max-height:1200px}.accordion-body{padding:0 32px 32px;color:var(--c-muted)}.gallery-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:24px}@media (max-width: 768px){.gallery-grid{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 576px){.gallery-grid{grid-template-columns:1fr}}.gallery-item{position:relative;aspect-ratio:4 / 3;overflow:hidden;border-radius:12px;cursor:pointer;background-color:var(--c-surface-2)}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform 250ms ease}.gallery-item:hover img{transform:scale(1.05)}.gallery-item .media-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--c-faint);font-size:14px;font-weight:500;letter-spacing:0.02em;padding:32px;transition:transform 250ms ease;background:radial-gradient(240px 140px at 30% 20%, rgba(var(--c-accent-2-rgb), 0.18) 0%, rgba(var(--c-surface-rgb), 0) 60%),radial-gradient(260px 160px at 80% 0%, rgba(var(--c-accent-rgb), 0.16) 0%, rgba(var(--c-surface-rgb), 0) 64%),var(--c-surface-2)}.gallery-item:hover .media-placeholder{transform:scale(1.03)}.gallery-item .gallery-caption{position:absolute;bottom:0;left:0;right:0;padding:16px 24px;background:linear-gradient(transparent, rgba(0,0,0,0.7));color:#fff;font-size:14px;opacity:0;transition:opacity 250ms ease}.gallery-item:hover .gallery-caption{opacity:1}@media (hover: none){.gallery-item .gallery-caption{opacity:1}}.battery-index{margin-top:32px;padding:24px}.battery-index__label{margin:0 0 16px;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--c-faint)}.battery-index__links{display:flex;flex-wrap:wrap;gap:8px}.figure-batteries{display:grid;gap:32px}.figure-battery{scroll-margin-top:calc(var(--site-header-height, 64px) + 18px)}.figure-battery__header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:24px}.figure-battery__title{margin:0;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:20px;letter-spacing:0.08em;text-transform:uppercase}.figure-battery__title a{color:inherit}.figure-battery__title a:hover{color:var(--c-accent-hover)}.figure-battery__paper{font-size:14px}.figure-battery__grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:10px}.figure-tile{position:relative;display:block;padding:0;border:1px solid var(--c-border);border-radius:8px;background:rgba(var(--c-text-rgb), 0.03);overflow:hidden;cursor:zoom-in;transition:transform 150ms ease,box-shadow 150ms ease,border-color 150ms ease;text-align:left;appearance:none;-webkit-appearance:none}.figure-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:var(--c-border-strong)}.figure-tile:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px}.figure-tile__media{display:block;line-height:0}.figure-tile__img{width:100%;height:auto;display:block}@media (prefers-color-scheme: dark){.figure-tile__img--invert-dark{filter:invert(1) hue-rotate(180deg) contrast(0.9)}}.figure-tile__label{position:absolute;top:10px;left:10px;padding:4px 10px;border-radius:999px;border:1px solid var(--c-border);background:rgba(var(--c-surface-rgb), 0.78);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--c-text);pointer-events:none}.case-studies-title{display:inline-block;padding:12px 18px;border:1px solid var(--c-border);background:rgba(var(--c-surface-rgb), 0.72);box-shadow:var(--shadow-sm)}.case-studies-grid{display:grid;gap:32px;grid-template-columns:repeat(2, minmax(0, 1fr))}@media (max-width: 992px){.case-studies-grid{grid-template-columns:1fr}}.case-study__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.case-study__title{margin:0;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;font-size:20px;letter-spacing:0.08em;text-transform:uppercase}.case-study__links{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.case-study__caption{margin:0 0 24px;color:var(--c-muted);font-size:14px;line-height:1.6}.case-study__grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));gap:10px}.lightbox{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.9);display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transition:opacity 250ms ease,visibility 250ms ease}.lightbox.active{opacity:1;visibility:visible}.lightbox img{max-width:90%;max-height:90vh;object-fit:contain}.lightbox .lightbox-close{position:absolute;top:32px;right:32px;color:#fff;font-size:32px;cursor:pointer;background:none;border:none}.lightbox .lightbox-close:hover{opacity:0.7}.site-locations{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:32px;align-items:stretch}@media (max-width: 768px){.site-locations{grid-template-columns:1fr}}.site-locations .site{text-align:left;padding:32px;border-radius:12px;background-color:var(--c-surface);border:1px solid var(--c-border);box-shadow:var(--shadow-sm)}.site-locations .site .site-name{font-weight:600}.site-locations .site .site-institution{font-size:14px;color:var(--c-faint)}.error-code{font-size:clamp(72px, 12vw, 140px);font-weight:800;letter-spacing:-0.06em;line-height:1;color:rgba(var(--c-text-rgb), 0.1)}:root{--site-header-height: 64px}.site-header{position:sticky;top:0;background-color:rgba(var(--c-surface-rgb), 0.78);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-bottom:1px solid var(--c-border);box-shadow:0 1px 0 rgba(0,0,0,0.1);z-index:100}.site-notice{background:linear-gradient(90deg, rgba(var(--c-accent-rgb), 0.12), rgba(var(--c-accent-2-rgb), 0.1), rgba(var(--c-accent-rgb), 0.12));border-bottom:1px solid var(--c-border)}.site-notice-text{margin:0;padding:10px 0;font-size:14px;color:var(--c-muted);text-align:center}.site-notice-text a{color:var(--c-text);font-weight:500}.site-notice-text a:hover{color:var(--c-accent)}.nav{display:flex;align-items:center;justify-content:space-between;height:64px}.nav-logo{font-size:15px;font-weight:600;color:var(--c-text);font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;letter-spacing:0.08em;text-transform:uppercase}.nav-logo:hover{color:var(--c-text)}.nav-menu{display:flex;align-items:center;gap:16px;list-style:none}.nav-menu a{display:inline-block;text-align:left;color:var(--c-muted);font-size:14px;font-weight:500;padding:8px 12px;border-radius:999px;transition:background-color 150ms ease,color 150ms ease;font-family:"Source Code Pro",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;letter-spacing:0.08em;text-transform:uppercase}.nav-menu a:hover,.nav-menu a.active{color:var(--c-text);background-color:rgba(var(--c-text-rgb), 0.06)}.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px}.nav-toggle span{display:block;width:24px;height:2px;background-color:var(--c-text);transition:transform 150ms ease,opacity 150ms ease}.nav-toggle.active span:nth-child(1){transform:rotate(45deg) translate(5px, 5px)}.nav-toggle.active span:nth-child(2){opacity:0}.nav-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(5px, -5px)}@media (max-width: 768px){.nav-toggle{display:flex}.nav-menu{position:fixed;top:var(--site-header-height, 72px);left:0;right:0;bottom:0;flex-direction:column;background-color:rgba(var(--c-surface-rgb), 0.96);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:48px 32px;gap:0;transform:translateX(100%);transition:transform 250ms ease}.nav-menu.active{transform:translateX(0)}.nav-menu li{width:100%}.nav-menu a{display:block;padding:16px 0;font-size:16px;border-bottom:1px solid var(--c-border);border-radius:0}}.site-footer{background:radial-gradient(800px 360px at 20% 0%, rgba(var(--c-accent-2-rgb), 0.1) 0%, rgba(var(--c-surface-rgb), 0) 58%),radial-gradient(900px 400px at 80% 0%, rgba(var(--c-accent-rgb), 0.1) 0%, rgba(var(--c-surface-rgb), 0) 58%),var(--c-surface-2);border-top:1px solid var(--c-border);padding:80px 0 48px;margin-top:96px}.footer-content{display:flex;flex-direction:column;gap:64px}.footer-main{display:grid;grid-template-columns:2fr 3fr;gap:64px}@media (max-width: 768px){.footer-main{grid-template-columns:1fr}}.footer-brand h3{font-size:20px;margin-bottom:16px}.footer-brand p{color:var(--c-muted);font-size:14px}.footer-links{display:grid;grid-template-columns:repeat(3, 1fr);gap:32px}@media (max-width: 576px){.footer-links{grid-template-columns:repeat(2, 1fr)}}.footer-links h4{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;margin-bottom:16px;color:var(--c-faint)}.footer-links ul{list-style:none}.footer-links li{margin-bottom:8px}.footer-links a{color:var(--c-muted);font-size:14px}.footer-links a:hover{color:var(--c-text)}.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:32px;border-top:1px solid var(--c-border)}@media (max-width: 576px){.footer-bottom{flex-direction:column;gap:16px;text-align:center}}.footer-sites{display:flex;align-items:center;gap:16px;color:var(--c-muted);font-size:14px}.footer-sites .separator{color:var(--c-faint)}.footer-copyright{color:var(--c-faint);font-size:14px}.hero{position:relative;overflow:hidden;padding:96px 0;text-align:center;min-height:70vh;display:flex;align-items:center;justify-content:center}@media (max-width: 768px){.hero{padding:64px 0;min-height:58vh}}.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0.55) 40%, rgba(0,0,0,0.88) 100%),url("/assets/images/hero/nightlights.jpg") center/cover no-repeat;pointer-events:none;z-index:0;animation:heroKenBurns 25s ease-in-out infinite alternate}@media (prefers-reduced-motion: reduce){.hero::before{animation:none}}.hero--no-image::before{background:radial-gradient(720px 320px at 50% 35%, rgba(var(--c-accent-rgb), 0.16) 0%, rgba(var(--c-surface-rgb), 0) 62%),radial-gradient(760px 340px at 25% 40%, rgba(var(--c-accent-2-rgb), 0.14) 0%, rgba(var(--c-surface-rgb), 0) 64%),linear-gradient(180deg, var(--c-surface-2) 0%, var(--c-surface) 100%)}@keyframes heroKenBurns{0%{transform:scale(1) translate(0, 0)}100%{transform:scale(1.08) translate(-1%, -1%)}}.hero-content{max-width:900px;margin:0 auto;position:relative;z-index:1}.hero .hero-title{margin-bottom:32px;color:#fff;text-shadow:0 2px 20px rgba(0,0,0,0.45)}.hero .hero-subtitle{margin-bottom:48px;max-width:750px;margin-left:auto;margin-right:auto;color:rgba(255,255,255,0.9);text-shadow:0 1px 10px rgba(0,0,0,0.32)}.hero .btn-primary{box-shadow:0 14px 32px rgba(var(--c-accent-rgb), 0.35),0 2px 8px rgba(0,0,0,0.2)}.hero .btn-secondary{background-color:rgba(255,255,255,0.1);color:#fff;border-color:rgba(255,255,255,0.3);backdrop-filter:blur(8px)}.hero .btn-secondary:hover{background-color:#fff;border-color:#fff;color:#050711}.hero .btn-ghost{color:rgba(255,255,255,0.9);border-color:rgba(255,255,255,0.25)}.hero .btn-ghost:hover{background-color:rgba(255,255,255,0.1);color:#fff}.section-satellite{position:relative}.section-satellite::before{content:"";position:absolute;inset:0;background-size:cover;background-position:center;opacity:0.08;pointer-events:none}.section-satellite--agriculture::before{background-image:url("/assets/images/sections/agriculture.jpg")}.section-satellite--topography::before{background-image:url("/assets/images/sections/topography.jpg")}.themes-section{background:linear-gradient(180deg, rgba(var(--c-surface-2-rgb), 0.85) 0%, rgba(var(--c-surface-2-rgb), 0.55) 100%);border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border)}.featured-publications .publication{padding:32px;border:1px solid var(--c-border);border-radius:12px;margin-bottom:24px;background-color:var(--c-surface);box-shadow:var(--shadow-sm);transition:box-shadow 250ms ease,transform 250ms ease,border-color 250ms ease}.featured-publications .publication:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--c-border-strong)}.animate-on-scroll{opacity:0;transform:translateY(30px);transition:opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),transform 0.6s cubic-bezier(0.16, 1, 0.3, 1)}@media (prefers-reduced-motion: reduce){.animate-on-scroll{opacity:1;transform:none;transition:none}}.animate-on-scroll.is-visible{opacity:1;transform:translateY(0)}.animate-stagger>.animate-on-scroll:nth-child(1),.animate-stagger>*>.animate-on-scroll:nth-child(1){transition-delay:0s}.animate-stagger>.animate-on-scroll:nth-child(2),.animate-stagger>*>.animate-on-scroll:nth-child(2){transition-delay:.08s}.animate-stagger>.animate-on-scroll:nth-child(3),.animate-stagger>*>.animate-on-scroll:nth-child(3){transition-delay:.16s}.animate-stagger>.animate-on-scroll:nth-child(4),.animate-stagger>*>.animate-on-scroll:nth-child(4){transition-delay:.24s}.animate-stagger>.animate-on-scroll:nth-child(5),.animate-stagger>*>.animate-on-scroll:nth-child(5){transition-delay:.32s}.animate-stagger>.animate-on-scroll:nth-child(6),.animate-stagger>*>.animate-on-scroll:nth-child(6){transition-delay:.4s}.animate-stagger>.animate-on-scroll:nth-child(7),.animate-stagger>*>.animate-on-scroll:nth-child(7){transition-delay:.48s}.animate-stagger>.animate-on-scroll:nth-child(8),.animate-stagger>*>.animate-on-scroll:nth-child(8){transition-delay:.56s}.animate-stagger>.animate-on-scroll:nth-child(9),.animate-stagger>*>.animate-on-scroll:nth-child(9){transition-delay:.64s}.animate-stagger>.animate-on-scroll:nth-child(10),.animate-stagger>*>.animate-on-scroll:nth-child(10){transition-delay:.72s}.animate-stagger>.animate-on-scroll:nth-child(11),.animate-stagger>*>.animate-on-scroll:nth-child(11){transition-delay:.8s}.animate-stagger>.animate-on-scroll:nth-child(12),.animate-stagger>*>.animate-on-scroll:nth-child(12){transition-delay:.88s}.animate-scale{opacity:0;transform:scale(0.95);transition:opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),transform 0.5s cubic-bezier(0.16, 1, 0.3, 1)}@media (prefers-reduced-motion: reduce){.animate-scale{opacity:1;transform:none;transition:none}}.animate-scale.is-visible{opacity:1;transform:scale(1)}.animate-slide-left{opacity:0;transform:translateX(-40px);transition:opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),transform 0.6s cubic-bezier(0.16, 1, 0.3, 1)}@media (prefers-reduced-motion: reduce){.animate-slide-left{opacity:1;transform:none;transition:none}}.animate-slide-left.is-visible{opacity:1;transform:translateX(0)}.animate-slide-right{opacity:0;transform:translateX(40px);transition:opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),transform 0.6s cubic-bezier(0.16, 1, 0.3, 1)}@media (prefers-reduced-motion: reduce){.animate-slide-right{opacity:1;transform:none;transition:none}}.animate-slide-right.is-visible{opacity:1;transform:translateX(0)}.animate-counter{font-variant-numeric:tabular-nums}.hero-content{will-change:transform}.image-compare{position:relative;width:100%;max-width:800px;margin:0 auto;overflow:hidden;border-radius:12px;background-color:var(--c-surface-2);user-select:none;touch-action:none;box-shadow:var(--shadow-md)}.image-compare::before{content:"";display:block;padding-top:56.25%}.image-compare__before,.image-compare__after{position:absolute;top:0;left:0;width:100%;height:100%}.image-compare__before img,.image-compare__after img{width:100%;height:100%;object-fit:cover}.image-compare__before{clip-path:inset(0 50% 0 0);z-index:2}.image-compare__after{z-index:1}.image-compare__slider{position:absolute;top:0;bottom:0;left:50%;width:4px;background-color:#fff;box-shadow:0 0 8px rgba(0,0,0,0.4);z-index:3;cursor:ew-resize;transform:translateX(-50%)}.image-compare__slider::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:48px;height:48px;background-color:#fff;border-radius:50%;box-shadow:0 2px 12px rgba(0,0,0,0.3)}.image-compare__slider::after{content:"↔";position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);font-size:20px;color:var(--c-muted);font-weight:bold}.image-compare__labels{position:absolute;bottom:16px;left:16px;right:16px;display:flex;justify-content:space-between;z-index:4;pointer-events:none}.image-compare__label{padding:6px 12px;background-color:rgba(0,0,0,0.7);color:#fff;font-size:14px;font-weight:500;border-radius:4px;backdrop-filter:blur(4px)}.image-compare__placeholder{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--c-faint);font-size:14px;font-weight:500;padding:32px;background:radial-gradient(300px 180px at 30% 30%, rgba(var(--c-accent-2-rgb), 0.15) 0%, transparent 60%),radial-gradient(350px 200px at 70% 70%, rgba(var(--c-accent-rgb), 0.12) 0%, transparent 60%),var(--c-surface-2)}.comparison-gallery{display:grid;gap:48px}@media (min-width: 992px){.comparison-gallery{grid-template-columns:repeat(2, 1fr)}}.comparison-item h3{margin-bottom:16px;font-size:20px}.comparison-item p{color:var(--c-muted);margin-bottom:24px}
