:root{color-scheme:dark;--bg:#070b17;--surface:#080e1c;--line:#252d3e;--text:#eef1f7;--muted:#a3adbe;--mint:#4334eb;--mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:radial-gradient(ellipse at 85% 20%,#4334eb26,transparent 40%),var(--bg);color:var(--text);font:16px/1.65 Arial,Helvetica,sans-serif}.shell{max-width:1040px;margin:auto;padding:0 28px}a{color:inherit;text-decoration:none}a:hover{color:var(--mint)}a:focus-visible,summary:focus-visible{outline:2px solid var(--mint);outline-offset:6px}.skip{position:fixed;top:8px;left:8px;transform:translateY(-160%);z-index:5;background:var(--mint);color:var(--bg);padding:10px}.skip:focus{transform:none}header{display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line);padding:26px 0;margin-bottom:24px}.brand{font-weight:750;font-size:26px;letter-spacing:-1px}.brand span,.accent{color:var(--mint)}nav{display:flex;gap:24px;font-size:14px}nav a{color:var(--muted);padding:8px 0}nav a.active{color:var(--mint)}.edition{margin-left:auto;border:1px solid var(--line);padding:2px 8px;font:12px/1.6 var(--mono);color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line)}.intro{padding:34px 38px 36px;border-color:#39336a;box-shadow:0 0 34px #4334eb14}.eyebrow{font:12px/1.6 var(--mono);letter-spacing:.09em;color:var(--muted)}h1{font-size:clamp(2.8rem,7.2vw,5rem);font-weight:600;line-height:1.06;letter-spacing:-.055em;margin:28px 0 30px}h2{font-size:28px;line-height:1.25;letter-spacing:-.03em;margin:0}h3{font-size:21px;line-height:1.35;letter-spacing:-.02em;margin:13px 0}p{margin:0 0 12px}.intro-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}.role{font:16px/1.7 var(--mono);color:var(--mint)}.muted,.placeholder{color:var(--muted)}.intro-bottom p:last-child{margin:0}.button{display:inline-flex;padding:11px 18px;border:1px solid #4334eb;font:14px/1.5 var(--mono);white-space:nowrap;transition:background .18s,transform .18s}.primary{background:#4334eb;color:#fff}.primary:hover{background:#3628c9;color:#fff;transform:translateY(-2px)}section{scroll-margin-top:24px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:44px 0 18px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project{overflow:hidden;transition:border-color .2s}.project:hover{border-color:#665ccf}.image-wrap{position:relative;border-bottom:1px solid var(--line);background:#10192a;overflow:hidden}.image-wrap img{width:100%;height:auto;display:block;transition:transform .3s}.project:hover img{transform:scale(1.025)}.image-label{position:absolute;bottom:14px;left:14px;font:10px/1.5 var(--mono);letter-spacing:.08em;border:1px solid #536371;background:#080e1ce6;padding:4px 7px;color:#c1cad6}.project-copy{padding:22px}.project-meta{display:flex;justify-content:space-between;font:12px/1.6 var(--mono);color:var(--mint)}.project-copy>p{color:var(--muted);font-size:16px}.project details{margin-top:24px;border-top:1px solid var(--line);padding-top:15px;font-size:14px}summary{cursor:pointer;color:var(--text);padding:2px 0}summary:hover{color:var(--mint)}.detail{padding-top:16px;color:var(--muted)}.missing{font:12px/1.6 var(--mono);color:var(--muted)}.about,.contact{padding:34px 38px;display:grid;grid-template-columns:1fr 1.45fr;gap:50px;margin-top:24px}.about{margin-top:44px}.about h2,.contact h2{margin:12px 0 20px}.about-note{border-top:1px solid var(--line);padding-top:18px;margin-top:24px}.about-note p{margin:6px 0 0}.contact{border-color:#39336a}.contact-list{margin:0;padding:0;list-style:none;align-self:center}.contact-list li{padding:12px 0;display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);font-size:14px}.contact-list li:first-child{padding-top:0}footer{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font:12px/1.6 var(--mono);padding:28px 0 36px}@media(max-width:760px){.project-grid{grid-template-columns:1fr}.image-wrap{max-height:330px}.image-wrap img{height:330px;object-fit:cover}.intro-bottom{align-items:flex-start;flex-direction:column}.about,.contact{grid-template-columns:1fr;gap:18px}.section-heading{align-items:flex-start;flex-direction:column}.edition{display:none}}@media(max-width:440px){.shell{padding:0 18px}header{gap:24px;padding:19px 0}nav{gap:20px}.intro,.about,.contact{padding:26px 24px}h1{font-size:2.8rem}.project-copy{padding:22px}footer{flex-direction:column;gap:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

[hidden]{display:none!important}.cursor-grid{position:fixed;inset:0;pointer-events:none;z-index:0;opacity:0;background-repeat:no-repeat;background-size:100% 100%;mask-image:radial-gradient(circle 138px at var(--cursor-x,50%) var(--cursor-y,50%),#000 0%,rgba(0,0,0,.75) 25%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.08) 80%,transparent 100%);-webkit-mask-image:radial-gradient(circle 138px at var(--cursor-x,50%) var(--cursor-y,50%),#000 0%,rgba(0,0,0,.75) 25%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.08) 80%,transparent 100%);transition:opacity 1.5s ease-out}.cursor-grid.visible{opacity:1;transition-duration:.3s}.shell{position:relative;z-index:1}@media(prefers-reduced-motion:reduce),(hover:none){.cursor-grid{display:none}}

.cursor-trail{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}.cursor-trail img{position:absolute;left:0;top:0;width:12px;height:19px;will-change:transform}@media(prefers-reduced-motion:reduce),(hover:none){.cursor-trail{display:none}}


/* Lighter blue text preserves readability on dark surfaces. */
.brand span,.accent,.role,.project-meta,nav a.active,a:hover,summary:hover{color:#a49bff}.primary,.primary:hover{color:#fff}

.contact-list a{color:#a49bff;overflow-wrap:anywhere;text-align:right}.contact-list li>span{flex-shrink:0}@media(max-width:440px){.contact-list li{flex-wrap:wrap}.contact-list a{text-align:left}}


.polygon-base{position:fixed;inset:0;z-index:0;pointer-events:none;background-repeat:no-repeat;background-size:100% 100%;opacity:.22}


.cursor-grid{filter:blur(1.5px);transition:opacity 1.5s ease-out,filter .45s ease}.cursor-grid.visible{opacity:.9775;filter:blur(2.5px)}.cursor-grid.visible.resting{animation:polygon-pulse 3.6s ease-in-out infinite;filter:blur(1.5px)}@keyframes polygon-pulse{0%,100%{opacity:.9775}50%{opacity:.483}}@media(prefers-reduced-motion:reduce){.cursor-grid{animation:none!important}}


.article-link{color:#a49bff;text-decoration:underline;text-underline-offset:4px}.blog-article{padding:38px;max-width:850px;margin:0 auto}.blog-article h1{font-size:clamp(2.5rem,6vw,4.5rem)}.blog-lead{font-size:22px}.blog-article section{margin-top:40px}.blog-article h2{margin-bottom:20px}.blog-article p{margin-bottom:20px}.blog-article pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:18px;background:#10162a;border:1px solid var(--line);font:14px/1.7 var(--mono)}.blog-article code{overflow-wrap:anywhere}.flag{border-left:3px solid #4334eb!important;color:#b6aeff}.image-missing{margin:24px 0;padding:24px;border:1px dashed #474268;color:var(--muted);font-size:14px}.article-contents{flex-wrap:wrap;padding:16px 0;border-block:1px solid var(--line);margin:28px 0}.blog-article blockquote{border-left:2px solid #4334eb;margin:24px 0;padding-left:20px}@media(max-width:440px){.blog-article{padding:24px}.blog-article pre{padding:12px}header{flex-wrap:wrap}}

.article-figure{margin:28px 0}.article-figure a{display:block;margin:12px 0}.article-figure img{display:block;width:100%;height:auto;border:1px solid var(--line);background:#fff}.article-figure figcaption{font-size:14px;color:var(--muted);line-height:1.6}

#blog>.project-copy+.project-copy{margin-top:16px}

.qwen-article{max-width:840px}.qwen-article p,.qwen-article li{line-height:1.85}.qwen-article h2{margin:40px 0 20px}.qwen-article hr{border:0;border-top:1px solid var(--line);margin:36px 0}.qwen-article blockquote{font-size:22px;line-height:1.55;color:#d5d0ff;padding:20px 24px;background:#4334eb0c}.comparison{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:32px 0}.comparison>div{padding:22px;border:1px solid #39336a;background:#10152a}.comparison h3{margin:12px 0}.comparison p{margin:0;font-size:15px}.evidence-tag{font:12px/1.6 var(--mono);color:#a49bff}@media(max-width:650px){.comparison{grid-template-columns:1fr}.qwen-article blockquote{font-size:19px;padding:16px}}

.qwen-article .wide-evidence{width:min(1100px,calc(100vw - 56px));margin-left:50%;transform:translateX(-50%)}.thinking-gallery{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.thinking-gallery .article-figure{margin:0}.evidence img{background:#090909;object-fit:contain}.evidence.narrow{max-width:600px;margin:28px auto;padding:16px;background:#10152a;border:1px solid var(--line)}.evidence.narrow img{width:auto;max-width:100%;margin:auto}.evidence.supporting{max-width:740px;margin:28px auto}.evidence-note{font-size:14px}@media(max-width:700px){.thinking-gallery{grid-template-columns:1fr}.qwen-article .wide-evidence{width:100%;margin-left:0;transform:none}}

/* Keep the full-size evidence inside the expanded article panel. */
.qwen-shell{max-width:1234px}.qwen-article{max-width:1178px}.qwen-article>p,.qwen-article>h1,.qwen-article>h2,.qwen-article>h3,.qwen-article>pre,.qwen-article>blockquote,.qwen-article>ul,.qwen-article>hr,.qwen-article>.comparison{max-width:760px;margin-left:auto;margin-right:auto}.qwen-article .wide-evidence{width:100%;max-width:1100px;margin-left:auto;margin-right:auto;transform:none}.thinking-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.thinking-gallery>figure{min-width:0}a,summary{transition:color .3s ease}a span{transition:color .3s ease}.button{transition:color .3s ease,background .3s ease,transform .18s ease}@media(prefers-reduced-motion:reduce){a,summary,a span,.button{transition:none}}


.thinking-gallery.single-evidence{grid-template-columns:minmax(0,1fr);max-width:959px}

/* Matching arrow and I-beam cursors on desktop. */
@media(hover:hover) and (pointer:fine){body{cursor:url("cursor.svg") 1 1,auto}p,h1,h2,h3,li,figcaption,blockquote,pre,code,.eyebrow,.role,.project-meta{cursor:url("cursor-text.svg") 6 9,text}a,a *,button,summary{cursor:url("cursor.svg") 1 1,pointer}}

@media(hover:hover) and (pointer:fine){body:has(:is(p,h1,h2,h3,li,figcaption,blockquote,pre,code,.eyebrow,.role,.project-meta):hover):not(:has(:is(a,button,summary):hover)) .cursor-trail{display:none!important}}

.typing-dot{animation:typing-blink 1.2s step-end infinite}@keyframes typing-blink{0%,100%{opacity:1}50%{opacity:0}}@media(prefers-reduced-motion:reduce){.typing-dot{animation:none}}

/* Supplied logo inherits the same fading color as navigation links. */
.brand{display:inline-flex;align-items:center;flex-shrink:0;color:var(--text)}.brand-logo{display:block;width:52px;height:52px;background:currentColor;mask:url("brand-logo-v2.svg") center/contain no-repeat;-webkit-mask:url("brand-logo-v2.svg") center/contain no-repeat;color:inherit!important}.brand:hover{color:#a49bff}@media(max-width:440px){.brand-logo{width:44px;height:44px}}

.brand-logo-original{display:block;width:59.8px;height:59.8px;object-fit:contain;filter:brightness(1) sepia(0) saturate(1) hue-rotate(0deg);transition:filter .3s ease;background:none;mask:none;-webkit-mask:none}.brand:hover .brand-logo-original,.brand:focus-visible .brand-logo-original{filter:brightness(.8) sepia(1) saturate(3) hue-rotate(205deg)}@media(max-width:440px){.brand-logo-original{width:50.6px;height:50.6px}}@media(prefers-reduced-motion:reduce){.brand-logo-original{transition:none}}

/* Fade between two fixed colors rather than animating the hue through blue. */
.brand{position:relative}.brand-logo-original{filter:none;transition:opacity .3s ease}.brand:hover .brand-logo-original,.brand:focus-visible .brand-logo-original{filter:none;opacity:0}.brand-logo-hover{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;filter:brightness(.8) sepia(1) saturate(3) hue-rotate(205deg);opacity:0;transition:opacity .3s ease}.brand:hover .brand-logo-hover,.brand:focus-visible .brand-logo-hover{opacity:1}@media(prefers-reduced-motion:reduce){.brand-logo-original,.brand-logo-hover{transition:none}}

/* White logo details map exactly to the shared link hover color #a49bff. */
.brand-logo-hover{filter:url(#brand-link-purple)}

.brand-filter-definitions{position:absolute;pointer-events:none}

/* Quote panels follow the text width, aligned with the article column. */
.qwen-article>blockquote{width:fit-content;max-width:min(100%,760px);margin-left:max(0px,calc((100% - 760px)/2));margin-right:auto;font-size:19.8px;padding:7.56px 11.34px;border-radius:10px;background-color:#4334eb0c;background-image:radial-gradient(circle,rgba(164,155,255,.01) .7px,transparent .8px);background-size:10px 10px}
@media(max-width:650px){.qwen-article>blockquote{font-size:17.1px}}
.blog-article blockquote>p{margin:0}
