/* Editorial theme: one accent (deep ink blue), one secondary (celadon gray),
   flat surfaces, thin rules, small radii. Overrides the page-level styles. */
:root {
  --ed-ink: #1e2633;
  --ed-muted: #5c6773;
  --ed-rule: #dfe4ea;
  --ed-paper: #f5f7f9;
  --ed-accent: #2a3d5c;
  --ed-accent-soft: #eef2f6;
  --ed-gold: #5f8389;
}
html body { color: var(--ed-ink); background: #fff; }
html body a { color: var(--ed-accent); }

/* Masthead */
html body .masthead { border-bottom: 1px solid var(--ed-rule); background: #fff; }
html body .masthead__menu-item a { color: var(--ed-muted); letter-spacing: 0.04em; }
html body .masthead__menu-item a:hover { color: var(--ed-accent); }
html body .masthead__menu-item--lg a { color: var(--ed-ink); font-weight: 600; letter-spacing: 0; }
html body .greedy-nav .visible-links a:before { background: var(--ed-gold); height: 2px; }

/* Sidebar */
html body .author__avatar img { border: 1px solid var(--ed-rule); padding: 3px; }
html body .author__name { color: var(--ed-ink); }
html body .author__bio { color: var(--ed-muted); font-style: italic; }
html body .author__urls { color: var(--ed-muted); }
html body .author__urls a { color: var(--ed-ink); }

/* Footer */
html body .page__footer { background: #fff; border-top: 1px solid var(--ed-rule); color: var(--ed-muted); }
html body .page__footer a { color: var(--ed-muted); }

/* Page title */
html body .page__title { font-weight: 600; letter-spacing: -0.005em; }

/* ---------- Shared section heading treatment ---------- */
html body .hm-h, html body .rs-h3, html body .tc-h, html body .sv-h, html body .pb-h { border-bottom: 1px solid var(--ed-rule); padding-bottom: 0.35em; }
html body .hm-h h2, html body .tc-h h2, html body .sv-h h2, html body .pb-h h2 { font-variant: small-caps; letter-spacing: 0.06em; font-size: 1.25em; color: var(--ed-ink); font-weight: 600; }
html body .rs-h3 { color: var(--ed-gold) !important; font-variant: small-caps; text-transform: none !important; letter-spacing: 0.08em !important; font-size: 1.05em !important; }

/* ---------- Homepage ---------- */
html body .hm-hero { background: var(--ed-paper); color: var(--ed-ink); border: 1px solid var(--ed-rule); border-top: 3px solid var(--ed-accent); border-radius: 4px; box-shadow: none; padding: 1.8em 2em 1.6em; }
html body .hm-hero h1 { color: var(--ed-ink); font-weight: 600; }
html body .hm-hero .role { color: var(--ed-muted); opacity: 1; }
html body .hm-hero .tag { color: var(--ed-accent); opacity: 1; }
html body .hm-btns { gap: 0.4em 1.4em; border-top: 1px solid var(--ed-rule); padding-top: 0.9em; }
html body .hm-btns a { color: var(--ed-accent) !important; background: none; border: 0; border-radius: 0; padding: 0; font-variant: small-caps; letter-spacing: 0.06em; font-size: 0.95em; }
html body .hm-btns a:hover { background: none; text-decoration: underline !important; }
html body .hm-about { background: none; border: 0; box-shadow: none; padding: 0; }
html body .hm-dirs { counter-reset: dir; }
html body .hm-dir { background: #fff !important; border: 1px solid var(--ed-rule); border-top: 2px solid var(--ed-accent); border-radius: 4px; box-shadow: none; transform: none !important; }
html body .hm-dir:hover { border-color: var(--ed-accent); box-shadow: none; }
html body .hm-dir b:before { counter-increment: dir; content: counter(dir, upper-roman) "."; display: block; color: var(--ed-gold); font-size: 0.9em; margin-bottom: 0.2em; letter-spacing: 0.05em; }
html body .hm-open { background: var(--ed-paper); border: 1px solid var(--ed-rule); border-left: 3px solid var(--ed-gold); border-radius: 4px; }
html body .hm-news { border-left: 1px solid var(--ed-rule); }
html body .hm-n:before { border-color: var(--ed-accent); border-width: 1.5px; width: 0.6em; height: 0.6em; left: -0.32em; }
html body .hm-d { color: var(--ed-accent); }
html body .hm-k { background: none !important; color: var(--ed-gold); border: 1px solid var(--ed-rule); border-radius: 2px; font-variant: small-caps; text-transform: none; letter-spacing: 0.06em; font-size: 0.72em; }
html body .hm-ln, html body .pb-links a, html body .rs-pub .l a { border-radius: 2px !important; border-color: var(--ed-rule) !important; color: var(--ed-accent) !important; }
html body .hm-toggle { border-radius: 2px; background: #fff; border-color: var(--ed-rule); color: var(--ed-accent); }

/* ---------- Research page ---------- */
html body .rs-hero { background: var(--ed-paper); color: var(--ed-ink); border: 1px solid var(--ed-rule); border-top: 3px solid var(--ed-accent); border-radius: 4px; box-shadow: none; }
html body .rs-hero h2 { color: var(--ed-ink); }
html body .rs-hero .rs-kicker { color: var(--ed-gold); opacity: 1; }
html body .rs-hero p { color: var(--ed-muted); opacity: 1; }
html body .rs-jump { gap: 0.4em 1.4em; }
html body .rs-jump a { color: var(--ed-accent) !important; background: none; border: 0; border-radius: 0; padding: 0; font-variant: small-caps; letter-spacing: 0.06em; font-size: 0.95em; }
html body .rs-jump a:hover { background: none; text-decoration: underline !important; }
html body .rs-step { border-radius: 4px; box-shadow: none; }
html body .rs-arrow { color: var(--ed-rule); }
html body .rs-sec, html body .rs-sec.er, html body .rs-sec.ph, html body .rs-sec.df { background: #fff; border: 0; border-top: 1px solid var(--ed-rule); border-radius: 0; padding: 1.8em 0 0.6em; }
html body .rs-num { color: var(--ed-gold) !important; opacity: 1; font-weight: 400; font-size: 1.9em; }
html body .rs-accent { color: var(--ed-gold) !important; }
html body .rs-q { border-radius: 4px; background: var(--ed-paper); }
html body .rs-callout { border-radius: 4px; border: 1px solid var(--ed-rule) !important; border-left: 3px solid var(--ed-gold) !important; background: var(--ed-paper); }
html body .rs-fig { border-radius: 4px; box-shadow: none; border-left-width: 3px !important; }
html body .rs-fig.f-dp { background: #f3f6f9; border-color: #dde4ec; border-left-color: #2a3d5c; }
html body .rs-fig.f-mute { background: #f4f5f9; border-color: #e0e2ec; border-left-color: #4e5b7c; }
html body .rs-fig.f-magic { background: #f2f7f7; border-color: #d9e6e6; border-left-color: #4f7a7c; }
html body .rs-fig.f-psdpo { background: #f3f6f4; border-color: #dbe5df; border-left-color: #6d8c7c; }
html body .rs-fig.f-deepfake { background: #f5f5f8; border-color: #e1e1ea; border-left-color: #5d5875; }
html body .rs-fig.f-npr { background: #f4f6f8; border-color: #dfe3e8; border-left-color: #6b7a8c; }
html body .rs-fig figcaption b { color: var(--ed-ink) !important; }
html body .rs-pub { border-radius: 4px; }
html body .rs-venue { background: #fff !important; color: var(--ed-accent) !important; border: 1px solid var(--ed-accent); border-radius: 2px; font-weight: 600; }
html body .rs-ob { border-radius: 4px; background: var(--ed-paper); border-top: 2px solid var(--ed-gold) !important; }
html body .rs-ob li .vn { background: none !important; color: var(--ed-accent); border: 1px solid var(--ed-accent); border-radius: 2px; }
html body .rs-card { border-radius: 4px; box-shadow: none; border-left: 3px solid var(--ed-accent) !important; }
html body .rs-card .rs-gh { background: none !important; color: var(--ed-accent) !important; border: 1px solid var(--ed-accent); border-radius: 2px; }
html body .rs-callout.ph-c, html body .rs-callout.df-c { border-left-color: var(--ed-gold) !important; }

/* ---------- Publications page ---------- */
html body .pb-sel { background: var(--ed-paper); border: 1px solid var(--ed-rule); border-top: 3px solid var(--ed-accent); border-radius: 4px; }
html body .pb-item { border-radius: 4px; }
html body .pb-item:hover { box-shadow: none; transform: none; border-color: #c9d2dc; }
html body .pb-badge { background: #fff !important; color: var(--ed-accent); border: 1px solid var(--ed-accent); border-radius: 2px; font-weight: 600; }
html body .pb-badge em { color: var(--ed-muted); }
html body .pb-flag { background: none; color: var(--ed-gold); border: 1px solid var(--ed-gold); border-radius: 2px; font-variant: small-caps; }
html body .pb-flag.gold { background: none; color: var(--ed-gold); border-color: var(--ed-gold); }
html body .pb-btn { border-radius: 2px; background: #fff; border-color: var(--ed-rule); }
html body .pb-btn.on { background: var(--ed-accent); border-color: var(--ed-accent); }
html body .pb-year span { color: var(--ed-accent); font-weight: 600; }
html body .pb-year:after { background: var(--ed-rule); height: 1px; }
html body .pb-bar { border-bottom: 1px solid var(--ed-rule); }

/* ---------- Teaching page ---------- */
html body .tc-hero { background: var(--ed-paper); color: var(--ed-ink); border: 1px solid var(--ed-rule); border-top: 3px solid var(--ed-accent); border-radius: 4px; box-shadow: none; }
html body .tc-hero h2 { color: var(--ed-ink); }
html body .tc-hero .k { color: var(--ed-gold); opacity: 1; }
html body .tc-hero p { color: var(--ed-muted); opacity: 1; }
html body .tc-tl:before { background: var(--ed-rule); width: 1px; }
html body .tc-term { color: var(--ed-gold); font-variant: small-caps; text-transform: none; letter-spacing: 0.08em; }
html body .tc-term:before { border-color: var(--ed-accent); border-width: 2px; width: 0.8em; height: 0.8em; left: -1.78em; }
html body .tc-c { border-radius: 4px; box-shadow: none; }
html body .tc-side { background: var(--ed-paper) !important; color: var(--ed-ink); border-right: 1px solid var(--ed-rule); }
html body .tc-code { color: var(--ed-accent); }
html body .tc-lvl { color: var(--ed-muted); opacity: 1; font-variant: small-caps; text-transform: none; }
html body .tc-new { background: none; color: var(--ed-gold); border: 1px solid var(--ed-gold); border-radius: 2px; font-variant: small-caps; }

/* ---------- Service page ---------- */
html body .sv-stu { border-radius: 4px; box-shadow: none; }
html body .sv-av { background: var(--ed-paper) !important; color: var(--ed-accent); border: 1px solid var(--ed-rule); }
html body .sv-chip { background: none; color: var(--ed-accent); border: 1px solid var(--ed-rule); border-radius: 2px; }
html body .sv-tl:before { background: var(--ed-rule); width: 1px; }
html body .sv-tl li { border-radius: 4px; }
html body .sv-tl li:before { border-color: var(--ed-accent); border-width: 2px; width: 0.6em; height: 0.6em; left: -1.27em; }
html body .sv-tl .yr { background: none; color: var(--ed-accent); border: 1px solid var(--ed-accent); border-radius: 2px; }
html body .sv-tl .role { color: var(--ed-gold); font-variant: small-caps; text-transform: none; }
html body .sv-box { border-radius: 4px; box-shadow: none; border-top: 2px solid var(--ed-accent) !important; }
html body .sv-box h3 { color: var(--ed-gold) !important; font-variant: small-caps; text-transform: none; }
html body .sv-tag { border-radius: 2px; background: #fff; }
html body .sv-tag.conf { background: var(--ed-paper); color: var(--ed-accent); border-color: var(--ed-rule); }
html body .rs-callout a { color: var(--ed-accent) !important; }
html body .rs-ob .sub { color: var(--ed-gold) !important; }
html body .rs-fig.f-phymetric { background: #f2f5f8; border-color: #dbe2ea; border-left-color: #5a7088; }

/* =========================================================
   Palette layer (Oct 2026), refined: white or near-white surfaces,
   reference-palette colors used only as faint tints and thin rules.
   ========================================================= */
:root {
  --c-blue: #B4C7E7; --c-lblue: #B1D0ED; --c-sky: #CBE6F5; --c-mint: #B2E9DA;
  --c-green: #C5E0B4; --c-lav: #DED6E5; --c-lav-d: #b9abc9; --c-butter: #FFD966;
  --t-blue: color-mix(in srgb, #DAE3F3 45%, white);
  --t-sky: color-mix(in srgb, #CBE6F5 35%, white);
  --t-mint: color-mix(in srgb, #B2E9DA 30%, white);
  --t-green: color-mix(in srgb, #D8E3D0 45%, white);
  --t-lav: color-mix(in srgb, #DED6E5 45%, white);
  --ed-paper: color-mix(in srgb, #EDF4FC 70%, white);
  --ed-rule: #e2e8f0;
}
/* Heroes: near-white with a thin palette rule */
html body .hm-hero, html body .rs-hero, html body .tc-hero, html body .cv-hero, html body .pb-sel { background: var(--ed-paper); border-color: var(--ed-rule); border-top: 3px solid var(--c-blue); }

/* Homepage direction cards: white, colored top rule, faint tint */
html body .hm-dir { border: 1px solid var(--ed-rule); }
html body .hm-dir:nth-child(1) { background: var(--t-blue) !important; border-top: 3px solid var(--c-blue); }
html body .hm-dir:nth-child(2) { background: var(--t-mint) !important; border-top: 3px solid var(--c-mint); }
html body .hm-dir:nth-child(3) { background: var(--t-lav) !important; border-top: 3px solid var(--c-lav-d); }
html body .hm-dir:hover { border-color: var(--ed-rule); box-shadow: 0 2px 10px rgba(30,38,51,0.06); }
html body .hm-open { background: #fff; border-color: var(--ed-rule); border-left: 3px solid var(--c-sky); }
html body .hm-k { background: #fff !important; border: 1px solid var(--c-mint); color: #3c6e62; }

/* Research */
html body .rs-step { background: #fff; }
html body .rs-step:nth-of-type(1) { border-top: 3px solid var(--c-blue); }
html body .rs-step:nth-of-type(3) { border-top: 3px solid var(--c-lblue); }
html body .rs-step:nth-of-type(5) { border-top: 3px solid var(--c-mint); }
html body .rs-q { border-color: var(--ed-rule); }
html body .rs-sec.er .rs-q { background: var(--t-blue); }
html body .rs-sec.ph .rs-q { background: var(--t-mint); }
html body .rs-sec.df .rs-q { background: var(--t-lav); }
html body .rs-callout { background: #fff; border-color: var(--ed-rule) !important; border-left: 3px solid var(--c-blue) !important; }
html body .rs-callout.ph-c { border-left-color: var(--c-mint) !important; }
html body .rs-callout.df-c { border-left-color: var(--c-lav-d) !important; }
html body .rs-fig { background: #fff; border-color: var(--ed-rule); }
html body .rs-fig.f-dp { border-left-color: var(--c-blue); }
html body .rs-fig.f-mute { border-left-color: var(--c-lblue); }
html body .rs-fig.f-magic { border-left-color: var(--c-mint); }
html body .rs-fig.f-psdpo { border-left-color: var(--c-green); }
html body .rs-fig.f-phymetric { border-left-color: var(--c-sky); }
html body .rs-fig.f-deepfake { border-left-color: var(--c-lav-d); }
html body .rs-fig.f-npr { border-left-color: var(--c-lav); }
html body .rs-sec.er .rs-pub { border-left: 3px solid var(--c-blue); }
html body .rs-sec.ph .rs-pub { border-left: 3px solid var(--c-mint); }
html body .rs-sec.df .rs-pub { border-left: 3px solid var(--c-lav-d); }
html body .rs-ob { background: #fff; }
html body .rs-ob:nth-of-type(1) { border-top: 2px solid var(--c-sky) !important; }
html body .rs-ob:nth-of-type(2) { border-top: 2px solid var(--c-lav-d) !important; }
html body .rs-card { background: #fff; border-color: var(--ed-rule); }
html body .rs-card:nth-of-type(1) { border-left: 3px solid var(--c-blue) !important; }
html body .rs-card:nth-of-type(2) { border-left: 3px solid var(--c-mint) !important; }
html body .rs-card:nth-of-type(3) { border-left: 3px solid var(--c-lav-d) !important; }

/* Publications: thin palette edge on badges by type */
html body .pb-item .pb-badge { background: #fff !important; }
html body .pb-item[data-type="conference"] .pb-badge, html body .pb-item[data-type="selected"] .pb-badge { box-shadow: inset 3px 0 0 var(--c-blue); }
html body .pb-item[data-type="journal"] .pb-badge { box-shadow: inset 3px 0 0 var(--c-mint); }
html body .pb-item[data-type="preprint"] .pb-badge { box-shadow: inset 3px 0 0 var(--c-lav-d); }
html body .pb-flag, html body .pb-flag.gold { background: #fff; border-color: var(--c-butter); color: #7a6214; }

/* Teaching */
html body .tc-side { background: var(--ed-paper) !important; }
html body .tc-c:nth-child(2) { border-left: 3px solid var(--c-blue); }
html body .tc-c:nth-child(3) { border-left: 3px solid var(--c-mint); }
html body .tc-c:nth-child(5) { border-left: 3px solid var(--c-lblue); }
html body .tc-new { background: #fff; border-color: var(--c-butter); color: #7a6214; }

/* Service */
html body .sv-box { background: #fff; }
html body .sv-box[style*="#4b4fc9"] { border-top: 2px solid var(--c-blue) !important; }
html body .sv-box[style*="#0e8a83"] { border-top: 2px solid var(--c-mint) !important; }
html body .sv-box[style*="#c2410c"] { border-top: 2px solid var(--c-lav-d) !important; }
html body .sv-box[style*="#d9822b"] { border-top: 2px solid var(--c-green) !important; }
html body .sv-tag.conf { background: var(--ed-paper); }

/* CV */
html body .cv-rs { background: #fff; border-color: var(--ed-rule); border-left: 3px solid var(--c-blue); }
html body .cv-f { background: #fff; border-color: var(--ed-rule); border-left: 3px solid var(--c-blue); }
html body .cv-f.past { border-left-color: var(--c-mint); }
html body .cv-now { background: #fff; border-color: var(--c-butter); color: #7a6214; }
html body .cv-box { background: var(--ed-paper); }
html body .cv-grid2 .cv-box:nth-child(1) { border-top: 2px solid var(--c-lav-d); }
html body .cv-grid2 .cv-box:nth-child(2) { border-top: 2px solid var(--c-mint); }
