:root{--bg: #FAFAF9;--bg-alt: #FFFFFF;--bg-alt-2: #F3F4F6;--text: #111827;--text-muted: #6B7280;--accent: #4F46E5;--accent-soft: rgba(79, 70, 229, .1);--border: #E5E7EB;--font-display: "Fraunces", Georgia, serif;--font-body: "Space Grotesk", -apple-system, sans-serif}html[data-theme=dark]{--bg: #0F1117;--bg-alt: #171A22;--bg-alt-2: #1F232D;--text: #F3F4F6;--text-muted: #9CA3AF;--accent: #818CF8;--accent-soft: rgba(129, 140, 248, .14);--border: #272B35}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.6;overflow:hidden;transition:background .25s ease,color .25s ease;background-image:radial-gradient(circle,var(--border) .6px,transparent .6px);background-size:28px 28px}a{color:inherit;text-decoration:none}.wrap{max-width:1120px;margin:0 auto;padding:0 1.75rem}.page{height:100vh;display:flex;flex-direction:column}header.top{flex:0 0 auto;padding-top:1.5rem}.top-row{display:flex;justify-content:space-between;align-items:center}.top-row{gap:1.5rem}.wordmark{font-family:var(--font-body);font-weight:600;font-size:1.35rem;letter-spacing:-.02em;color:var(--text);line-height:1}.wordmark span{color:var(--accent)}.site-nav{display:flex;gap:1.75rem;margin-left:auto}.site-nav a{font-size:.95rem;color:var(--text-muted);padding:.35rem 0;border-bottom:1px solid transparent;transition:color .2s ease,border-color .2s ease}.site-nav a:hover{color:var(--text)}.site-nav a[aria-current=page]{color:var(--text);border-bottom-color:var(--accent)}.top-actions{display:flex;align-items:center;gap:.35rem}.icon-link{display:flex;align-items:center;justify-content:center;width:38px;height:38px;color:var(--text-muted);transition:color .2s ease}.icon-link:hover{color:var(--accent)}.icon-link svg{width:18px;height:18px}.page-lede{color:var(--text-muted);max-width:65ch;margin-bottom:2rem}.text-link{color:var(--accent);border-bottom:1px solid currentColor}.text-link:hover{opacity:.75}.books-note{color:var(--text-muted);font-size:.95rem;margin-bottom:2rem}.books-note a{color:var(--accent);border-bottom:1px solid currentColor}.books-note a:hover{opacity:.75}.book-cover{position:relative;box-shadow:0 1px 2px #0000001f,0 6px 16px #00000024}.book-cover:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to right,#00000038,#0000000f 3%,#ffffff1f 5%,#fff0 9%,#0000 85%,#0000000f)}.books-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}#theme-toggle{background:none;border:1px solid var(--border);border-radius:999px;width:38px;height:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);transition:border-color .2s ease,color .2s ease}#theme-toggle:hover{border-color:var(--accent);color:var(--accent)}#theme-toggle svg{width:17px;height:17px}html[data-theme=light] .icon-sun{display:block}html[data-theme=light] .icon-moon,html[data-theme=dark] .icon-sun{display:none}html[data-theme=dark] .icon-moon{display:block}main.hero-wrap{flex:1 1 auto;min-height:0;display:flex}.hero{flex:1;max-width:1120px;margin:0 auto;padding:0 1.75rem 2rem;display:grid;grid-template-columns:1.25fr 1fr;gap:3.5rem;align-items:stretch;min-height:0}.intro{height:100%;display:flex;flex-direction:column;justify-content:center;min-height:0}.intro h1{font-family:var(--font-display);font-weight:500;font-size:clamp(2.25rem,4.6vw,3.6rem);line-height:1.05;letter-spacing:-.01em;margin-bottom:1.1rem;opacity:0;animation:rise .7s ease forwards}.intro .role{font-family:var(--font-body);color:var(--accent);font-size:.98rem;font-weight:500;margin-bottom:1.35rem;opacity:0;animation:rise .7s ease .08s forwards}.intro p.bio{max-width:52ch;color:var(--text-muted);font-size:1rem;margin-bottom:2rem;opacity:0;animation:rise .7s ease .16s forwards}.brain-line{position:relative;white-space:nowrap}.brain-arrow{position:absolute;left:0;top:0;width:0;height:0;overflow:visible;max-width:none;color:var(--accent);pointer-events:none;visibility:hidden;transition:opacity .25s ease}.brain-arrow.is-ready{visibility:visible}.brain-arrow path{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.hero:has(.chat-console.expanded) .brain-arrow,.brain-arrow.is-waiting{opacity:0}@media (max-width: 800px){.brain-arrow{display:none}}.bio .edit-note{display:block;margin-top:.6rem;font-size:.82rem;font-style:italic;color:var(--text-muted);opacity:.75}.bio-link{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);transition:transform .2s ease,opacity .2s ease;cursor:pointer;display:inline-block}.bio-link:hover{opacity:.7;transform:scale(1.1)}nav.index{display:flex;flex-direction:column;gap:.75rem;opacity:0;animation:rise .7s ease .24s forwards}nav.index a{position:relative;width:fit-content;font-size:1rem;color:var(--text);padding-bottom:2px}nav.index a:after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0%;background:var(--accent);transition:width .25s ease}nav.index a:hover:after,nav.index a:focus-visible:after{width:100%}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.intro h1,.intro .role,.intro p.bio,nav.index{animation:none;opacity:1}}.side{height:100%;min-height:0;display:flex;flex-direction:column;gap:1rem;padding:1.5rem 0}.photo-frame{flex:1;min-height:0;border:1px solid var(--border);background:var(--bg-alt);overflow:hidden}.photo-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 0%;display:block}.chat-console{flex:0 0 120px;border:1px solid var(--border);background:var(--bg-alt);display:flex;flex-direction:column;cursor:pointer;transition:flex .4s cubic-bezier(.4,0,.2,1);overflow:hidden}.chat-console.expanded{flex:1;min-height:0}.photo-frame.hidden{display:none}.chat-console .cc-label{font:inherit;font-size:.82rem;color:var(--text-muted);background:none;border:none;text-align:left;width:100%;padding:.75rem 1rem .5rem;cursor:pointer;flex:0 0 auto}.chat-console .cc-label:hover{color:var(--accent)}.chat-console .cc-panel{display:none;flex:1;min-height:0;flex-direction:column}.chat-console.expanded .cc-panel{display:flex}.cc-suggestions{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}.chat-console .cc-chip{font-family:var(--font-body);font-size:.78rem;color:var(--accent);background:var(--accent-soft);border:1px solid transparent;border-radius:999px;padding:.3rem .75rem;cursor:pointer;transition:border-color .2s ease}.chat-console .cc-chip:hover{border-color:var(--accent)}.chat-console .cc-footer{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:0 1rem .75rem;flex:0 0 auto}.chat-console .cc-how{font-size:.72rem;color:var(--accent);white-space:nowrap}.chat-console .cc-how:hover{text-decoration:underline}.chat-console .cc-links{display:flex;gap:.9rem;align-items:baseline}.chat-console .cc-clear{font-family:var(--font-body);font-size:.72rem;color:var(--text-muted);padding:0;min-height:0}.chat-console .cc-clear:hover:not(:disabled){color:var(--accent)}.chat-console .cc-clear[hidden]{display:none}.chat-console .cc-log{padding:.6rem 1rem;font-family:Courier New,monospace;font-size:.82rem;color:var(--text-muted);flex:1;min-height:0;overflow-y:auto;display:none;overscroll-behavior:contain;scrollbar-gutter:stable}.chat-console.expanded .cc-log{display:block}.chat-console .cc-log .line{margin-bottom:.3rem;word-wrap:break-word}.chat-console .cc-log .line.bot{white-space:pre-wrap}.chat-console .cc-log .line.bot strong{color:var(--text);font-weight:600}.chat-console .cc-log .prompt-char{color:var(--accent);margin-right:.4rem}.chat-console form{display:none;border-top:1px solid var(--border);flex:0 0 auto}.chat-console.expanded form{display:flex}.chat-console input{flex:1;background:transparent;border:none;padding:.75rem 1rem;color:var(--text);font-family:Courier New,monospace;font-size:.82rem;outline:none}.chat-console input::placeholder{color:var(--text-muted);opacity:.7}.chat-console button{background:none;border:none;color:var(--accent);padding:0 1rem;cursor:pointer;font-family:var(--font-body);font-size:.82rem;transition:color .2s ease}.chat-console button:hover:not(:disabled){color:var(--text)}.chat-console button:disabled{opacity:.5;cursor:not-allowed}.chat-console .cc-status{font-size:.72rem;color:var(--text-muted);font-style:italic}.chat-console input:focus-visible{outline-offset:-2px}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width: 800px){html,body{overflow:auto}.page{height:auto;min-height:100vh}main.hero-wrap{display:block}.hero{grid-template-columns:1fr;padding-top:1.5rem;padding-bottom:2.5rem}.intro{height:auto}.side{height:auto;max-height:none}.photo-frame{aspect-ratio:4 / 5;flex:none}.chat-console{max-height:none}.chat-console.expanded{flex:none;height:70vh;height:70svh}.books-grid{grid-template-columns:repeat(3,1fr);gap:1.5rem}}@media (max-width: 560px){.wrap,.hero{padding-left:1rem;padding-right:1rem}header.top{padding-top:1rem}.top-row{gap:1rem}.top-row{flex-wrap:wrap;row-gap:.6rem}.site-nav{order:3;width:100%;margin-left:0;gap:1.25rem;overflow-x:auto;scrollbar-width:none}.site-nav::-webkit-scrollbar{display:none}.top-actions{margin-left:auto}.hero{gap:2rem;padding-top:1.75rem}.intro p.bio{margin-bottom:.5rem}.side{padding-top:0}.photo-frame{width:100%;max-width:360px;margin:0 auto}.chat-console input{font-size:16px}.chat-console button{font-size:.95rem;padding:0 1.1rem;min-height:44px}.books-grid{grid-template-columns:repeat(2,1fr);gap:1.25rem 1rem}}.about-courses{max-width:760px;margin-top:2rem}.about-courses h2{font-family:var(--font-display);font-weight:500;font-size:1.3rem;margin-bottom:.9rem}.about-courses ul{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem}.about-courses li{font-size:.88rem;color:var(--text);background:var(--bg-alt);border:1px solid var(--border);padding:.35rem .8rem;border-radius:999px}.prose{max-width:680px}.prose p{color:var(--text-muted);margin-bottom:1rem;line-height:1.7}.xp-main{padding:2.5rem 0 4rem;flex:1}.xp-title{font-family:var(--font-display);font-weight:500;font-size:clamp(2rem,3vw,2.8rem);line-height:1.2;margin-bottom:2rem}.xp-list{list-style:none;max-width:760px}.xp-entry{padding:1.75rem 0;border-top:1px solid var(--border)}.xp-entry:last-child{border-bottom:1px solid var(--border)}.xp-company{font-family:var(--font-display);font-weight:500;font-size:1.35rem;line-height:1.25;margin-bottom:.2rem}.xp-role{margin-top:1rem}.xp-role-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.xp-role h3{font-size:1rem;font-weight:600}.xp-dates{font-size:.88rem;color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.xp-meta{font-size:.88rem;color:var(--text-muted);margin-bottom:.55rem}.xp-bullets{list-style:none;display:grid;gap:.4rem}.xp-bullets li{position:relative;padding-left:1.1rem;color:var(--text-muted);font-size:.95rem;line-height:1.6}.xp-bullets li:before{content:"–";position:absolute;left:0;color:var(--text-muted)}.xp-stack{font-size:.85rem;color:var(--text-muted);margin-top:.6rem}.xp-section-title{font-family:var(--font-display);font-weight:500;font-size:1.6rem;margin:3rem 0 1rem}.xp-skills{max-width:760px}.xp-skills dl div{display:grid;grid-template-columns:9.5rem 1fr;gap:1rem;padding:.6rem 0;border-top:1px solid var(--border)}.xp-skills dl div:last-child{border-bottom:1px solid var(--border)}.xp-skills dt{font-weight:600;font-size:.95rem}.xp-skills dd{color:var(--text-muted);font-size:.95rem}.xp-photos{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:1.4rem}.xp-photos figure{margin:0}.xp-photos img{display:block;width:100%;aspect-ratio:11 / 10;object-fit:cover}.xp-photos figcaption{margin-top:.4rem;font-size:.8rem;color:var(--text-muted)}@media (max-width: 560px){.xp-main{padding-top:1.5rem}.xp-photos{grid-template-columns:1fr}.xp-entry{padding:1.4rem 0}.xp-skills dl div{grid-template-columns:1fr;gap:.15rem}}
