/* Readable wide disclosure: narrative left, outcomes/tools right; no filler art. */
#selected-work .index-body{max-width:none;width:100%;padding:22px 0 34px}
#selected-work .project-narrative{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.8fr);column-gap:clamp(28px,4vw,64px);width:100%;max-width:none;align-items:start}
#selected-work .project-overview,#selected-work .project-aside{min-width:0}
#selected-work .project-aside{border-left:1px solid var(--line);padding-left:24px}
#selected-work .project-narrative p{font-size:16px;line-height:1.75}
#selected-work .project-narrative .project-tools{margin-top:0;font-size:12px;line-height:1.8}
#selected-work .project-narrative .project-impact{font-size:17px;line-height:1.55;margin-bottom:22px}
#selected-work .project-narrative .project-public-link{margin-top:14px}
@media(max-width:850px){#selected-work .project-narrative{grid-template-columns:minmax(0,1fr);gap:20px}#selected-work .project-aside{border-left:0;border-top:1px solid var(--line);padding:18px 0 0}#selected-work .project-narrative p{font-size:15px;line-height:1.75}}

/* A single moving marker follows the reading position. */
.rail-links{position:relative;padding-left:13px;border-left:1px solid var(--line)}
.rail-cursor{position:absolute;left:-2px;top:var(--cursor-y,0px);width:3px;height:var(--cursor-height,42px);background:var(--accent);transition:top 220ms cubic-bezier(.2,.7,.3,1),height 220ms ease;pointer-events:none}
.section-rail a[aria-current="location"]{color:var(--accent);font-weight:700}
.mobile-menu a[aria-current="location"]{text-decoration:underline;text-underline-offset:5px}

/* Preserve the large email, with an adjacent native copy action. */
.contact-email-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.contact-email-row .email-link{flex:1;min-width:0}.copy-email{flex:0 0 44px;width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid var(--contact-line);background:transparent;color:var(--contact-ink);cursor:pointer}.copy-email:hover{background:#365467}.copy-email[hidden]{display:none}.copy-email:focus-visible{outline-color:var(--contact-ink)}.copied-symbol{display:none}.copy-email[data-copied="true"] .copy-symbol{display:none}.copy-email[data-copied="true"] .copied-symbol{display:block}
.contact-action #copy-status{min-height:20px;margin-top:10px;text-transform:none;letter-spacing:0;font:12px/1.5 var(--body)}
@media(max-width:760px){.contact-email-row{gap:12px}.contact-email-row .email-link{font-size:clamp(20px,5.9vw,28px)}.contact-email-row .email-link>span[aria-hidden]{display:none}}

/* Small object interactions, not a global cursor replacement. */
.folio-role{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.role-token{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:6px 3px;border:0;border-radius:0;background:transparent;color:var(--accent);font:inherit;line-height:1.5;cursor:pointer;isolation:isolate;-webkit-tap-highlight-color:transparent}
.role-token:hover,.role-token:focus-visible,.role-token.is-playing{background:var(--surface)}
.role-token .token-text{display:inline-block;transform:translate(var(--px,0px),var(--py,0px));transition:transform 150ms ease}
.role-token .token-bracket{display:inline-block;transition:transform 180ms ease}
.role-token[data-effect="magnet"]:hover .token-bracket:first-child,.role-token[data-effect="magnet"].is-playing .token-bracket:first-child{transform:translateX(-3px)}
.role-token[data-effect="magnet"]:hover .token-bracket:last-child,.role-token[data-effect="magnet"].is-playing .token-bracket:last-child{transform:translateX(3px)}
.role-token[data-effect="signal"]::after{content:"";position:absolute;left:4px;bottom:6px;width:calc(100% - 8px);height:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:0;transform:scaleX(0);transform-origin:left}
.role-token[data-effect="signal"].is-playing::after{animation:role-signal 700ms ease-out both}
.role-token[data-effect="magnet"].is-playing .token-text{animation:role-align 650ms ease-out}
.role-token[data-effect="geometry"]::after{content:"";position:absolute;left:calc(50% - 3px);bottom:3px;width:6px;height:6px;border:1px solid var(--accent);opacity:0;transform:rotate(45deg) scale(.5)}
.role-token[data-effect="geometry"].is-playing::after{animation:role-geometry 750ms cubic-bezier(.2,.7,.3,1) both}
@keyframes role-signal{0%{opacity:0;transform:scaleX(0)}25%{opacity:1;transform:scaleX(.45)}70%{opacity:1;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1)}}
@keyframes role-align{0%{transform:translateY(0)}35%{transform:translateY(-2px)}100%{transform:translateY(0)}}
@keyframes role-geometry{0%{opacity:0;transform:rotate(0) scale(.5)}25%{opacity:1;transform:rotate(45deg) scale(1)}65%{opacity:1;transform:rotate(135deg) scale(1.3)}100%{opacity:0;transform:rotate(225deg) scale(.5)}}
@media(prefers-reduced-motion:reduce){.role-token *,.role-token::before,.role-token::after{animation:none!important;transition:none!important;transform:none!important}.role-token::after{display:none}}
::selection{background:#92d3d6;color:#111c24}
.section-heading{grid-template-columns:minmax(0,1fr)}

/* Focused professional refinement. Cool ink/teal; no new content surfaces. */
:root{--paper:#f0f3f5;--ink:#172b3b;--ink-deep:#172b3b;--muted:#4b6070;--line:#b7c6ce;--rule:var(--line);--accent:#246b75;--red:var(--accent);--red-dk:#1c5660;--surface:#e3ebef;--footer:#d7e1e7;--header-bg:#172b3b;--header-ink:#f1f6f9;--contact-bg:#243d50;--contact-ink:#f1f6f9;--contact-muted:#d0e0e9;--contact-line:#819aa9;color-scheme:light;--paper:#111c24;--ink:#e4edf3;--ink-deep:#e4edf3;--muted:#abc0cc;--line:#415764;--rule:var(--line);--accent:#92d3d6;--red:var(--accent);--red-dk:#92d3d6;--surface:#20313d;--footer:#172731;--header-bg:#0d161e;--contact-bg:#1b303f;--contact-line:#6e8a9a;color-scheme:dark}


.skip-link{color:#172b3b;background:#edf4f8}
body{background:var(--paper);color:var(--ink)}
.site-header{background:var(--header-bg)!important;color:var(--header-ink)}
.identity-location{color:#cfdee7}.resume-link{background:#edf4f8;color:#172b3b}.resume-link:hover{background:#cce5e9}
.site-footer{background:var(--footer)!important}.footer-location{color:var(--ink)!important}
.folio-topline{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap;margin-bottom:24px}.folio-role{margin:0;line-height:2}.role-token{white-space:nowrap;color:var(--accent)}
.theme-control{display:flex;align-items:center;gap:9px;font:11px/1.3 var(--mono);color:var(--muted)}.theme-control select{font:12px var(--body);min-height:44px;min-width:104px;padding:7px 25px 7px 10px;border:1px solid var(--line);border-radius:0;background:var(--paper);color:var(--ink);cursor:pointer}.theme-control[hidden]{display:none}
button:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.index-item summary:hover,.index-item details[open]>summary{background:var(--surface)}.index-item details[open]>summary .index-name{color:var(--accent)}
.contact-section .section-title .dot{color:#92d3d6}
.contact-section{background:var(--contact-bg)!important;color:var(--contact-ink)}.contact-section .section-kicker,.contact-action p,.contact-bottom,.contact-bottom span:last-child{color:var(--contact-muted)!important}.contact-intro{color:var(--contact-muted)}.contact-action,.contact-bottom{border-color:var(--contact-line)!important}.email-link{color:var(--contact-ink);text-decoration-color:#9bd3d8}
.mobile-menu nav{background:var(--header-bg)}.mobile-menu nav a,.mobile-menu summary{color:var(--header-ink)}.mobile-menu nav a span{color:#c9e0e7}
@media(max-width:760px){.folio-topline{gap:12px;margin-bottom:23px}.theme-control{margin-left:auto}.folio-role{font-size:11px}.theme-control select{min-width:96px}.contact-section{padding:30px 24px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Self-hosted OFL Nimbus Sans: a Helvetica-style face shared by every device. */
@font-face{font-family:"Portfolio Sans";src:url("/assets/fonts/NimbusSans-Regular.otf") format("opentype");font-style:normal;font-weight:100 500;font-display:swap}
@font-face{font-family:"Portfolio Sans";src:url("/assets/fonts/NimbusSans-Bold.otf") format("opentype");font-style:normal;font-weight:600 900;font-display:swap}
:root{--sans:"Portfolio Sans",Helvetica,Arial,sans-serif;--body:"Portfolio Sans",Helvetica,Arial,sans-serif;--mono:"Portfolio Sans",Helvetica,Arial,sans-serif}
