﻿@font-face{font-family:"IBM Plex Sans";src:url("/fonts/IBMPlexSans-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Sans";src:url("/fonts/IBMPlexSans-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url("/fonts/IBMPlexMono-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url("/fonts/IBMPlexMono-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Serif";src:url("/fonts/IBMPlexSerif-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Serif";src:url("/fonts/IBMPlexSerif-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:"IBM Plex Serif";src:url("/fonts/IBMPlexSerif-600.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}:root{--font-sans: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-serif: "IBM Plex Serif", Georgia, "Times New Roman", serif;--primary-red: #e63946;--accent-soft: #f5bcc0;--text-dark: #1c1c1c;--ink-2: #3d3d3d;--ink-3: #4f4f4f;--ink-4: #6a6a6a;--label: #6e737b;--text-light: #a3a7ad;--tick: #b4b8be;--rule: #cfd2d6;--hairline: #dcdfe3;--bg-off-white: #f5f6f7;--bg-light: #ffffff;--paper-raised: #ffffff;--paper: #f0ede6}*{margin:0;padding:0;box-sizing:border-box}.content,.pub-body,.hero-desc,.section-description,.page-subtitle,.xp-reading,.cap-detail,.proj-sel-desc,.proj-row-desc{font-family:var(--font-serif)}body{font-family:var(--font-sans);color:var(--text-dark);line-height:1.6;background:var(--bg-light)}.site-nav{padding:2rem 0;background-color:var(--bg-light);border-bottom:1px solid var(--hairline);}.site-nav .nav-inner{display:flex;justify-content:space-between;align-items:center}.site-nav .logo{}.site-nav .logo a{text-decoration:none}.site-nav .logo svg{display:block}.site-nav .main-nav ul{display:flex;list-style:none;margin:0;padding:0}.site-nav .main-nav ul li{margin-left:1.5rem}.site-nav .main-nav ul li a{text-decoration:none;color:var(--text-dark);font-weight:500;transition:color .3s ease}.site-nav .main-nav ul li a:hover{color:var(--primary-red)}.hero{padding:3.5rem 2rem 3rem;background-color:var(--bg-off-white)}.hero .hero-text{max-width:1200px;margin:0 auto;padding:0 1rem;}.hero .hero-text h1{font-size:3rem;line-height:1.15;margin-bottom:1.25rem;color:var(--text-dark)}.hero .hero-text .hero-desc{font-size:1.1rem;line-height:1.65;color:var(--ink-2);max-width:42rem}.hero .hero-text .hero-desc p{margin-bottom:.9rem}.hero .hero-text .hero-desc a{color:var(--primary-red);text-decoration:none;border-bottom:1px solid var(--accent-soft)}.hero .hero-text .hero-desc a:hover{border-bottom-color:var(--primary-red)}.hero .hero-text .hero-plate{margin:2.5rem 0 0}.bouncing-dot{animation:dot-bounce 1.6s ease-in-out infinite}@keyframes dot-bounce{0%, 100%{transform:translateY(0)}50%{transform:translateY(-8px)}}@media (prefers-reduced-motion: reduce){.bouncing-dot{animation:none}}.projects{padding:8rem 5%;background:var(--bg-light)}.page-head h1{font-size:clamp(1.75rem,1.1rem + 1.7vw,2.25rem);font-weight:600;line-height:1.2;letter-spacing:-.01em;color:var(--text-dark);padding-bottom:1.05rem;border-bottom:1px solid var(--hairline);position:relative}.page-head h1::after{content:"";position:absolute;left:0;bottom:-1px;width:56px;height:1px;background:var(--primary-red)}.page-head .section-description,.page-head .page-subtitle,.page-head .pub-authors{margin-top:1.05rem}.crumb{margin-bottom:.8rem}.crumb ol{list-style:none;display:flex;flex-wrap:wrap;align-items:baseline;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--label)}.crumb li+li::before{content:"/";opacity:.45;margin:0 .45rem}.crumb a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(0,0,0,0)}.crumb a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}@media (max-width: 768px){.hero{grid-template-columns:1fr}}.container{max-width:1200px;margin:0 auto;padding:0 1rem}.page-header{padding:3rem 0 2.5rem;background-color:var(--bg-off-white);}.page-header .section-description{max-width:46rem;margin:1.05rem 0 0;color:var(--ink-3);line-height:1.6}.page-header .page-subtitle{font-size:1.25rem;color:var(--ink-3);font-weight:normal;margin-top:1.05rem}.page-header--sheet{padding-bottom:3rem}.page-header--sheet .sheet{margin-top:2.5rem}.page-content,.pub-section,.xp{padding:2.5rem 0 5rem}.page-body{max-width:46rem}.page-body--project{max-width:none;display:grid;grid-template-columns:minmax(0, 46rem) 14rem;justify-content:space-between;column-gap:3rem;align-items:start}.page-body--project .content>p:first-of-type::first-letter{float:left;font-family:var(--font-serif);font-weight:600;font-size:3.9rem;line-height:.8;padding:.38rem .5rem 0 0;color:var(--primary-red)}.facts{position:sticky;top:2rem;padding-top:.6rem;border-top:2px solid var(--text-dark);}.facts dl{display:grid;grid-template-columns:max-content 1fr;gap:.55rem 1.25rem;padding-top:.9rem;font-size:.86rem;line-height:1.5}.facts dt{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--label);padding-top:.2rem}.facts dd{margin:0;color:var(--text-dark)}.facts dt:first-of-type{grid-column:1/-1;padding-top:0}.facts dd.facts__plate{grid-column:1/-1;font-family:var(--font-mono);font-size:3.4rem;line-height:1;font-weight:500;color:var(--primary-red);padding:0 0 .9rem;margin-top:-.3rem}@media (max-width: 900px){.page-body--project{grid-template-columns:minmax(0, 46rem);justify-content:start}.facts{order:-1;position:static;margin-bottom:2.25rem;border-top:0;border-bottom:1px solid var(--hairline);padding:0 0 1rem}.facts dl{padding-top:0}}.content{font-size:1.02rem;line-height:1.75;color:var(--text-dark);}.content h2,.content h3{font-family:var(--font-sans);font-weight:600}.content h2{font-size:1.2rem;line-height:1.3;letter-spacing:-.01em;margin:2.5rem 0 .75rem}.content h3{font-size:1.02rem;margin:2rem 0 .5rem}.content h2:first-child,.content h3:first-child{margin-top:0}.content p,.content ul,.content ol{margin-bottom:1.25rem}.content ul,.content ol{padding-left:1.5rem}.content li{margin-bottom:.4rem}.content a:not(.person,.sc-open *){color:var(--text-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;text-decoration-color:var(--tick)}.content a:not(.person,.sc-open *):hover{color:var(--primary-red);text-decoration-color:var(--primary-red)}.content pre{background:var(--bg-off-white);border:1px solid var(--hairline);border-left:2px solid var(--primary-red);padding:1rem 1.15rem;margin-bottom:1.5rem;overflow-x:auto;line-height:1.65}.content pre code{font-size:.85rem}footer{background-color:var(--bg-off-white);padding:2rem 0;text-align:center;color:var(--ink-3);border-top:1px solid var(--hairline)}@media (max-width: 768px){.site-nav{padding:1.5rem 0}.site-nav .nav-inner{flex-direction:column}.site-nav .logo{margin-bottom:1rem}.site-nav .main-nav ul{flex-wrap:wrap;justify-content:center}.site-nav .main-nav ul li{margin:.5rem}}@media (max-width: 992px){.hero{padding:4rem 1rem 3rem}.hero .hero-text h1{font-size:2.5rem}}.pub-list{list-style:none;max-width:46rem;margin:0;padding:0;border-top:1px solid var(--hairline)}.pub{padding:1.75rem 0;border-bottom:1px solid var(--hairline)}.pub-title{font-size:1.25rem;line-height:1.35;margin:0 0 .5rem;font-weight:700}.pub-title a{color:var(--text-dark);text-decoration:none;border-bottom:2px solid rgba(0,0,0,0);transition:border-color .15s ease,color .15s ease}.pub-title a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.pub-authors{font-size:.9rem;color:var(--ink-2);margin:0 0 .35rem}.pub-authors strong{color:var(--text-dark)}.pub-venue{font-size:.85rem;color:var(--ink-4);margin:0}.pub-venue cite{font-style:italic}.pub-meta{margin:.5rem 0 0}.pub-group{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;color:var(--label);margin:2.5rem 0 .6rem}.pub-list--thin .pub{padding:1rem 0}.pub-list--thin .pub-title{font-size:1rem;margin-bottom:.3rem}.pub-list--thin .pub-authors{font-size:.85rem;margin-bottom:.2rem}.pub-doi{font-size:.78rem;letter-spacing:.02em;color:var(--ink-4);text-decoration:none;border-bottom:1px solid var(--rule)}.pub-doi:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.pub-citation{display:grid;grid-template-columns:minmax(7rem, max-content) 1fr;gap:.45rem 1.5rem;margin:0 0 2.5rem;padding:0 0 1.25rem;border-bottom:1px solid var(--hairline);font-size:.88rem}.pub-citation dt{color:var(--label);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;padding-top:.15rem}.pub-citation dd{margin:0;color:var(--ink-2)}.pub-citation a{color:var(--text-dark);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.pub-citation a:hover{color:var(--primary-red)}.pub-body p{margin-bottom:1.15rem}@media (max-width: 600px){.pub-citation{grid-template-columns:1fr;gap:.15rem}.pub-citation dd{margin-bottom:.75rem}}.org-logo{display:block;height:auto;max-height:64px;max-width:min(100%,320px);width:auto;margin:0 0 2rem;object-fit:contain}@media (max-width: 600px){.org-logo{max-height:48px}}.footer-links{margin-bottom:.5rem}.footer-links a{color:var(--text-dark);text-decoration:none;margin:0 .75rem;border-bottom:1px solid var(--rule)}.footer-links a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.rule-label{display:flex;align-items:center;gap:1.25rem;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.11em;text-transform:uppercase;color:var(--label);margin-bottom:1.6rem;}.rule-label::after{content:"";flex:1;height:7px;align-self:center;background:linear-gradient(var(--hairline), var(--hairline)) left center/100% 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right center/1px 7px no-repeat}.rule-label b{color:var(--primary-red);font-weight:400}.rule-label--tier{padding-top:4rem}.rule-label--group{max-width:46rem;font-weight:400;margin-top:0;padding-top:3rem}.rule-label--group:first-child{padding-top:0}.capabilities{padding:3rem 0 1rem;}.capabilities .rule-label{max-width:60rem}.cap-list{display:grid;grid-template-columns:minmax(9rem, max-content) 1fr;gap:1.4rem 2rem;margin:0;max-width:60rem}.cap-list dt{font-weight:700;color:var(--text-dark);padding-top:.1rem}.cap-list dd{margin:0;display:flex;flex-direction:column;gap:.3rem}.cap-detail{color:var(--ink-2)}.cap-work{font-size:.85rem}.cap-work a{color:var(--ink-4);text-decoration:none;border-bottom:1px solid var(--rule)}.cap-work a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.selected-work{padding:3rem 0 4rem}.block-more{margin-top:2rem;font-size:.9rem}.block-more a{color:var(--text-dark);text-decoration:none;border-bottom:2px solid var(--primary-red)}.block-more a:hover{color:var(--primary-red)}@media (max-width: 640px){.cap-list{grid-template-columns:1fr;gap:.35rem 0}.cap-list dd{margin-bottom:1.25rem}}.main-nav,.rule-label,.cap-label,.pub-doi,.pub-citation dt,footer,code,pre,kbd,samp{font-family:var(--font-mono)}.main-nav a{font-size:.92rem}code,pre,kbd,samp{font-size:.92em}.byline{display:flex;flex-wrap:wrap;align-items:baseline;margin-top:.85rem;font-size:1.3rem;font-weight:400;color:var(--ink-2);letter-spacing:.01em}.byline-word{white-space:nowrap}.byline-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--primary-red);margin:0 .7rem;flex:0 0 auto;position:relative;top:-.15em}@media (max-width: 480px){.byline{font-size:1.05rem}.byline-dot{margin:0 .5rem}}.cap-plain{color:var(--label)}.mark{display:block;width:auto;height:auto;max-height:5rem;max-width:min(100%,18rem);margin:0 0 1.75rem}.mark--strip{max-height:none;max-width:100%;padding-bottom:1rem;border-bottom:1px solid var(--hairline)}.page-content .featured-image{margin-bottom:2rem;background:var(--bg-off-white);border:1px solid var(--hairline);position:relative}.page-content .featured-image::after{content:"";position:absolute;inset:-14px;pointer-events:none;background:linear-gradient(var(--tick), var(--tick)) left 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) left 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px bottom 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px bottom 0/1px 10px no-repeat}.page-content .featured-image img{display:block;width:100%;height:auto}.sheet{background:var(--bg-off-white);border:1px solid var(--text-dark);position:relative}.sheet::after{content:"";position:absolute;inset:-14px;pointer-events:none;background:linear-gradient(var(--tick), var(--tick)) left 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) left 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px bottom 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px bottom 0/1px 10px no-repeat}.sheet img{display:block;width:100%;height:auto;aspect-ratio:2/1;object-fit:cover}.plate-band{position:relative;display:flex;align-items:stretch;background:var(--paper);color:var(--text-dark);border-top:2px solid var(--text-dark);border-bottom:2px solid var(--text-dark);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;line-height:1.25;}.plate-band::before{content:"";position:absolute;left:0;right:0;top:3px;height:1px;background:var(--text-dark);pointer-events:none}.plate-band__cell{padding:.7rem .9rem .5rem;border-right:1px solid var(--text-dark);white-space:nowrap}.plate-band__cell:last-child{border-right:0}.plate-band__cell--title{flex:1;min-width:0;font-weight:600;font-size:1rem}.plate-band__cell--drawn{color:var(--ink-3)}.plate-band__label{display:block;font-size:.56rem;letter-spacing:.12em;color:var(--ink-4);margin-bottom:.15rem}@media (max-width: 700px){.plate-band{flex-wrap:wrap}.plate-band__cell--title{flex-basis:100%;border-right:0;border-bottom:1px solid var(--text-dark)}.plate-band__cell:not(.plate-band__cell--title){flex:1;white-space:normal}}.content img,.pub-body img{max-width:100%;height:auto}.content{counter-reset:fig}.figure{margin:1.75rem 0 2rem;counter-increment:fig}.figure__frame{display:flex;justify-content:center;padding:1rem;background:var(--bg-off-white);border:1px solid var(--hairline)}.figure__frame img{display:block;width:auto;height:auto;max-width:100%;max-height:30rem;object-fit:contain}.figure figcaption{margin-top:.65rem;font-size:.86rem;line-height:1.55;color:var(--label)}.figure figcaption::before{content:"Fig. " counter(fig);margin-right:.7rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--text-dark)}.person{position:relative;color:inherit;text-decoration:none;border-bottom:1px dotted var(--tick)}.person:hover,.person:focus-visible{color:var(--primary-red);border-bottom-color:var(--primary-red)}.person .person-card{display:none;position:absolute;left:0;top:calc(100% + .5rem);z-index:20;width:22rem;max-width:calc(100vw - 2rem);padding:.8rem 1rem .9rem;background:var(--bg-off-white);border:1px solid var(--hairline);box-shadow:0 6px 18px rgba(0,0,0,.08);color:var(--text-dark);font-family:var(--font-sans);font-weight:400;font-size:.85rem;line-height:1.5;text-align:left;white-space:normal;cursor:default;grid-template-columns:2.75rem 1fr;column-gap:.8rem;align-items:start;}.person .person-card .person-face{grid-row:1/span 3;width:2.75rem;height:2.75rem;overflow:hidden;border:1px solid var(--hairline);background:var(--hairline);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.04em;color:var(--label)}.person .person-card .person-face img{display:block;width:100%;height:100%;object-fit:cover}.person .person-card b{display:block;margin-bottom:.2rem;font-weight:600}.person .person-card .person-bio{display:block}.person .person-card i{display:block;margin-top:.5rem;font-family:var(--font-mono);font-style:normal;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--label)}.person:hover .person-card,.person:focus-visible .person-card{display:grid}.person .person-card.flip{left:auto;right:0}strong .person-card,b .person-card,h2 .person-card,h3 .person-card{font-weight:400}@media (max-width: 600px){.person .person-card{position:fixed;left:1rem;right:1rem;top:auto;bottom:1rem;width:auto;max-width:none}}.team{margin-top:2.5rem}.team h3{margin-bottom:.3rem}.team .team__list{list-style:none;margin:0 0 1.2rem;padding:0;display:flex;flex-wrap:wrap;column-gap:1.4rem;row-gap:.3rem}.team .team__list li{margin:0}.team .team__source{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--label)}.content .sc-open{--sc-red: #ff4a3a;--sc-navy: #1f2a3c;--sc-slate: #4b5563;margin:0 0 2rem;padding:1.75rem 2rem 2rem;background:var(--bg-off-white);border:1px solid var(--hairline);line-height:1.5}.content .sc-open__brand{display:inline-flex;flex-direction:column;line-height:1;text-decoration:none;margin-bottom:1.75rem;padding-bottom:1rem;border-bottom:1px solid var(--hairline);width:100%}.content .sc-open__wordmark{font-size:1.35rem;letter-spacing:.01em;color:var(--sc-red);text-transform:uppercase;font-weight:300}.content .sc-open__wordmark b{font-weight:700}.content .sc-open__product{margin-top:.3rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--sc-slate)}.content .sc-open__headline{margin:0 0 1rem;font-size:1.75rem;line-height:1.2;font-weight:700;color:var(--sc-navy)}.content .sc-open__headline em{display:block;font-style:normal;color:var(--sc-red)}.content .sc-open__pitch{max-width:36rem;margin:0 0 1.5rem;color:var(--sc-slate)}.content .sc-open__actions{display:flex;flex-wrap:wrap;gap:.6rem;margin:0}.content .sc-open__btn{display:inline-block;padding:.6rem 1.2rem;border:1px solid #cfd3d8;border-radius:6px;background:#fff;color:var(--sc-navy);font-weight:600;font-size:.95rem;line-height:1.3;text-decoration:none;transition:background 120ms ease,border-color 120ms ease}.content .sc-open__btn:hover{background:#f1f3f5;border-color:#b8bec6}.content .sc-open__btn--primary{background:var(--sc-navy);border-color:var(--sc-navy);color:#fff}.content .sc-open__btn--primary:hover{background:#2c3a50;border-color:#2c3a50}@media (max-width: 600px){.content .sc-open{padding:1.25rem 1.1rem 1.4rem}.content .sc-open__headline{font-size:1.4rem}}.cap-group{margin-bottom:3.5rem}.cap-group:last-child{margin-bottom:1rem}.cap-group-title{display:flex;align-items:baseline;gap:.75rem;font-family:var(--font-mono);font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--ink-4);margin-bottom:1.25rem;padding-bottom:.6rem;border-bottom:1px solid var(--hairline)}.cap-group-title a{color:var(--text-dark);text-decoration:none;border-bottom:2px solid rgba(0,0,0,0)}.cap-group-title a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.cap-group-count{font-size:.72rem;color:var(--text-light);letter-spacing:.04em}.cap-label a{color:inherit;text-decoration:none;border-bottom:1px solid var(--rule)}.cap-label a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.filters{display:flex;flex-wrap:wrap;gap:1.6rem;padding-bottom:1.9rem}.filter{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-3);background:none;border:0;border-bottom:2px solid rgba(0,0,0,0);padding:.35rem 0;cursor:pointer;transition:color .15s ease,border-color .15s ease}.filter:hover{color:var(--text-dark)}.filter.is-active{color:var(--text-dark);border-bottom-color:var(--primary-red)}.filter.is-active .filter-count{color:var(--primary-red)}.filter:focus-visible{outline:2px solid var(--primary-red);outline-offset:3px}.filter-count{font-size:.68rem;color:var(--text-light);margin-left:.45rem}.filter-empty{color:var(--ink-4);padding:2rem 0}.coursework{margin:2.5rem 0 1rem;border-top:1px solid var(--hairline);padding-top:1.25rem}.coursework summary{cursor:pointer;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.09em;text-transform:uppercase;color:var(--label);list-style:none}.coursework summary::-webkit-details-marker{display:none}.coursework summary::before{content:"+ ";color:var(--primary-red)}.coursework summary span{color:var(--text-light);margin-left:.35rem}.coursework[open] summary::before{content:"− "}.course-list{list-style:none;margin:1.25rem 0 0;padding:0;font-size:.86rem;}.course-list li{display:grid;grid-template-columns:7.5rem 6rem 1fr;gap:0 1rem;padding:.4rem 0;border-bottom:1px solid var(--bg-off-white);margin:0}.course-list .c-term{color:var(--text-light);font-family:var(--font-mono);font-size:.76rem}.course-list .c-code{color:var(--label);font-family:var(--font-mono);font-size:.76rem}.course-list .c-title{color:var(--ink-2)}.course-list .c-paper{display:block;margin-top:.2rem;font-size:.8rem;line-height:1.35}.course-list .c-paper::before{content:"↳ ";color:var(--primary-red)}.course-list .c-paper a{color:var(--ink-3);text-decoration:none;border-bottom:1px solid var(--hairline)}.course-list .c-paper a:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}@media (max-width: 600px){.course-list li{grid-template-columns:1fr;gap:.1rem}}.xp-block{display:grid;grid-template-columns:150px 1fr;gap:2.2rem;padding:1.8rem 0;border-top:1px solid var(--hairline)}.xp-block--now{border-top:none;padding-top:0}.xp-block--rule{margin-top:1.8rem;padding-bottom:0;border-top:2px solid var(--text-dark)}.xp-block--rule .xp-reading{margin-bottom:0}.xp-years{font-family:var(--font-mono);font-size:.82rem;color:var(--label);text-align:right;padding-top:.4rem}.xp-block--now .xp-years{color:var(--primary-red)}.xp-heading{font-size:1.55rem;font-weight:600;line-height:1.3}.xp-chapter{font-size:1.3rem;font-weight:600;line-height:1.35}.xp-reading{color:var(--ink-3);max-width:42rem;margin:.25rem 0 1.2rem}.xp-cols{display:grid;grid-template-columns:1fr 1fr;gap:2.4rem}.xp-colhead{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--label);border-bottom:1px solid var(--hairline);padding-bottom:.35rem;margin-bottom:.7rem}.xp-entry{display:flex;gap:.75rem;align-items:flex-start;padding:.4rem 0;font-size:.97rem;line-height:1.6}.xp-mark{flex:0 0 10px;width:10px;height:10px;border-radius:3px;background:var(--text-dark);opacity:.55;margin-top:calc(.8em - 5px)}.xp-entry.is-current .xp-mark{background:var(--primary-red);opacity:1}.xp-entry--project .xp-mark{flex-basis:8px;width:8px;height:8px;margin-top:calc(.8em - 4px);margin-right:2px;border-radius:0;transform:rotate(45deg)}.xp-entry--study .xp-mark{background:var(--paper-raised);border:2px solid var(--text-light);border-radius:6px}.xp-name{font-weight:600;font-size:1em;color:var(--text-dark);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0)}.xp-name:hover{color:var(--primary-red);border-bottom-color:var(--primary-red)}.xp-entry--study .xp-name{font-weight:400}.xp-meta{color:var(--label);font-size:.83rem;line-height:1.45}.xp-when{white-space:nowrap}.xp-col--lead .xp-entry{padding:.6rem 0;font-size:1.05rem}.xp-more{margin-top:.9rem;font-size:.86rem}.xp-more a{color:var(--primary-red);text-decoration:none;border-bottom:1px solid var(--accent-soft);padding-bottom:1px}.xp-more a:hover{border-bottom-color:var(--primary-red)}.xp-courses{margin-top:1rem}.xp-courses summary{font-family:var(--font-mono);font-size:.74rem;color:var(--label);cursor:pointer;list-style:none}.xp-courses summary::-webkit-details-marker{display:none}.xp-courses summary::before{content:"+ ";color:var(--primary-red)}.xp-courses[open] summary::before{content:"– "}.xp-chips{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.75rem}.xp-chip{font-size:.78rem;color:var(--ink-2);background:var(--bg-off-white);border-radius:12px;padding:.2rem .7rem}.xp-chip i{font-style:normal;font-family:var(--font-mono);font-size:.68rem;color:var(--label);margin-left:.375rem}@media (max-width: 780px){.xp-block{grid-template-columns:1fr;gap:.5rem}.xp-years{text-align:left;padding-top:0}.xp-block--rule .xp-years{display:none}.xp-cols{grid-template-columns:1fr;gap:1.6rem}}.proj-sel[hidden],.proj-row[hidden],.rule-label[hidden]{display:none !important}.proj-sels{display:grid;grid-template-columns:1fr 1fr;gap:3rem 4rem}.proj-sels--three{grid-template-columns:repeat(3, 1fr);gap:2.5rem 3rem}.proj-sel a{text-decoration:none;color:inherit;display:block}.proj-sel-img{aspect-ratio:2/1;background:var(--bg-off-white);border:1px solid var(--hairline);margin-bottom:1.1rem;position:relative}.proj-sel-img::after{content:"";position:absolute;inset:-14px;pointer-events:none;background:linear-gradient(var(--tick), var(--tick)) left 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 top 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px top 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) left 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) left 14px bottom 0/1px 10px no-repeat,linear-gradient(var(--tick), var(--tick)) right 0 bottom 14px/10px 1px no-repeat,linear-gradient(var(--tick), var(--tick)) right 14px bottom 0/1px 10px no-repeat}.proj-sel-img img{width:100%;height:100%;display:block;object-fit:cover}.proj-sel-meta{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--label);margin-bottom:.5rem;min-height:1em}.proj-sel-title{font-size:1.5rem;font-weight:600;letter-spacing:-.015em;transition:color .12s ease}.proj-sel-desc{font-size:.95rem;line-height:1.6;color:var(--ink-3);margin-top:.6rem;max-width:30rem}.proj-sel a:hover .proj-sel-title{color:var(--primary-red)}.proj-rows{border-bottom:1px solid var(--hairline)}.proj-row{display:grid;grid-template-columns:1fr 168px;gap:2rem;align-items:baseline;padding:.95rem .75rem .95rem 0;border-top:1px solid var(--hairline);text-decoration:none;color:inherit;transition:background-color .12s ease}.proj-row:hover{background:var(--bg-off-white)}.proj-row:hover .proj-row-title{color:var(--primary-red)}.proj-row-title{display:block;font-size:1rem;font-weight:600;letter-spacing:-.01em;transition:color .12s ease}.proj-row-desc{display:block;font-size:.875rem;line-height:1.55;color:var(--ink-3);margin-top:.2rem;max-width:52rem}.proj-row-tag{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--label);text-align:right}.proj-row-tag b{color:var(--text-dark);font-weight:400}.proj-foot{padding-bottom:5rem}@media (max-width: 900px){.proj-sels--three{grid-template-columns:1fr 1fr}}@media (max-width: 640px){.proj-sels{grid-template-columns:1fr;gap:2.5rem}.rule-label--tier{padding-top:2.75rem}.proj-row{grid-template-columns:1fr;gap:.35rem}.proj-row-tag{text-align:left}.filters{gap:1.1rem}}