* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--paper); color:var(--ink); font:14px/1.5 var(--sans); } body.larger-type { font-size:16px; } body.high-contrast { --line:currentColor; --muted:var(--ink); } a { color:inherit; }.shell { width:100%; max-width:var(--content); margin-inline:auto; }.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }.skip-link { position:fixed; z-index:30; top:-4rem; left:1rem; padding:.6rem; background:var(--amber); color:#111; }.skip-link:focus { top:1rem; }:focus-visible { outline:3px solid var(--amber); outline-offset:3px; }
.home-surface { padding-bottom:20px; }.hero { position:relative; min-height:305px; overflow:hidden; border-bottom:1px solid var(--line); background:var(--paper); }.hero::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.34; background-image:linear-gradient(rgba(16,36,58,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(16,36,58,.055) 1px,transparent 1px); background-size:42px 42px; }.hero-copy { position:relative; z-index:2; width:min(55%,620px); padding:48px 0 38px; }.hero h1 { margin:0; font:500 clamp(2.25rem,4vw,3.2rem)/1.06 var(--serif); letter-spacing:-.04em; }.index-card h2,.glance h2,.preferences-dialog h2 { margin:0; font:500 4.35rem/.92 var(--serif); letter-spacing:-.055em; }.hero-role { margin:.55rem 0 1rem; color:var(--violet); font:italic 1.48rem var(--serif); }.rule { width:110px; margin:0 0 1.1rem; border-top:2px solid var(--amber); }.hero-copy > p:not(.hero-role) { max-width:490px; margin:0 0 1rem; color:var(--muted); font:1rem var(--serif); }.index-link { color:var(--violet); font-family:var(--serif); text-decoration:none; }.index-link:hover { text-decoration:underline; }.hero-art { position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.78; background:url("assets/homepage-field-concept-a-v2.png") right 52% / auto 175% no-repeat; mix-blend-mode:multiply; mask-image:linear-gradient(90deg,transparent 16%,rgba(0,0,0,.22) 39%,#000 61%); -webkit-mask-image:linear-gradient(90deg,transparent 16%,rgba(0,0,0,.22) 39%,#000 61%); }.art-label { position:absolute; color:var(--muted); font:.8rem var(--serif); }.qg { top:14%; left:75%; }.qc { bottom:28%; left:61%; }.ent { right:2%; bottom:11%; } html[data-theme="dark"] .hero-art { filter:invert(.88) hue-rotate(170deg); mix-blend-mode:screen; opacity:.3; }
.glance { padding:14px 0 26px; }.glance h2 { margin:0 0 14px; font-size:1.25rem; letter-spacing:0; }.glance-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); }.glance-grid article { display:flex; min-height:83px; gap:.85rem; padding:15px 18px 0 0; border-right:1px solid var(--line); }.glance-grid article+article { padding-left:18px; }.glance-grid article:last-child { border:0; }
.glance-icon { color:var(--teal); flex-shrink:0; }
.glance-icon svg { display:block; width:100%; height:100%; }
.symbol { color:var(--teal); font:2rem/1 var(--serif); }
.glance h3 { margin:0 0 .18rem; font:500 .8rem var(--serif); }.glance p { margin:0; color:var(--muted); font:.72rem/1.35 var(--serif); }
.index-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }.index-card { display:grid; grid-template-columns:50px minmax(0,1fr); min-width:0; min-height:148px; gap:10px; padding:18px; border:1px solid var(--line); border-left:4px solid var(--teal); background:color-mix(in srgb,var(--paper) 78%,transparent); text-decoration:none; transition:transform .18s,background .18s; }.index-card > span { min-width:0; }.index-card:hover { background:var(--paper-deep); transform:translateY(-2px); }.index-card h2 { margin:0 0 .35rem; font-size:1.35rem; letter-spacing:-.025em; }.index-card p { margin:0 0 .35rem; color:var(--muted); font:.72rem/1.35 var(--serif); }.index-card b { color:var(--violet); font-size:.65rem; }.index-card i { margin-left:.3rem; font-size:1rem; font-style:normal; }
.card-icon { color:var(--teal); width:40px; height:40px; flex-shrink:0; }
.card-icon svg { display:block; width:100%; height:100%; }
.publications { border-left-color:var(--violet); }.publications .card-icon { color:var(--violet); }.publications b { color:var(--violet); }
.teaching { border-left-color:#407f83; }
.supervision { border-left-color:#7556a4; }
.projects { border-left-color:#2d8586; }
.writing { border-left-color:var(--amber); }.writing .card-icon { color:var(--amber); }.writing b { color:var(--amber); }
.about-card { grid-column:span 2; border-left-color:#55658c; }.about-card .card-icon { color:#55658c; }.about-card b { color:#55658c; }
.contact-strip { display:flex; align-items:baseline; justify-content:space-between; gap:1.5rem; margin-top:26px; padding:18px 0 4px; border-top:1px solid var(--line); }.contact-strip h2 { margin:0; font:500 1.35rem var(--serif); }.contact-links { display:flex; flex-wrap:wrap; gap:.75rem 1.2rem; color:var(--violet); font:.82rem var(--serif); }.contact-links a { text-decoration:none; }.contact-links a:hover { text-decoration:underline; }
.site-footer { background:var(--navy); color:#f7f3eb; }.footer-inner { display:flex; align-items:center; justify-content:space-between; min-height:76px; gap:2rem; }.footer-brand { font-size:.7rem; line-height:1.3; }.footer-brand img { width:28px; }.site-footer nav { display:flex; flex-wrap:wrap; gap:.8rem; font-size:.63rem; }.site-footer a { color:rgba(255,255,255,.86); text-decoration:none; }.site-footer a:hover { text-decoration:underline; }
.dialog-backdrop { position:fixed; inset:0; z-index:40; display:grid; justify-content:end; align-content:start; padding:76px max(1.5rem,calc((100vw - var(--content))/2)); background:rgba(1,12,24,.34); }.dialog-backdrop[hidden] { display:none; }.preferences-dialog { width:310px; padding:1.3rem; color:var(--ink); background:var(--paper); box-shadow:0 1rem 2.5rem rgba(0,0,0,.2); }.dialog-header { display:flex; justify-content:space-between; }.eyebrow,legend { margin:0 0 .3rem; color:var(--muted); font-size:.65rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; }.preferences-dialog h2 { font-size:1.45rem; letter-spacing:-.02em; }.dialog-close { border:0; color:inherit; background:transparent; font-size:1.5rem; cursor:pointer; } fieldset { display:grid; gap:.45rem; margin:1.1rem 0 0; padding:0; border:0; } fieldset label { font-size:.85rem; cursor:pointer; } input { accent-color:var(--teal); }.dialog-note { color:var(--muted); font-size:.7rem; }
@media(max-width:760px) { .shell { width:100%; }.header-inner { height:60px; }.menu-toggle { display:block; padding:.5rem; }.site-nav { position:absolute; top:60px; right:0; left:0; display:none; height:auto; flex-direction:column; padding:.4rem 1rem 1rem; background:var(--navy); box-shadow:0 .8rem 1.2rem rgba(0,0,0,.18); }.site-nav[data-open="true"] { display:flex; }.site-nav a { display:block; padding:.65rem; border-left:0; border-bottom:1px solid rgba(255,255,255,.13); text-align:left; }.header-inner > .preferences-button { display:grid; width:2.6rem; height:2.6rem; padding:0; border-left:1px solid rgba(255,255,255,.13); border-bottom:0; text-align:center; }.hero { min-height:0; }.hero-copy { width:100%; min-height:260px; padding:34px 0 28px; }.hero h1 { font-size:2.35rem; line-height:1.06; letter-spacing:-.04em; }.hero-role { font-size:1.2rem; }.hero-art { opacity:.3; background-position:62% center; background-size:auto 135%; mask-image:none; -webkit-mask-image:none; }.glance { padding:14px 0; }.glance-grid { overflow:hidden; }.glance-grid article { display:block; min-height:82px; padding:10px 7px; }.glance-grid article+article { padding-left:7px; }
  .glance-icon { width:32px; height:32px; margin-bottom:.35rem; }
  .symbol { display:block; margin-bottom:.35rem; font-size:1.65rem; }
  .glance h3 { font-size:.68rem; }.glance p { display:none; }
  .index-grid { display:block; }.index-card,.about-card { grid-template-columns:42px 1fr; align-items:center; min-height:69px; margin-top:7px; padding:12px 14px; }
  .card-icon { width:32px; height:32px; }
  .index-card h2 { margin:0; font-size:1.1rem; }.index-card p,.index-card b { display:none; }
  .contact-strip { display:block; }.contact-links { margin-top:.7rem; }.footer-inner { display:block; padding:16px 0; }.footer-brand { margin-bottom:12px; }.site-footer nav { gap:.5rem .8rem; }.dialog-backdrop { align-content:end; padding:0; }.preferences-dialog { width:100%; } }
@media(max-width:860px) and (min-width:761px) { .header-inner { height:60px; }.menu-toggle { display:block; padding:.5rem; }.site-nav { position:absolute; top:60px; right:0; left:0; display:none; height:auto; flex-direction:column; padding:.4rem 1rem 1rem; background:var(--navy); box-shadow:0 .8rem 1.2rem rgba(0,0,0,.18); }.site-nav[data-open="true"] { display:flex; }.site-nav a { display:block; padding:.65rem; border-left:0; border-bottom:1px solid rgba(255,255,255,.13); text-align:left; }.header-inner > .preferences-button { display:grid; width:2.6rem; height:2.6rem; padding:0; border-left:1px solid rgba(255,255,255,.13); border-bottom:0; text-align:center; }.index-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.about-card { grid-column:span 2; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition-duration:.01ms!important; animation-duration:.01ms!important; } }

.header-actions { display:flex; align-items:stretch; height:100%; }.header-control { min-width:48px; padding:0 .72rem; border:0; border-left:1px solid rgba(255,255,255,.13); color:rgba(255,255,255,.88); background:transparent; font:inherit; font-size:1.15rem; cursor:pointer; }.header-control:hover { background:rgba(255,255,255,.08); }.pending-control { opacity:.58; cursor:not-allowed; }.theme-toggle { font-size:1.25rem; }.section-toggle { display:flex; width:100%; align-items:center; justify-content:space-between; margin:0 0 14px; padding:0; border:0; color:inherit; background:transparent; font:500 1.25rem var(--serif); text-align:left; cursor:pointer; }.section-chevron { color:var(--muted); font:1.2rem var(--sans); transition:transform .18s; }.glance-toggle[aria-expanded="false"] .section-chevron { transform:rotate(-90deg); }.glance-grid[data-open="false"] { display:none; }.mobile-bottom-nav { display:none; }
@media(max-width:860px) { body { padding-bottom:4.5rem; }.header-actions { height:auto; }.header-actions .search-button,.header-actions .theme-toggle { display:none; }.header-actions .preferences-button { display:grid; width:2.6rem; min-width:2.6rem; height:2.6rem; padding:0; border-left:1px solid rgba(255,255,255,.13); text-align:center; }.mobile-bottom-nav { position:fixed; right:0; bottom:0; left:0; z-index:35; display:grid; grid-template-columns:repeat(5,1fr); min-height:4.1rem; border-top:1px solid rgba(255,255,255,.16); background:var(--navy); color:#f7f3eb; box-shadow:0 -.5rem 1rem rgba(0,0,0,.12); }.mobile-bottom-nav a,.mobile-bottom-nav button { display:grid; place-items:center; align-content:center; gap:.16rem; min-width:0; padding:.35rem .15rem; border:0; color:inherit; background:transparent; font:.58rem var(--sans); text-decoration:none; cursor:pointer; }.mobile-bottom-nav a:hover,.mobile-bottom-nav button:hover { background:rgba(255,255,255,.08); }.mobile-bottom-nav .pending-control { opacity:.58; }.bottom-nav-icon { font-size:1.15rem; line-height:1; }.section-toggle { font-size:1.15rem; } }
@media(min-width:861px) and (max-width:1100px) { .index-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.about-card { grid-column:span 2; } }

/* Keep the homepage responsive shell identical to the shared portfolio shell. */
@media(max-width:860px) {
  body { padding-bottom:0; }
  .site-nav { position:fixed; inset:60px 0 auto; display:none; height:auto; max-height:calc(100vh - 60px); overflow-y:auto; flex-direction:initial; padding:.6rem 1rem 1rem; background:var(--navy); box-shadow:0 .8rem 1.5rem rgba(0,0,0,.2); }
  .site-nav[data-open="true"] { display:grid; }
  .site-nav a { display:flex; padding:.65rem .8rem; border:0; text-align:left; }
}
