:root{--cream: #FFFFFF;--linen: #FFFFFF;--sage: #2F6FED;--sage-light: #DDE8FF;--sage-dark: #174A9C;--rose: #E8873A;--rose-ink: #A94F12;--rose-light: #F6D7BD;--slate: #66758C;--slate-light: #D4DCE8;--warm-gray: #888888;--warm-gray-dk:#444444;--ink: #111111;--ink-soft: #555555;--border: rgba(47, 111, 237, 0.12);--border-med: rgba(47, 111, 237, 0.22);--glass-surface: rgba(255, 255, 255, 0.54);--glass-surface-soft: rgba(255, 255, 255, 0.36);--glass-surface-strong: rgba(255, 255, 255, 0.72);--glass-solid: rgba(255, 255, 255, 0.94);--glass-control: rgba(255, 255, 255, 0.42);--glass-control-solid: rgba(255, 255, 255, 0.9);--glass-border: rgba(255, 255, 255, 0.68);--glass-border-med: rgba(47, 111, 237, 0.24);--glass-blur: 18px;--surface-radius: 8px;--control-radius: 6px;--glass-shadow: 0 18px 48px rgba(47, 111, 237, 0.10), 0 4px 18px rgba(102, 117, 140, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.74);--glass-shadow-soft: 0 10px 30px rgba(47, 111, 237, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.62);--glass-shadow-hover: 0 22px 56px rgba(47, 111, 237, 0.14), 0 8px 22px rgba(102, 117, 140, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.82);--glass-highlight: linear-gradient(135deg, rgba(255, 255, 255, 0.66), rgba(255, 255, 255, 0.24))}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scrollbar-gutter:stable;min-height:100%;background:var(--cream)}html,body{overflow-x:hidden}body{font-family:"Helvetica Neue", Arial, sans-serif;min-height:100vh;background:linear-gradient(125deg, rgba(221,232,255,0.42) 0%, rgba(221,232,255,0.1) 30%, rgba(221,232,255,0) 56%),linear-gradient(235deg, rgba(246,215,189,0.3) 0%, rgba(246,215,189,0.08) 32%, rgba(246,215,189,0) 58%),linear-gradient(180deg, #fff 0%, #fff 100%);background-attachment:fixed;color:var(--ink);font-size:16px;line-height:1.68;font-weight:400}::selection{background:rgba(246,215,189,0.78);color:var(--ink)}@media (max-width: 480px){body{font-size:15px;line-height:1.6}}strong,b{font-weight:700}a{color:inherit;text-decoration:none}em{font-style:italic}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid rgba(47,111,237,0.58);outline-offset:3px}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:0.001ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;transition-duration:0.001ms !important}}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh;max-width:1300px;width:100%;margin:0 auto;background:transparent}@media (max-width: 820px){.layout{display:block;min-height:0;max-width:none}}.sidebar{position:fixed;top:0;left:max(0px, calc((100vw - 1300px) / 2));width:250px;height:100vh;margin:0;background:var(--cream);border:0;border-right:1px solid rgba(47,111,237,0.12);border-radius:0;box-shadow:none;display:flex;flex-direction:column;padding:4rem 2rem 3rem;overflow-y:auto;overscroll-behavior:contain;z-index:100}.sidebar-mobile-header,.sidebar-menu{display:contents}.sidebar-toggle{display:none}.sidebar-name{font-size:1.5rem;font-weight:500;letter-spacing:0.01em;line-height:1.25;color:var(--ink);margin-bottom:0.35rem}.sidebar-role{font-size:11px;letter-spacing:0.12em;color:var(--warm-gray);font-weight:400;margin-bottom:2.5rem}.sidebar-divider{width:44px;height:1px;background:linear-gradient(90deg, var(--rose), rgba(232,135,58,0));margin-bottom:2.5rem}nav{flex:0 0 auto}#nav a{display:block;font-size:11px;letter-spacing:0.1em;text-transform:uppercase;font-weight:400;color:var(--ink-soft);padding:0.55rem 0.75rem;margin:0 -0.75rem;border:1px solid transparent;border-radius:var(--control-radius);transition:color 0.2s, border-color 0.2s, background 0.2s, transform 0.2s}#nav a:hover,#nav a:focus-visible,#nav a.active{color:var(--ink);background:rgba(221,232,255,0.36);border-color:rgba(47,111,237,0.16);transform:translateX(2px);text-decoration:none}#nav a.active{color:var(--sage);font-weight:500}.sidebar-footer{margin-top:3rem;font-size:11px;color:var(--warm-gray);letter-spacing:0.06em}.sidebar-links{display:flex;flex-wrap:nowrap;gap:0.45rem;margin-bottom:1.5rem}.sidebar-links a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 30px;position:relative;color:var(--slate);transition:color 0.2s, background 0.2s, transform 0.2s;padding:0;border:1px solid transparent;border-radius:var(--control-radius)}.sidebar-links svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.sidebar-links a:hover,.sidebar-links a:focus-visible{color:var(--ink);background:rgba(221,232,255,0.32);transform:translateY(-1px);text-decoration:none}.sidebar-links a::after{content:attr(data-label);position:absolute;left:50%;top:calc(100% + 0.45rem);padding:0.2rem 0.35rem;border-radius:var(--control-radius);background:var(--ink);color:var(--cream);font-size:11px;line-height:1;opacity:0;pointer-events:none;transform:translate(-50%, -0.25rem);transition:opacity 0.2s, transform 0.2s;white-space:nowrap;z-index:2}.sidebar-links a:hover::after,.sidebar-links a:focus-visible::after{opacity:1;transform:translate(-50%, 0)}.sidebar-stats-link{display:inline-block;margin-top:0.8rem;font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--slate);border-bottom:1px solid transparent;transition:color 0.2s, border-color 0.2s}.sidebar-site-footer{margin-top:1.5rem;color:var(--warm-gray);font-size:11px;letter-spacing:0.06em}.sidebar-site-footer a{display:inline-block;margin-top:0.8rem;font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--slate);border-bottom:1px solid transparent;transition:color 0.2s, border-color 0.2s}.sidebar-site-footer a:hover,.sidebar-site-footer a.active{color:var(--sage);border-bottom-color:var(--sage);text-decoration:none}.sidebar-stats-link:hover,.sidebar-stats-link.active{color:var(--sage);border-bottom-color:var(--sage);text-decoration:none}@media (max-width: 820px){.sidebar{position:sticky;top:max(0.65rem, env(safe-area-inset-top));left:auto;width:auto;height:auto;min-height:0;margin:max(0.65rem, env(safe-area-inset-top)) max(0.75rem, env(safe-area-inset-right)) 0 max(0.75rem, env(safe-area-inset-left));padding:0.75rem 1rem;overflow:visible;overscroll-behavior:auto;border:1px solid rgba(47,111,237,0.12);border-radius:var(--surface-radius);background:var(--cream);box-shadow:none}.sidebar-mobile-header{display:flex;align-items:center;gap:1rem;justify-content:space-between}.sidebar-menu{position:absolute;top:calc(100% + 0.55rem);right:0;width:min(232px, 100%);max-height:calc(100vh - 5.5rem);max-height:calc(100svh - 5.5rem);overflow-y:auto;display:block;padding:0.95rem;border:1px solid rgba(47,111,237,0.12);background:var(--cream);border-radius:var(--surface-radius);box-shadow:0 8px 20px rgba(47,111,237,0.06);opacity:0;pointer-events:none;transform:translate(0.75rem, -0.65rem);transition:opacity 0.2s, transform 0.2s}.sidebar.is-open .sidebar-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.sidebar-name{font-size:1.25rem;margin-bottom:0.1rem}.sidebar-role{margin-bottom:0;font-size:11px;letter-spacing:0.09em;white-space:nowrap}.sidebar-divider{margin-bottom:0.9rem}nav{flex:none}#nav{display:block;margin-bottom:1.1rem}#nav a{align-items:center;display:flex;min-height:44px;padding:0.55rem 0.5rem;font-size:11px;line-height:1.2}.sidebar-footer{margin-top:0;font-size:11px}.sidebar-links{display:flex;flex-wrap:nowrap;gap:0.35rem;margin-bottom:0.9rem}.sidebar-links a{width:36px;flex-basis:36px;min-height:36px;height:36px}.sidebar-links svg{width:16px;height:16px}.sidebar-stats-link{margin-top:0.4rem}.sidebar-site-footer{display:none}.sidebar-toggle{width:44px;height:44px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;flex:0 0 auto;padding:0;border:1px solid var(--glass-border-med);border-radius:var(--control-radius);background:var(--glass-control);color:var(--slate);cursor:pointer;transition:border-color 0.2s, color 0.2s}.sidebar-toggle:hover,.sidebar-toggle:focus-visible,.sidebar.is-open .sidebar-toggle{color:var(--rose-ink);border-color:var(--rose)}.sidebar-toggle span{width:16px;height:1px;background:currentColor;transition:transform 0.2s, opacity 0.2s}.sidebar.is-open .sidebar-toggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}.sidebar.is-open .sidebar-toggle span:nth-child(2){opacity:0}.sidebar.is-open .sidebar-toggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}}@media (max-width: 640px){.sidebar-name{font-size:1.125rem;line-height:1.25}}@media (max-width: 420px){.sidebar{width:auto;margin-right:max(0.5rem, env(safe-area-inset-right));margin-left:max(0.5rem, env(safe-area-inset-left));padding:0.7rem 0.9rem}.sidebar-mobile-header{gap:0.75rem}.sidebar-menu{left:0;right:0;width:100%}.sidebar-role{line-height:1.35}}.about-grid{display:grid;grid-template-columns:1fr 200px;gap:2.5rem;align-items:start;width:100%;font-size:16px;padding:2rem;overflow:hidden}.section-header.section-header--home{margin-bottom:1.5rem;padding-bottom:1.5rem}.section-deck{max-width:680px;margin-top:1rem;color:var(--ink-soft);font-size:16px;line-height:1.62}.about-photo{width:200px;height:240px;background:rgba(255,255,255,0.28);display:flex;align-items:center;justify-content:center;border:1px solid var(--glass-border);border-radius:var(--surface-radius);margin:0;overflow:hidden}.about-photo img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit}.about-text p{color:var(--ink-soft);margin-bottom:1.2rem}.about-text p:last-child{margin-bottom:0}.about-proof-path{display:flex;flex-wrap:wrap;gap:0.75rem;margin:1.5rem 0}.about-proof-link{display:inline-flex;align-items:center;min-height:2rem;padding:0.35rem 0.75rem;border:1px solid var(--glass-border-med);border-radius:var(--control-radius);background:var(--glass-control);color:var(--ink-soft);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-align:center;overflow-wrap:anywhere;transition:color 0.2s, border-color 0.2s, background 0.2s, transform 0.2s}.about-proof-link-primary{color:var(--sage-dark);border-color:rgba(47,111,237,0.34);background:rgba(221,232,255,0.46)}.about-proof-link:hover,.about-proof-link:focus-visible{color:var(--ink);border-color:rgba(232,135,58,0.46);background:var(--glass-surface-strong);transform:translateY(-1px);text-decoration:none}.about-nav:visited{color:var(--ink-soft) !important}.about-nav{color:var(--sage);cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.about-nav:hover{color:var(--ink)}.about-footer{display:none;margin-top:3rem;padding-top:2rem;border-top:1px solid rgba(255,255,255,0.62);color:var(--warm-gray);font-size:11px;letter-spacing:0.06em}.about-footer a{display:inline-block;margin-top:0.9rem;font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--slate);border-bottom:1px solid transparent;transition:color 0.2s, border-color 0.2s}.about-footer a:hover{color:var(--sage);border-bottom-color:var(--sage);text-decoration:none}@media (max-width: 700px){.section-header.section-header--home{margin-bottom:1rem;padding-bottom:1rem}.section-deck{margin-top:0.75rem;font-size:15px;line-height:1.58}.about-grid{grid-template-columns:1fr;gap:1.5rem;font-size:15px;padding:1.15rem}.about-photo{width:min(120px, 40vw);height:auto;aspect-ratio:5 / 6;order:-1;justify-self:center}.about-proof-path{gap:0.5rem;margin:1rem 0 1.5rem}.about-proof-link{flex:1 1 calc(50% - 0.5rem);justify-content:center;min-height:44px;padding:0.45rem 0.7rem;letter-spacing:0.05em}.about-footer{display:block;margin-top:2.25rem;padding-top:1.5rem;font-size:11px}.about-text p{font-size:15px;line-height:1.6}.about-footer a{min-height:44px}}.section{display:none;width:100%;max-width:900px;margin:0;animation:fadeIn 0.35s ease}.section.active{display:block}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.section-header{margin-bottom:3rem;padding-bottom:1.25rem;border-bottom:1px solid rgba(255,255,255,0.62)}.section-eyebrow{font-size:11px;letter-spacing:0.18em;text-transform:uppercase;color:var(--rose-ink);font-weight:400;margin-bottom:0.6rem}.section-title{font-size:2.4rem;font-weight:300;letter-spacing:0;color:var(--ink);line-height:1.1;text-shadow:0 1px 0 rgba(255,255,255,0.62);overflow-wrap:anywhere;text-wrap:balance}@media (max-width: 820px){.section-header{margin-bottom:1.5rem;padding-bottom:0.8rem}.section-title{font-size:1.55rem}.section-eyebrow{font-size:11px;margin-bottom:0.4rem}}@media (max-width: 640px){.section-title{font-size:1.45rem}}.education-timeline{position:relative;border-top:1px solid var(--border-med);border-bottom:1px solid var(--border)}.edu-item{position:relative;display:grid;grid-template-columns:minmax(7rem, 9rem) minmax(0, 1fr);gap:0 2.25rem;padding:1.55rem 0;border-bottom:1px solid var(--border)}.edu-item:last-child{border-bottom:0}.edu-year{font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--rose-ink);padding-top:0.18rem;line-height:1.3}.edu-content{position:relative;min-width:0;padding-left:1.4rem;border-left:1px solid var(--border-med)}.edu-content::before{content:"";position:absolute;top:0.3rem;left:0;width:0.55rem;height:0.55rem;border-radius:50%;background:var(--cream);border:2px solid var(--rose);transform:translateX(-50%)}.edu-degree{font-size:1.25rem;font-weight:400;color:var(--ink);line-height:1.35;margin:0 0 0.35rem;overflow-wrap:anywhere;text-wrap:pretty}.edu-institution{font-size:11px;letter-spacing:0.08em;color:var(--sage-dark);text-transform:uppercase;margin-bottom:0.85rem;overflow-wrap:anywhere}.edu-desc{font-size:16px;color:var(--ink-soft);line-height:1.65;max-width:46rem}.edu-desc p{margin:0.35rem 0 0}.edu-desc p:first-child{margin-top:0}.edu-label{display:inline-block;min-width:5.75rem;font-size:11px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--warm-gray-dk)}.edu-footnote{margin:0.9rem 0 0;font-size:11px;color:var(--warm-gray)}@media (max-width: 640px){.education-timeline{border-top-color:var(--border)}.edu-item{grid-template-columns:1fr;gap:0.75rem;padding:1.25rem 0}.edu-year{padding-top:0;padding-left:1.05rem}.edu-content{padding-left:1.05rem}.edu-degree{font-size:1.125rem;line-height:1.35}.edu-desc{font-size:15px;line-height:1.6}.edu-label{display:block;margin-bottom:0.1rem}}.publications-toolbar{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:0.75rem 0 1rem;padding-bottom:0.85rem;border-bottom:1px solid var(--border)}.pub-note{font-size:13px;color:var(--warm-gray-dk);font-style:italic;line-height:1.45}.pub-count{font-size:11px;line-height:1;letter-spacing:0.08em;text-transform:uppercase;color:var(--warm-gray);white-space:nowrap}.pub-topic-filter{display:flex;flex-wrap:wrap;gap:0.45rem;margin-bottom:1.65rem}.pub-list{border-top:1px solid var(--border-med)}.pub-item{position:relative;display:grid;grid-template-columns:minmax(0, 1fr) auto;gap:1rem 1.5rem;padding:1.45rem 0;border-bottom:1px solid var(--border);transition:background-color 0.2s ease, border-color 0.2s ease}.pub-item.is-hidden{display:none}.pub-item:hover{border-color:var(--border-med);background:rgba(221,232,255,0.18)}.pub-main{min-width:0}.pub-highlight{animation:pub-focus 1.45s ease-out forwards}.pub-title{max-width:66ch;font-size:1.25rem;font-weight:400;color:var(--ink);margin:0 0 0.45rem;line-height:1.3;text-wrap:pretty;overflow-wrap:anywhere}.pub-authors{max-width:75ch;font-size:15px;color:var(--ink-soft);margin-bottom:0.25rem;line-height:1.55}.pub-authors .self,.pub-authors strong{font-weight:700;color:var(--ink)}.pub-authors sup{font-size:0.72em;line-height:0}.pub-venue{font-size:15px;font-style:normal;color:var(--sage-dark);margin-bottom:0.45rem;line-height:1.55}.pub-venue strong{color:var(--rose-ink)}.pub-topics{display:flex;flex-wrap:wrap;gap:0.45rem;margin-top:0.85rem}.pub-topic-pill{display:inline-flex;align-items:center;justify-content:center;min-height:1.85rem;padding:0.24rem 0.58rem;border:1px solid var(--border-med);border-radius:var(--control-radius);background:rgba(255,255,255,0.68);color:var(--ink-soft);font-family:inherit;font-size:11px;font-weight:500;letter-spacing:0.08em;line-height:1;text-align:center;overflow-wrap:anywhere;text-transform:uppercase;cursor:pointer;transition:background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease}.pub-topics .pub-topic-pill{min-height:1.5rem;padding:0.16rem 0.46rem;border-color:rgba(47,111,237,0.16);background:transparent;font-size:11px;letter-spacing:0.06em;text-transform:uppercase}.pub-topic-pill:hover,.pub-topic-pill.active{background:rgba(246,215,189,0.3);border-color:var(--rose);color:var(--ink);transform:translateY(-1px)}.pub-topic-pill:active,.pub-tag:active{transform:translateY(0)}.pub-actions{display:flex;align-items:flex-start;justify-content:flex-end}.pub-tag{display:inline-flex;align-items:center;justify-content:center;min-height:1.75rem;padding:0.24rem 0.58rem;border:1px solid rgba(47,111,237,0.18);border-radius:var(--control-radius);background:var(--cream);color:var(--sage-dark);font-size:11px;font-weight:500;letter-spacing:0.08em;line-height:1;text-align:center;overflow-wrap:anywhere;text-transform:uppercase;transition:background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease, transform 0.2s ease}.pub-tag:hover{background:rgba(221,232,255,0.62);border-color:var(--sage);color:var(--sage-dark);transform:translateY(-1px)}.pub-empty{padding:1.5rem 0;border-bottom:1px solid var(--border);color:var(--ink-soft);font-size:16px}.pub-empty[hidden]{display:none}@media (max-width: 640px){.publications-toolbar{display:block;margin-top:0.45rem}.pub-note,.pub-empty{font-size:13px;line-height:1.45}.pub-count{margin-top:0.45rem}.pub-topic-filter{gap:0.4rem;margin-bottom:1.2rem}.pub-topic-filter .pub-topic-pill{flex:0 1 auto;min-height:1.85rem;padding:0.24rem 0.54rem;font-size:11px;line-height:1.1}.pub-tag{min-height:1.85rem;padding:0.28rem 0.58rem}.pub-item{grid-template-columns:1fr;gap:0.9rem;padding:1.25rem 0}.pub-title{font-size:1rem;line-height:1.38}.pub-authors,.pub-venue{font-size:12px;line-height:1.5}.pub-topics{gap:0.4rem;margin-top:0.75rem}.pub-topics .pub-topic-pill{min-height:1.5rem;padding:0.18rem 0.46rem;font-size:11px;line-height:1}.pub-actions{justify-content:flex-start}}@media (prefers-reduced-motion: reduce){.pub-highlight{animation:none;background:rgba(246,215,189,0.32)}}@keyframes pub-focus{0%{background:rgba(246,215,189,0.5);box-shadow:inset 0 0 0 2px var(--rose)}100%{background:transparent;box-shadow:inset 0 0 0 1px transparent}}.courses-intro{color:var(--ink-soft);margin-bottom:2.5rem;line-height:1.7}.courses-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:1.25rem}.course-card{border:1px solid var(--glass-border);border-radius:var(--surface-radius);padding:1.4rem 1.5rem;background:var(--glass-surface);cursor:pointer;box-shadow:var(--glass-shadow-soft);transition:transform 0.2s, border-color 0.2s, box-shadow 0.2s, background 0.2s;position:relative}.course-card:hover{transform:translateY(-2px);border-color:var(--glass-border-med);background:var(--glass-surface-strong)}.course-card .dot{width:8px;height:8px;border-radius:50%;background:var(--sage-light);margin-bottom:1rem}.course-card:hover .dot{background:var(--sage)}.course-code{font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warm-gray);margin-bottom:0.3rem}.course-name{font-size:1.25rem;font-weight:400;color:var(--ink);margin-bottom:0.5rem;line-height:1.3;overflow-wrap:anywhere;text-wrap:pretty}.course-term{font-size:16px;color:var(--ink-soft)}.course-arrow{position:absolute;right:1rem;bottom:1rem;font-size:16px;color:var(--rose);opacity:0;transition:opacity 0.2s}.course-card:hover .course-arrow{opacity:1}.course-subhead{font-size:1.25rem;font-weight:400;color:var(--warm-gray-dk);margin:3rem 0 1.5rem 0;display:flex;align-items:center;gap:1rem}.course-subhead::after{content:'';flex:1;height:1px;background:rgba(255,255,255,0.62)}.courses-grid{margin-bottom:2rem}.course-review-panel{display:none}.course-review-panel.open{display:block;animation:fadeIn 0.3s ease}.back-btn{display:inline-flex;align-items:center;gap:0.5rem;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--sage-dark);cursor:pointer;margin-bottom:1.5rem;transition:color 0.2s, transform 0.2s;padding:0;border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.back-btn:hover{color:var(--rose-ink);transform:translateX(-2px)}.back-btn:visited{color:var(--sage-dark) !important}.review-header{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid rgba(255,255,255,0.62)}.review-header .course-code{margin-bottom:0.4rem}.review-title{font-size:1.5rem;font-weight:300;color:var(--ink);margin-bottom:0.5rem;overflow-wrap:anywhere;text-wrap:balance}.review-meta{font-size:16px;color:var(--warm-gray)}.review-rating{display:flex;gap:2rem;margin:1.5rem 0 2rem}.rating-item{text-align:center;min-width:108px;padding:0.75rem 1rem}.rating-label{font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warm-gray);display:block;margin-bottom:0.4rem}.rating-value{font-size:1.5rem;font-weight:400;color:var(--rose)}.review-section{margin-bottom:2rem}.review-section h3{font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warm-gray);margin-bottom:0.75rem}.review-section p{color:var(--ink-soft);line-height:1.68;font-size:16px}.review-section ul{color:var(--ink-soft);font-size:16px;line-height:1.68;margin:0.25rem 0 0;padding-left:1.35rem}.review-section li{padding-left:0.15rem}@media (max-width: 640px){.courses-grid{grid-template-columns:1fr;gap:0.9rem}.course-card{padding:1rem}.course-subhead{font-size:1.125rem;margin:1.8rem 0 1rem}.review-rating{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0.55rem}.rating-item{min-width:0;padding:0.65rem 0.45rem}.rating-label{font-size:11px;line-height:1.2;overflow-wrap:anywhere}.rating-value{font-size:1.125rem}.course-name,.review-title{font-size:1.125rem;line-height:1.35}.course-code{font-size:11px}.course-term,.review-meta,.review-section p,.review-section ul{font-size:15px;line-height:1.6}}.teaching-summary{display:flex;flex-wrap:wrap;gap:0.5rem 1rem;align-items:baseline;justify-content:space-between;margin:0.75rem 0 1rem;padding-bottom:0.85rem;border-bottom:1px solid var(--border);color:var(--warm-gray);font-size:11px;letter-spacing:0.08em;line-height:1;text-transform:uppercase}.teaching-summary span:first-child{color:var(--rose-ink)}.teaching-list{border-top:0}.teaching-item{display:grid;grid-template-columns:minmax(5rem, 6.5rem) minmax(0, 1fr);gap:1rem 2.25rem;padding:1.45rem 0;border-bottom:1px solid var(--border)}.teaching-item:last-child{border-bottom:0}.teaching-code{color:var(--rose-ink);font-size:1.25rem;font-weight:400;line-height:1.25;letter-spacing:0.04em}.teaching-body{min-width:0}.teaching-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:0.65rem}.teaching-title{margin:0;color:var(--ink);font-size:1.25rem;font-weight:400;line-height:1.3;text-wrap:pretty;overflow-wrap:anywhere}.teaching-role{flex:0 0 auto;color:var(--sage-dark);font-size:11px;line-height:1;letter-spacing:0.08em;text-transform:uppercase;overflow-wrap:anywhere}.teaching-desc{max-width:65ch;color:var(--ink-soft);font-size:16px;line-height:1.65}.teaching-desc p{margin:0}.teaching-semesters{display:flex;flex-wrap:wrap;gap:0.45rem;list-style:none;padding:0;margin:0.9rem 0 0}.teaching-semesters li{display:inline-flex;align-items:center;min-height:1.7rem;padding:0.2rem 0.6rem;border:1px solid var(--border-med);border-radius:var(--control-radius);background:rgba(255,255,255,0.68);color:var(--ink-soft);font-size:11px;line-height:1;letter-spacing:0.08em;text-transform:uppercase;text-align:center;overflow-wrap:anywhere}@media (max-width: 640px){.teaching-summary{display:block;line-height:1.45}.teaching-summary span{display:block}.teaching-summary span+span{margin-top:0.35rem}.teaching-item{grid-template-columns:1fr;gap:0.75rem;padding:1.25rem 0}.teaching-code,.teaching-title{font-size:1.125rem;line-height:1.35}.teaching-heading{display:block;margin-bottom:0.6rem}.teaching-role{margin-top:0.45rem;line-height:1.35}.teaching-desc{font-size:15px;line-height:1.6}.teaching-semesters li{flex:1 1 calc(50% - 0.45rem);min-height:44px;justify-content:center;line-height:1.2}}.hobbies-grid{display:grid;gap:0;border-top:1px solid var(--border-med);border-bottom:1px solid var(--border)}.hobby-card-link{display:block;min-width:0;color:inherit;text-decoration:none}.hobby-card{position:relative;border-bottom:1px solid var(--border);background:transparent;transition:background-color 0.2s ease, border-color 0.2s ease}.hobby-card-link:last-child .hobby-card{border-bottom:0}.hobby-card-link:hover .hobby-card{border-color:var(--border-med);background:rgba(221,232,255,0.18)}.hobby-card-body{display:grid;grid-template-columns:minmax(12rem, 26%) minmax(0, 1fr) minmax(11rem, 16%);gap:1rem 1.5rem;align-items:baseline;min-width:0;padding:1.45rem 0}.hobby-kicker{color:var(--rose-ink);font-size:11px;letter-spacing:0.08em;line-height:1;text-transform:uppercase}.hobby-name{margin:0;color:var(--ink);font-size:1.5rem;font-weight:400;line-height:1.25;text-wrap:pretty;overflow-wrap:anywhere}.hobby-desc{grid-column:2;margin:0;color:var(--ink-soft);font-size:16px;line-height:1.65}.hobby-footer{grid-column:3;grid-row:1 / span 2;display:flex;align-items:center;gap:0.7rem;justify-self:end;align-self:center}.hobby-meta{color:var(--warm-gray);font-size:11px;letter-spacing:0.08em;line-height:1;text-transform:uppercase;white-space:nowrap}.hobby-arrow{color:var(--sage-dark);font-size:16px;line-height:1;opacity:0.72;transform:translateX(0);transition:color 0.2s ease, opacity 0.2s ease, transform 0.2s ease}.hobby-card-link:hover .hobby-arrow{color:var(--rose-ink);opacity:1;transform:translateX(0.15rem)}.gallery-intro{max-width:68ch;color:var(--ink-soft);font-size:16px;line-height:1.7;margin-bottom:2rem}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr));gap:1rem;margin-bottom:4rem}.gallery-img{width:100%;height:280px;object-fit:cover;border:1px solid var(--border);border-radius:var(--surface-radius);background:var(--glass-surface);box-shadow:none;transition:transform 0.3s ease, border-color 0.3s ease}.gallery-img:hover{transform:scale(1.02);border-color:var(--border-med)}@media (max-width: 760px){.hobby-card-body{grid-template-columns:1fr;gap:0.55rem;padding:1.2rem 0}.hobby-desc,.hobby-footer{grid-column:auto;grid-row:auto}.hobby-footer{justify-self:stretch;justify-content:space-between;padding-top:0.3rem}.hobby-name{font-size:1.125rem;line-height:1.35}.hobby-desc,.gallery-intro{font-size:15px;line-height:1.6}.gallery-intro{margin-bottom:1.4rem}.gallery-grid{grid-template-columns:1fr;gap:1rem}.gallery-img{height:auto;aspect-ratio:3 / 4}}@media (prefers-reduced-motion: reduce){.hobby-card,.hobby-arrow,.gallery-img{transition:none}.hobby-card-link:hover .hobby-arrow,.gallery-img:hover{transform:none}}.blog-list{display:grid;grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));gap:1.5rem}.blog-card{display:block;border:1px solid var(--glass-border);border-radius:var(--surface-radius);background:var(--glass-surface);box-shadow:var(--glass-shadow-soft);color:inherit;overflow:hidden;transition:transform 0.2s, border-color 0.2s, background 0.2s, box-shadow 0.2s}.blog-card:hover{transform:translateY(-3px);border-color:var(--glass-border-med);background:var(--glass-surface-strong);text-decoration:none}.blog-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block}.blog-card-body{padding:1.3rem 1.4rem}.blog-date{font-size:11px;letter-spacing:0.12em;text-transform:uppercase;color:var(--warm-gray);margin-bottom:0.5rem}.blog-title{font-size:1.25rem;color:var(--ink);line-height:1.3;margin-bottom:0.6rem}.blog-summary,.blog-content{color:var(--ink-soft);font-size:16px;line-height:1.68}.blog-content{margin-bottom:2rem}.life-post{max-width:980px}.blog-lede{max-width:720px;margin:0 0 3rem;color:var(--ink);font-size:1.25rem;line-height:1.58}.photo-story{display:grid;gap:2rem}.photo-story-item{margin:0;display:grid;grid-template-columns:minmax(0, 1fr) minmax(200px, 300px);gap:2.25rem;align-items:center;padding:1.65rem 0;border-bottom:1px solid rgba(255,255,255,0.62)}.photo-story-item:last-child{border-bottom:0;padding-bottom:0}.photo-media{margin:0;grid-column:2;grid-row:1}.photo-writeup{grid-column:1;grid-row:1}.photo-story-item:nth-child(even){grid-template-columns:minmax(200px, 300px) minmax(0, 1fr)}.photo-story-item:nth-child(even) .photo-media{grid-column:1;grid-row:1}.photo-story-item:nth-child(even) .photo-writeup{grid-column:2;grid-row:1}.photo-media img,.photo-collage img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;border-radius:4px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-soft);cursor:zoom-in;transition:transform 0.2s, border-color 0.2s, box-shadow 0.2s}.photo-media:hover>img,.photo-collage img:hover{transform:translateY(-3px);border-color:var(--border-med)}.photo-collage{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:0.55rem}.photo-collage img{aspect-ratio:3/4}.photo-writeup{color:var(--ink-soft);font-size:16px;line-height:1.68;padding:0.5rem 0}.photo-meta{display:flex;align-items:center;gap:0.45rem;margin-top:1rem;color:var(--warm-gray);font-size:11px;letter-spacing:0.08em;line-height:1.4;text-transform:uppercase}.photo-meta span:first-child{color:var(--sage);font-weight:500}.photo-meta-dot{color:var(--border-med)}@media (max-width: 760px){.blog-list{grid-template-columns:1fr;gap:1rem}.blog-card-body{padding:1rem}.blog-title{font-size:1.125rem}.blog-summary,.blog-content{font-size:15px;line-height:1.6}.blog-lede{margin-bottom:1.5rem;font-size:1.125rem;line-height:1.55}.photo-story-item{grid-template-columns:1fr;gap:1rem;padding:1rem 0}.photo-story-item:nth-child(even){grid-template-columns:1fr}.photo-media,.photo-writeup,.photo-story-item:nth-child(even) .photo-media,.photo-story-item:nth-child(even) .photo-writeup{grid-column:1;grid-row:auto}.photo-media{width:min(100%, 300px);justify-self:center}.photo-collage{gap:0.4rem}.photo-writeup{padding:0;font-size:15px;line-height:1.6}.photo-meta{flex-wrap:wrap;margin-top:0.7rem;font-size:11px}}.stats-wrap{max-width:1040px}.mapmyvisitors-site-tracker{display:none}.stats-mapmyvisitors,.stats-mapmyvisitors-placeholder{width:100%;min-height:500px;margin:1rem 0 1.4rem;display:grid;place-items:center}.stats-mapmyvisitors{overflow:hidden}.stats-mapmyvisitors iframe,.stats-mapmyvisitors canvas,.stats-mapmyvisitors img,.stats-mapmyvisitors object{max-width:100%}.stats-mapmyvisitors-placeholder{border:1px solid var(--border-med);background:var(--linen);color:var(--warm-gray);text-align:center;transition:transform 0.2s, border-color 0.2s, color 0.2s}.stats-mapmyvisitors-placeholder:hover{transform:translateY(-2px);border-color:var(--rose);color:var(--rose)}.stats-mapmyvisitors-placeholder a{color:inherit;font-size:11px;letter-spacing:0.08em;line-height:1.7;text-transform:uppercase}.stats-note{max-width:760px;margin:0.8rem auto 0;color:var(--warm-gray);font-size:11px;line-height:1.75;text-align:center}.stats-total{display:block;width:max-content;max-width:100%;margin:0 auto;padding:0.5rem 1rem;border:1px solid var(--glass-border-med);border-radius:var(--control-radius);color:var(--warm-gray);font-size:16px;line-height:1.7;text-align:center;transition:transform 0.2s, border-color 0.2s, color 0.2s}.stats-total:hover{transform:translateY(-2px);border-color:rgba(232,135,58,0.42);color:var(--rose);font-weight:500}@media (max-width: 700px){.stats-wrap{max-width:none}.stats-mapmyvisitors,.stats-mapmyvisitors-placeholder{min-height:200px;margin:0.1rem 0 1rem}.stats-mapmyvisitors-placeholder{padding:1rem}.stats-mapmyvisitors-placeholder a,.stats-total{font-size:11px}.stats-total{width:100%;padding:0.35rem 0.5rem}.stats-note{margin:0.75rem auto;font-size:11px;line-height:1.65;text-align:left}}.updates-container{margin-top:2rem;padding:2rem 2.5rem;background:var(--glass-surface);border:1px solid var(--glass-border);border-radius:var(--surface-radius);box-shadow:var(--glass-shadow);position:relative;overflow:hidden}.updates-header{font-size:1.25rem;color:var(--warm-gray-dk);font-weight:700;margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;line-height:1.3;text-wrap:balance}.updates-header::after{content:none}.updates-header-link{color:var(--sage-dark);font-size:11px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;white-space:nowrap;transition:color 0.2s ease}.updates-header-link:hover,.updates-header-link:focus-visible{color:var(--rose-ink);text-decoration:none}.updates-featured-list{border-top:1px solid rgba(47,111,237,0.12)}.updates-featured-item{display:grid;grid-template-columns:84px minmax(0, 1fr);gap:1.25rem;padding:0.95rem 0;border-bottom:1px solid rgba(47,111,237,0.12);color:var(--ink-soft);line-height:1.55;transition:color 0.2s ease, border-color 0.2s ease, transform 0.2s ease}.updates-featured-item:hover,.updates-featured-item:focus-visible{color:var(--ink);border-color:rgba(232,135,58,0.42);text-decoration:none;transform:translateX(2px)}.updates-featured-date{color:var(--rose-ink);font-size:11px;font-weight:700;letter-spacing:0.08em;padding-top:0.14rem;text-transform:uppercase}.updates-featured-copy strong{color:var(--ink);font-weight:700}.updates-list{margin:0;padding-left:0;list-style:none}.updates-list li{font-size:16px;color:var(--ink-soft);margin-bottom:1rem;display:flex;gap:1.5rem;line-height:1.5}.updates-list li:last-child{margin-bottom:0}.updates-archive{margin-top:1rem}.updates-archive-summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--warm-gray-dk);cursor:pointer;font-size:11px;font-weight:700;letter-spacing:0.08em;padding:0.7rem 0;text-transform:uppercase;transition:color 0.2s ease}.updates-archive-summary::marker{color:var(--rose-ink)}.updates-archive-summary:hover,.updates-archive-summary:focus-visible{color:var(--rose-ink)}.updates-archive-summary:focus-visible{outline:2px solid rgba(47,111,237,0.34);outline-offset:3px}.updates-archive-count{color:var(--warm-gray);font-weight:400;letter-spacing:0.04em;text-transform:none}.updates-list--archive{border-top:1px solid rgba(47,111,237,0.12);padding-top:1rem}.update-date{font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--rose-ink);width:70px;font-weight:700;flex-shrink:0;padding-top:0.18rem}.update-text strong{font-weight:700}.update-arrow-link{display:inline-flex;align-items:center;text-decoration:none;margin-left:8px;vertical-align:middle;position:relative;top:-2px;transition:transform 0.2s ease, color 0.2s ease;color:var(--rose-ink);font-weight:500;cursor:pointer}.update-arrow{width:14px;height:14px}.update-arrow-link:hover{color:var(--warm-gray-dk);transform:translateX(4px)}.update-arrow-link:visited{color:var(--rose-ink);text-decoration:none}@media (prefers-reduced-motion: reduce){.updates-featured-item,.update-arrow-link{transition:none}.updates-featured-item:hover,.updates-featured-item:focus-visible,.update-arrow-link:hover{transform:none}}@media (max-width: 640px){.updates-container{margin-top:1.6rem;padding:1rem}.updates-header{align-items:flex-start;flex-direction:column;font-size:1.125rem;gap:0.75rem;margin-bottom:1rem}.updates-header-link{min-height:44px;display:inline-flex;align-items:center}.updates-featured-item{grid-template-columns:1fr;gap:0.25rem;padding:0.85rem 0}.updates-featured-date{font-size:11px;padding-top:0}.updates-list li{font-size:15px;display:block;margin-bottom:0.9rem}.update-date{font-size:11px;display:block;width:auto;padding-top:0;margin-bottom:0.2rem}}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));gap:30px;align-items:start}.gallery-item{margin:0;display:flex;flex-direction:column;position:relative;padding-bottom:0.25rem}.gallery-item img{width:100%;max-width:100%;height:auto;aspect-ratio:3 / 4;object-fit:cover;display:block;border-radius:var(--surface-radius);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-soft);cursor:zoom-in;transition:transform 0.2s, border-color 0.2s, box-shadow 0.2s}.gallery-item:hover img{transform:translateY(-3px);border-color:var(--glass-border-med)}.gallery-caption{margin-top:10px;font-size:16px;color:var(--warm-gray);line-height:1.55}.gallery-arrow-link{position:absolute;right:0;bottom:2.5px;margin-left:0;top:auto;font-size:1.25rem}.gallery-lightbox{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:2rem;background:rgba(247,247,249,0.78);cursor:zoom-out;-webkit-backdrop-filter:blur(22px) saturate(1.12);backdrop-filter:blur(22px) saturate(1.12)}.gallery-lightbox.open{display:flex}.gallery-lightbox img{max-width:min(92vw, 980px);max-height:88vh;object-fit:contain;border-radius:var(--surface-radius);border:1px solid var(--glass-border-med);background:var(--glass-surface-strong);box-shadow:var(--glass-shadow)}@media (max-width: 640px){.gallery-grid{grid-template-columns:1fr;gap:1.15rem}.gallery-caption{margin-top:7px;font-size:15px}.gallery-lightbox{padding:1rem}.gallery-lightbox img{max-width:94vw;max-height:82vh}}a.person-link{font-style:italic;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;color:var(--sage);transition:color 0.2s}a.person-link:hover{color:var(--sage-dark)}.main{padding:4rem 5rem 6rem 5.5rem;display:block;grid-column:2;width:100%;min-width:0;box-sizing:border-box;position:relative}@media (max-width: 820px){.main{grid-column:auto;padding:1.6rem max(1.15rem, env(safe-area-inset-right)) calc(3.5rem + env(safe-area-inset-bottom)) max(1.15rem, env(safe-area-inset-left))}}@media (max-width: 420px){.main{padding:1.15rem max(0.9rem, env(safe-area-inset-right)) calc(3rem + env(safe-area-inset-bottom)) max(0.9rem, env(safe-area-inset-left))}}.updates-container,.about-grid,.course-card,.rating-item,.blog-card,.stats-map,.stats-total{background:var(--glass-surface);border:1px solid var(--glass-border);border-radius:var(--surface-radius);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.18);backdrop-filter:blur(var(--glass-blur)) saturate(1.18)}.sidebar-toggle{background:var(--glass-control);border:1px solid var(--glass-border-med);border-radius:var(--control-radius);box-shadow:var(--glass-shadow-soft);-webkit-backdrop-filter:blur(calc(var(--glass-blur) * 0.75)) saturate(1.12);backdrop-filter:blur(calc(var(--glass-blur) * 0.75)) saturate(1.12)}.course-card:hover,.blog-card:hover,.stats-total:hover,.gallery-item:hover img,.gallery-img:hover,.photo-media:hover>img,.photo-collage img:hover{box-shadow:var(--glass-shadow-hover)}.about-grid{background:rgba(255,255,255,0.24);border-color:rgba(255,255,255,0.48);box-shadow:none;-webkit-backdrop-filter:blur(calc(var(--glass-blur) * 0.5)) saturate(1.06);backdrop-filter:blur(calc(var(--glass-blur) * 0.5)) saturate(1.06)}.updates-container{background:rgba(255,255,255,0.44);border-color:rgba(255,255,255,0.56);box-shadow:var(--glass-shadow-soft);-webkit-backdrop-filter:blur(calc(var(--glass-blur) * 0.75)) saturate(1.08);backdrop-filter:blur(calc(var(--glass-blur) * 0.75)) saturate(1.08)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.updates-container,.about-grid,.course-card,.rating-item,.blog-card,.stats-map,.stats-total{background:var(--glass-solid)}.sidebar-toggle{background:var(--glass-control-solid)}.gallery-lightbox{background:rgba(250,251,253,0.96)}}
