:root{--bg:#f7f5f0;--ink:#14171a;--muted:#6a6f74;--faint:#9aa0a4;--rule:#ddd8ce;--accent:#1d6b45;--chip:#ece8df;--field-line:#1a1a1a38;--tracer-rgb:26, 26, 26;--figure-ink:#14171ad9;--input-bg:#fffefb;--display:"Instrument Serif", Georgia, "Times New Roman", serif;--body:"Spectral", Georgia, serif;--mono:"Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--measure:36rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101010;--ink:#e8e6e2;--muted:#909090;--faint:#6a6a6a;--rule:#282828;--accent:#5fbf8c;--chip:#1a1a1a;--field-line:#ececec38;--tracer-rgb:236, 236, 236;--figure-ink:#ecececcc;--input-bg:#171717}}:root[data-theme=dark]{--bg:#101010;--ink:#e8e6e2;--muted:#909090;--faint:#6a6a6a;--rule:#282828;--accent:#5fbf8c;--chip:#1a1a1a;--field-line:#ececec38;--tracer-rgb:236, 236, 236;--figure-ink:#ecececcc;--input-bg:#171717}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100%;color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:17px;font-weight:300;line-height:1.65}ul{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}.field{z-index:0;--clear-from:calc(50% - var(--measure) / 2 - 2rem);--clear-to:calc(50% + var(--measure) / 2 + 2rem);width:100%;height:100%;-webkit-mask-image:linear-gradient(to right, #000 0, #000 calc(var(--clear-from) - 5rem), transparent var(--clear-from), transparent var(--clear-to), #000 calc(var(--clear-to) + 5rem), #000 100%), linear-gradient(to bottom, transparent 0, #000 12%, #000 88%, transparent 100%);-webkit-mask-composite:source-in;-webkit-mask-image:linear-gradient(to right, #000 0, #000 calc(var(--clear-from) - 5rem), transparent var(--clear-from), transparent var(--clear-to), #000 calc(var(--clear-to) + 5rem), #000 100%), linear-gradient(to bottom, transparent 0, #000 12%, #000 88%, transparent 100%);mask-image:linear-gradient(to right, #000 0, #000 calc(var(--clear-from) - 5rem), transparent var(--clear-from), transparent var(--clear-to), #000 calc(var(--clear-to) + 5rem), #000 100%), linear-gradient(to bottom, transparent 0, #000 12%, #000 88%, transparent 100%);display:block;position:fixed;inset:0;-webkit-mask-composite:source-in;mask-composite:intersect}@media (max-width:64rem){.field{display:none}}.tracer{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.toggle{z-index:5;border:1px solid var(--rule);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border-radius:0;place-items:center;padding:0;transition:color .24s,border-color .24s;display:grid;position:fixed;top:1.5rem;right:1.5rem}.toggle:hover{color:var(--accent);border-color:var(--accent)}.toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.toggle svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;grid-area:1/1;width:15px;height:15px;transition:opacity .3s,transform .42s cubic-bezier(.4,0,.2,1)}.toggle__moon{fill:currentColor;stroke:none}.toggle__sun{opacity:1;transform:rotate(0)scale(1)}.toggle__moon{opacity:0;transform:rotate(-70deg)scale(.4)}:root[data-theme=dark] .toggle__sun{opacity:0;transform:rotate(70deg)scale(.4)}:root[data-theme=dark] .toggle__moon{opacity:1;transform:rotate(0)scale(1)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .toggle__sun{opacity:0;transform:rotate(70deg)scale(.4)}:root:not([data-theme=light]) .toggle__moon{opacity:1;transform:rotate(0)scale(1)}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}.page{z-index:2;max-width:var(--measure);margin:0 auto;padding:clamp(4rem,13vw,8rem) 1.5rem 7rem;position:relative}.masthead{padding-bottom:1rem}.masthead__name{font-family:var(--display);letter-spacing:-.015em;min-height:.95em;margin:0 0 .6rem;font-size:clamp(3rem,11vw,4.75rem);font-weight:400;line-height:.95}.decode__char{white-space:pre;opacity:.3;filter:blur(2px);transition:opacity .34s,filter .34s,transform .34s;display:inline-block;transform:translateY(.05em)}.decode__char.is-settled{opacity:1;filter:blur();transform:none}.masthead__line{max-width:26rem;min-height:1.5em;color:var(--muted);margin:0;font-size:1.0625rem;line-height:1.5}.masthead__bio{color:var(--ink);margin:1.5rem 0 0;font-size:1rem;line-height:1.7}.section{margin-top:4.5rem}.section__title{font-family:var(--display);letter-spacing:-.012em;transform-origin:0;will-change:transform;margin:0 0 1.25rem;font-size:2.125rem;font-weight:400;line-height:1.05}.row{justify-content:space-between;align-items:baseline;gap:1.25rem;padding:.5rem 0;display:flex}.row__name{font-size:1.0625rem;font-weight:400}.row__meta{text-align:right;flex:none;align-items:baseline;gap:.85rem;display:flex}.row__role{color:var(--muted);font-size:.875rem;font-style:italic}.row__years{font-family:var(--mono);letter-spacing:.08em;color:var(--faint);text-align:right;min-width:4.2rem;font-size:.625rem}.tags{flex-wrap:wrap;gap:.4rem 1.4rem;display:flex}.tags li{color:var(--muted);font-size:.9375rem;transition:color .2s}.tags li:hover{color:var(--accent)}.tags--quiet{font-family:var(--mono);margin-top:.6rem}.tags--quiet li{letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-size:.625rem}.contact__row{gap:1rem;display:flex}.contact__row .field-label{flex:1 1 0;min-width:0}.field-label{margin-bottom:.9rem;display:block}.field-label>span{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:.3rem;font-size:.5625rem;display:block}.field-label input,.field-label textarea{border:0;border-bottom:1px solid var(--rule);width:100%;color:var(--ink);font-family:var(--body);resize:vertical;background:0 0;border-radius:0;padding:.5rem 0;font-size:1rem;line-height:1.5;transition:border-color .22s}.field-label input:focus,.field-label textarea:focus{border-bottom-color:var(--accent);outline:none}.contact__foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-top:1.25rem;display:flex}.button{border:1px solid var(--ink);color:var(--ink);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:0;padding:.5rem 1.5rem;font-size:.6875rem;transition:background-color .22s,color .22s,border-color .22s}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.contact__direct{color:var(--muted);font-size:.875rem}.contact__copy{border:0;border-bottom:1px solid var(--rule);color:var(--faint);font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;margin-left:.5rem;padding:0;font-size:.5625rem;transition:color .2s,border-color .2s}.contact__copy:hover{color:var(--accent);border-color:var(--accent)}.contact__status{min-height:1.2em;color:var(--muted);margin:.9rem 0 0;font-size:.8125rem;font-style:italic}.links a{justify-content:space-between;align-items:baseline;gap:1rem;padding:.55rem 0;display:flex;position:relative}.links__label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-size:.625rem;transition:color .2s}.links a:hover .links__label{color:var(--accent)}.links__value{overflow-wrap:anywhere;text-align:right;font-size:.9375rem}.js [data-reveal]{opacity:0;transition:opacity .68s cubic-bezier(.16,1,.3,1),transform .68s cubic-bezier(.16,1,.3,1);transform:translateY(12px)}.js [data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1;transition:none;transform:none}.decode__char{opacity:1;filter:none;transform:none}.toggle,.toggle svg{transition:none}}@media (max-width:34rem){.row{flex-direction:column;gap:.1rem}.row__meta{text-align:left;gap:.6rem}.row__years{text-align:left;min-width:0}.contact__row{flex-direction:column;gap:0}.links a{flex-direction:column;gap:.1rem}.links__value{text-align:left}}.roster__group+.roster__group{margin-top:2.25rem}.row{grid-template-columns:1fr auto;align-items:baseline;gap:0 1.25rem;padding:.45rem 0;transition:color .26s;display:grid}.row__name{font-size:1.0625rem;transition:color .26s}.row__role{color:var(--muted);text-align:right;grid-area:1/2;font-size:.8125rem;font-style:italic}.row.has-colours:hover .row__name,.row.is-lit .row__name{color:var(--row-colour,var(--accent))}.slide{z-index:3;width:30px;height:62vh;position:fixed;top:50%;left:calc(50% - 25.5rem);transform:translateY(-50%)}.slide__tube{background:var(--rule);width:2px;height:100%;margin-left:-1px;position:absolute;top:0;left:50%}.slide__bell{border:1px solid var(--rule);border-bottom-color:#0000;border-radius:50% 50% 40% 40%;width:22px;height:22px;margin-left:-11px;position:absolute;top:-16px;left:50%}.slide__outer{will-change:transform;width:10px;height:84px;margin-left:-5px;transition:transform .24s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:50%}.slide__brace{border:1.5px solid var(--accent);opacity:.85;border-radius:5px;position:absolute;inset:0}.slide__grip{background:var(--accent);border-radius:2px;width:16px;height:3px;margin-left:-8px;position:absolute;bottom:-7px;left:50%}.slide__stop{cursor:pointer;background:0 0;border:0;place-items:center;width:22px;height:22px;margin:-11px 0 0 -11px;padding:0;display:grid;position:absolute;left:50%}.slide__tick{background:var(--rule);width:9px;height:1px;transition:background-color .26s,width .3s cubic-bezier(.16,1,.3,1)}.slide__stop.is-passed .slide__tick{background:var(--accent);width:15px}.slide__stop:hover .slide__tick{background:var(--ink);width:17px}.slide__stop:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.slide__label{color:var(--muted);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;opacity:0;pointer-events:none;font-size:.5625rem;transition:opacity .2s,transform .2s;position:absolute;top:50%;left:26px;transform:translateY(-50%)translate(-4px)}.slide__stop:hover .slide__label,.slide__stop:focus-visible .slide__label{opacity:1;transform:translateY(-50%)translate(0)}@media (max-width:68rem){.slide{display:none}}@media (max-width:34rem){.row{grid-template-columns:1fr}.row__role{text-align:left;grid-area:2/1}}@media (prefers-reduced-motion:reduce){.slide__outer,.slide__tick{transition:none}.section__title{transform:none!important}}.is-typing:after{content:"";vertical-align:-.08em;background:currentColor;width:.06em;height:.9em;margin-left:.06em;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{0%,50%{opacity:1}50.01%,to{opacity:0}}.masthead__name{min-height:1em}.masthead__bio{min-height:7rem}.section__title,.row__name{min-height:1.2em}.row__detail{color:var(--muted);text-align:right;grid-area:1/2;font-size:.8125rem;font-style:italic}@media (prefers-reduced-motion:reduce){.is-typing:after{display:none}}@media (max-width:34rem){.masthead__bio{min-height:12rem}.row__detail{text-align:left;grid-area:2/1}}.closing{margin-top:4.5rem}.closing__line{min-height:1.4em;font-family:var(--display);color:var(--muted);margin:0;font-size:1.5rem}.is-sand,.is-sand .quote__text,.is-sand .quote__cite{color:#0000}.is-sand .is-typing:after{display:none}.pull{margin:3.25rem 0 0}.quote{opacity:1;min-height:7.5rem;margin:0;padding:0}.quote__text,.quote__cite{transition:opacity .52s,transform .52s cubic-bezier(.16,1,.3,1)}.quote__text{font-family:var(--display);letter-spacing:-.005em;color:var(--ink);text-wrap:balance;margin:0 0 .75rem;font-size:clamp(1.375rem,3.2vw,1.75rem);font-style:normal;line-height:1.28}.quote__cite{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-size:.5625rem}.quote__cite cite{font-family:var(--body);text-transform:none;letter-spacing:0;font-size:.8125rem;font-style:italic}.quote.is-featured .quote__text{transform-origin:0 0;transform:scale(1.08)}.quote.is-featured .quote__cite{color:var(--accent)}.quote.is-out .quote__text,.quote.is-out .quote__cite{opacity:0;transform:translateY(-6px)}.quote.is-out.is-featured .quote__text{transform:translateY(-6px)scale(1.08)}@media (prefers-reduced-motion:reduce){.quote__text,.quote__cite{transition:none}}.roster__group[data-group=study] .row{padding-bottom:1.1rem}.roster__group[data-group=study]{padding-bottom:1rem}
