@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#252222;--paper:#faf8f8;--green:#f4a6a6;--line:#dfd5d5;--muted:#6a6262}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;font-size:16px;line-height:1.6}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #9a444a;outline-offset:5px}header,main,footer{max-width:1440px;margin:auto;padding-left:6%;padding-right:6%}header{display:flex;justify-content:space-between;align-items:center;min-height:106px;border-bottom:1px solid var(--line);gap:24px}.brand{font-family:'Space Grotesk',sans-serif;font-weight:700;display:flex;align-items:center;gap:12px;white-space:nowrap;font-size:14px;letter-spacing:.04em}.logo{font-size:25px;letter-spacing:-4px;padding-right:6px}.brand-dot{color:#9a444a;margin-left:-10px}nav{display:flex;gap:28px}nav a{font-size:14px;position:relative;padding:10px 0}nav a[aria-current]{font-weight:700}nav a[aria-current]:after{content:'';height:3px;background:var(--ink);position:absolute;bottom:0;left:0;right:0}nav a:hover{color:#9a444a}.menu{display:none}.eyebrow,.edition,.date,.tags,figcaption,small,.sample-tag{font-family:'DM Sans',sans-serif;font-size:12px;letter-spacing:.09em;font-weight:500}.eyebrow{margin:0 0 22px}.green{color:#e69b9b}h1,h2,h3{font-family:'Space Grotesk',Arial,sans-serif;font-weight:500;line-height:1.12;letter-spacing:-.045em}p{margin:0 0 20px}h2{font-size:36px;margin:0 0 20px}h3{font-size:23px;margin:0 0 8px}.hero{padding:49px 0 45px;border-bottom:1px solid var(--line)}.hero-top{display:flex;justify-content:space-between;gap:20px}.hero-top .eyebrow{margin:0}.edition{color:var(--muted)}.hero h1{font-size:clamp(72px,10.7vw,154px);line-height:1.01;letter-spacing:-.075em;margin:54px 0 42px;position:relative}.hero h1 .green{color:var(--ink)}.outline{color:transparent;-webkit-text-stroke:1.5px var(--ink)}.asterisk{font-size:1.28em;position:absolute;right:3%;bottom:-.03em;color:var(--green);line-height:1;transform:rotate(-8deg);text-shadow:1px 0 var(--ink),-1px 0 var(--ink),0 1px var(--ink),0 -1px var(--ink)}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px}.hero-bottom>p{font-size:20px;line-height:1.45;margin:0}.contact-links{display:flex;gap:10px}.contact-links button{border:1px solid var(--ink);background:transparent;padding:12px 20px;min-width:123px;text-align:left}.contact-links button:first-child{background:var(--ink);color:var(--paper)}.contact-links span{margin-left:22px}.contact-links button:hover{background:var(--green);color:var(--ink)}.updates{padding:64px 0 80px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:23px}.section-head .eyebrow{margin-bottom:12px}.section-head h2{margin-bottom:0}.sample-tag{font-size:11px;border:1px solid var(--line);padding:6px 10px;white-space:nowrap}.update{display:grid;grid-template-columns:190px 1fr 50px;align-items:center;gap:25px;padding:27px 0;border-bottom:1px solid var(--line);transition:padding .2s}.update:first-of-type{border-top:1px solid var(--line)}.update:hover{padding-left:15px;background:#faeeee}.date{color:var(--muted)}.update p{margin:0;color:var(--muted);font-size:15px}.round-arrow{border:1px solid var(--line);border-radius:50%;width:44px;height:44px;display:grid;place-items:center;font-size:23px}.update:hover .round-arrow{background:var(--green);border-color:var(--green)}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:29px;padding-bottom:29px;font-size:12px;color:var(--muted)}footer p{margin:0}footer .brand{font-size:21px;color:var(--ink)}footer .brand span{font-family:'DM Sans';font-weight:400;font-size:13px;letter-spacing:0}.page-intro{padding:65px 0 35px}.page-intro h1{font-size:clamp(48px,6vw,82px);margin:0 0 25px}.lede{color:var(--muted);font-size:19px;max-width:690px}.placeholder-note{font-size:13px;color:var(--muted);padding-left:12px;border-left:2px solid #e9a4aa;max-width:760px;margin-bottom:30px}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:90px}.card{border:1px solid var(--line);scroll-margin-top:30px;min-width:0}.card:target,.article-row:target{outline:2px solid #e69b9b;outline-offset:6px}.card-body{padding:25px}.card-body h2{font-size:27px}.card-body p:not(.eyebrow){color:var(--muted)}.card-body .eyebrow{font-size:11px;margin-bottom:14px}.card-body .tags{font-size:11px;letter-spacing:.01em;min-height:36px}.text-link{border:0;background:transparent;padding:6px 0;font-weight:600;font-size:14px;display:inline-flex;justify-content:space-between;gap:24px}.text-link:hover{text-decoration:underline;text-underline-offset:5px}.thumb{height:240px;position:relative;overflow:hidden}.sort{background:#2b2425;padding:40px 36px 50px;display:flex;align-items:end;gap:6px}.sort i{display:block;flex:1;background:var(--green)}.sort span,.palette span{position:absolute;bottom:15px;left:20px;color:#f6e8e8;font:10px monospace;letter-spacing:.16em}.notes{background:#dadfea;display:flex;align-items:center;justify-content:center;padding:24px}.mini-window{width:100%;background:#f9fafc;padding:15px;box-shadow:0 10px 30px #28375318;transform:rotate(-5deg)}.mini-window small{font-size:8px;display:block;border-bottom:1px solid #dce1e6;padding-bottom:9px;margin-bottom:12px;color:#7a8496}.mini-window b{float:right}.mini-window strong{font-size:16px;letter-spacing:-.04em}.mini-window p{font:9px/1.4 monospace;margin:12px 0;color:#737b88}.palette{display:flex;background:#674965;padding:35px 30px 50px;gap:0;align-items:center}.palette i{height:125px;flex:1;background:#a992c5}.palette i:nth-child(2){background:#d1baeb;height:148px}.palette i:nth-child(3){background:#e8d8f5;height:163px}.palette i:nth-child(4){background:#f7eddd;height:138px}.exp-art{background:#eee2e2;display:grid;place-content:center}.exp-art>span{font:70px 'Space Grotesk';letter-spacing:-.08em}.exp-art small{position:absolute;bottom:15px;left:20px;font-size:10px}.card:nth-child(2) .exp-art{background:#e1e4ee}.card:nth-child(3) .exp-art{background:#e7e3db}.organization{font-weight:600}.skills-grid{display:grid;grid-template-columns:1fr 1fr;margin:0 0 85px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.skill-group{padding:36px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.skill-number{font:13px monospace;color:var(--muted);display:block;margin-bottom:32px}.skill-group p{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:9px;margin-top:30px}.chips span{padding:6px 13px;border:1px solid #dfcece;font-size:14px;border-radius:3px;background:#f7eeee}.about-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:8%;margin-bottom:80px}.about-grid figure{margin:0}.about-grid img{width:100%;height:510px;object-fit:cover;filter:saturate(.5);display:block}.about-grid figcaption{letter-spacing:0;font-size:12px;color:var(--muted);margin-top:12px}.about-grid figcaption a{text-decoration:underline}.about-grid h2{font-size:42px}.about-grid>div>p:not(.eyebrow){color:var(--muted)}.about-facts{border-top:1px solid var(--line);padding-top:23px;margin-top:30px;display:flex;gap:35px}.about-facts small{color:var(--muted)}.article-list{margin-bottom:90px}.article-row{display:flex;justify-content:space-between;align-items:center;gap:30px;border-top:1px solid var(--line);padding:34px 0}.article-row:last-child{border-bottom:1px solid var(--line)}.article-row h2{font-size:30px}.article-row p{color:var(--muted);margin-bottom:0}.article-row .eyebrow{margin-bottom:15px}.article-row .text-link{flex-shrink:0}dialog{border:1px solid var(--line);padding:45px;max-width:700px;width:calc(100% - 32px);max-height:85vh;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#241b1daa;backdrop-filter:blur(4px)}.close{position:absolute;right:15px;top:8px;border:0;background:none;font-size:28px}.modal-kicker{font-size:12px;letter-spacing:.1em;color:var(--muted)}dialog h2{font-size:32px}dialog h3{font-size:22px;margin-top:25px}dialog p{color:var(--muted)}.action{border:1px solid var(--ink);padding:10px 18px;background:var(--green);margin:15px 8px 0 0}.demo-bars{height:180px;display:flex;align-items:end;gap:8px;margin:30px 0}.demo-bars i{background:#d58b91;flex:1;transition:height .25s;min-width:12px}.demo-bars.sorted i{background:#9a444a}textarea{width:100%;min-height:150px;padding:16px;border:1px solid var(--line);font:14px/1.6 monospace;resize:vertical;background:white;color:var(--ink)}.note-preview{padding:20px;border:1px solid var(--line);margin-top:16px}.note-preview h1{font-size:28px}.color-demo{display:flex;height:140px;margin-top:20px}.color-demo div{flex:1;display:flex;align-items:end;justify-content:center;padding-bottom:12px;font-size:11px}.skip{position:fixed;top:-100px;left:15px;background:var(--green);padding:10px;z-index:100}.skip:focus{top:10px}@media(min-width:1450px){.hero h1{font-size:154px}}@media(max-width:950px){nav{gap:16px}.brand{font-size:12px}.card-grid{grid-template-columns:1fr 1fr}.card:last-child{grid-column:1/-1;max-width:calc(50% - 12px)}.hero h1{font-size:12vw}.contact-links button{padding:10px 12px;min-width:0}.contact-links span{margin-left:8px}.update{grid-template-columns:140px 1fr 45px}.about-grid{gap:35px}.about-grid img{height:440px}}@media(max-width:700px){header,main,footer{padding-left:6%;padding-right:6%}header{min-height:80px;flex-wrap:wrap;gap:0}.menu{display:block;background:transparent;border:1px solid var(--line);padding:5px 10px;font-size:14px}nav{display:none;width:100%;padding:15px 0 20px;grid-template-columns:repeat(3,1fr);gap:10px 20px}nav.open{display:grid}nav a{font-size:14px}.hero{padding-top:30px}.hero-top .eyebrow{font-size:10px;max-width:210px}.edition{font-size:10px}.hero h1{font-size:14.7vw;margin:43px 0 35px}.asterisk{font-size:.9em;right:1%;bottom:0}.hero-bottom{align-items:start;flex-direction:column;gap:25px}.hero-bottom>p{font-size:18px}.contact-links{width:100%}.contact-links button{flex:1;display:flex;justify-content:space-between;font-size:14px}.updates{padding:42px 0 55px}.section-head h2{font-size:30px}.section-head{align-items:start}.section-head .eyebrow{font-size:10px}.sample-tag{display:none}.update{grid-template-columns:1fr 38px;gap:8px;padding:22px 0}.date{grid-column:1/-1;font-size:10px}.update h3{font-size:21px;line-height:1.3}.update p{font-size:14px}.round-arrow{width:35px;height:35px}.page-intro{padding:44px 0 20px}.page-intro h1{font-size:46px}.lede{font-size:17px}.card-grid,.skills-grid,.about-grid{grid-template-columns:1fr}.card:last-child{grid-column:auto;max-width:none}.thumb{height:250px}.card-grid{margin-bottom:50px}.skill-group{padding:26px}.skill-group h2{font-size:30px}.about-grid img{height:380px}.about-grid h2{font-size:35px}.article-row{align-items:start;flex-direction:column;gap:15px}.article-row h2{font-size:26px}.article-row .text-link{padding-top:0}.article-row p{font-size:15px}footer{flex-wrap:wrap;padding-top:24px;padding-bottom:24px}footer .brand{width:100%}dialog{padding:38px 22px 25px}.color-demo div{font-size:9px}.about-facts{gap:20px}.eyebrow{font-size:11px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Centered navigation and a quieter home-page composition. */
header{justify-content:center}nav{justify-content:center}.hero{padding-top:44px;padding-bottom:45px}.hero h1{margin:38px 0 40px}.hero-bottom{justify-content:flex-end}.portfolio-word{display:inline-block;position:relative}.portfolio-word .outline{display:block} .portfolio-word .outline{-webkit-text-stroke:0;color:transparent}.portfolio-hue{position:absolute;inset:0;pointer-events:none;color:transparent;-webkit-text-stroke:0;background:radial-gradient(ellipse 145px 115px at var(--ink-x,50%) var(--ink-y,50%),hsl(var(--ink-hue,345) 92% 58% / var(--ink-alpha,0)) 0%,hsl(calc(var(--ink-hue,345) + 15) 95% 60% / var(--ink-alpha,0)) 28%,transparent 100%),radial-gradient(ellipse 240px 170px at var(--ink-x,50%) var(--ink-y,50%),hsl(calc(var(--ink-hue,345) - 15) 85% 52% / calc(var(--ink-alpha,0) * .7)) 0%,transparent 100%),radial-gradient(ellipse 55% 150% at var(--flow-x0,15%) var(--flow-y0,25%),#f4a6a6 0%,#f4a6a600 75%),radial-gradient(ellipse 55% 170% at var(--flow-x1,55%) var(--flow-y1,80%),#eeb0c7 0%,#eeb0c700 75%),radial-gradient(ellipse 50% 160% at var(--flow-x2,90%) var(--flow-y2,20%),#9870ed 0%,#9870ed00 75%),linear-gradient(115deg,#e9949b,#d38ba9 50%,#7462c9);background-clip:text;-webkit-background-clip:text;opacity:1;line-height:inherit}.update{grid-template-columns:168px minmax(0,1fr) 50px;gap:32px;padding:25px 0}.update-preview{display:flex;flex-direction:column;gap:10px;min-width:0}.update-image{width:100%;height:104px;display:block;overflow:hidden;background:#eee2e2}.update-image img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.55)}.update-chart{display:flex;align-items:flex-end;gap:5px;padding:17px 21px;background:#2b2425}.update-chart i{flex:1;background:var(--green)}.update-writing{padding:13px 20px;background:#e1e4ee;color:#424a60}.update-writing>span{font:20px/1.4 'Space Grotesk',sans-serif;display:block;letter-spacing:-.04em;margin-bottom:7px}.update-writing i{display:block;height:2px;width:100%;background:#a9b1c4;margin:5px 0}.update-writing i:last-child{width:65%}.update .date{font-size:10px;letter-spacing:.07em}.update:hover{padding-left:0}.update:hover .update-image{outline:1px solid #cc989e;outline-offset:3px}
@media(max-width:700px){header{justify-content:center;min-height:80px}.menu{margin:16px auto}nav.open{justify-items:center}.hero{padding-top:30px}.hero h1{margin:25px 0 37px}.hero-bottom{align-items:stretch}.portfolio-hue{background-size:auto}.update{grid-template-columns:88px minmax(0,1fr) 28px;gap:14px;padding:23px 0}.update-image{height:66px}.update-preview{gap:7px}.update .date{font-size:9px;letter-spacing:.015em;grid-column:auto}.update h3{font-size:19px}.update p{font-size:13px}.update .round-arrow{width:28px;height:28px;font-size:18px}.update-chart{padding:12px 10px;gap:3px}.update-writing{padding:8px}.update-writing>span{font-size:14px;margin-bottom:5px}.update-writing i{margin:4px 0}.update-writing i:last-child{display:none}}
@media(prefers-reduced-motion:reduce){.portfolio-hue{transition:none}}

/* Preserve the final glyph's overhang with the heading's tight tracking. */
.portfolio-word{padding-inline-end:.14em}
.portfolio-hue{white-space:nowrap}

.personal-name{display:block;font-size:clamp(48px,7.9vw,113px);letter-spacing:-.065em;line-height:1.12;margin-bottom:10px}.contact-links a{border:1px solid var(--ink);background:transparent;padding:12px 20px;min-width:123px;text-align:left}.contact-links a:first-child{background:var(--ink);color:var(--paper)}.contact-links a:hover{background:var(--green);color:var(--ink)}.contact-links button:first-child{background:transparent;color:var(--ink)}.real-thumb{background:#eee2e2;padding:12px}.real-thumb img{display:block;width:100%;height:100%;object-fit:contain}.card-body{display:flex;flex-direction:column}.card-body .text-link{margin-top:auto}.card-grid .card{display:flex;flex-direction:column}.card-grid .card-body{flex:1}.card-grid .card:last-child{grid-column:auto;max-width:none}.card-body .chips{margin-top:6px}.card-body .chips span{font-size:12px}.real-thumb{flex-shrink:0}@media(max-width:950px){.contact-links a{padding:10px 12px;min-width:0}}@media(max-width:700px){.personal-name{font-size:10.2vw;letter-spacing:-.065em}.contact-links a{flex:1;display:flex;justify-content:space-between;font-size:14px}.hero h1{font-size:14.7vw}.about-facts{flex-wrap:wrap}}

.about-grid img.portrait{height:auto;aspect-ratio:1;object-fit:cover;filter:none}.about-intro{padding-bottom:35px}.about-grid h2{font-size:clamp(28px,3vw,42px);line-height:1.18}

.placeholder-thumb{background:#e1eaf1;padding:0}.update-image:has(img[src="/assets/image-placeholder.png"]){background:#e1eaf1}.update-image img[src="/assets/image-placeholder.png"]{object-fit:contain;filter:none}

.project-card{position:relative}.pinned-tag{position:absolute;top:18px;right:18px;z-index:1;background:#f4a6a6;color:#252222;border:1px solid #d58b91;padding:4px 12px;border-radius:3px;font-size:13px;font-weight:600;letter-spacing:.02em;box-shadow:0 2px 8px #25222218}

.new-tag{background:#faeeee;border-color:#d58b91;color:#793a40}

.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.projects-grid .real-thumb{height:auto;aspect-ratio:16/9}.projects-grid .real-thumb img{height:100%}@media(max-width:700px){.projects-grid{grid-template-columns:minmax(0,1fr)}}

.update-image img[src="/assets/rsvp-thesis-thumbnail.png"]{object-fit:contain;padding:10px;filter:none;background:#faeeee}
