@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-700-normal.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-400-italic.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-500-italic.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-600-italic.woff2") format("woff2");font-weight:600;font-style:italic;font-display:swap;}
@font-face {font-family:"Open Sans";src:url("../fonts/open-sans-latin-700-italic.woff2") format("woff2");font-weight:700;font-style:italic;font-display:swap;}
body {font-family: "Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.7;}
.masthead__menu-item {font-size:.85em;}
.page__content p,.page__content li {font-size: .95em;}
.page__content a {text-underline-offset:4px;}
.page__content h2 {margin-top:2.4em; border-bottom:0; letter-spacing:-.025em;}
.portfolio-hero {padding:1rem 0 2rem; border-bottom:1px solid #8895a644;}
.portfolio-eyebrow {font-size:.72em!important; text-transform:uppercase; letter-spacing:.13em; font-weight:700; color:#317180;}
.portfolio-hero h1 {font-size:clamp(1.65rem,2.6vw,2.3rem); line-height:1.12; letter-spacing:-.045em; margin:.4em 0;}
.portfolio-lead {font-size:1.15em!important; max-width:42rem;}
.portfolio-actions {display:flex; flex-wrap:wrap; gap:.8rem; margin-top:1.5rem;}
.portfolio-actions a {display:inline-block; border:1px solid #8895a677; border-radius:6px; padding:.55rem 1rem; text-decoration:none; font-weight:600;}
.portfolio-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.5rem 0;}
.portfolio-card {border:1px solid #8895a644;border-radius:10px;padding:1.35rem;background:#8895a608;}
.portfolio-card h3 {margin:0 0 .65rem;font-size:1.05em;}
.portfolio-card p {margin-bottom:.75rem;}
.portfolio-card p:last-child {margin-bottom:0;}
.portfolio-tag {font-size:.7em!important;letter-spacing:.08em;text-transform:uppercase;opacity:.75;}
html[data-theme="dark"] .page__content a {color:#83d5e5;}

@media(max-width:640px) {.portfolio-grid {grid-template-columns:1fr;}.portfolio-hero {padding-top:0;}}

.page__title,.portfolio-hero h1,.portfolio-card h3,.page__content h2 {font-family: "Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; font-weight:500; letter-spacing:-.02em;}
html[data-theme="dark"] .portfolio-eyebrow {color:#83d5e5;}

.author__avatar img {aspect-ratio:1;object-fit:cover;object-position:center 25%;}

strong,b {font-weight:600;}
.pub-heading {font-weight:500;}
.portfolio-card {background:transparent;box-shadow:none;}

/* Publications follow the same reading rhythm as the other pages. */
.pub-section {margin:0 0 2.4em;padding:0;background:transparent;box-shadow:none;}
.pub-heading {font-size:1.25em;font-weight:500;line-height:1.3;margin:2.4em 0 1em;letter-spacing:-.02em;}
.pub-count {font-size:inherit;font-weight:400;color:inherit;}
.pub-list {padding-left:1.4em;margin:0;}
.pub-list li {font-size:.95em;line-height:1.7;margin-bottom:1.1em;}
.pub-list strong,.pub-title {font-weight:400;color:inherit;}
.pub-list em {font-style:normal;}
.pub-note {font-size:.95em;line-height:1.7;margin:0 0 1.5em;padding:0;background:transparent;border:0;}
.pub-note strong {font-weight:400;}


/* A shared visual language: cells, networks, and orbital systems. */
.portfolio-grid {position:relative;gap:1.3rem;}
.portfolio-card {position:relative;overflow:visible;border-color:#648c963d;background:linear-gradient(145deg,#749eaa0b,transparent 65%);}
.connection-art {display:block;width:100%;height:125px;margin:0 0 1.25rem;overflow:visible;color:#367c88;}
html[data-theme="dark"] .connection-art {color:#87bec8;}
.art-link {fill:none;stroke:currentColor;stroke-width:1;opacity:.45;}
.cell-shell {fill:currentColor;fill-opacity:.04;stroke:currentColor;stroke-width:1;stroke-opacity:.45;}
.art-node {fill:currentColor;opacity:.85;}
.art-star {fill:currentColor;opacity:.3;}
.portfolio-card::after {content:"";position:absolute;left:50%;bottom:-1.3rem;height:1.3rem;width:1px;background:#74a7b055;pointer-events:none;}
.portfolio-card:nth-last-child(-n+2)::after {display:none;}
.portfolio-card:hover {border-color:#74a7b088;}
@media(prefers-reduced-motion:no-preference) {
 .portfolio-card .art-node {animation:connection-breathe 6s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
 .portfolio-card:nth-child(2n) .art-node {animation-delay:-3s;}
 .orbital-art {animation:orbit-drift 14s ease-in-out infinite;transform-origin:160px 75px;}
 @keyframes connection-breathe {50% {opacity:.45;transform:scale(.8);}}
 @keyframes orbit-drift {50% {transform:rotate(12deg);}}
}
@media(max-width:640px) {.portfolio-card:nth-last-child(2)::after {display:block;}.connection-art {height:110px;}}
