.nav-inner{max-width:1440px;margin:auto;height:100%;padding:0 32px;display:flex;align-items:center;justify-content:space-between;gap:24px}.logo{display:inline-flex;align-items:center;flex:none}.logo img{display:block;filter:invert(1);width:141px;height:auto}html[data-theme=light] .logo img{filter:none}.main-nav{display:flex;align-items:center;gap:30px;margin-left:60px}.nav-item{padding:20px 0;font-size:14px;color:var(--text-secondary);display:flex;align-items:center;gap:4px;transition:color .2s;white-space:nowrap}.nav-item:hover,.nav-item.active,.nav-dropdown.open .nav-item{color:var(--text)}.menu-trigger .icon{width:13px;height:13px;transition:transform .25s}.nav-dropdown{position:relative}.nav-dropdown.open .menu-trigger .icon{transform:rotate(180deg)}.dropdown{position:absolute;top:calc(100% - 5px);left:-12px;min-width:174px;padding:7px;border-radius:5px;background:var(--menu-bg);box-shadow:0 10px 30px #0002;opacity:0;visibility:hidden;transform:translateY(5px);transition:opacity .2s,transform .2s,visibility .2s;z-index:10}.nav-dropdown.open .dropdown,.language-picker.open .dropdown{opacity:1;visibility:visible;transform:translateY(0)}.dropdown a,.dropdown button{position:relative;z-index:1;display:block;padding:7px 10px;white-space:nowrap;color:var(--text-secondary);font-size:14px;border-radius:3px;text-align:left;width:100%}.dropdown a:hover,.dropdown button:hover{background:var(--hover);color:var(--text)}.nav-actions{display:flex;gap:22px;align-items:center}.github-star{background:var(--hover);border:0;color:var(--text-secondary);font-size:12px;padding:6px 10px;gap:5px}.github-star:hover{color:var(--text)}.github-star .star-count{border-left:.5px solid var(--line);padding-left:7px;margin-left:2px}.hero{min-height:calc(570px * var(--hero-height-scale));height:calc(53vw * var(--hero-height-scale));max-height:calc(680px * var(--hero-height-scale));display:flex;align-items:center}.hero-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,var(--hero-bg) 0,transparent 82%);opacity:.24;pointer-events:none}.hero-content{position:relative;padding-top:35px}.hero h1{font-size:var(--hero-title-size);font-weight:var(--hero-title-weight);max-width:600px;letter-spacing:var(--hero-title-tracking);line-height:1.15;margin:14px 0 24px;text-wrap:balance}.hero-description{max-width:500px;margin-bottom:24px}.section{padding:76px 0}.section-heading{text-align:center}.section-heading h2{font-size:16px;letter-spacing:-.25px;margin-bottom:10px}.section-heading p{font-size:13px;line-height:1.55;color:var(--text-secondary);max-width:500px;margin:auto}.infrastructure{padding-top:50px;padding-bottom:65px}.illustration{aspect-ratio:440/300;width:100%;max-width:440px;overflow:visible;color:var(--text)}.illustration-svg{display:block;width:100%;height:100%;overflow:visible}.chat-bubble path{fill:var(--illustration-fill);stroke:var(--illustration-stroke);stroke-width:.7}.chat-bubble rect{fill:var(--illustration-bar)}.bubble-2{opacity:.8}.bubble-3{opacity:.65}.bubble-4{opacity:.5}.magnifier{fill:none;stroke:var(--text);stroke-width:1;stroke-linecap:round}.result-memory rect,.travelling-memory rect{fill:var(--primary);stroke:none}.result-memory use,.result-memory text,.travelling-memory use,.travelling-memory text{fill:var(--on-primary);color:var(--on-primary)}.result-memory text,.travelling-memory text{font-size:12px;font-weight:600}/* Textual memory: slow stationary bubbles, three searches, single-opacity transfer. */
.textual{--motion-duration:8s}
.textual .chat-bubble{transform:translateY(0);animation-duration:var(--motion-duration);animation-iteration-count:infinite;animation-timing-function:ease-in-out}
.textual .bubble-1{animation-name:bubbleFade1}
.textual .bubble-2{animation-name:bubbleFade2}
.textual .bubble-3{animation-name:bubbleFade3}
.textual .bubble-4{animation-name:bubbleFade4}
.conversation-cloud{transform:none;opacity:1}
.textual .chat-bubble rect{animation:sourceBarTransfer var(--motion-duration) linear infinite}
.gathered{animation:gatherVisibility var(--motion-duration) linear infinite}
.fragment{fill:color-mix(in srgb,var(--text) 20%,var(--illustration-fill));opacity:1;animation:gatherMemory var(--motion-duration) cubic-bezier(.45,0,.3,1) infinite}
.fragment-1{--gather-x:-22.5px;--gather-y:54.5px}
.fragment-2{--gather-x:105px;--gather-y:-.5px}
.fragment-3{--gather-x:-27.5px;--gather-y:-56px}
.magnifier{animation:searchMemory var(--motion-duration) ease-in-out infinite}
.textual .result-memory{transform:none;animation:memoryForm var(--motion-duration) ease-in-out infinite}
.textual .result-memory text{font-size:16px;font-weight:600}
.textual .result-memory .memory-glow{fill:#fff;opacity:.65;filter:blur(13px);pointer-events:none}
@keyframes sourceBarTransfer{0%,42%,100%{opacity:1}46%,92%{opacity:0}}
@keyframes gatherVisibility{0%,42%,68%,100%{opacity:0}46%,62%{opacity:1}}
@keyframes gatherMemory{0%,46%{transform:translate(0,0)}64%,100%{transform:translate(var(--gather-x),var(--gather-y))}}
/* Three displacements, with a pause at each search position. Fade out in place. */
@keyframes searchMemory{0%,100%{transform:translate(-20px,16px);opacity:0}4%{transform:translate(-20px,16px);opacity:1}14%,19%{transform:translate(70px,10px);opacity:1}29%,34%{transform:translate(8px,58px);opacity:1}44%,47%{transform:translate(90px,105px);opacity:1}54%,96%{transform:translate(90px,105px);opacity:0}}
@keyframes memoryForm{0%,60%,100%{opacity:0}70%,94%{opacity:1}}
.project-panel{fill:url(#panel-fade);stroke:var(--illustration-stroke);stroke-width:.6}.panel-label{fill:var(--text-secondary);font-size:11px}.code{fill:var(--text);stroke:none}.code-line{stroke:none}.project-new-badge rect{fill:var(--primary)}.project-new-badge text{fill:var(--on-primary);font-size:9px;font-weight:700;letter-spacing:.03em}.old-project{transform-origin:120px 170px;animation:oldProject var(--motion-duration) infinite}.metal-shine{animation:metalShine var(--motion-duration) infinite}.new-project{transform-origin:300px 170px;animation:newProject var(--motion-duration) infinite}.new-code{animation:codeAppear var(--motion-duration) infinite}.travelling-memory{transform-origin:220px 141px;animation:memoryTravel var(--motion-duration) ease-in-out infinite}@keyframes oldProject{0%,100%{opacity:.35;transform:translateY(8px)}15%,28%{opacity:1;transform:translateY(0)}45%,90%{opacity:.4;transform:scale(.94)}}@keyframes metalShine{0%,17%,100%{transform:translateX(0) skewX(-18deg);opacity:0}20%{opacity:.7}40%{transform:translateX(440px) skewX(-18deg);opacity:0}90%{opacity:0;transform:translateX(440px)}}@keyframes newProject{0%,28%,100%{opacity:0;transform:translate(12px,6px)}45%,90%{opacity:1;transform:translate(0,0)}}@keyframes memoryTravel{0%,28%,100%{opacity:0;transform:translate(-92px,38px)}38%{opacity:1;transform:translate(-92px,38px)}63%{opacity:1;transform:translate(56px,3px)}73%,92%{opacity:0;transform:translate(56px,3px) scale(.95)}}@keyframes codeAppear{0%,61%,100%{opacity:0}82%,92%{opacity:1}}
.orbit-solid,.orbit-dashed{fill:none;stroke:var(--illustration-stroke);stroke-width:.7}.orbit-dashed{stroke-dasharray:3 4;transform-origin:214px 158px;animation:orbitRotate 40s linear infinite,ringAppear var(--motion-duration) infinite}.orbit-solid{animation:innerRing var(--motion-duration) infinite}.orbit-node circle{fill:var(--bg);stroke:var(--illustration-stroke);stroke-width:.7}.orbit-node use{fill:none;stroke:var(--text);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.orbit-node{transform-origin:214px 158px;animation:nodeBloom var(--motion-duration) infinite}.node-b{animation-delay:.18s}.node-c{animation-delay:.36s}.node-d{animation-delay:.54s}.center-logo{transform-origin:214px 158px;animation:logoResponse var(--motion-duration) infinite}.center-logo circle{fill:var(--primary)}.center-logo text{font-size:24px;font-weight:700;fill:var(--on-primary)}.response-bubbles{animation:responses var(--motion-duration) infinite}.response-bubbles rect{fill:var(--illustration-fill);stroke:var(--illustration-stroke);stroke-width:.5}.response-bubbles path{stroke:var(--text-faint);stroke-width:4;stroke-linecap:round}@keyframes orbitRotate{to{transform:rotate(360deg)}}@keyframes ringAppear{0%,12%,82%,100%{opacity:0}28%,64%{opacity:.7}}@keyframes innerRing{0%,8%,80%,100%{opacity:0}20%,63%{opacity:1}}@keyframes nodeBloom{0%,18%,86%,100%{opacity:0;transform:scale(.08) rotate(-25deg)}36%{opacity:1;transform:scale(1) rotate(0)}50%{opacity:1;transform:scale(1.03) rotate(3deg)}62%{opacity:1;transform:scale(.98) rotate(-2deg)}78%{opacity:0;transform:scale(.05) rotate(35deg)}}@keyframes logoResponse{0%,100%{opacity:1;transform:scale(.92)}12%,66%{opacity:1;transform:scale(1)}80%,94%{opacity:1;transform:translateX(-65px)}}@keyframes responses{0%,70%,100%{opacity:0;transform:translate(-20px,0)}82%,94%{opacity:1;transform:translate(0,0)}}
.research{background:var(--bg-raised);padding:52px 0 86px}.research>.container>.section-heading{margin-bottom:36px}.research-more{margin-top:28px;text-align:center}.more-row{display:flex;justify-content:center;margin:0}.research-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.research-card{border-radius:7px;padding:19px 25px 26px;min-height:340px;display:flex;flex-direction:column}.card-meta{text-align:right;font-size:10px;color:var(--text-secondary);margin-bottom:24px}.metric{font:400 58px/1.15 var(--font-metric);letter-spacing:-2px;display:flex;align-items:baseline;margin-bottom:3px}.metric-unit{font-size:32px;margin-left:3px}.counter{display:inline-flex;align-items:baseline;font-variant-numeric:tabular-nums}.research-card h3{font-size:12px;line-height:1.5}.metric-rule{width:112px;height:.5px;background:var(--text-muted);margin:14px 0}.research-card p{font-size:12px;line-height:1.6;color:var(--text-muted);margin-bottom:30px}.card-link{display:flex;align-items:center;gap:2px;color:var(--text-muted);font-size:12px;margin-top:auto;transition:color .2s}.card-link:hover{color:var(--text)}.card-link .icon{width:12px;height:12px}.closing{text-align:center;padding:90px 0 120px}.closing-eyebrow{font-size:16px;color:var(--text-muted);margin-bottom:11px}.closing h2{font-size:32px;letter-spacing:-.9px;margin-bottom:14px}.closing-description{font-size:13px;color:var(--text-secondary);max-width:520px;margin:auto auto 25px}.site-footer{padding:0 0 60px}.footer-top{border-top:.5px solid var(--line);padding-top:32px;display:grid;grid-template-columns:1fr 1.8fr;gap:55px}.socials{display:flex;align-items:flex-start;gap:25px}.socials a{color:var(--text-muted);transition:color .2s}.socials a:hover{color:var(--text)}.socials .icon{width:20px;height:20px}.footer-links{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.footer-links h3{font-size:12px;margin-bottom:13px}.footer-links a{display:block;color:var(--text-muted);font-size:13px;margin:4px 0;white-space:nowrap;transition:color .2s}.footer-links a:hover{color:var(--text)}.footer-bottom{margin-top:66px;display:flex;justify-content:space-between;align-items:flex-end}.footer-logo img{width:165px}.footer-bottom small{display:block;color:var(--text-muted);font-size:10px;margin-top:4px}.preferences{display:flex;align-items:center;gap:20px}.language-picker{position:relative}.language-trigger{min-width:102px;justify-content:space-between}.language-menu{top:auto;bottom:calc(100% + 8px);left:0;min-width:130px}.language-menu button{padding-left:27px}.language-menu .choice-check{position:absolute;left:7px;top:50%;transform:translateY(-50%);width:14px;height:14px;opacity:0}.language-menu button[aria-pressed=true] .choice-check{opacity:1}.theme-picker{display:flex;align-items:center;border:.5px solid var(--line);border-radius:4px;padding:2px}.theme-picker button{display:grid;place-items:center;width:26px;height:24px;color:var(--text-faint);border-radius:3px}.theme-picker button:hover,.theme-picker button[aria-pressed=true]{color:var(--text);background:var(--hover)}.theme-picker .icon{width:15px;height:15px}
@media(min-width:1500px){.hero{height:calc(650px * var(--hero-height-scale))}.hero-content{padding-left:32px}}@media(max-width:1000px){.nav-inner{padding-inline:24px}.main-nav{margin-left:0;gap:20px}.nav-actions{gap:12px}.research-card{padding:17px}.footer-top{grid-template-columns:.7fr 2fr;gap:30px}.socials{gap:16px}}@media(max-width:760px){.nav-inner{padding-inline:20px;gap:12px}.logo img{width:112px}.main-nav{gap:13px}.nav-item{font-size:12px}.nav-actions .github-star{display:none}.nav-actions .button-secondary{font-size:12px;padding:5px 8px}.research-grid{gap:12px}.research-card{padding:16px 12px;min-height:340px}.metric{font-size:46px}.card-meta{font-size:9px}.footer-top{grid-template-columns:1fr;gap:30px}.footer-bottom{margin-top:45px}.closing{padding:80px 0 95px}}@media(max-width:540px){.main-nav{gap:12px}.nav-actions{gap:0}.logo img{width:105px}.illustration{max-width:340px}.research-grid{grid-template-columns:1fr}.research-card{min-height:300px;padding:22px}.metric{font-size:58px}.card-meta{font-size:10px}.research>.container>.section-heading{margin-bottom:28px}.research{padding-bottom:55px}.closing h2{font-size:27px}.footer-links{grid-template-columns:1fr 1fr;gap:25px}.footer-bottom{gap:35px;align-items:flex-start;flex-direction:column}.preferences{width:100%;justify-content:space-between}.desktop-break{display:none}}
@media(prefers-reduced-motion:reduce){.result-memory,.travelling-memory,.fragment,.response-bubbles{display:none}.chat-bubble,.old-project,.new-project,.new-code,.center-logo,.orbit-node,.orbit-solid,.orbit-dashed{opacity:1;transform:none}}

/* Shared icon geometry; only dimensions vary by context. */
.orbit-node use{stroke-width:var(--icon-stroke)}.result-memory use,.travelling-memory use{stroke:none}.text-link .icon{width:12px;height:12px;vertical-align:-2px}.socials .icon{stroke-width:1.75}



@keyframes bubbleFade1{0%,100%{opacity:.16;transform:translateY(10px)}0%{opacity:.16;transform:translateY(10px)}12%,44%{opacity:1;transform:translateY(0)}60%,70%{opacity:.52;transform:translateY(0)}88%{opacity:0;transform:translateY(0)}94%{opacity:.04;transform:translateY(10px)}}
@keyframes bubbleFade2{0%,100%{opacity:.16;transform:translateY(10px)}4%{opacity:.16;transform:translateY(10px)}16%,44%{opacity:1;transform:translateY(0)}60%,70%{opacity:.52;transform:translateY(0)}88%{opacity:0;transform:translateY(0)}94%{opacity:.04;transform:translateY(10px)}}
@keyframes bubbleFade3{0%,100%{opacity:.16;transform:translateY(10px)}8%{opacity:.16;transform:translateY(10px)}20%,44%{opacity:1;transform:translateY(0)}60%,70%{opacity:.52;transform:translateY(0)}88%{opacity:0;transform:translateY(0)}94%{opacity:.04;transform:translateY(10px)}}
@keyframes bubbleFade4{0%,100%{opacity:.16;transform:translateY(10px)}12%{opacity:.16;transform:translateY(10px)}24%,44%{opacity:1;transform:translateY(0)}60%,70%{opacity:.52;transform:translateY(0)}88%{opacity:0;transform:translateY(0)}94%{opacity:.04;transform:translateY(10px)}}

/* Shared Memory token: identical geometry, typography and glow in every illustration. */
.memory-token text{font-size:16px;font-weight:600;fill:var(--on-primary)}.memory-token .memory-glow{fill:#fff;opacity:.65;filter:blur(13px);pointer-events:none}
.travelling-memory .memory-token text{font-size:16px}

/* Opaque page-colored backing occludes the old card, including beneath the visual fade. */
.project-occlusion{fill:var(--bg);stroke:none}
@media(min-width:761px) and (max-width:1000px){.nav-actions .github-star{display:none}}
