@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-opsz-normal.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-opsz-italic.woff2) format("woff2-variations");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Figtree;src:url(/fonts/figtree-latin-wght-normal.woff2) format("woff2-variations");font-weight:300 900;font-style:normal;font-display:swap}:root{color-scheme:light dark;--hue: 88;--hue-cool: calc(var(--hue) + 180);--hue-accent: calc(var(--hue) - 10);--hue-accent-warm: calc(var(--hue) - 33);--bg: light-dark(oklch(97% .01 var(--hue)), oklch(12% .035 var(--hue-cool)));--ink: light-dark(oklch(25% .02 var(--hue)), oklch(90% .024 var(--hue)));--ink-soft: light-dark(oklch(50% .02 var(--hue)), oklch(70% .022 var(--hue)));--mono-ink: light-dark(oklch(60% .1 var(--hue-cool)), oklch(60% .04 var(--hue)));--rule: light-dark(oklch(70% .1 var(--hue-cool) / .4), oklch(40% .03 var(--hue)));--accent: light-dark(oklch(60% .2 var(--hue-cool)), oklch(76% .13 var(--hue-accent)));--accent-warm: light-dark(oklch(65% .1 var(--hue)), oklch(63% .14 var(--hue-accent-warm)));--ink-disabled: light-dark(oklch(82% .02 var(--hue)), oklch(45% .03 var(--hue-cool)));--rule-disabled: light-dark(oklch(93% .02 var(--hue)), oklch(30% .03 var(--hue-cool)));--font-serif: "Fraunces", Georgia, "Times New Roman", serif;--font-sans: "Fraunces", Georgia, "Times New Roman", serif;--font-mono: "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono-weight: 650;--font-mono-size: .68rem;--measure: 56rem;--gutter: clamp(1.25rem, 1rem + 2vw, 2.5rem);--t-fast: .12s ease;--t-base: .2s ease}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{background-color:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--ink);color:var(--bg)}a{color:inherit;text-decoration:none}.page{max-width:var(--measure);margin-inline:auto;padding:clamp(2rem,1rem + 4vw,4rem) var(--gutter) 6rem}.intro{padding-bottom:.75rem}.portrait{display:block;width:clamp(72px,6vw + 48px,96px);height:clamp(72px,6vw + 48px,96px);border-radius:50%;object-fit:cover;margin:0 0 .85rem;box-shadow:0 0 0 1px var(--rule)}.name{font-family:var(--font-serif);font-style:italic;font-weight:400;font-size:clamp(3rem,1.6rem + 4vw,4.8rem);line-height:1.05;letter-spacing:-.02em;margin:0 0 .35rem}.name-surname{color:var(--accent)}.tagline{font-family:var(--font-serif);font-weight:500;font-size:1.4rem;letter-spacing:-.01em;color:var(--ink);margin:0}.about{font-family:var(--font-serif);font-size:18px;font-variation-settings:"wght" 360;line-height:1.45;color:var(--ink-soft);margin:.9rem 0 0;text-wrap:pretty}.about a{border-bottom:1px solid var(--rule)}.about a:hover{border-bottom-color:var(--ink);color:var(--ink)}.links{display:flex;gap:1rem;flex-wrap:wrap;font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;list-style:none;margin:0 0 1rem;padding:0}.links a{color:var(--ink-soft);border-bottom:1px solid var(--rule);padding-bottom:2px;transition:color var(--t-fast),border-color var(--t-fast)}.links a:hover{color:var(--ink);border-bottom-color:var(--ink)}.filters{margin-top:0;padding:.25rem 0}.filter-row{display:grid;grid-template-columns:4.5rem 1fr;gap:.6rem;align-items:baseline;padding:.15rem 0}.filter-label{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);margin:0}.chips{display:flex;flex-wrap:wrap;gap:.35rem .4rem;list-style:none;margin:0;padding:0}.chip{appearance:none;-webkit-appearance:none;background:none;font:inherit;font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);border:1px solid var(--rule);border-radius:999px;padding:.16rem .5rem .12rem;line-height:1;cursor:pointer;white-space:nowrap;transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast)}.chip:hover:not(:disabled):not([aria-pressed=true]){color:var(--ink);border-color:var(--ink)}.chip[aria-pressed=true]{color:var(--bg);background-color:var(--accent);border-color:var(--accent)}.chip:disabled{color:var(--ink-disabled);border-color:var(--rule-disabled);cursor:not-allowed}.chip:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.time-toggle{display:flex;align-items:baseline;flex-wrap:wrap;gap:.55rem}.theme-toggle{display:flex;justify-content:flex-end;gap:.4rem;margin-bottom:.75rem}.theme-icon{appearance:none;background:none;border:0;padding:.25rem;color:var(--mono-ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;transition:color var(--t-fast)}.theme-icon:hover,.theme-icon[aria-pressed=true]{color:var(--ink)}.theme-icon:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.time-option,.theme-option{appearance:none;background:none;border:none;font:inherit;font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);cursor:pointer;padding:0 0 2px;border-bottom:1px solid transparent;transition:color var(--t-fast),border-color var(--t-fast)}.time-option:hover,.theme-option:hover{color:var(--ink)}.time-option[aria-checked=true],.theme-option[aria-checked=true]{color:var(--ink);border-bottom-color:var(--ink)}.time-option:focus-visible,.theme-option:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.time-sep,.theme-sep{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);color:var(--mono-ink)}.catalog{margin-top:1rem}.catalog-section{margin:2.5rem 0}.catalog-section[hidden]{display:none}.section-heading{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:light-dark(var(--mono-ink),var(--accent));margin:0 0 1rem;padding-bottom:.55rem;border-bottom:1px solid light-dark(var(--rule),var(--accent))}.role-list,.project-list,.flat-list{list-style:none;margin:0;padding:0}.role-block{padding:1.25rem 0 .75rem}.role-block[hidden],.role-header[hidden]{display:none}.role-title-line{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:1rem;margin-bottom:.15rem}.role-title{font-family:var(--font-serif);font-weight:500;font-size:1.4rem;letter-spacing:-.01em;margin:0;color:var(--ink)}.copy-btn{appearance:none;background:none;border:0;padding:.15rem;margin-left:.4rem;color:var(--mono-ink);cursor:pointer;vertical-align:.18em;display:none;align-items:center;position:relative;transition:color var(--t-fast)}body[data-author] .copy-btn{display:inline-flex}.copy-btn:hover{color:var(--ink)}.copy-btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:3px}.copy-feedback{position:absolute;left:calc(100% + .4rem);top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);white-space:nowrap;opacity:0;transition:opacity var(--t-fast);pointer-events:none}.copy-btn.is-copied .copy-feedback,.copy-btn.is-failed .copy-feedback{opacity:1}.copy-btn.is-failed .copy-feedback,.copy-btn.is-over{color:var(--accent-warm)}.role-meta{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);margin:0 0 .55rem}.role-meta .sep{color:var(--mono-ink);margin:0 .4em}.role-prose{font-family:var(--font-serif);font-size:18px;font-variation-settings:"wght" 360;line-height:1.45;color:var(--ink-soft);margin:0 0 .6rem;text-wrap:pretty}.role-prose p{margin:0 0 .6rem}.role-prose p:last-child{margin-bottom:0}.project-list{margin-top:.6rem;padding-left:1.25rem;border-left:1px solid var(--rule)}.project-row{padding:.85rem 0 .4rem}.project-row[hidden]{display:none}.project-title-line{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:1rem;margin-bottom:.1rem}.project-title{font-family:var(--font-serif);font-style:italic;font-weight:500;font-size:1.05rem;letter-spacing:-.005em;margin:0;color:var(--ink)}.project-blurb{font-family:var(--font-serif);font-size:16.5px;font-variation-settings:"wght" 360;line-height:1.5;color:var(--ink-soft);margin:0 0 .5rem;text-wrap:pretty}.project-blurb p{margin:0 0 .5rem}.project-blurb p:last-child{margin-bottom:0}.project-blurb a{border-bottom:1px solid var(--rule)}.project-blurb a:hover{border-bottom-color:var(--ink);color:var(--ink)}.flat-row{padding:1.1rem 0}.flat-row[hidden]{display:none}.flat-title-line{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:1rem;margin-bottom:.15rem}.flat-title{font-family:var(--font-serif);font-weight:500;font-size:1.15rem;letter-spacing:-.005em;margin:0;color:var(--ink)}.flat-meta{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);margin:0 0 .5rem}.flat-meta .sep{color:var(--mono-ink);margin:0 .4em}.flat-meta a{border-bottom:1px solid var(--rule);transition:color var(--t-fast),border-color var(--t-fast)}.flat-meta a:hover{color:var(--ink);border-bottom-color:var(--ink)}.flat-blurb{font-family:var(--font-serif);font-size:18px;font-variation-settings:"wght" 360;line-height:1.45;color:var(--ink-soft);margin:0 0 .6rem;text-wrap:pretty}.flat-blurb p{margin:0 0 .6rem}.flat-blurb p:last-child{margin-bottom:0}.flat-blurb a{border-bottom:1px solid var(--rule)}.flat-blurb a:hover{border-bottom-color:var(--ink);color:var(--ink)}.year{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);color:var(--mono-ink);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.row-tags{display:flex;flex-wrap:wrap;gap:.3rem;list-style:none;margin:0;padding:0}.row-tag{appearance:none;background:none;font:inherit;font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);padding:.16rem .5rem .12rem;line-height:1;border:1px solid var(--rule);border-radius:999px;cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast)}.row-tag:hover{color:var(--ink);border-color:var(--ink)}.row-tag[aria-pressed=true]{color:var(--bg);background-color:var(--accent);border-color:var(--accent)}.row-tag:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.empty{padding:2rem 0;font-family:var(--font-serif);font-style:italic;color:var(--mono-ink);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.empty[hidden]{display:none}.contact{margin-top:4rem;padding:2rem 0 0;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:baseline}.contact h2{font-family:var(--font-serif);font-weight:500;font-size:1.6rem;letter-spacing:-.01em;margin:0 0 .2rem}.contact p{margin:0;color:var(--ink-soft);font-family:var(--font-serif);font-size:1rem}.contact .email{font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:2px}footer.foot{margin-top:4rem;font-family:var(--font-mono);font-weight:var(--font-mono-weight);font-size:var(--font-mono-size);letter-spacing:.08em;text-transform:uppercase;color:var(--mono-ink);display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}@media(max-width:640px){.filter-row{grid-template-columns:1fr;gap:.4rem}.filter-label{display:none}.contact{grid-template-columns:1fr}.project-list{padding-left:.75rem}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}@supports (view-transition-name: none){::view-transition-old(root),::view-transition-new(root){animation-duration:.18s;animation-timing-function:ease}}@page{size:Letter;margin:.85in .9in}@media print{:root,:root[data-theme=light],:root[data-theme=dark]{--bg: #fff;--ink: #000;--ink-soft: #111;--mono-ink: #333;--rule: #bbb}*,*:before,*:after{background:transparent!important;box-shadow:none!important;text-shadow:none!important;transition:none!important}html,body{background:#fff!important;color:#000!important;font-size:10pt;line-height:1.5}.filters,.empty,.catalog,.contact,.copy-btn,.row-tags,.theme-toggle,.download-cv{display:none!important}.page{max-width:none;padding:0;margin:0}.intro{padding-bottom:.05in}.portrait{width:.7in;height:.7in;box-shadow:none;margin-bottom:.05in}.name{font-size:22pt;line-height:1.05;margin:0 0 .04in}.tagline{font-size:10.5pt;margin:0 0 .04in}.links{margin:0 0 .06in;gap:.25in}.links a{border-bottom:0;color:#000;text-decoration:underline}.about{font-size:10pt;margin:.04in 0 0;color:#222}.about a{border-bottom:0;text-decoration:underline}.print-section{margin-top:.2in;break-inside:auto}.print-section h2{font-family:var(--font-mono);font-size:8pt;font-weight:var(--font-mono-weight);letter-spacing:.1em;text-transform:uppercase;color:#555;margin:0 0 .06in;padding-bottom:.03in;border-bottom:1px solid #bbb}.print-role{break-inside:auto;margin:0 0 .22in}.print-role h3{font-family:var(--font-serif);font-size:11.5pt;font-weight:500;margin:0 0 .02in;color:#000;break-after:avoid}.print-meta{font-family:var(--font-mono);font-size:8.5pt;letter-spacing:.04em;color:#555;margin:0 0 .05in;break-after:avoid}.print-role-body{font-weight:360}.print-role-body p{margin:0 0 .05in;orphans:2;widows:2}.print-role-body p:last-child{margin-bottom:0}.print-project-list{list-style:none;margin:.06in 0 0;padding:0 0 0 .22in;border-left:1px solid #ddd}.print-project{font-size:10pt;margin:0 0 .05in;break-inside:avoid;font-weight:360}.print-project strong{font-style:italic;font-weight:700}.print-project a,.print-role-body a{color:#000;text-decoration:underline;border-bottom:0}.print-role--compact{margin-bottom:.06in;break-inside:avoid}.print-role--compact h3{font-size:10.5pt;margin-bottom:0}.print-role--compact .print-meta{margin:0}.print-list{list-style:none;margin:0;padding:0;font-size:10pt}.print-list li{margin:0 0 .04in;break-inside:avoid}.print-list a{color:#000;text-decoration:underline;border-bottom:0}.print-skills{font-size:10pt;font-weight:360;margin:0}footer.foot{margin-top:.2in}footer.foot span:nth-child(2){display:none}}
