@font-face{font-family:Equity;src:url(/fonts/equity_a_regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Equity;src:url(/fonts/equity_a_italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Equity;src:url(/fonts/equity_a_bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Concourse;src:url(/fonts/concourse_ot_3_book.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Concourse;src:url(/fonts/concourse_6_regular.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Concourse;src:url(/fonts/concourse_ot_7_bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Concourse Caps;src:url(/fonts/concourse_3_caps_regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@layer base,typography,layout,components,utilities,responsive;@layer base{:root{--font-text: "Equity", "Charter", "Iowan Old Style", Georgia, serif;--font-ui: "Concourse", "Helvetica Neue", Helvetica, system-ui, sans-serif;--font-caps: "Concourse Caps", "Concourse", "Helvetica Neue", Helvetica, sans-serif;--text-sm: .9375rem;--text-ui: 1.0625rem;--text-body: 1.25rem;--text-lede: 1.375rem;--text-h3: 1.25rem;--text-h2: clamp(1.75rem, 3vw, 2.125rem);--text-h1: clamp(2.75rem, 7vw, 4.25rem);--lh-text: 1.45;--lh-tight: 1.1;--paper: #fbf9f5;--surface: #ffffff;--surface-2: #f4f0e9;--rule: #e5dfd4;--rule-soft: #efeae0;--ink: #1a1814;--ink-2: #45413b;--ink-3: #6b665c;--ink-4: #94908a;--accent: #4b2e83;--accent-ink: #2d1b52;--accent-tint: #f1ecf9;--accent-line: #e1d8f0;--accent-contrast: #f4f1ea;--shadow-card: 0 1px 3px rgba(0, 0, 0, .06), 0 0 0 1px rgba(0, 0, 0, .04);--shadow-lift: 0 10px 30px rgba(26, 24, 20, .08), 0 1px 3px rgba(26, 24, 20, .06);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--space-10: 4rem;--space-12: 5rem;--space-16: 8rem;--radius-1: 2px;--radius-2: 4px;--radius-3: 8px;--radius-4: 12px;--max-width: 70rem;--measure: 66ch;--nav-height: 4rem;--transition: .18s ease;color-scheme:light}[data-theme=dark]{--paper: #0e0d14;--surface: #15141c;--surface-2: #1b1a24;--rule: #28263a;--rule-soft: #1f1e2a;--ink: #ece7dd;--ink-2: #c2bcaf;--ink-3: #908a7e;--ink-4: #6a6557;--accent: #a188e8;--accent-ink: #c7b5f2;--accent-tint: #1f1a2e;--accent-line: #2e2645;--accent-contrast: #15141c;--shadow-card: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .06);--shadow-lift: 0 10px 30px rgba(0, 0, 0, .45), 0 0 0 1px rgba(255, 255, 255, .06);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme]){--paper: #0e0d14;--surface: #15141c;--surface-2: #1b1a24;--rule: #28263a;--rule-soft: #1f1e2a;--ink: #ece7dd;--ink-2: #c2bcaf;--ink-3: #908a7e;--ink-4: #6a6557;--accent: #a188e8;--accent-ink: #c7b5f2;--accent-tint: #1f1a2e;--accent-line: #2e2645;--accent-contrast: #15141c;--shadow-card: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .06);--shadow-lift: 0 10px 30px rgba(0, 0, 0, .45), 0 0 0 1px rgba(255, 255, 255, .06);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + var(--space-4))}body{font-family:var(--font-text);font-size:var(--text-body);line-height:var(--lh-text);color:var(--ink);background:var(--paper);text-rendering:optimizeLegibility;font-feature-settings:"liga" 1,"kern" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-1)}}@layer typography{h1,h2,h3{font-family:var(--font-ui);line-height:var(--lh-tight);color:var(--ink)}h1{font-size:var(--text-h1);font-weight:600;letter-spacing:-.02em;color:var(--accent)}h2{font-size:var(--text-h2);font-weight:700;letter-spacing:-.015em}h3{font-size:var(--text-h3);font-weight:600}.eyebrow{display:flex;align-items:center;gap:var(--space-4);font-family:var(--font-caps);font-size:var(--text-sm);letter-spacing:.12em;color:var(--accent)}.eyebrow:after{content:"";flex:1;max-width:8rem;height:1px;background:var(--accent-line)}.tag{font-family:var(--font-caps);font-size:var(--text-sm);letter-spacing:.08em;color:var(--accent)}strong{font-weight:700}}@layer layout{.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}section{padding:var(--space-12) 0}.section-header{margin-bottom:var(--space-8)}.section-header h2{margin-top:var(--space-4);max-width:30ch}.section-header p:not(.eyebrow){margin-top:var(--space-4);font-size:var(--text-lede);color:var(--ink-2);max-width:56ch}}@layer components{.skip-link{position:absolute;left:var(--space-4);top:-100%;z-index:200;padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--accent-contrast);font-family:var(--font-ui);border-radius:var(--radius-2)}.skip-link:focus{top:var(--space-4)}.site-nav{position:fixed;top:0;left:0;right:0;z-index:100;background:color-mix(in oklab,var(--paper) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}.site-nav .container{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);height:var(--nav-height)}.nav-logo{display:inline-flex;align-items:center;gap:var(--space-3);font-family:var(--font-ui);font-weight:700;font-size:var(--text-ui);color:var(--ink);white-space:nowrap}.monogram{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:5px;background:var(--accent);color:var(--accent-contrast);font-family:var(--font-ui);font-weight:700;font-size:.75rem;letter-spacing:-.03em}.nav-links{display:flex;gap:var(--space-5);list-style:none;margin-left:auto}.nav-links a{font-family:var(--font-caps);font-size:var(--text-ui);letter-spacing:.08em;color:var(--ink-3);transition:color var(--transition);position:relative}.nav-links a:hover{color:var(--accent)}.nav-links a:after{content:"";position:absolute;bottom:-3px;left:0;width:0;height:1px;background:var(--accent);transition:width var(--transition)}.nav-links a:hover:after{width:100%}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:1px solid var(--rule);border-radius:var(--radius-2);background:transparent;color:var(--ink-3);cursor:pointer;transition:color var(--transition),border-color var(--transition)}.theme-toggle:hover{color:var(--accent);border-color:var(--accent-line)}.theme-toggle svg{width:18px;height:18px;display:none}[data-theme-pref=auto] .theme-toggle .icon-auto,[data-theme-pref=light] .theme-toggle .icon-light,[data-theme-pref=dark] .theme-toggle .icon-dark{display:block}.mobile-nav{display:none;position:fixed;top:auto;bottom:0;left:0;right:0;z-index:100;background:color-mix(in oklab,var(--paper) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--rule);justify-content:space-around;padding:var(--space-2) 0;padding-bottom:max(var(--space-2),env(safe-area-inset-bottom))}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);color:var(--ink-4);font-family:var(--font-caps);font-size:.6875rem;letter-spacing:.08em;transition:color var(--transition)}.mobile-nav-item svg{width:20px;height:20px}.mobile-nav-item.active,.mobile-nav-item:hover{color:var(--accent)}.hero{padding-top:calc(var(--nav-height) + var(--space-12));padding-bottom:var(--space-12);border-bottom:1px solid var(--rule);background:radial-gradient(ellipse 60% 80% at 100% 0%,color-mix(in oklab,var(--accent) 7%,transparent) 0%,transparent 70%),var(--paper)}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-10);align-items:start}.hero-text h1{margin-top:var(--space-5)}.strap{margin-top:var(--space-3);font-family:var(--font-ui);font-size:var(--text-lede);color:var(--accent)}.lede{margin-top:var(--space-5);font-size:var(--text-lede);line-height:1.5;color:var(--ink-2);max-width:var(--measure)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}.hero-portrait{width:17.5rem;margin-top:var(--space-2)}.hero-portrait img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-3);box-shadow:var(--shadow-card)}.button{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid var(--rule);border-radius:var(--radius-2);font-family:var(--font-ui);font-weight:600;font-size:var(--text-ui);color:var(--ink-2);background:var(--surface);transition:color var(--transition),border-color var(--transition),background var(--transition)}.button:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-tint)}.button svg{width:16px;height:16px}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.button-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:var(--accent-contrast)}.visit-link,.read-link,.section-more a{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-weight:600;font-size:var(--text-ui);color:var(--accent);transition:gap var(--transition)}.visit-link:hover,.read-link:hover,.section-more a:hover{gap:var(--space-3)}.visit-link svg,.read-link svg,.section-more svg{width:16px;height:16px}.section-more{margin-top:var(--space-8)}.work-section{background:var(--surface-2);border-bottom:1px solid var(--rule)}.work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-6)}.project-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius-3);overflow:hidden;transition:box-shadow var(--transition),transform var(--transition)}.project-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.project-visual{display:block;border-bottom:1px solid var(--rule);background:var(--ink)}.project-visual img{width:100%;height:auto;aspect-ratio:1200 / 630;object-fit:cover}.project-info{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);flex:1}.project-title{display:flex;align-items:center;gap:var(--space-3)}.project-title>span{display:flex;flex-direction:column}.project-name{font-family:var(--font-ui);font-weight:600;font-size:var(--text-h3);line-height:var(--lh-tight);color:var(--ink)}.project-url{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--ink-3);margin-top:2px}.mark{width:28px;height:28px;flex-shrink:0;border-radius:6px}.mark-ti{color:var(--ink)}.project-info>p:not(.project-title):not(.project-ai){font-size:var(--text-ui);line-height:var(--lh-text);color:var(--ink-2)}.project-ai{display:flex;gap:var(--space-2);align-items:flex-start;padding:var(--space-3) var(--space-4);border-left:3px solid var(--accent);background:var(--accent-tint);border-radius:0 var(--radius-2) var(--radius-2) 0;font-family:var(--font-ui);font-size:var(--text-sm);line-height:1.4;color:var(--accent-ink)}.project-ai svg{width:16px;height:16px;flex-shrink:0;margin-top:2px}.project-info .visit-link{margin-top:auto}.writing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-6)}.article-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) 0;border-top:1px solid var(--rule);transition:border-color var(--transition)}.article-card:hover{border-top-color:var(--accent)}.card-meta{display:flex;justify-content:space-between;gap:var(--space-3);font-family:var(--font-ui);font-size:var(--text-sm);color:var(--ink-4)}.article-card h3{font-family:var(--font-text);font-weight:700;font-size:1.375rem;line-height:1.25;transition:color var(--transition)}.article-card:hover h3{color:var(--accent)}.article-card p{font-size:var(--text-ui);color:var(--ink-2);flex:1}.about-section{background:var(--surface-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.about-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--space-10);align-items:start}.skills{list-style:none;display:flex;flex-direction:column;gap:var(--space-5);max-width:var(--measure)}.skills li{color:var(--ink-2)}.skills strong{font-family:var(--font-ui);font-weight:600;font-size:var(--text-h3);color:var(--ink);display:block;margin-bottom:var(--space-1)}.background h3{font-family:var(--font-caps);font-weight:400;font-size:var(--text-sm);letter-spacing:.12em;color:var(--accent);margin-bottom:var(--space-4)}.timeline>div{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--space-4);align-items:baseline;padding:var(--space-3) 0;border-top:1px solid var(--rule)}.timeline dt{font-family:var(--font-ui);font-weight:700;font-size:var(--text-ui);color:var(--ink)}.timeline dd{grid-column:1 / -1;font-family:var(--font-ui);font-size:var(--text-ui);color:var(--ink-2);line-height:1.4;margin-top:2px}.timeline dd.years{grid-column:2;grid-row:1;margin-top:0;font-size:var(--text-sm);color:var(--ink-3);white-space:nowrap}.contact-section h2{margin-top:var(--space-4)}.contact-section>.container>p:not(.eyebrow){margin-top:var(--space-4);font-size:var(--text-lede);color:var(--ink-2);max-width:56ch}.social-links{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-6)}.social-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:1px solid var(--rule);border-radius:var(--radius-2);background:var(--surface);font-family:var(--font-ui);font-weight:600;font-size:var(--text-ui);color:var(--ink-2);transition:color var(--transition),border-color var(--transition),background var(--transition)}.social-link:hover{border-color:var(--accent-line);color:var(--accent);background:var(--accent-tint)}.social-link svg{width:16px;height:16px}.site-footer{border-top:1px solid var(--rule);padding:var(--space-6) 0;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--ink-3)}.site-footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3) var(--space-6)}.family{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4)}.family>span{font-family:var(--font-caps);letter-spacing:.1em;color:var(--ink-4)}.family a{color:var(--ink-2);transition:color var(--transition)}.family a:hover{color:var(--accent)}.colophon{font-family:var(--font-text);font-style:italic;color:var(--ink-4)}}@layer utilities{.animate-in{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}.animate-in:nth-child(2){transition-delay:90ms}.animate-in:nth-child(3){transition-delay:.18s}.animate-in.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.animate-in{opacity:1;transform:none;transition:none}.project-card,.project-card:hover{transform:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}}@layer responsive{@media(max-width:1024px){.work-grid,.writing-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:960px){.hero{padding-top:calc(var(--nav-height) + var(--space-8));padding-bottom:var(--space-10)}.hero-grid{grid-template-columns:1fr;gap:var(--space-6)}.hero-portrait{order:-1;width:10rem;margin-top:0}.about-grid{grid-template-columns:1fr;gap:var(--space-8)}}@media(max-width:768px){.nav-links{display:none}.mobile-nav{display:flex}body{padding-bottom:4.5rem}section{padding:var(--space-10) 0}.container{padding:0 var(--space-4)}.work-grid,.writing-grid{grid-template-columns:1fr}.hero-actions .button{flex:1;justify-content:center}}@media(max-width:480px){.social-links{flex-direction:column}.social-link{justify-content:center}.site-footer .container{flex-direction:column}}}
